2016-07-24 3 views
1

AWS Route 53、python3、boto3を使用して動的DNSアップデータスクリプトを作成しようとしています。boto3を使用してRoute 53の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オプションは、レイテンシベースのレコードセットに対してのみ設定する必要があります。それをコメントアウトして問題を解決しました。

関連する問題