2016-02-08 63 views
1

当我试图连接到aws上的dynamoDB时,遇到了某种凭证问题。本地这一切工作正常,我可以使用ENV变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION然后在aws上为dynamoDB使用boto3时出现InvalidSignatureException

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

当改变生活creds在ENV变量和AWS失败与endpoint_url设置为dynamoDB连接:

"botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the Query operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."

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

是否有一个标题,也应该设置,我不知道?任何提示都会升值。

编辑

香港专业教育学院现在也创造了新的证书(以确保只有字母数字符号),但仍然没有骰子。

回答

1

当您连接到真正的DynamoDB服务时,不应使用endpoint_url。这只适用于连接本地服务或非标准端点。相反,只需指定您想要的区域:

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

它表示您的时区不同。也许你可以检查你的: 1.时区 2.时间设置。

如果有一些自动设置,您应该修复您的时间设置。