如何排查 API Gateway API 的“429 请求过多”或“已超出限制”错误?

上次更新日期:2022 年 9 月 26 日

在向我的 Amazon API Gateway API 发送请求时,我收到了“429 请求过多”或“已超出限制”错误。如何排查这些错误?

简短描述

API Gateway 在每个区域具有账户级配额。限制配额为每秒 10000 个请求(RPS),以及由令牌存储桶算法提供的额外暴增容量。每个账户和区域的最大存储桶容量为 5000 个请求。API Gateway 节流相关设置按以下顺序应用:

超过节流限制或配额将返回“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

要解决此错误,请按照说明延长剩余配额