2016-07-24 92 views
1

我正在嘗試使用AWS Route 53,python3和boto3來獲取動態DNS更新程序腳本。它的功能如下:無法使用boto3更新Route 53上的DNS記錄

  1. 檢索機器的IP來自互聯網服務
  2. 檢索當前IP的路由53 DNS
  3. 檢查它們是否匹配(如果是這樣,出口)
  4. 更新DNS(取代舊的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選項只能設置爲基於延遲的記錄集;評論它解決了這個問題。