API Gateway API の「429 Too Many Requests」(429 リクエストが多すぎます) または「Limit Exceeded」(制限を超過しました) エラーをトラブルシューティングするにはどうすればよいですか?
最終更新日: 2022 年 9 月 26 日
Amazon API Gateway API にリクエストを送信したときに、「429 Too Many Requests」(429 リクエストが多すぎます) または「Limit Exceeded」(制限を超過しました) エラーが表示されました。これらのエラーをトラブルシューティングするにはどうすればよいですか?
簡単な説明
API Gateway には、リージョンごとにアカウントレベルのクォータがあります。スロットリングクォータは 10,000 リクエスト/秒 (RPS) で、トークンバケットアルゴリズムによって追加のバーストキャパシティが提供されます。バケットの最大キャパシティは、アカウントとリージョンあたり 5,000 リクエストです。API Gateway スロットリング関連の設定は、次の順序で適用されます。
- 使用プランの API ステージ用に設定したクライアントごとまたはメソッドごとのスロットリング制限。
- API ステージ用に設定したメソッドごとのスロットリング制限。
- リージョンごとのアカウントレベルのスロットリング。
- AWS リージョンレベルのスロットリング。
スロットリング制限またはクォータを超過すると、「429 Too Many Requests」(429 リクエストが多すぎます) または「Limit Exceeded」(制限を超過しました) というエラー応答が返されます。
詳細については、「API Gateway でスロットリング制限設定が適用される方法」を参照してください。
解決方法
開始する前に、API Gateway のトラブルシューティングのために Amazon CloudWatch Logs をオンにするための手順に従っていることを確認してください。[エラー] を選択して、エラーになった API へのリクエストのみの実行ログを生成します。その後、CloudWatch コンソールを使用して、ログに記録された API リクエストとレスポンスを表示します。
「429 Too Many Requests」(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 リクエストを再送信します。
詳細については、「exponential backoff and jitter」(エクスポネンシャルバックオフとジッター) を参照してください。
「Limit Exceeded」(制限を超過しました) エラー
このエラーは、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
このエラーを解決するには、残りのクォータを拡張するための指示に従います。