AWS Batch ジョブが失敗し、「リクエストが多過ぎるエラーが発生しています」というエラーが表示されます。
簡単な説明
AWS Batch は、アカウントの AWS リージョンに基づいて、AWS アカウントへのすべての API リクエストをスロットリングします。これにより、AWS Batch ではすべてのお客様の公正な使用と一貫したパフォーマンスが維持されます。AWS Batch API クォータは通常、DescribeJobs および SubmitJob API 呼び出しを含むすべての API に適用されます。
注: SubmitJob オペレーションの各アカウントの 1 秒あたりの最大トランザクション数 (TPS) は 50 です。
AWS Batch API のクォータに達すると、AWS Batch は次のエラーメッセージを返します。
「リクエストが多過ぎるエラーが発生しています (サービス: AWSBatch; ステータスコード: 429; エラーコード: TooManyRequestsException)」
リクエストが多過ぎるエラーが発生していますエラーが発生する一般的な理由は 2 つあります。
- AWS コマンドラインインターフェイス (CLI) または AWS SDK を使用して、プログラムで複数のジョブを同時に送信する
- AWS Lambda を使用して複数のジョブを送信する
解決方法
エラーをトラブルシューティングする際は、次の点に注意してください。
- API のクォータは、AWS のエンドポイントにのみ適用されます。これらのクォータはアカウントには適用されません。
- AWS では、Amazon API リクエストをリージョンごとにスロットリングすることで、大量のリクエストが個々のアカウントからサービスエンドポイントに殺到するのを防ぎます。
- AWS では、すべての Amazon API への呼び出しが、許可されている API リクエストの最大レートを超えないようにします。API リクエストの最大レートは、リージョンによって異なります。
再試行およびエクスポネンシャルバックオフアルゴリズムを使用しして、ジョブを再送信する
詳細については、「指数バックオフとジッター」を参照してください。
AWS Batch 配列ジョブを使用して、1 回の SubmitJob API 呼び出しで複数のジョブを送信する
詳細については、「配列ジョブ」および「SubmitJob」を参照してください。
注: AWS Batch 配列ジョブでは、ジョブのコピーを最大 10,000 個送信できます。
API スロットリングクォータの調整
AWS アカウントで API スロットリングクォータの引き上げをリクエストできます。クォータの調整をリクエストするには、AWS サポートセンターにお問い合わせください。