AWS API Gateway禁止连续请求

时间:2018-03-16 17:26:19

标签: amazon-web-services aws-lambda image-uploading aws-api-gateway rate-limiting

我使用AWS API Gateway和Lambda将图像上传到S3存储桶。我已设置API网关以使用自定义授权程序。

我目前正在JSON有效负载中传递base64编码图像(不理想,但目前我的需要很好)。

这就是我调用API的方式(注意您需要安装jqhttpie来发出此调用):

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

请求点击:

  • API网关
  • 授权Lambda
  • 文档上传Lambda

回复代码:200

第二次通话(在第一次通话后不到5分钟发出)

>base64 <my_image> | jq -R '{image: .}' | http https://<api_gw_url>/dev/upload 'Authorization:Bearer <my_auth_token>'

请求点击:

  • API网关

请求 NOT 点击:

  • 授权Lambda
  • 文档上传Lambda

回复代码:403

1 个答案:

答案 0 :(得分:2)

事实证明,这是我的代码中的一个错误以及对API网关如何工作的误解。

我遇到的问题如下:

  • 第一个电话:PUT / entity / UUID1 JWT_Token_1
    • 访问UUID1
    • 缓存的JWT_Token_1政策
  • 第二个电话:PUT / entity / UUID2 JWT_Token_1
    • 检索JWT_Token_1的缓存政策,但是尝试使用UUID2调用资源,然后&#34;用户无权访问此资源&#34;

我基本上重复使用相同的JWT令牌来访问不同的资源。在我的用例中,不应该允许这样做。