0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サクッとECS new built-in Blue/Green Deploymentを検証

Last updated at Posted at 2025-08-15

CodeDeploy不要でECSのBlue/Green Deploymentの設定ができるようになったので早速検証

デプロイの流れ
image.png

事前準備

Blue/Green切り替えようのTargetGroupを作成し、ALBのリスナールールを設定

b, gのTargetGroupを用意し、bの方の重み付を100にしておく
スクリーンショット 2025-08-13 15.15.37.png

ECS Service設定

ECSのServiceの設定画面からブルー/グリーンを設定
ベイク時間やデプロイライフサイクルフックは一旦無視

補足
ベイク時間
-> その時間内であればロールバック可能

デプロイライフサイクルフック
-> Lambdaの実行結果によってBlue -> Greenへの切り替えが可能になり、切り替えのタイミングをコントロールできる

スクリーンショット 2025-08-13 15.25.35.png

スクリーンショット 2025-08-13 15.23.34.png

ロールはLBを操作するためのロールが必要で以下を設定した

  "elasticloadbalancing:DescribeTargetGroups",
  "elasticloadbalancing:DescribeTargetHealth",
  "elasticloadbalancing:DescribeRules"
  "elasticloadbalancing:RegisterTargets",
  "elasticloadbalancing:DeregisterTargets"
  "elasticloadbalancing:ModifyRule",

リスナーに本番用のトラフィックを受けるルールを設定し、ターゲットグループに事前準備で作成したb, 代替の方にgを設定
テストリスナーは切り替え前にトラフィックを送るためのリスナーで、今回はデプロイライフサイクルフックを設定しておらず即時切り替えなので不要

注意点
terraformで設定する場合はproviderのバージョンに注意
テストリスナー設定に関するバグがあるのでバージョンを6.6.0以上にする必要あり
https://github.com/hashicorp/terraform-provider-aws/issues/43552

デプロイ実施

新しいバージョンのタスクをデプロイする前はbの方に1つタスクが起動している状態
スクリーンショット 2025-08-13 15.26.57.png

新しいバージョンのタスクをデプロイするとステータスが進行中になり、
gの方に新しいタスクが起動
スクリーンショット 2025-08-13 15.30.11.png

スクリーンショット 2025-08-13 15.30.53.png

そして、gの方の重み付が自動で100に!
スクリーンショット 2025-08-13 15.33.16.png

その後、bの方に接続されていた古いタスクは自動で削除され、削除完了後デプロイステータスが更新され完了
スクリーンショット 2025-08-13 15.32.24.png

スクリーンショット 2025-08-13 15.38.30.png

切り替えのタイミングを制御したい場合はデプロイライフサイクルフックの設定が必要だがLambdaの管理が発生してしまう

ただし、設定すればテストを実行して問題なければ切り替え、などより安全にデプロイができる
今後の機能追加に期待!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?