タスク定義のコンテナ名を変更するとサービス更新時に 「The container does not exist in the task definition」エラーが出てしまう

ロードバランサー利用中のECSで、タスク定義内のコンテナ名を途中で変更した際に「The container does not exist in the task definition」エラーが出てしまう時の対処法をご説明します。
2023.10.28

困っていること

すでに稼働中のECSクラスターのタスク定義のコンテナ名を変更し、サービスを更新しようとしたところ「The container does not exist in the task definition」エラーが出てしまい、変更できません。

どのように対応すれば良いでしょうか?

なぜエラーになったのか

ロードバランサーが関係しています。

ECSサービス作成時にロードバランサーはコンテナ名を記憶します。

しかし、マネジメントコンソールなどでタスク定義内のコンテナ名を変更すると、新しいコンテナ名がロードバランサーに伝わらず古い情報を保持したままとなっているため、エラーが発生してしまいます。

対応方法

CLIを利用し、サービスの更新時にロードバランサー設定を変更するオプションにて新しいコンテナ名を指定します。

・コマンド例

aws ecs update-service --cluster  --service  --task-definition  --load-balancers targetGroupArn=,containerName=,containerPort=

※補足

上記設定はCLIでのみ可能です。マネジメントコンソールを利用したいという場合は、サービスの再作成をする必要があります。

参考

update-service — AWS CLI 2.13.24 Command Reference