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