マネジメンソコンソールからECS Native Blue/Green Deploymentのテストリスナーを設定する場合は一度ECSサービスを作成してから更新時に設定する必要がある
マネジメントコンソールから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 CDKでデプロイしています。使用しているコードは以下のとおりです。
デプロイされたECSサービスはECS Native Blue/Green Deploymentでデプロイするようになっています。
ただし、HTTP/80、HTTP/10080の各リスナーのデフォルトルールは使用していません。

今回の検証では各リスナーのデフォルトルールを使用する形で追加でECSサービスを用意します。
ECSサービスの新規作成
ECSサービスの新規作成を行おうとします。
デプロイオプションはブルー/グリーンを選択します。

ロードバランシングの項目を確認します。
新しくALBを作成するように選択しました。以下のようにどのようなリスナールールを作成するかは指定できても、どのリスナーにそのリスナールールを作成するかは指定できませんでした。

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

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

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

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

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

ECSサービスの更新
ローリングアップデートを使用するECSサービスのデプロイが完了したのち、ECSサービスの更新を行います。
デプロイオプションをローリングアップデートからブルー/グリーンに変更します。

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

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

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

マネジメントコンソールで作成する場合はワンクッションが必要
マネジメントコンソールからECS Native Blue/Green Deploymentのテストリスナーを設定する場合は一度ECSサービスを作成してから更新時に設定する必要があることを確認しました。
マネジメントコンソールで作成する場合はワンクッションが必要なのが少し手間ではありますね。
なお、今回はECSサービス作成時にローリングアップデートを採用しましたが、Green用のターゲットグループがHTTP/80のデフォルトリスナールールに紐づいているのであれば、最初からECS Native Blue/Green Deploymentで作成することも可能です。

この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!








