📝
ECS のブルー/グリーンデプロイ時の ECS タスク定義の image の挙動について
ECS タスク定義の image の挙動について
上記のブルー/グリーンデプロイ時の挙動についてです。
結論としてはグリーン環境では更新後のイメージが使用されました。
やってみた
ECS のブルー/グリーンデプロイに関するチュートリアルをコンソールからやってみた
検証環境については上記ブログと同様の方法で作成しました。
デプロイ前の ECS サービス内のタスクでは latest タグの以下のイメージダイジェストを使用しています。
- sha256:2d92f464845e323b6f06e3c591c710accf4456967c0a94d956be6a3935262f8f
ロードバランサーの DNS 名にアクセスし、更新前のアプリケーションが表示されることを確認します。
デプロイ前に更新後のイメージを latest タグでプッシュしておきます。
この状態からブルー/グリーンデプロイを実施してみます。
デプロイで使用する appspec.yaml は以下の内容で作成し、S3 バケットにアップロードしておきました。
appspec.yaml
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: "arn:aws:ecs:ap-northeast-1:012345678901:task-definition/test20250410:1"
LoadBalancerInfo:
ContainerName: "test"
ContainerPort: 80
PlatformVersion: "LATEST"
コンソールから ECS サービスを作成したことで CodeDeploy リソースは自動的に作成されていますので、S3 にアップロードした appspec.yaml を指定してデプロイを作成します。
デプロイ後のグリーン環境のタスクでは latest タグの以下のイメージダイジェストを使用しており、更新後のイメージが使用されています。
- sha256:b26cff63b33edf25645a6d80cf2a91ed196b1a28db798be0e12bb884e9b49fee
ロードバランサーの DNS 名にアクセスすると、更新後のアプリケーションが表示されることを確認できました。
まとめ
今回は ECS のブルー/グリーンデプロイ時の ECS タスク定義の image の挙動について紹介しました。
どなたかの参考になれば幸いです。
Discussion