要解决这个问题,您需要确保您的代码正确地等待记录被删除,然后再将状态更改为'INSYNC'。以下是一个解决方法的示例代码:
import boto3
import time
def delete_record(record_set_id):
client = boto3.client('route53')
# 删除记录
response = client.change_resource_record_sets(
HostedZoneId='YOUR_HOSTED_ZONE_ID',
ChangeBatch={
'Changes': [
{
'Action': 'DELETE',
'ResourceRecordSet': {
'Name': 'YOUR_RECORD_NAME',
'Type': 'YOUR_RECORD_TYPE',
'TTL': 300,
'ResourceRecords': [
{
'Value': 'YOUR_RECORD_VALUE'
},
],
}
},
]
}
)
# 等待记录被删除
while True:
response = client.get_change(Id=response['ChangeInfo']['Id'])
status = response['ChangeInfo']['Status']
if status == 'INSYNC':
break
time.sleep(5)
# 更改状态为'INSYNC'
response = client.change_resource_record_sets(
HostedZoneId='YOUR_HOSTED_ZONE_ID',
ChangeBatch={
'Changes': [
{
'Action': 'UPSERT',
'ResourceRecordSet': {
'Name': 'YOUR_RECORD_NAME',
'Type': 'YOUR_RECORD_TYPE',
'TTL': 300,
'ResourceRecords': [
{
'Value': 'YOUR_RECORD_VALUE'
},
],
}
},
]
}
)
# 等待状态更改为'INSYNC'
while True:
response = client.get_change(Id=response['ChangeInfo']['Id'])
status = response['ChangeInfo']['Status']
if status == 'INSYNC':
break
time.sleep(5)
print('记录已成功删除并更改状态为\'INSYNC\'!')
# 调用函数
delete_record('YOUR_RECORD_SET_ID')
请确保替换代码中的以下值:
YOUR_HOSTED_ZONE_ID
:您的托管区域ID。YOUR_RECORD_NAME
:您要删除的记录的名称。YOUR_RECORD_TYPE
:您要删除的记录的类型。YOUR_RECORD_VALUE
:您要删除的记录的值。YOUR_RECORD_SET_ID
:您要删除的记录集的ID。这段代码将删除指定的记录,并等待状态变为'INSYNC'。然后它会再次创建相同的记录,并等待状态再次变为'INSYNC'。最后,它会打印出成功消息。
请注意,这只是一个示例代码,您可能需要根据自己的需求进行适当的修改。