2016-07-24 3 views
1

AWS Route 53, python3 및 boto3을 사용하여 동적 DNS 업데이터 스크립트를 사용하려고합니다.경로 53에서 boto3을 사용하여 DNS 레코드를 업데이트 할 수 없습니다.

  1. 들이 일치하는 경우 (그렇다면 출구)
  2. 업데이트 DNS (기존 IP를 대체 루트 (53) DNS
  3. 체크 현재 IP 검색 인터넷 서비스에서 컴퓨터의 IP를 검색 : 그것은 다음과 같은 기능 현재 사용중)

4 단계가 작동하지 않습니다. 그 코드는 다음과 같습니다. my_ip에는 1.2.3.4과 같은 문자열이 있습니다. 직접 문자열 ("Value": "1.2.3.4")로 바꾸려고 시도했지만 오류가 수정되지 않았습니다. hosted_zone_id은 IP 주소를 가져 오는 데 이미 사용되었으므로 정확합니다. record_name"microbug.uk."입니다.

response = client.change_resource_record_sets(
    HostedZoneId=hosted_zone_id, 
    ChangeBatch={ 
     "Comment": "Automatic DNS update", 
     "Changes": [ 
      { 
       "Action": "UPSERT", 
       "ResourceRecordSet": { 
        "Name": record_name, 
        "Type": "A", 
        "Region": "eu-west-1", 
        "TTL": 180, 
        "ResourceRecords": [ 
         { 
          "Value": my_ip 
         }, 
        ], 
       } 
      }, 
     ] 
    } 
) 

이것은 오류를 발생한다 :

Traceback (most recent call last): 
    File "update-dns.py", line 42, in <module> 
    "Value": my_ip 
    File "/usr/lib/python3.5/site-packages/botocore/client.py", line 278, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/usr/lib/python3.5/site-packages/botocore/client.py", line 572, in _make_api_call 
    raise ClientError(parsed_response, operation_name) 
botocore.exceptions.ClientError: An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request 

어떤 제안? 미리 감사드립니다.

편집 :

$ cat ~/.aws/config 
[default] 
region = eu-west-1 
output = json 
+0

~/.aws/config 파일의 내용을 사용자 인증 정보와 함께 붙여 넣을 수 있으며 my_ip는 큰 따옴표 나 작은 따옴표로 묶어야합니다. – error2007s

+0

@ error2007s 파일을 게시했습니다. my_ip는 스크립트의 다른 위치에 문자열 값 (예 :'my_ip = "8.8.8.8"')이있는 변수입니다. – microbug

답변

2

나는이 문제를 해결했다. Region 옵션은 대기 시간 기반 레코드 세트에만 설정해야합니다. 그것을 주석으로 처리하여 문제를 해결했습니다.

관련 문제