📝

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