EC2/オンプレミスコンピューティングプラットフォームの Blue/Green デプロイ - AWS CodeDeploy

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EC2/オンプレミスコンピューティングプラットフォームの Blue/Green デプロイ

このトピックでは、EC2/オンプレミスコンピューティングプラットフォームを使用する CodeDeploy デプロイのコンポーネントとワークフローについて説明します。Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要」を参照してください。

EC2/オンプレミスコンピューティングプラットフォームのデプロイコンポーネント

次の図は、EC2/オンプレミスコンピューティングプラットフォームでの CodeDeploy デプロイのコンポーネントを示しています。

EC2/オンプレミスコンピューティングプラットフォームでの CodeDeploy デプロイのコンポーネント。

EC2/オンプレミスコンピューティングプラットフォームのデプロイワークフロー

次の図は、アプリケーションリビジョンのデプロイの主要なステップを示しています。

アプリケーションリビジョンのデプロイにおける主要なステップ。

ステップには以下が含まれます。

  1. アプリケーションを作成し、デプロイするアプリケーションリビジョンとアプリケーションのコンピューティングプラットフォームを一意に識別する名前を付けます。 は、デプロイ中にこの名前 CodeDeploy を使用して、デプロイグループ、デプロイ設定、アプリケーションリビジョンなどの正しいデプロイコンポーネントを参照していることを確認します。詳細については、「でアプリケーションを作成する CodeDeploy」を参照してください。

  2. アプリケーションリビジョンをデプロイするデプロイタイプとインスタンスを指定して、デプロイグループをセットアップします。インプレースデプロイでは、最新のアプリケーションリビジョンでインスタンスを更新します。Blue/Green デプロイはロードバランサーでデプロイグループ用の代替セットを登録し、元のインスタンスを登録解除します。

    インスタンス、Amazon EC2 Auto Scaling グループ名、または両方に適用するタグを指定できます。

    デプロイグループでタグのグループを 1 つ指定すると、 は指定されたタグの少なくとも 1 つが適用されたインスタンスに CodeDeploy デプロイします。2 つ以上のタググループを指定すると、 は各タググループの基準を満たすインスタンスにのみ CodeDeploy デプロイします。詳細については、「Tagging Instances for Deployments」を参照してください。

    いずれの場合も、インスタンスはデプロイで使用するように設定する必要があり (つまり、タグ付けされているか、Amazon EC2 Auto Scaling グループに属している必要があります)、 CodeDeploy エージェントをインストールして実行する必要があります。

    Amazon Linux または Windows Server に基づいて Amazon EC2 インスタンスをすばやくセットアップするために使用できる AWS CloudFormation テンプレートが用意されています。Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux (RHEL)、または Windows Server インスタンスにインストールできるように、スタンドアロン CodeDeploy エージェントも提供しています。詳細については、「を使用してデプロイグループを作成する CodeDeploy」を参照してください。

    また、以下のオプションを指定することもできます。

    • Amazon SNS の通知 成功イベントや失敗イベントなど、指定されたイベントがデプロイとインスタンスで発生したときに、Amazon SNS トピックの受信者に通知を送信するトリガーを作成します。詳細については、「Monitoring Deployments with Amazon SNS Event Notifications」を参照してください。

    • アラームベースのデプロイ管理。Amazon CloudWatch アラームモニタリングを実装して、メトリクスが で設定されたしきい値を超過または下回ったときにデプロイを停止します CloudWatch。

    • 自動デプロイロールバック。デプロイが失敗するか、アラームのしきい値に一致したときに、以前の既知の正常なリビジョンに自動的にロールバックするようデプロイを設定します。

  3. アプリケーションのリビジョンを同時にデプロイする必要があるインスタンスの数と、デプロイの成功と失敗の条件を示すために、デプロイ構成を指定します。詳細については、「View Deployment Configuration Details」を参照してください。

  4. アプリケーションリビジョンを Amazon S3 または にアップロードします GitHub。デプロイするファイルとデプロイ中に実行するスクリプトに加えて、アプリケーション仕様ファイル (AppSpec ファイル) を含める必要があります。このファイルには、ファイルを各インスタンスにコピーする場所や、デプロイスクリプトを実行するタイミングなど、デプロイの手順が含まれています。詳細については、「のアプリケーションリビジョンの使用 CodeDeploy」を参照してください。

  5. デプロイグループにアプリケーションリビジョンをデプロイします。デプロイグループ内の各インスタンスの CodeDeploy エージェントは、アプリケーションリビジョンを Amazon S3 またはインスタンスにコピー GitHub します。次に、 CodeDeploy エージェントはリビジョンのバンドルを解除し、 AppSpec ファイルを使用してファイルを指定された場所にコピーし、デプロイスクリプトを実行します。詳細については、「を使用してデプロイを作成する CodeDeploy」を参照してください。

  6. デプロイの結果を確認します。詳細については、「でのデプロイのモニタリング CodeDeploy」を参照してください。

  7. リビジョンをデプロイします。ソースコンテンツのバグを修正する、別の順序でデプロイスクリプトを実行する、または失敗したデプロイに対応する必要がある場合に、この作業を行います。これを行うには、改訂されたソースコンテンツ、デプロイスクリプト、 AppSpec ファイルを新しいリビジョンにバンドルし、そのリビジョンを Amazon S3 バケットまたは GitHub リポジトリにアップロードします。次に、新しいリビジョンで同じデプロイグループに新しいデプロイを実行します。詳細については、「を使用してデプロイを作成する CodeDeploy」を参照してください。

