boto3 Route53 抱怨无法连接到端点 URL:

boto3 Route53 complains Could not connect to the endpoint URL:

我试图让一些 Route53 自动化与 boto 一起工作,并注意到这个微型 boto3(版本 1.3.1)示例:

import boto3
client = boto3.client('route53')
print client.list_hosted_zones()

因投诉而爆发:

  File "... venv/lib/python2.7/site-packages/botocore/retryhandler.py", line 356, in _check_caught_exception
    raise caught_exception
botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://route53.us-east-1e.amazonaws.com/2013-04-01/hostedzone"

虽然这个类似的 boto2(使用版本 2.38.0)代码似乎工作正常:

from boto.route53.connection import Route53Connection
r53_conn = Route53Connection()
print r53_conn.get_all_hosted_zones()

并打印出有关我的托管区域的信息字典。如果我试图哄骗 boto3 使用端点 suggested by Amazon(即使默认情况下 boto3 似乎应该知道如何执行此操作...),如下所示:

client = boto3.client('route53', endpoint_url='https://route53.amazonaws.com')

我收到这个错误:

  File "... venv/lib/python2.7/site-packages/botocore/client.py", line 572, in _make_api_call
    raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (SignatureDoesNotMatch) when calling the ListHostedZones operation: Credential should be scoped to a valid region, not 'us-east-1e'. 

我需要做些什么来教 boto3 如何正确地与 Route53 对话,为什么 boto2 似乎知道如何自动做到这一点?

感谢这个回答 您需要做的就是配置 ~/.aws/config 文件。 看来你没有配置或配置不正确。