在当前情况下,我尝试使用boto3.change_resource_record_sets
更新现有记录的类型,并尝试将记录从类型A更改为类型CNAME-具有匹配的值。
我遇到以下错误:
botocore.errorfactory.InvalidChangeBatch:
An error occurred (InvalidChangeBatch) when calling the ChangeResourceRecordSets
operation: RRSet of type A with DNS name test.test.v3.prod.example.com.
is not permitted because a conflicting RRSet of type CNAME with the same
DNS name already exists in zone test.v3.prod.example.com.
此操作完全可以通过AWS UI来完成(仅更新我要从代码中更新的同一区域中的记录)。
这是我的代码:
def update_record(zone_id):
batch = {
'Changes': [
{
'Action': 'UPSERT',
'ResourceRecordSet' : {
'Name' : 'test.test.v3.prod.example.com.',
'Type' : 'CNAME',
'TTL' : 15,
'ResourceRecords' : [{'Value': 'www.example.com'}]
}
}
]
}
# THIS LINE THROWS THE EXCEPTION
response = client.change_resource_record_sets(HostedZoneId=zone_id, ChangeBatch=batch)
return response
有什么想法吗?
答案 0 :(得分:1)
您无法使用UPSERT更改记录类型。名称和类型用作更改ttl和资源记录的键。您的更改应为:
batch = {
'Changes': [
{
'Action': 'DELETE',
'ResourceRecordSet' : {
'Name' : 'test.test.v3.prod.example.com.',
'Type' : 'A', # or AAAA
'TTL' : 15,
'ResourceRecords' : [{'Value': '1.2.3.4'}] # or whatever it is
}
},
{
'Action': 'UPSERT', # INSERT, really!
'ResourceRecordSet' : {
'Name' : 'test.test.v3.prod.example.com.',
'Type' : 'CNAME',
'TTL' : 15,
'ResourceRecords' : [{'Value': 'www.example.com'}]
}
]
}