2014-10-10 3 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] [변경] [0] [변경] [조치] [만들기] 또는 [삭제] 중 하나 여야합니다. [변경] [변경] [1] [변경 ] [작업]은 "CREATE"또는 "DELETE"중 하나 여야 함)

PS ChangeResourceRecordSets 호출에 대한 UPSERT 예제를 찾을 수 없습니다.

답변

2

UPSERT를 지원하는 최신 버전으로 AWS SDK를 업데이트하거나 먼저 레코드 세트를 삭제 한 다음 새 변경 사항을 추가해야합니다.

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 
     )), 
)); 
관련 문제