在 aws 上将 boto3 用于 dynamoDB 时出现 InvalidSignatureException
InvalidSignatureException when using boto3 for dynamoDB on aws
我在 aws 上尝试连接到我的 dynamoDB 时遇到了某种凭据问题。在本地一切正常,我可以使用 AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和 AWS_DEFAULT_REGION
的环境变量进行连接,然后是
dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')
当在 env 变量中更改为实时信用并将 endpoint_url 设置为 aws 上的 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 对话的不同应用程序中使用。我也尝试不使用环境变量,而是直接在方法中使用,但错误仍然存在。此外,为了避免尾随空格出现任何问题,我什至在代码中直接使用了凭据。我正在使用 Python v3.4.4.
是否还有我不知道的 header 也应该设置?任何提示将不胜感激。
编辑
我现在也创建了新的凭据(以确保只有字母数字符号)但仍然没有骰子。
当您连接到真正的 DynamoDB 服务时,您不应该使用 endpoint_url
。这实际上仅用于连接到本地服务或非标准端点。相反,只需指定您想要的区域:
dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2')
这表明您所在的时区不同。也许你可以检查你的:
1.时区
2.时间设置。
如果有一些自动设置,您应该修改您的时间设置。
“sudo hwclock --hctosys”应该可以解决问题。
只是想指出从 C# 环境(使用 AWS.NET SDK
)访问 DynamoDB 我 运行 进入这个错误,我解决它的方法是创建一对新的 AWS access/secret keys。
在我更改代码中的这些键后立即工作。
我在 aws 上尝试连接到我的 dynamoDB 时遇到了某种凭据问题。在本地一切正常,我可以使用 AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和 AWS_DEFAULT_REGION
的环境变量进行连接,然后是
dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')
当在 env 变量中更改为实时信用并将 endpoint_url 设置为 aws 上的 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 对话的不同应用程序中使用。我也尝试不使用环境变量,而是直接在方法中使用,但错误仍然存在。此外,为了避免尾随空格出现任何问题,我什至在代码中直接使用了凭据。我正在使用 Python v3.4.4.
是否还有我不知道的 header 也应该设置?任何提示将不胜感激。
编辑
我现在也创建了新的凭据(以确保只有字母数字符号)但仍然没有骰子。
当您连接到真正的 DynamoDB 服务时,您不应该使用 endpoint_url
。这实际上仅用于连接到本地服务或非标准端点。相反,只需指定您想要的区域:
dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2')
这表明您所在的时区不同。也许你可以检查你的: 1.时区 2.时间设置。
如果有一些自动设置,您应该修改您的时间设置。
“sudo hwclock --hctosys”应该可以解决问题。
只是想指出从 C# 环境(使用 AWS.NET SDK
)访问 DynamoDB 我 运行 进入这个错误,我解决它的方法是创建一对新的 AWS access/secret keys。
在我更改代码中的这些键后立即工作。