タスク定義のコンテナ名を変更するとサービス更新時に 「The container does not exist in the task definition」エラーが出てしまう
ロードバランサー利用中のECSで、タスク定義内のコンテナ名を途中で変更した際に「The container does not exist in the task definition」エラーが出てしまう時の対処法をご説明します。
困っていること
すでに稼働中の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でのみ可能です。マネジメントコンソールを利用したいという場合は、サービスの再作成をする必要があります。