インスタンスの設定

アプリケーションリビジョンを初めてデプロイする前に、インスタンスを設定する必要があります。アプリケーションリビジョンで 3 つの本番稼働用サーバーと 2 つのバックアップサーバーが必要な場合、5 つのインスタンスを起動または使用します。

インスタンスを手動でプロビジョニングするには:

  1. インスタンスに CodeDeploy エージェントをインストールします。 CodeDeploy エージェントは、Amazon Linux、Ubuntu Server、RHEL、および Windows Server インスタンスにインストールできます。

  2. タグを使用してデプロイグループのインスタンスを識別する場合は、タグ付けを有効にします。 CodeDeploy は、タグを使用してインスタンスを識別し、 CodeDeploy デプロイグループにグループ化します。入門チュートリアルでは両方を使用しましたが、キーまたは値を使用して、デプロイグループのタグを定義できます。

  3. IAM インスタンスプロファイルをアタッチして、Amazon EC2 インスタンスを起動します。IAM インスタンスプロファイルは、 CodeDeploy エージェントがインスタンスのアイデンティティを検証するために起動されるときに Amazon EC2 インスタンスにアタッチする必要があります。

  4. サービスロールを作成します。が AWS アカウントのタグ CodeDeploy を拡張できるようにサービスアクセスを提供します。

最初のデプロイでは、 AWS CloudFormation テンプレートがこれらをすべて実行します。 CodeDeploy エージェントがすでにインストールされている Amazon Linux または Windows Server に基づいて、新しい単一の Amazon EC2 インスタンスを作成して設定します。詳細については、「のインスタンスの使用 CodeDeploy」を参照してください。

注記

ブルー/グリーンデプロイでは、置換環境用に既にあるインスタンスを使用するか、デプロイプロセスの一環として新しいインスタンスを CodeDeploy プロビジョニングするかを選択できます。

アプリケーションリビジョンのアップロード

アプリケーションのソースコンテンツフォルダ構造のルートフォルダの下に AppSpec ファイルを配置します。詳細については、「Application Specification Files」を参照してください。

zip、tar、または圧縮された tar などのアーカイブファイル形式にアプリケーションのソースコンテンツフォルダ構造をバンドルします。アーカイブファイル (リビジョン ) を Amazon S3 バケットまたは GitHub リポジトリにアップロードします。

注記

tar および圧縮 tar アーカイブファイル形式(.tar および .tar.gz)は、Windows Server インスタンスではサポートされていません。

