1
我正在嘗試使用AWS Route 53,python3和boto3來獲取動態DNS更新程序腳本。它的功能如下:無法使用boto3更新Route 53上的DNS記錄
- 檢索機器的IP來自互聯網服務
- 檢索當前IP的路由53 DNS
- 檢查它們是否匹配(如果是這樣,出口)
- 更新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
你可以粘貼這個文件的內容〜/ .aws/config與我們的憑據和my_ip應該在雙引號或單引號。 – error2007s
@ error2007s我發佈了這個文件。 my_ip是在腳本的其他地方設置的一個變量,帶有一個字符串值(例如'my_ip =「8.8.8.8」')。 – microbug