はじめに
AWS BatchのキューがRUNNABLEから動かない・・・という人向けです。
今回は「AWS Batchと既存ECSの名前が同じこと」に由来する事象に遭遇しました。
世間的にも触りはじたばかりの人はRUNNABLEから動かないことはそこそこあるっぽくて、AWS公式で原因の大別が記載されてたりします。お困りの場合はこちらも合わせて参照してください。
事象
AWS Batchに playground
と命名した「コンピューティング環境」「ジョブキューの定義」「ジョブ」を作成し、 ジョブを積んでみました。コンピューティング環境の詳細は画像の通り。
- 正常に動いた際の期待は、「ECSのタスクがキューを捌いてくれる」です。
- 実際に起ったことは、「EC2インスタンスは起動するが、ECSクラスタでタスクが起動せずキューが捌けない」でした。
色々と試してみたところ「既存ECSの playgournd
という名前のクラスタ/タスク定義」に由来していそうだとわかりました。
解決方法
AWS Batchの名前を変更し、ユニークになるようにしました。要は作り直しです。
ex) playground
=> playground_aws_batch
詳しい挙動は不明
AWS Batchの playground
というジョブを送信すると、 ECSのタスク定義 playground
に新しいリビジョンが追加する動きをしていました。AWS Batchの定義からサフィックス付きで playground_Batch_hogehoge
のようなECSクラスタが自動生成されます。同時に、過去に自分で作成したECSクラスタ/タスク定義の playground
も存在しています。
AWS Batchのジョブ定義に playground
というリビジョンを2件作成し、ジョブを送信。ECSタスク定義 playground
を確認すると2件リビジョンが追加されていることがわかりました。元々は playground:3
だけ。
これより下は未検証範囲で、詳しい動きははっきりしませんが・・・
タスク定義の追加までは動いているっぽいが、 playground*
のプレフィックスのECSクラスタが2件あるため、どちらのECSクラスタで動かすかわからなくなっている状態なのかな?手動でECSクラスタを消したり追加したりの検証が必要になってきそうですが、そこまではやれていません。
関連記事
ネットワーク関連で詰まった場合はこちらが参考になるかも。