アプリケーションとデプロイグループの作成

CodeDeploy デプロイグループは、タグ、Amazon EC2 Auto Scaling グループ名、またはその両方に基づいてインスタンスのコレクションを識別します。複数のアプリケーションリビジョンを同じインスタンスにデプロイできます。1 つのアプリケーションリビジョンを複数のインスタンスにデプロイできます

たとえば、3 つの本番稼働用サーバーに「Prod」というタグを追加し、2 つのバックアップサーバーに「Backup」というタグを追加できます。これらの 2 つのタグを使用して、 CodeDeploy アプリケーションに 2 つの異なるデプロイグループを作成できます。これにより、デプロイに参加するサーバーのセット (またはその両方) を選択できます。

デプロイグループの複数のタググループを使用して、デプロイするインスタンスのセットを減らすことができます。詳細については、「Tagging Instances for Deployments」を参照してください。

アプリケーションリビジョンのデプロイ

これで、アプリケーションリビジョンを Amazon S3 またはデプロイグループにデプロイ GitHub する準備が整いました。 CodeDeploy コンソールまたは create-deployment コマンドを使用できます。デプロイを制御するために指定できるパラメータ (リビジョン、デプロイグループ、デプロイ設定など) があります。

アプリケーションの更新

アプリケーションを更新し、 CodeDeploy コンソールを使用するか、create-deployment コマンドを呼び出してリビジョンをプッシュできます。

停止、失敗したデプロイ

CodeDeploy コンソールまたは stop-deployment コマンドを使用して、デプロイを停止できます。デプロイを停止しようとする場合、次の 3 つのうち 1 つのことが発生します。

  • デプロイは停止し、オペレーションは成功というステータスを返す。この場合、停止したデプロイに対してそれ以上デプロイライフサイクルイベントは実行されません。デプロイグループで一部のファイルは既にコピーされ、一部のスクリプトは実行され、1 つ以上のインスタンスが実行されている可能性があります。

  • デプロイは即時に停止せず、オペレーションは保留中というステータスを返す。この場合、一部のデプロイライフサイクルイベントは、デプロイグループでまだ実行中である可能性があります。デプロイグループで一部のファイルは既にコピーされ、一部のスクリプトは実行され、1 つ以上のインスタンスが実行されている可能性があります。保留中のオペレーションが完了すると、デプロイを停止するためのそれ以降の呼び出しは、成功というステータスを返します。

  • デプロイは停止できず、オペレーションはエラーを返す。詳細については、 API リファレンスのErrorInformation「」および「一般的なエラー AWS CodeDeploy 」を参照してください。

失敗したデプロイでは、停止されたデプロイのように、デプロイグループの 1 つ以上のインスタンスで一部のデプロイライフサイクルイベントが実行済みになる場合があります。デプロイが失敗した理由を確認するには、 CodeDeploy コンソールを使用するか、 get-deployment-instance コマンドを呼び出すか、失敗したデプロイのログファイルデータを分析します。詳細については、「アプリケーションリビジョンとログファイルのクリーンアップ」および「 CodeDeploy EC2/オンプレミスデプロイのログデータを表示する」を参照してください。

デプロイと再デプロイのロールバック

CodeDeploy は、以前にデプロイされたリビジョンを新しいデプロイとして再デプロイすることで、ロールバックを実装します。

デプロイが失敗した、アラームのモニタリングしきい値に一致したなど、特定の条件が満たされた場合に、自動的にデプロイをロールバックするようグループデプロイを設定できます。個別のデプロイで、デプロイグループに指定されたロールバック設定をオーバーライドすることもできます。

以前のデプロイされたバージョンを手動で再デプロイして、失敗したデプロイをロールバックすることもできます。

いずれの場合でも、新しいデプロイまたはロールバックされたデプロイには独自のデプロイ ID が割り当てられます。 CodeDeploy コンソールで表示できるデプロイのリストには、自動デプロイの結果であるデプロイが表示されます。

詳細については、「でデプロイを再デプロイしてロールバックする CodeDeploy」を参照してください。