CLI経由なら、ECSのALBは更新できる

こんにちは。 エキサイト株式会社の三浦です。

AWSにはECSという、コンテナをデプロイ・運用できるサービスがあります。

このECSにはALBを接続することもでき、それによってURLからのアクセスをECSのコンテナに流すことができます。

今回は、一度ECSにALBを接続するよう設定した後、その設定を更新する方法について説明します。

Amazon ECS

ECSはAWSのサービスで、コンテナをデプロイ・運用できるサービスです。

公式には以下のように説明されています。

aws.amazon.com

Amazon ECS は、フルマネージドコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションを簡単にデプロイ、管理、およびスケーリングできます。

このECSにはALB(厳密にはターゲットグループ)を接続する事ができ、それによって特定のURLへのアクセスをコンテナに流すことが出来ます。

さて、ECSに対してALBの接続設定をした後、何かしらの事情で変更したいこともあると思います。

ですが、実はWebコンソール上で変更しようとすると、以下のような表示が出ます。

実はWebコンソール上ではALB設定を更新することは出来ず、もし変更したいのであればECS自体を作り直す必要があるのです。

ですが当然、わざわざECSを作り直すのは大きな労力が必要になります。

なにか方法はないのでしょうか?

CLI経由でALB設定を更新する

実は、WebコンソールではなくCLI経由なら、ECSを作り直すことなくALBを更新できます。

aws.amazon.com

やり方は簡単で、AWS CLIaws ecs update-service を使用するだけです。

aws ecs update-service \
  --cluster *** \
  --service *** \
  --load-balancers targetGroupArn=***,containerName=***,containerPort=*** \
    targetGroupArn=***,containerName=***,containerPort=***

ただし、AWS CLIのバージョンが古いとうまく行かない可能性があるので、十分にアップデートしてから実行することをおすすめします。

また、Terraformでも同様に、バージョンを十分に上げればALB変更時に delete/create ではなく update で更新してくれるようです。

最後に

ECSへのALB設定は、多くの場合作成初期以外には変更する機会は少ないと思いますが、何かしらインフラで大掛かりなことをしようとすると、すでに稼働中でも変更する可能性はあります。

そういったとき、Webコンソールだけ見るとECSの作り直しが必要そうに見えますが、CLI経由でも作り直しなしの更新だけで済むのであればだいぶ手間が減るはずです。

この記事が参考になったら幸いです。