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

时间:2016-07-24 17:26:01

标签: python dns amazon-route53 boto3

我正在尝试使用AWS Route 53,python3和boto3来运行动态DNS更新程序脚本。它的功能如下:

  1. 从互联网服务中检索机器IP
  2. 在Route 53 DNS中检索当前IP
  3. 检查它们是否匹配(如果是,退出)
  4. 更新DNS(用当前的IP替换旧IP)
  5. 第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
    

1 个答案:

答案 0 :(得分:2)

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