AWS Batchでジョブを設定したのに動かない事象があったので、調べたことをまとめておきます。
原因のパターンは3つ見つかりました。
- コンピューティング環境のメモリ<ジョブで指定したメモリになっている
- コンピューティング環境のメモリ≒ジョブで指定したメモリになっている
- コンピューティング環境・ジョブキューのステータスがDISABLEになっている
それぞれ簡単に理由を解説します。
原因1: コンピューティング環境のメモリ<ジョブで指定したメモリ
一番に挙げられる原因はこれのようです。
EC2を使う場合、インスタンスタイプでvCPU・メモリが決まります。
このコンピューティング環境で指定しているメモリがジョブ登録時に指定したメモリを超えていると、実行に必要な環境が用意できていないとして実行されないようです。
両方を確認して、しっかりと実行できる環境を整えましょう。
原因2: コンピューティング環境のメモリ≒ジョブで指定したメモリ
結局のところ原因1と同じなのですが、コンピューティング環境のメモリとジョブ登録時のメモリがほぼイコール、ギリギリおさまっている環境でも動かないことがあります。
ジョブに割り当てられるメモリはコンピューティング環境のメモリからOSが使用するメモリを差し引いたものなので、コンピューティング環境とジョブのメモリがほぼイコールだと、結果的にメモリが足りなくなってしまうことがあるようです。
これは気付きにくい点だと思いますので、注意が必要ですね。
原因3: コンピューティング環境・ジョブキューのステータスがDISABLE
筆者はこういう凡ミスを積極的にやらかすタイプなので、これについても言及しておきたい。
一旦使わないからと無効化していて、有効化を忘れているパターンです。
コンソールをひらけばそれぞれの管理画面に有効化ボタンがありますので、有効化しておきましょう。
リソースは余裕を持たないとね
以上が考えられる理由です。
コストが気になるところではありますが、可用性を保ちたいのであればリソースは余裕を持っておくことが大切ですね。
「あれ、RUNNINGにならないな」と思ったら、それぞれチェックしてみましょう。