我的Route53帐户中有一些A记录。我想批量更新他们所有人的TTL。
我使用的逻辑是使用"ListResourceRecordSets"操作获取所有记录。为每条记录创建以下更改对象。
array(
'Action' => 'UPSERT',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => NEW_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));
然后,我发送一个"ChangeResourceRecordSets"请求,其中包含在最后一步中创建的更改对象。
Route53正在返回此错误验证错误:[ChangeBatch][Changes][0][Change][Action]必须是"CREATE"或"DELETE"之一[ChangeBack][Changes]][Change][Action]也必须是"CREATE]"或"DELETE"之一)
附言:我找不到ChangeResourceRecordSets调用的任何UPSERT示例。
将您的AWS SDK更新到支持UPSERT的更高版本,或者您必须首先删除记录集,然后添加新的更改。
UPSERT于2014年初加入:https://aws.amazon.com/blogs/aws/new-features-for-route-53-improved-health-checks-https-record-modification/所以你一定有一个非常旧的SDK。
不使用UPSERT:
array(
'Action' => 'DELETE',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => OLD_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));
然后:
array(
'Action' => 'CREATE',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => NEW_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));