AWS Batch でエラーが発生しても再試行戦略による再試行がされないときの対処方法

2022.07.15

困っていた内容

AWS Batch を使用して、外部サイトからデータを取得するバッチ処理を実行しています。一時的な問題に備えて再試行戦略で再試行数を10に設定していますが、外部サイトからのデータ取得がエラーになったにも関わらず、再試行が行われませんでした。
バッチ処理中にエラーが発生した場合に再試行するには何か設定が足りていないのでしょうか。

どう対応すればいいの?

コンテナの終了コードを確認してください。

AWS Batch ではジョブが失敗した場合、再試行戦略に従い自動的に再試行が実施されますが、失敗の判断は最終的な終了コードで判断されます。そのため、処理中にネットワークエラー等が発生している場合も、終了コードが0で終了した場合は、正常に実行されたと判断されて再試行は実施されません。

ジョブの状態 - AWS Batch

ジョブのコンテナが終了すると、プロセス終了コードでジョブの正否が判定されます。終了コードの 0 は成功を示し、ゼロ以外の終了コードは失敗を示します。試行が失敗したジョブの再試行戦略に設定されている再試行回数が残っている場合は、ジョブの状態が RUNNABLE に移行します。

コンテナの終了コードは、マネジメントコンソールもしくは AWS CLI の describe-jobsから確認できます。

再試行戦略では、コンテナ内のすべてのエラーに応じて実施されるものではないことを理解し、必要に応じてコンテナ内のアプリケーションに再試行の仕組みを導入することや、エラーが発生した場合は終了コード0以外で処理を終了することをご検討ください。

参考資料