AWS Batch で ECS Amazon Linux 2 から Amazon Linux 2023 に更新する方法を教えてください
困っていた内容
Amazon Linux 2 のサポート終了に向けて、AWS Batch 環境の AMI を更新したいです。
現在、ECS の Amazon Linux 2 を使用しているので、Amazon Linux 2023 に更新する方法を教えてください
どう対応すればいいの?
設定変更が可能かどうかに応じて、設定更新もしくは再作成を行ってください。
AWS Batch コンピューティング環境のインフラストラクチャ構成は、要件を満たした場合にのみ更新できます。
要件を満たしていない場合は、設定変更では更新できませんので、コンピューティング環境の再作成が必要となります。
AWS Batch でコンピューティング環境を更新できる条件を教えてください | DevelopersIO
コンピューティング環境が次の条件を満たしているか確認してください。
- サービスロールにサービスリンクロール(
AWSServiceRoleForBatch)が指定されている- 配分戦略が次のいずれかに設定されている(
BEST_FITを指定していない)
BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED
やってみた
インフラストラクチャ構成が変更できるコンピューティング環境で、設定変更をやってみます。
基本的な流れとしては次のとおりですが、独自の起動テンプレートで AMI ID を指定している場合、そちらの更新も必要となります。
AWS Batch コンソールの「環境」から、更新したい環境を選び、「アクション」の「編集」を選択します。

「その他の設定」をクリックします。
※「その他の設定」が表示されない場合、設定変更の要件を満たしているか確認してください。

「EC2 設定」の「イメージタイプ」を、「Amazon Linux 2023」もしくは「Amazon Linux 2023 (GPU)」に変更します。
※「イメージ ID の上書き」を指定している場合は、併せて変更してください。

「変更を保存」をクリックします。

更新が正常に完了することを確認します。
(少し待つと「ステータス」がValidに更新されます)

再作成で更新する場合
コンピューティング環境のインフラストラクチャ構成が更新できない場合、再作成が必要となります。
大枠の流れとしては次のとおりですが、詳細な手順は AWS 公式ドキュメントを参照してください。
- Amazon Linux 2023 を指定した新しいコンピューティング環境を作成する
- 新しいコンピューティング環境を、既存のジョブキューに追加する
- 既存のコンピューティング環境を、既存のジョブキューから削除する
- 既存のコンピューティング環境を削除する
なお、新しいコンピューティング環境を作成する際は、AWS Batch コンソールの「クローン」機能を使うと設定作業を削減できます。

参考資料
- ECS AL2 から ECS AL2023 に移行する方法 - AWS Batch
- AWS Batch のコンピューティング環境を更新する - AWS Batch
- AWS Batch EC2 コンピューティング環境を更新する | AWS re:Post
- インフラストラクチャの更新を実行する - AWS Batch
インフラストラクチャの更新には、サービスにリンクされたロール [AWSServiceRoleForBatch] と、BEST_FIT_PROGRESSIVE、SPOT_CAPACITY_OPTIMIZED、SPOT_PRICE_CAPACITY_OPTIMIZED の割り当て戦略が必要です。環境がこれらの要件を満たしていない場合は、代わりにブルー/グリーン更新を使用します。
…(中略)…
使用される AMI ID が起動テンプレートからのものである場合、imageId または imageIdOverride の設定を更新しても AMI ID は更新されません。起動テンプレートから選択した AMI ID を更新する唯一の方法は、起動テンプレートを更新することです。
AWS Batch は、インフラストラクチャの更新中にのみ、起動テンプレートを新しい起動テンプレートバージョンで更新します。詳細については、「でコンピューティング環境を更新する AWS Batch」を参照してください。






