AWS API 网关禁止连续请求

AWS API Gateway forbids consecutive requests

我正在使用 AWS API 网关和 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 网关 returns 第一次是 200(并且文件已正确上传),但对于任何后续请求(具有相同的身份验证) token to the same URI) a 403 Forbidden 返回,正文中有以下错误:

{
"Message": "User is not authorized to access this resource"
}

大约 5 分钟后,请求再次被接受:/

我在文档中没有发现任何关于默认速率限制的提及。

我也尝试添加一个 Usage Plan,关联一个 API 键,以便能够调整速率限制,但没有任何区别。

还有其他人遇到过这种情况吗?

编辑

只是想添加更多关于我的架构的信息,以确保问题得到更好的解释。

我的设置包括一个 API 网关、一个负责 JWT 授权的 Lambda 和另一个负责上传到 S3 的 Lambda。发生的情况如下:

第一次通话

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

请求命中:

响应代码:200

第二次调用(在第一次调用后不到 5 分钟发出)

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

请求命中:

请求命中:

响应代码:403

事实证明这是我代码中的错误和对 API 网关工作方式的误解的混合。

我遇到的问题如下:

  • 第一个调用:PUT /entity/UUID1 和 JWT_Token_1
    • 访问为 JWT_Token_1
    • 缓存的 UUID1 的策略
  • 第二次调用:PUT /entity/UUID2 和 JWT_Token_1
    • 检索 JWT_Token_1 的缓存策略, 但是 尝试使用 UUID2 然后 "User is not authorized to access this resource"[=35 调用资源=]

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