如何排查 API Gateway API 的“429 请求过多”或“已超出限制”错误?
上次更新日期:2022 年 9 月 26 日
在向我的 Amazon API Gateway API 发送请求时,我收到了“429 请求过多”或“已超出限制”错误。如何排查这些错误?
简短描述
API Gateway 在每个区域具有账户级配额。限制配额为每秒 10000 个请求(RPS),以及由令牌存储桶算法提供的额外暴增容量。每个账户和区域的最大存储桶容量为 5000 个请求。API Gateway 节流相关设置按以下顺序应用:
- 您在使用计划中为 API 阶段设置的每个客户端或每种方法节流限制。
- 您为 API 阶段设置的每种方法的节流限制。
- 每个区域的账户级节流。
- AWS 区域节流。
超过节流限制或配额将返回“429 请求过多”或“已超出限制”错误响应。
有关更多信息,请参阅如何在 API Gateway 中应用节流限制设置。
解决方法
在开始之前,请确保您已按照说明打开 Amazon CloudWatch Logs 以对 API Gateway 进行问题排查。确保选择错误以仅针对导致错误的 API 请求生成执行日志。然后,使用 CloudWatch 控制台查看记录的 API 请求和响应。
“429 请求过多”错误
检查您为使用计划的 API 阶段设置的每个客户端或每种方法的节流限制的速率或突增限制。当超过速率或突增限制时,CloudWatch 执行会记录一个超出节流限制的错误,类似于以下内容:
(f277a0b4-2bcd-41b3-8e43-4de770663ffb) API Key
**********************************
F0yrv6 exceeded throttle limit for API
Stage rohkz08x02/dev: Key throttle limit exceeded for Usage Plan ID
nnpegc, RestApi rohkz08x02, Stage dev, Resource f646q2, HttpMethod GET.
Limit: 5.00 Burst: 10
要解决此错误,请使用重试与带有抖动的指数回退算法,然后重新提交您的 API 请求。
有关更多信息,请参阅指数回退和抖动。
“已超出限制”错误
此错误可能表示已超出您的 API Gateway 使用计划的配额限制。当超出配额限制时,CloudWatch 执行会记录一个超出配额限制的错误,类似于以下内容:
(7b819c41-e0a0-433a-883e-bc461fd70fd6) API Key
**********************************
F0yrv6 exceeded quota limit for API
Stage rohkz08x02/dev: Key quota exhausted for Usage Plan ID nnpegc. Q
Limit: 500 Period: DAY
要解决此错误,请按照说明延长剩余配额。