在 aws 上使用 boto3 进行 dynamoDB 时出现 InvalidSignatureException

Kal*_*ans 6 amazon-web-services amazon-dynamodb python-3.4 boto3

当我尝试连接到 aws 上的 dynamoDB 时,我遇到了某种凭据问题。在本地,一切正常,我可以使用环境变量进行连接AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY然后AWS_DEFAULT_REGION

dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')
Run Code Online (Sandbox Code Playgroud)

当更改为环境变量中的实时信用并将端点_url 设置为 aws 上的 dynamoDB 时,会失败并显示:

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

这些信用是有效的,因为它们在与同一 dynamoDB 通信的不同应用程序中使用。我也尝试过不使用环境变量,而是直接在方法中使用,但错误仍然存​​在。此外,为了避免尾随空格出现任何问题,我什至直接在代码中使用了凭据。我使用 Python v3.4.4。

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

编辑

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

gar*_*aat 3

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

dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2')
Run Code Online (Sandbox Code Playgroud)