2014-10-10 89 views
0

我的Route53帳戶中有幾條A記錄。我想批量更新所有這些TTL。更新現有Route53資源記錄集中的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」之一[ChangeBatch] [Changes] [Change] ] [動作]必須是「創建」或「刪除」之一)

PS我找不到任何UPSERT示例ChangeResourceRecordSets調用。

回答

2

要麼將​​您的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 
     )), 
));