我使用了本教程,并成功创建了“ put”端点。
https://sanderknape.com/2017/10/creating-a-serverless-api-using-aws-api-gateway-and-dynamodb/
当我遵循此建议时,会出现需要验证的错误。
使用您喜欢的REST客户端,尝试将项目放入DynamoDB中 使用您的API网关URL。
python是我最喜欢的客户端:
import requests
api_url = "https://0pg2858koj.execute-api.us-east-1.amazonaws.com/tds"
PARAMS = {"name": "test", "favorite_movie":"asdsf"}
r = requests.put(url=api_url, params=PARAMS)
响应为403
我从控制台进行的测试成功,但是无法从python记录。
答案 0 :(得分:1)
解决该问题的第一步是调查AWS在403
响应中返回的信息。它将提供标头x-amzn-ErrorType
和错误消息以及有关具体错误的信息。您可以使用curl
以详细模式(-v
)或Python代码对其进行测试。请查看relevant documentation,以获得所有可能的错误原因的详细枚举。
无论如何,查看您的代码,很可能您没有向AWS提供必要的身份验证或授权信息。
您必须提供的信息类型取决于您配置为访问API网关中的REST API的which mechanism。
例如,如果您配置了IAM based authentication,则需要设置Python代码来生成带有从用户access key ID and associated secret key派生的Authorization
的{{1}}头。 AWS文档提供了an example of use with Postman。
AWS documentation还提供了几个示例,说明如何使用AWS Signature
和python
来执行这种授权。
请考虑使用this example将信息发布到DynamoDB:
requests
我认为它可以轻松满足您的需求。
在控制台中,一切正常,因为在API Gateway中调用REST端点时,您已连接到已通过身份验证并有权访问这些REST端点的用户。