電通総研 テックブログ

電通総研が運営する技術ブログ

AWS CodeDeployで「Primary taskset target group must be behind listener」によりBlue/Greenデプロイに失敗した原因と解決方法

みなさん、こんにちは。電通総研 金融ソリューション事業部の鈴木です。
今回は、AWS CodeDeployでAmazon ECSに対してアプリケーションをBlue/Greenデプロイした際に発生したエラーについて、原因と解決方法を記載します。

アプリケーションの構成

今回紹介するアプリケーションの全体構成は、以下のとおりです。
(今回の記事に関係しない周辺リソースは省略しています)

resource

アプリケーションはECSで管理しており、ロードバランサーにApplication Load Balancer(ALB)を配置しています。
デプロイについて、GitHub ActionsからコンテナイメージをECRにプッシュし、CodeDeployによってBlue/Greenデプロイを実行しています。
Blue/Greenデプロイとは、アプリケーションのデプロイに伴うダウンタイムを最小限に抑え、動作検証後にロールバックが可能なリリースの運用方式です。
詳しくは、CodeDeploy によるECS でのBlue/Greenデプロイの話を参照してください。

発生した事象

GitHub Actionsに設定したCDワークフローから稼働中のアプリケーションに対して、新しいバージョンのアプリケーションをデプロイした際に以下のエラーが発生しました。
The ELB could not be updated due to the following error: Primary taskset target group must be behind listener...

CodeDeploy

上記のエラーにより、CodeDeployのデプロイフローが動作せず、新しいバージョンのアプリケーションのデプロイが失敗しました。
(CodeDeployで「デプロイの再試行」や、ECSで「新しいデプロイの強制」を用いてデプロイを再実行してもエラーは解消しませんでした)

原因

結論としては、ECSタスクが指定しているターゲットグループと、ALBのリッスンしているターゲットグループの不一致が原因でした。
ターゲットグループとは、ELB (Elastic Load Balancing) のコンポーネントで、トラフィックを分散する複数のターゲットをグループ化したものです。ターゲットは、Amazon EC2 インスタンス、IP アドレス、Lambda関数などがあります。

エラーについて、AWS公式ページに以下のような記述がありました。
このエラーは、オプションのテストリスナーを設定しており、そのリスナーに間違ったターゲットグループが設定されている場合に発生する可能性があります。
Amazon ECS のデプロイに関する問題のトラブルシューティング

上記の通り、ECSタスクが指定しているターゲットグループとALBのリスナールールで指定しているターゲットグループを調べてみたところ、下記のようになっていました。
※ 画像について、都合により各リソース名はマスクしています。
※ ECSタスクのターゲットグループは「target-group-1」、ALBのリスナールールは「target-group-2」としています。ターゲットグループが異なることを表しています。

  • ECSのタスク
    ECS

  • ALBのリスナールール

ALB

図にすると以下のようになっており、ECSタスクとALBのリスナールールで指定しているターゲットグループが不一致していることでエラーとなっていました。

Target Group

解決方法

ALBのリスナールールを手動で変更し、起動中のECSタスクと同様のターゲットグループをリッスンするように修正することで解消しました。
(ALBのリスナールールで指定しているターゲットグループを「target-group-2」から「target-group-1」に変更)

上記の修正により、ECSタスクで指定しているターゲットグループがALBのリスナールールで指定しているターゲットグループと一致します。
これにより、CodeDeployでデプロイを再試行することにより新しいリソースをデプロイすることができました。

まとめ

本記事ではCodeDeployでECSに対してアプリケーションをデプロイした際のエラーについて原因と解決方法を記載しました。
インターネットを調べても同様の記事を見つけられなかったため、備忘として残したいと思います。

ECSタスクとALBのリスナールールで指定しているターゲットグループがずれた根本原因についてはいまだに特定できていないため、継続調査していこうと思います。
以上、同様の事象が発生した方の役に立てれば幸いです。最後までお読みいただきありがとうございました。


執筆:@suzuki.takuma、レビュー:@nakamura.toshihiro
Shodoで執筆されました