我使用AWS API Gateway和Lambda将图像上传到S3存储桶。我已设置API网关以使用自定义授权程序。
我目前正在JSON有效负载中传递base64
编码图像(不理想,但目前我的需要很好)。
这就是我调用API的方式(注意您需要安装jq
和httpie
来发出此调用):
base64 <my_image> | jq -R '{image: .}' | http https://<api_gw_url>/dev/upload 'Authorization:Bearer <my_auth_token>'
如果我多次发出相同的请求,API网关首次返回200(文档正确上传),但对于任何后续请求(具有相同URI的相同身份验证令牌)a {{1返回时正文中出现以下错误:
403 Forbidden
大约5分钟后,再次接受请求:/
我在文档中没有发现默认速率限制。
我还尝试添加一个与{
"Message": "User is not authorized to access this resource"
}
相关联的API密钥,以便能够调整速率限制,但它没有任何区别。
有没有其他人经历过这个?
修改
只是想添加一些有关我的架构的信息,以确保更好地解释问题。
我的设置包括一个API网关,一个负责JWT授权的Lambda和另一个上传到S3的Lambda。会发生以下情况:
首先致电
Usage Plan
请求点击:
回复代码:200
第二次通话(在第一次通话后不到5分钟发出)
>base64 <my_image> | jq -R '{image: .}' | http https://<api_gw_url>/dev/upload 'Authorization:Bearer <my_auth_token>'
请求点击:
请求 NOT 点击:
回复代码:403
答案 0 :(得分:2)
事实证明,这是我的代码中的一个错误以及对API网关如何工作的误解。
我遇到的问题如下:
JWT_Token_1
UUID1
JWT_Token_1
政策
JWT_Token_1
JWT_Token_1
的缓存政策,但是尝试使用UUID2
调用资源,然后&#34;用户无权访问此资源&#34; 我基本上重复使用相同的JWT令牌来访问不同的资源。在我的用例中,不应该允许这样做。