マネジメンソコンソールからECS Native Blue/Green Deploymentのテストリスナーを設定する場合は一度ECSサービスを作成してから更新時に設定する必要がある

マネジメンソコンソールからECS Native Blue/Green Deploymentのテストリスナーを設定する場合は一度ECSサービスを作成してから更新時に設定する必要がある

マネジメントコンソールで作成する場合はワンクッションが必要
2026.03.03

マネジメントコンソールからECS Native Blue/Green Deploymentを設定したいけどテストリスナーの設定ができないな

こんにちは、のんピ(@non____97)です。

皆さんはマネジメントコンソールからECS Native Blue/Green Deploymentを設定したいけどテストリスナーの設定ができないなと思ったことはありますか? 私はあります。

本記事でECS Native Blue/Green DeploymentとはCodeDeployを使用しない、ECSの組み込みのBlue/Green Deploymentを指します。ECS Build-in Blue/Green Deploymentとも呼ばれます。

従来のCodeDeployを使用する方式と違う点として、リスナー単位ではなく、リスナールール単位でトラフィックを切り替えできるようになった点が挙げられます。

リスナールールで本番とテストトラフィックを切り替える場合は、ヘッダーやパス、送信元IPアドレスなどを組み合わせることになると考えます。

ただし、ポート分離による接続先の切り替えが容易であることや、テストトラフィックを流せる人をセキュリティグループでネットワークレベルで制限できることから、引き続きテストリスナーを用意したい場面もあります。

しかし、マネジメントコンソール上でECSサービス作成時にECS Native Blue/Green Deploymentのテストリスナールールは設定できても、テストリスナーを設定することはできません。

どのようにすれば良いのでしょうか。マネジメントコンソールからパパッと作成したいのにAWS CLIやCloudFormation、AWS CDK、Terraformを使用するのは避けたい場面もあります。

対処としてはタイトル通りなのですが、一度ECSサービスをデプロイし、サービスの更新をする際にテストリスナーを指定する形になります。

以降画面キャプチャーを交えて紹介します。

やってみた

検証環境

検証環境は以下のとおりです。

AWS Distro for OpenTelemetry (ADOT) Collector と ADOT SDKをとでCloudWatch Application Signalsを使ってみた.png

以下記事のものをベースにしています。

https://dev.classmethod.jp/articles/cloudwatch-application-signals-with-adot-collector-and-sdk/

リソースは全てAWS CDKでデプロイしています。使用しているコードは以下のとおりです。

https://github.com/non-97/ecs-native-blue-green/tree/v3.0.0

デプロイされたECSサービスはECS Native Blue/Green Deploymentでデプロイするようになっています。

ただし、HTTP/80、HTTP/10080の各リスナーのデフォルトルールは使用していません。

16.リスナールール.png

今回の検証では各リスナーのデフォルトルールを使用する形で追加でECSサービスを用意します。

ECSサービスの新規作成

ECSサービスの新規作成を行おうとします。

デプロイオプションはブルー/グリーンを選択します。

1.デプロイオプション.png

ロードバランシングの項目を確認します。

新しくALBを作成するように選択しました。以下のようにどのようなリスナールールを作成するかは指定できても、どのリスナーにそのリスナールールを作成するかは指定できませんでした。

2.ロードバランシング.png

既存のALBを選択する場合は以下のようになります。こちらもリスナー自体を選択することはできません。

9.defaultルールに一つしかターゲットグループが存在していない場合.png

また、Green用のターゲットグループがHTTP/80のデフォルトリスナールールに紐づいていない影響で選択したリスナールールはこのターゲットグループにトラフィックを転送するルールがありませんと、選択できませんでした。

10.選択したリスナールールはこのターゲットグループにトラフィックを転送するルールがありません.png

このまま作成しようとしてもグリーンターゲットグループは必須ですと怒られます。

11.グリーンターゲットグループは必須です.png

暫定対応としてローリングアップデートでデプロイをします。

13.ローリングアップデート.png

このときのロードバランシング設定は以下のとおりです。

14.ローリングアップデートのロードバランシング.png

ECSサービスの更新

ローリングアップデートを使用するECSサービスのデプロイが完了したのち、ECSサービスの更新を行います。

デプロイオプションをローリングアップデートからブルー/グリーンに変更します。

17.ブルーグリーンにした際のロードバランシング3.png

すると、テストリスナーを選択できるような画面が表示されました。

15.ブルーグリーンにした際のロードバランシング.png

以下のようにテストリスナーをはじめとした各種パラメーターを設定します。

16.ブルーグリーンにした際のロードバランシング2.png

こちらでデプロイをします。

すると、各リスナーのデフォルトルールでBlueとGreenのターゲットグループが関連付けられるようになりました。

18.各リスナーのデフォルトルール.png

マネジメントコンソールで作成する場合はワンクッションが必要

マネジメントコンソールからECS Native Blue/Green Deploymentのテストリスナーを設定する場合は一度ECSサービスを作成してから更新時に設定する必要があることを確認しました。

マネジメントコンソールで作成する場合はワンクッションが必要なのが少し手間ではありますね。

なお、今回はECSサービス作成時にローリングアップデートを採用しましたが、Green用のターゲットグループがHTTP/80のデフォルトリスナールールに紐づいているのであれば、最初からECS Native Blue/Green Deploymentで作成することも可能です。

3.既存のロードバランサー.png

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!

この記事をシェアする

FacebookHatena blogX

関連記事