更新现有Route53资源记录集中的TTL

时间:2014-10-10 16:04:47

标签: php amazon-web-services amazon-route53

我的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] [更改] [0] [更改] [操作]必须是“创建”或“删除”之一[更改] [更改] [1] [更改] [操作]必须是“创建”或“删除”之一

P.S。我找不到 ChangeResourceRecordSets 电话的任何UPSERT示例。

1 个答案:

答案 0 :(得分:2)

将您的AWS开发工具包更新为支持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
        )),
));