无法使用boto3更新Route 53上的DNS记录

问题描述:

我正在尝试使用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

我解决了这个问题。 Region选项只能设置为基于延迟的记录集;评论它解决了这个问题。