CodeDeploy ブルー/グリーンから Amazon ECS ブルー/グリーンサービスデプロイへの移行 - Amazon Elastic Container Service

CodeDeploy ブルー/グリーンから Amazon ECS ブルー/グリーンサービスデプロイへの移行

Amazon ECS ブルー/グリーンデプロイを使用すると、本番環境に実装する前にサービスを変更してテストできます。

Amazon ECS ブルー/グリーンデプロイ用に新しいライフサイクルフックを作成する必要があります。

前提条件

ブルー/グリーンデプロイを開始する前に、次の操作を実行します。

  1. Amazon ECS CodeDeploy IAM ロールを次のアクセス許可に置き換えてください。

  2. CodeDeploy オートメーションをオフにします。詳細については、「CodeDeploy ユーザーガイド」の「Working with deployment groups in CodeDeploy」を参照してください。

  3. CodeDeploy ブルー/グリーンデプロイに次の情報があることを確認してください。この情報は Amazon ECS ブルー/グリーンデプロイに再利用できます。

    • 本番ターゲットグループ

    • 本番リスナー

    • 本番ルール

    • テストターゲットグループ

      これはグリーンサービスリビジョンのターゲットグループです。

  4. Application Load Balancer ターゲットグループがリスナールールに適切に関連付けられていることを確認してください。

    • テストリスナーを使用していない場合、両方のターゲットグループ (本番およびテスト) を本番のリスナールールに関連付ける必要があります。

    • テストリスナーを使用している場合、1 つのターゲットグループを本番のリスナールールにリンクし、もう 1 つのターゲットグループをテストのリスナールールにリンクする必要があります。

    この要件が満たされない場合、サービスのデプロイは失敗し、次のエラーが表示されます。Service deployment rolled back because of invalid networking configuration. Both targetGroup and alternateTargetGroup must be associated with the productionListenerRule or testListenerRule.

  5. サービスに継続中のサービスデプロイがないことを確認します。詳細については、「Amazon ECS サービスデプロイを使用してサービス履歴を表示する」を参照してください。

  6. Amazon ECS ブルー/グリーンデプロイでは、サービスが次のいずれかの機能を使用する必要があります。適切なリソースを設定してください。

  7. Amazon ECS ブルー/グリーンデプロイのステージのライフサイクルステージに Lambda 関数を実行するかどうかを決定します。

    • スケールアップ前

    • スケールアップ後

    • テストトラフィックの移行

    • テストトラフィックの移行後

    • 本番トラフィックの移行

    • 本番トラフィックの移行後

    ライフサイクルステージごとに Lambda 関数を作成します。詳細については、「AWS Lambda デベロッパーガイド」の「コンソールで Lambda 関数の作成」を参照してください。

サービスのデプロイコントローラーの更新の詳細については、「Amazon ECS サービスのパラメータの更新」を参照してください。

手順

  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. [Clusters] (クラスター) ページで、クラスターを選択します。

    クラスター詳細のページが表示されます。

  3. [サービス] タブでサービスを選択します。

    [サービスの詳細] ページが表示されます。

  4. バナーで [デプロイコントローラータイプの更新] を選択します。

    [デプロイコントローラータイプの移行] ページが表示されます。

  5. [新規] を展開し、次のパラメータを指定します。

    1. [デプロイコントローラータイプ] では [ECS] を選択します。

    2. [デプロイ戦略] では、[ブルー/グリーン] を選択します。

    3. [ベイク時間] には、ブルーおよびグリーンのサービスリビジョンの両方が実行される時間を入力します。

    4. ライフサイクルステージに Lambda 関数を実行するには、[デプロイライフサイクルフック] で一意の Lambda 関数ごとに次の操作を行います。

      1. [Add] (追加) を選択します。

        実行する一意の関数ごとにこの操作を繰り返します。

      2. [Lambda 関数] には、関数名を入力します。

      3. [ロール] には、ブルー/グリーンのアクセス許可を持つ前提条件で作成したロールを選択します。

        詳細については、「Amazon ECS ブルー/グリーンデプロイの Lambda 関数に必要となるアクセス許可」を参照してください。

      4. [ライフサイクルステージ] には、Lambda 関数が実行されるステージを選択します。

      5. (オプション) [フックの詳細] には、フックに関する情報を提供するキーおよび値のペアを入力します。

  6. [ロードバランシング] を展開し、次の内容を設定します。

    1. [ロール] には、ブルー/グリーンのアクセス許可を持つ前提条件で作成したロールを選択します。

      詳細については、「Amazon ECS ブルー/グリーンデプロイの Lambda 関数に必要となるアクセス許可」を参照してください。

    2. [リスナー] には、CodeDeploy ブルー/グリーンデプロイから本番リスナーを選択します。

    3. [本番ルール] には、CodeDeploy ブルー/グリーンデプロイから本番ルールを選択します。

    4. [テストルール] には、CodeDeploy ブルー/グリーンデプロイからテストルールを選択します。

    5. [ターゲットグループ] には、CodeDeploy ブルー/グリーンデプロイから本番ターゲットグループを選択します。

    6. [代替ターゲットグループ] には、CodeDeploy ブルー/グリーンデプロイからテストターゲットグループを選択します。

  7. [更新] を選択します。

次のステップ

  • サービスを更新してデプロイを開始します。詳細については、「Amazon ECS サービスを更新する」を参照してください。

  • デプロイプロセスをモニタリングし、ブルー/グリーンのパターンに従っていることを確認します。

    • グリーンサービスリビジョンが作成され、スケールアップされる

    • テストトラフィックがグリーンリビジョンにルーティングされている (設定されている場合)

    • 本番トラフィックがグリーンリビジョンに移行されている

    • ベイク時間が過ぎたら、ブルーリビジョンが終了する