Warm tip: This article is reproduced from serverfault.com, please click

amazon web services-在AWS上将boto3用于dynamoDB时发生InvalidSignatureException

(amazon web services - InvalidSignatureException when using boto3 for dynamoDB on aws)

发布于 2016-02-08 15:53:26

尝试在AWS上连接到我的dynamoDB时,我遇到某种凭证问题。本地这一切工作正常,我可以连接使用ENV变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION

dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')

当更改env变量中的实时凭据并将AWS上的endpoint_url设置为dynamoDB时,此操作将失败并显示以下信息:

“ botocore.exceptions.ClientError:调用查询操作时发生错误(InvalidSignatureException):我们计算出的请求签名与你提供的签名不匹配。请检查你的AWS Secret Access密钥和签名方法。有关详细信息,请参阅服务文档。”

这些凭据有效,因为它们用于与同一个dynamoDB对话的其他应用程序中。Ive也尝试不使用env变量,而是直接在方法中使用,但错误仍然存​​在。此外,为了避免尾随空格的任何问题,Ive甚至直接在代码中使用了凭据。我正在使用Python v3.4.4。

我是否可能还应该设置一个我不知道的标头?任何提示将不胜感激。

编辑

Ive现在还创建了新凭据(以确保只有字母数字符号),但仍然没有骰子。

Questioner
KalleJuhans
Viewed
0
garnaat 2016-02-09 11:36:38

endpoint_url当你连接到真正的DynamoDB服务时,你不应该使用这实际上仅用于连接到本地服务或非标准端点。相反,只需指定所需的区域:

dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2')