尝试在AWS上连接到我的dynamoDB时,我遇到某种凭证问题。本地这一切工作正常,我可以连接使用ENV变量AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
并AWS_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现在还创建了新凭据(以确保只有字母数字符号),但仍然没有骰子。
endpoint_url
当你连接到真正的DynamoDB服务时,你不应该使用。这实际上仅用于连接到本地服务或非标准端点。相反,只需指定所需的区域:
dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2')