

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

# CodeDeploy でのデプロイグループの使用
<a name="deployments"></a>

CodeDeploy では、デプロイはプロセスであり、プロセスには 1 つ以上のインスタンスのコンテンツをインストールするコンポーネントが含まれます。このコンテンツはコード、ウェブ、設定ファイル、実行可能ファイル、パッケージ、スクリプトなどによって構成できます。CodeDeploy は、指定した設定ルールに従って、ソースリポジトリに格納されたコンテンツをデプロイします。

 EC2 オンプレミスコンピューティングプラットフォームを使用する場合、インスタンスの同じセットへの2 つのデプロイは同時に実行できます。

CodeDeploy は、2 つのデプロイタイプのオプション、インプレースデプロイおよび Blue/Green デプロイを提供します。
+ **インプレイスデプロイ**: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用し、デプロイ中はインスタンスが登録解除され、デプロイ完了後にサービスに復元されるようにできます。EC2 オンプレミスコンピューティングプラットフォームを使用するデプロイのみが、インプレイスデプロイを使用できます。インプレイスデプロイの詳細については、「[インプレースデプロイの概要](welcome.md#welcome-deployment-overview-in-place)」を参照してください。
+ **Blue/Green デプロイ**: デプロイの動作は、使用するコンピューティングプラットフォームにより異なります。
  + **EC2 オンプレミスコンピューティングプラットフォームの Blue/Green**: 以下のステップを使用して、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。
    + 置き換え先の環境のインスタンスがプロビジョニングされます。
    + 最新のアプリケーションリビジョンは、置き換え先インスタンスにインストールされます。
    + オプションの待機時間は、アプリケーションのテストやシステム検証などのアクティビティに対して発生します。
    + 置き換え先環境のインスタンスは、1 つまたは複数の Elastic Load Balancing ロードバランサーに登録され、トラフィックは、それらに再ルーティングされます。元の環境のインスタンスは、登録が解除され、終了するか、他の使用のために実行することができます。
**注記**  
EC2/オンプレミスのコンピューティングプラットフォームを使用する場合は、blue/green デプロイが Amazon EC2 インスタンスでのみ機能することに注意してください。
  + ** AWS Lambda または Amazon ECS コンピューティングプラットフォームの Blue/Green**: トラフィックは**、Canary**、**線形**、または **all-at-once**デプロイ設定に従って増分でシフトされます。
  + **経由のブルー/グリーンデプロイ CloudFormation**: CloudFormation スタックの更新の一環として、トラフィックは現在のリソースから更新されたリソースに移行されます。現時点では、ECS blue/green デプロイのみがサポートされています。

  ブルー/グリーンデプロイの詳細については、「[Blue/Green デプロイの概要](welcome.md#welcome-deployment-overview-blue-green)」を参照してください。

Amazon S3 からの自動的なデプロイの詳細については、「[CodeDeployを使用して Amazon S3 から自動的にデプロイする](https://aws.amazon.com/blogs/devops/automatically-deploy-from-amazon-s3-using-aws-codedeploy/)」を参照してください。

**Topics**
+ [デプロイを作成する](deployments-create.md)
+ [デプロイの詳細の表示](deployments-view-details.md)
+ [デプロイのログデータの表示](deployments-view-logs.md)
+ [デプロイの停止](deployments-stop.md)
+ [デプロイを使用した再デプロイおよびロールバック](deployments-rollback-and-redeploy.md)
+ [別の AWS アカウントにアプリケーションをデプロイする](deployments-cross-account.md)
+ [ローカルマシンのデプロイパッケージの検証](deployments-local.md)

# CodeDeploy でデプロイを作成する
<a name="deployments-create"></a>

CodeDeploy コンソール、 AWS CLI、または CodeDeploy APIs を使用して、既に Amazon S3 にプッシュしたアプリケーションリビジョンをインストールするデプロイを作成できます。デプロイが EC2/オンプレミスコンピューティングプラットフォームの場合は、デプロイグループのインスタンスに GitHub をインストールします。

デプロイを作成するプロセスは、デプロイで使用されるコンピューティングプラットフォームによって異なります。

**Topics**
+ [デプロイの前提条件](deployments-create-prerequisites.md)
+ [Amazon ECS コンピューティングプラットフォームのデプロイの作成 (コンソール)](deployments-create-console-ecs.md)
+ [AWS Lambda コンピューティングプラットフォームのデプロイを作成する (コンソール)](deployments-create-console-lambda.md)
+ [EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)
+ [Amazon ECS コンピューティングプラットフォームのデプロイの作成 (CLI)](deployments-create-ecs-cli.md)
+ [AWS Lambda コンピューティングプラットフォームのデプロイを作成する (CLI)](deployments-create-lambda-cli.md)
+ [EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)
+ [を使用して Amazon ECS ブルー/グリーンデプロイを作成する CloudFormation](deployments-create-ecs-cfn.md)

# デプロイの前提条件
<a name="deployments-create-prerequisites"></a>

デプロイを開始する前に、以下のステップが完了していることを確認します。

## AWS Lambda コンピューティングプラットフォームでのデプロイの前提条件
<a name="deployment-prerequisites-lambda"></a>
+ 少なくとも 1 つのデプロイグループを含むアプリケーションを作成します。詳細については、「[CodeDeploy でアプリケーションを作成する](applications-create.md)」および「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。
+ デプロイする Lambda 関数バージョンを指定するアプリケーションリビジョン (AppSpec ファイル とも呼ばれる) を準備します。AppSpec ファイルでは、Lambda 関数を指定してデプロイを検証することもできます。詳細については、[CodeDeploy のアプリケーションリビジョンの操作](application-revisions.md) を参照してください。
+ デプロイにカスタムデプロイ設定を使用する場合、デプロイプロセスを開始する前にカスタムデプロイ設定を作成します。詳細については、「[CodeDeploy を使用してデプロイ設定を作成する](deployment-configurations-create.md)」を参照してください。

## EC2/オンプレミスコンピューティングプラットフォームのデプロイ前提条件
<a name="deployment-prerequisites-server"></a>
+ インプレースデプロイの場合は、デプロイ先のインスタンスを作成または設定します。詳細については、「[CodeDeploy のためにインスタンスを用いた操作](instances.md)」を参照してください。Blue/Green デプロイのために、置き換え先環境のテンプレートとして使用する既存の Amazon EC2 Auto Scaling グループがあるか、元の環境として指定する 1 つ以上のインスタンスまたは Amazon EC2 Auto Scaling グループがあります。詳細については、「[チュートリアル: CodeDeploy を使用して、Auto Scaling グループにアプリケーションをデプロイします。](tutorials-auto-scaling-group.md)」および「[CodeDeploy と Amazon EC2 Auto Scaling の統合](integrations-aws-auto-scaling.md)」を参照してください。
+ 少なくとも 1 つのデプロイグループを含むアプリケーションを作成します。詳細については、「[CodeDeploy でアプリケーションを作成する](applications-create.md)」および「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。
+ デプロイグループのインスタンスにデプロイするアプリケーションリビジョンを準備します。詳細については、「[CodeDeploy のアプリケーションリビジョンの操作](application-revisions.md)」を参照してください。
+ デプロイにカスタムデプロイ設定を使用する場合、デプロイプロセスを開始する前にカスタムデプロイ設定を作成します。詳細については、「[CodeDeploy を使用してデプロイ設定を作成する](deployment-configurations-create.md)」を参照してください。
+ Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合、バケットはデプロイグループのインスタンスと同じ AWS リージョンにあります。
+ Amazon S3 バケットからアプリケーションのリビジョンをデプロイする場合、Amazon S3 バケットポリシーをバケットに適用済みです。このポリシーでは、アプリケーションリビジョンをダウンロードするために必要なアクセス許可をインスタンスに付与します。

  例えば、次の Amazon S3 バケットポリシーは、ARN `arn:aws:iam::444455556666:role/CodeDeployDemo` を含む IAM インスタンスプロファイルがアタッチされた Amazon EC2 インスタンスが、`amzn-s3-demo-bucket` という名前の Amazon S3 バケットの任意の場所からダウンロードすることを許可します。

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  次の Amazon S3 バケットポリシーは、ARN `arn:aws:iam::444455556666:user/CodeDeployUser` を含む IAM ユーザーに関連付けられたオンプレミスインスタンスが、`amzn-s3-demo-bucket` という名前の Amazon S3 バケット内の任意の場所からダウンロードすることを許可します。

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「[バケットポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)」を参照してください。
+ Blue/Green デプロイを作成する場合、またはインプレースデプロイのためにデプロイグループにオプションの Classic Load Balancer、Application Load Balancer、Network Load Balancer を指定している場合、Amazon VPC を使用して、少なくとも 2 つのサブネットを含む VPC を作成していることになります。(CodeDeploy で使用する Elastic Load Balancing では、ロードバランサーグループ内のすべてのインスタンスが 1 つの VPC 内にあることが必要です)。

  VPC を作成済みでない場合は、「[Amazon VPC 入門ガイド](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/ExerciseOverview.html)」を参照してください。
+ ブルー/グリーンデプロイを作成する場合、Elastic Load Balancing に、少なくとも 1 つの Classic Load Balancer、Application Load Balancer または Network Load Balancerを設定し、これを使用して元の環境を構成するインスタンスを登録しています。
**注記**  
置き換え先環境内のインスタンスは後でロードバランサーを使用して登録されます。

  ロードバランサーの設定の詳細については、「[CodeDeploy Amazon EC2 デプロイ用の Elastic Load Balancing でロードバランサーをセットアップする](deployment-groups-create-load-balancer.md)」および「[CodeDeploy Amazon ECS デプロイ用のロードバランサー、ターゲットグループ、リスナーをセットアップする](deployment-groups-create-load-balancer-for-ecs.md)」を参照してください。

## を使用した Blue/Green デプロイのデプロイ前提条件 CloudFormation
<a name="deployment-prerequisites-cfn-bg"></a>
+ テンプレートでは、CodeDeploy アプリケーションまたはデプロイグループのリソースをモデル化する必要はありません。
+ テンプレートには、少なくとも 2 つのサブネットを含む Amazon VPC を使用する VPC のリソースを含める必要があります。
+ テンプレートには、トラフィックをターゲットグループに誘導するために使用される Elastic Load Balancing の 1 つまたは複数の Classic Load Balancer、Application Load Balancer、または Network Load Balancer のリソースを含める必要があります。

# Amazon ECS コンピューティングプラットフォームのデプロイの作成 (コンソール)
<a name="deployments-create-console-ecs"></a>

このトピックでは、コンソールを使用して Amazon ECS サービスをデプロイする方法を示します。詳細については、「[チュートリアル: Amazon ECS へアプリケーションをデプロイする](tutorial-ecs-deployment.md)」および「[チュートリアル: 検証テストを使用して Amazon ECS サービスをデプロイする](tutorial-ecs-deployment-with-hooks.md)」を参照してください。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. 次のいずれかを行います。
   +  アプリケーションをデプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。デプロイするアプリケーションの名前を選択します。アプリケーションの [**Compute platform (コンピューティングプラットフォーム)**] 列が [** Amazon ECS **] になっていることを確認します。
   +  デプロイを再デプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**デプロイ**] を選択します。再デプロイするデプロイを選択し、[**アプリケーション**] 列で、アプリケーションの名前を選択します。デプロイの [**Compute platform (コンピューティングプラットフォーム)**] 列が [**Amazon ECS**] になっていることを確認します。

1. [**デプロイ**] タブで、[**デプロイの作成**] を選択します。
**注記**  
アプリケーションをデプロイするには、アプリケーションにデプロイグループが必要です。アプリケーションにデプロイグループがない場合は、[**デプロイグループ**] タブで、[**デプロイグループの作成**] を選択します。詳細については、「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。

1. [**デプロイグループ**] で、このデプロイで使用するデプロイグループを選択します。

1. [**リビジョンの場所**] の横で、リビジョンの場所を選択します。
   + [**My application is stored in Amazon S3 (Amazon S3 に保存されたアプリケーション)**] - 詳細に関しては、[Amazon S3 バケットに格納されているリビジョンについての情報を指定します](deployments-create-console-s3.md) を参照し、ステップ 6 に戻ります。
   + [**Use AppSpec editor (AppSpec エディタの使用)**] — JSON または YAML を選択し、エディタに AppSpec ファイルを入力します。AppSpec ファイルを保存するには、[**テキストファイルとして保存**] を選択します。これらのステップの最後で [**Deploy (デプロイ)**] を選択すると、JSON または YAML が有効ではないというエラーが発生します。AppSpec ファイルの作成の詳細については、「[CodeDeploy 用のアプリケーション仕様ファイルをリビジョンに追加](application-revisions-appspec-file.md)」を参照してください。

1. (オプション) [**デプロイの説明**] に、このデプロイの説明を入力します。

1. (オプション) [**Rollback configuration overrides**] で、該当する場合は、デプロイグループに指定されているものとは別の自動ロールバックオプションをこのデプロイに指定できます。

   CodeDeploy のロールバックの詳細については、「[デプロイと再デプロイのロールバック](deployment-steps-lambda.md#deployment-rollback-lambda)」および「[CodeDeploy を使用した再デプロイおよびデプロイのロールバック](deployments-rollback-and-redeploy.md)」を参照してください。

   以下から選択します。
   + [**Roll back when a deployment fails (デプロイが失敗したときにロールバックする)**] — CodeDeploy は既知の正常なリビジョンを新しいデプロイとして再デプロイします。
   + [**Roll back when alarm thresholds are met (アラームのしきい値が一致したときにロールバックする)**] — デプロイグループにアラームが追加された場合、1 つ以上の指定したアラームがアクティブ化されたときに、CodeDeploy は既知の正常なリビジョンを再デプロイします。
   + [**ロールバックを無効にする**] — このデプロイのロールバックを実行しません。

1. **[デプロイの作成]** を選択します。

   デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

# AWS Lambda コンピューティングプラットフォームのデプロイを作成する (コンソール)
<a name="deployments-create-console-lambda"></a>

このトピックでは、コンソールを使用して Lambda 関数をデプロイする方法を示します。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. 次のいずれかを行います。
   +  アプリケーションをデプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。デプロイするアプリケーションの名前を選択します。アプリケーションの [**Compute platform (コンピューティングプラットフォーム)**] 列が [**AWS Lambda**] になっていることを確認します。
   +  デプロイを再デプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**デプロイ**] を選択します。再デプロイするデプロイを選択し、[**アプリケーション**] 列で、アプリケーションの名前を選択します。デプロイ の** [Compute platform (コンピューティングプラットフォーム)**] 列が [**AWS Lambda**] になっていることを確認します。

1. [**デプロイ**] タブで、[**デプロイの作成**] を選択します。
**注記**  
アプリケーションをデプロイするには、アプリケーションにデプロイグループが必要です。アプリケーションにデプロイグループがない場合は、[**デプロイグループ**] タブで、[**デプロイグループの作成**] を選択します。詳細については、「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。

1. [**デプロイグループ**] で、このデプロイで使用するデプロイグループを選択します。

1. [**リビジョンの場所**] の横で、リビジョンの場所を選択します。
   + [**My application is stored in Amazon S3 (Amazon S3 に保存されたアプリケーション)**] - 詳細に関しては、[Amazon S3 バケットに格納されているリビジョンについての情報を指定します](deployments-create-console-s3.md) を参照し、ステップ 6 に戻ります。
   + [**Use AppSpec editor (AppSpec エディタの使用)**] — JSON または YAML を選択し、エディタに AppSpec ファイルを入力します。AppSpec ファイルを保存するには、[**テキストファイルとして保存**] を選択します。これらのステップの最後で [**Deploy (デプロイ)**] を選択すると、JSON または YAML が有効ではないというエラーが発生します。AppSpec ファイルの作成の詳細については、「[CodeDeploy 用のアプリケーション仕様ファイルをリビジョンに追加](application-revisions-appspec-file.md)」を参照してください。

1. (オプション) [**デプロイの説明**] に、このデプロイの説明を入力します。

1. (オプション) [**Deployment group overrides (デプロイグループのオーバーライド)**] を展開し、トラフィックを Lambda 関数バージョンにシフトする方法を制御するデプロイ設定を選択します。この場合、デプロイグループに指定したものとは異なるデプロイ設定を選択します。

   詳細については、「[AWS Lambda コンピューティングプラットフォームでのデプロイ設定](deployment-configurations.md#deployment-configuration-lambda)」を参照してください。

1. (オプション) [**Rollback configuration overrides**] で、該当する場合は、デプロイグループに指定されているものとは別の自動ロールバックオプションをこのデプロイに指定できます。

   CodeDeploy のロールバックの詳細については、「[デプロイと再デプロイのロールバック](deployment-steps-lambda.md#deployment-rollback-lambda)」および「[CodeDeploy を使用した再デプロイおよびデプロイのロールバック](deployments-rollback-and-redeploy.md)」を参照してください。

   以下から選択します。
   + [**Roll back when a deployment fails (デプロイが失敗したときにロールバックする)**] — CodeDeploy は既知の正常なリビジョンを新しいデプロイとして再デプロイします。
   + [**Roll back when alarm thresholds are met (アラームのしきい値が一致したときにロールバックする)**] — デプロイグループにアラームが追加された場合、1 つ以上の指定したアラームがアクティブ化されたときに、CodeDeploy は既知の正常なリビジョンを再デプロイします。
   + [**ロールバックを無効にする**] — このデプロイのロールバックを実行しません。

1. **[デプロイの作成]** を選択します。

   デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

# EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)
<a name="deployments-create-console"></a>

このトピックでは、コンソールを使用して Amazon EC2 またはオンプレミスサーバーにアプリケーションをデプロイする方法を示します。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. 次のいずれかを行います。
   +  アプリケーションをデプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。デプロイするアプリケーションの名前を選択します。アプリケーションの [**コンピューティングプラットフォーム**] 列が [**EC2/オンプレミス**] になっていることを確認します。
   +  デプロイを再デプロイする場合は、ナビゲーションペインで [**デプロイ**] を展開し、[**デプロイ**] を選択します。再デプロイするデプロイを見つけ、[**アプリケーション**] 列で、アプリケーションの名前を選択します。デプロイ の [**コンピューティングプラットフォーム**] 列が [**EC2/オンプレミス**] になっていることを確認します。

1. [**デプロイ**] タブで、[**デプロイの作成**] を選択します。
**注記**  
アプリケーションをデプロイするには、アプリケーションにデプロイグループが必要です。アプリケーションにデプロイグループがない場合は、[**デプロイグループ**] タブで、[**デプロイグループの作成**] を選択します。詳細については、「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。

1. [**デプロイグループ**] で、このデプロイで使用するデプロイグループを選択します。

1. [**リポジトリタイプ**] の横で、リビジョンが保存されているリポジトリタイプを選択します。
   + [**My application is stored in Amazon S3 (Amazon S3 に保存されたアプリケーション)**] - 詳細に関しては、[Amazon S3 バケットに格納されているリビジョンについての情報を指定します](deployments-create-console-s3.md) を参照し、ステップ 6 に戻ります。
   + [**My application is stored in GitHub (GitHub に保存されたアプリケーション)**] — 詳細については、以下の「[GitHub リポジトリに格納されているリビジョンについての情報を指定します](deployments-create-console-github.md)」を参照し、ステップ 6 に戻ります。

1. (オプション) [**デプロイの説明**] に、このデプロイの説明を入力します。

1. (オプション) [**Override deployment configuration (デプロイ設定の上書き)**] を展開してデプロイ設定を選択し、デプロイグループに指定したものとは異なる Amazon EC2 またはオンプレミスサーバーにトラフィックをシフトする方法を制御します。

   詳細については、「[CodeDeploy でデプロイ設定を使用する](deployment-configurations.md)」を参照してください。

1. 

   1. `ApplicationStop` ライフサイクルイベントが失敗した場合でもインスタンスへのデプロイを成功させる場合は、[**Don't fail the deployment if the ApplicationStop lifecycle event fails (ApplicationStop ライフサイクルイベントの障害でデプロイを失敗させない)**] を選択します。

   1. [**Additional deployment behavior settings (追加のデプロイ動作設定)**] を展開して、以前に成功したデプロイに含まれていなかったデプロイターゲットの場所にあるファイルを CodeDeploy で処理する方法を指定します。

      以下から選択します。
      + [**Fail the deployment (デプロイの失敗)**] — エラーが報告され、デプロイのステータスが `Failed` に変更されます。
      + [**コンテンツの上書き**] — デプロイ先に同じ名前のファイルが存在する場合は、アプリケーションリビジョンのバージョンによって置き換えられます。
      + [**コンテンツの保持**] — デプロイ先に同じ名前のファイルが存在する場合は、ファイルが保持され、アプリケーションリビジョンのバージョンはインスタンスにコピーされません。

      詳細については、「[既存のコンテンツでのロールバック動作](deployments-rollback-and-redeploy.md#deployments-rollback-and-redeploy-content-options)」を参照してください。

1. (オプション) [**Rollback configuration overrides**] で、該当する場合は、デプロイグループに指定されているものとは別の自動ロールバックオプションをこのデプロイに指定できます。

   CodeDeploy のロールバックの詳細については、「[デプロイと再デプロイのロールバック](deployment-steps-server.md#deployment-rollback)」および「[CodeDeploy を使用した再デプロイおよびデプロイのロールバック](deployments-rollback-and-redeploy.md)」を参照してください。

   以下から選択します。
   + [**Roll back when a deployment fails (デプロイが失敗したときにロールバックする)**] — CodeDeploy は既知の正常なリビジョンを新しいデプロイとして再デプロイします。
   + [**Roll back when alarm thresholds are met (アラームのしきい値が一致したときにロールバックする)**] — デプロイグループにアラームが追加された場合、1 つ以上の指定したアラームがアクティブ化されたときに、CodeDeploy は既知の正常なリビジョンをデプロイします。
   + [**ロールバックを無効にする**] — このデプロイのロールバックを実行しません。

1. **デプロイの開始** を選択します。

   デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

**Topics**
+ [Amazon S3 バケットに格納されているリビジョンについての情報を指定します](deployments-create-console-s3.md)
+ [GitHub リポジトリに格納されているリビジョンについての情報を指定します](deployments-create-console-github.md)

# Amazon S3 バケットに格納されているリビジョンについての情報を指定します
<a name="deployments-create-console-s3"></a>

「[EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)」の手順を使用している場合は、以下のステップに従って Amazon S3 バケットに保存されているアプリケーションリビジョンの詳細を追加してください。

1. リビジョンの Amazon S3 リンクを [**Revision location (リビジョンの場所)**] ボックスにコピーします。リンク値の確認

   1. 別のブラウザタブで

      にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

      リビジョンを参照して選択します。

   1. [**Properties**] ペインが表示されていない場合、[**Properties**] ボタンを選択します。

   1. [**Properties**] ペインで、[**Link**] フィールドの値をCodeDeploy コンソールの [**Revision location**] ボックスにコピーします。

   ETag (ファイルチェックサム) をリビジョンの場所の一部として指定するには。
   + [**リンク**] フィールド値が **?versionId=*versionId*** で終わる場合、**&etag=** および ETag を [**リンク**] フィールド値の末尾に追加します。
   + [**リンク**] フィールド値がバージョン ID を指定していない場合、**?etag=** および ETag を [**リンク**] フィールド値の末尾に追加します。
**注記**  
[**Link**] フィールドの値をコピーするように簡単ではありませんが、次のいずれかの形式でリビジョンの場所を入力することもできます。  
**s3://*bucket-name*/*folders*/*objectName***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId***  
**s3://*bucket-name*/*folders*/*objectName*?etag=*etag***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId*&etag=*etag***  
***bucket-name*.s3.amazonaws.com/*folders*/*objectName***

1. [**File type**] リストに、ファイル形式を検出できないというメッセージが表示された場合は、リビジョンのファイル形式を選択します。それ以外の場合は、検出されたファイル形式を使用します。

# GitHub リポジトリに格納されているリビジョンについての情報を指定します
<a name="deployments-create-console-github"></a>

「[EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)」の手順を使用している場合は、以下のステップに従って GitHub リポジトリに保存されているアプリケーションリビジョンの詳細を追加してください。

1. [**Connect to GitHub**] で、次のいずれかを実行します。
   + GitHub アカウントに対する CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[**GitHub アカウント**] に、この接続を識別する名前を入力し、[**GitHub に接続**] を選択します。アプリケーションの GitHub を操作することを CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 2 に進みます。
   + 作成済みの接続を使用するには、その名前を [**GitHub account**] で選択してから [**Connect to GitHub**] を選択します。ステップ 4 に進みます。
   + 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[**Connect to a different GitHub account**] を選択し、[**Connect to GitHub**] を選択します。ステップ 2 に進みます。

1. GitHub にサインインするよう求められたら、[**Sign in**] ページの手順に従います。GitHub のユーザー名、または E メールとパスワードでサインインします。

1. [**Authorize application**] ページが表示された場合、[**Authorize application**] を選択します。

1. [**Create deployment (デプロイの作成)**] ページの、[**Repository name (リポジトリの名前)**] ボックスに、スラッシュ (`/`)、リビジョンを含むリポジトリの名前が後に続く、リビジョンを含む GitHub ユーザーまたは組織の名前を入力します。入力する値が不確実な場合:

   1. ウェブブラウザの別のタブで、[GitHub dashboard](https://github.com/dashboard) にアクセスします。

   1. [**Your repositories**] で、ターゲットリポジトリの名前の上にマウスを置きます。GitHub ユーザーまたは組織の名前、スラッシュ (`/`)、リポジトリの名前の順序でツールヒントが表示されます。[**Repository name (リポジトリの名前)**] ボックスに、この表示された値を入力します。
**注記**  
[**Your repositories**] にターゲットリポジトリの名前が表示されない場合、[**Search GitHub**] ボックスを使用して、ターゲットリポジトリの名前と、GitHub ユーザーまたは組織の名前を検索します。

1. [**Commit ID (コミットID)**] で、リポジトリのリビジョンを参照するコミット ID を入力します。入力する値が不確実な場合:

   1. ウェブブラウザの別のタブで、[GitHub dashboard](https://github.com/dashboard) にアクセスします。

   1. [**Your repositories**] で、ターゲットコミットを含むリポジトリの名前を選択します。

   1. コミットのリストで、リポジトリのリビジョンを参照するコミット ID を検索してコピーします。通常、この ID は 40 文字で、文字と数字の両方で構成されます (通常はコミット ID の長いバージョンの最初の 10 文字の、コミット ID の短いバージョンを使用しないでください)。

   1. [**Commit ID**] ボックスにコミット ID を貼り付けます。

# Amazon ECS コンピューティングプラットフォームのデプロイの作成 (CLI)
<a name="deployments-create-ecs-cli"></a>

アプリケーションとリビジョンの作成後 (Amazon ECS のデプロイでは、これは AppSpec ファイルです)。

[create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) コマンドを呼び出し、指定します。
+ アプリケーション名。アプリケーション名のリストを表示するには、[list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) コマンドを呼び出します。
+ デプロイグループ名。デプロイグループ名のリストを表示するには、[list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html)コマンドを呼び出します。
+ デプロイするリビジョンに関する情報。

  Amazon S3 に格納されているリビジョン。
  + Amazon S3 バケットの名前がリビジョンに含まれています。
  + アップロードされたリビジョンの名前。
  + (オプション) リビジョンの Amazon S3 バージョンのID。(バージョン ID を指定しない場合、CodeDeploy は最新バージョンを使用します。)
  + (オプション) リビジョンの ETag。(ETag が指定されていない場合、CodeDeploy はオブジェクトの検証をスキップします。)

  Amazon S3 にないファイルに保存されているリビジョンの場合、ファイル名とパスが必要です。リビジョンファイルは、YAML または JSON で書かれているため、ほとんどの場合、その拡張子は .json または .yaml です。
+ (オプション) デプロイの説明。

リビジョンファイルは Amazon S3 バケットにアップロードされるファイルまたは文字列として指定できます。**create-deployment** コマンドの一部として使用する場合の各構文は次のようになります。
+ Amazon S3 バケット:

  `version`および`eTag`はオプションです。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 文字列:

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注記**  
**create-deployment** コマンドはファイルからリビジョンをロードできます。詳細については、「[ファイルからパラメータをロードする](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)」を参照してください。

 AWS Lambda デプロイリビジョンテンプレートについては、「」を参照してください[AWS Lambda デプロイ用の AppSpec ファイルを追加する](application-revisions-appspec-file.md#add-appspec-file-lambda)。リビジョンの例については、「[Lambda AWS デプロイの AppSpec ファイルの例](reference-appspec-file-example.md#appspec-file-example-lambda)」を参照してください。

デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

# AWS Lambda コンピューティングプラットフォームのデプロイを作成する (CLI)
<a name="deployments-create-lambda-cli"></a>



アプリケーションとリビジョンを作成した後 ( AWS Lambda デプロイでは、これは AppSpec ファイルです）。

[create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) コマンドを呼び出し、指定します。
+ アプリケーション名。アプリケーション名のリストを表示するには、[list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) コマンドを呼び出します。
+ デプロイグループ名。デプロイグループ名のリストを表示するには、[list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html)コマンドを呼び出します。
+ デプロイするリビジョンに関する情報。

  Amazon S3 に格納されているリビジョン。
  + Amazon S3 バケットの名前がリビジョンに含まれています。
  + アップロードされたリビジョンの名前。
  + (オプション) リビジョンの Amazon S3 バージョンのID。(バージョン ID を指定しない場合、CodeDeploy は最新バージョンを使用します。)
  + (オプション) リビジョンの ETag。(ETag が指定されていない場合、CodeDeploy はオブジェクトの検証をスキップします。)

  Amazon S3 にないファイルに保存されているリビジョンの場合、ファイル名とパスが必要です。リビジョンファイルは、YAML または JSON で書かれているため、ほとんどの場合、その拡張子は .json または .yaml です。
+ (オプション) 使用するデプロイ設定の名前。デプロイ設定のリストを表示するには、[list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) コマンドを呼び出します。(指定されない場合、CodeDeploy は、特定のデフォルトのデプロイ設定を使用します。)
+ (オプション) デプロイの説明。

リビジョンファイルは Amazon S3 バケットにアップロードされるファイルまたは文字列として指定できます。**create-deployment** コマンドの一部として使用する場合の各構文は次のようになります。
+ Amazon S3 バケット:

  `version`および`eTag`はオプションです。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 文字列:

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注記**  
**create-deployment** コマンドはファイルからリビジョンをロードできます。詳細については、「[ファイルからパラメータをロードする](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)」を参照してください。

 AWS Lambda デプロイリビジョンテンプレートについては、「」を参照してください[AWS Lambda デプロイ用の AppSpec ファイルを追加する](application-revisions-appspec-file.md#add-appspec-file-lambda)。リビジョンの例については、「[Lambda AWS デプロイの AppSpec ファイルの例](reference-appspec-file-example.md#appspec-file-example-lambda)」を参照してください。

デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

# EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)
<a name="deployments-create-cli"></a>

を使用して EC2/オンプレミスコンピューティングプラットフォームにリビジョンを AWS CLI デプロイするには:

1. インスタンスを準備し、アプリケーションを作成して、リビジョンをプッシュした後、次のいずれかを実行します。
   + Amazon S3 バケットからリビジョンをデプロイする場合は、そのままステップ 2 に進みます。
   + GitHub リポジトリからリビジョンをデプロイする場合は、まず「[CodeDeploy アプリケーションを GitHub リポジトリに接続します。](deployments-create-cli-github.md)」のステップを完了してからステップ 2 に戻ります。

1. [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) コマンドを呼び出し、指定します。
   + `--application-name`: アプリケーション名。アプリケーション名のリストを表示するには、[list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) コマンドを呼び出します。
   + `--deployment-group-name`: Amazon EC2 デプロイグループ名。デプロイグループ名のリストを表示するには、[list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html)コマンドを呼び出します。
   + `--revision`: デプロイするリビジョンに関する情報。

     Amazon S3 に格納されているリビジョン。
     + `s3Location`: リビジョンを含む Amazon S3 バケットの名前がリビジョンに含まれています。
     + `s3Location --> key`: アップロードされたリビジョンの名前。
     + `s3Location --> bundleType`: アップロードされたリビジョンの名前とファイル形式。
**注記**  
tar および圧縮 tar アーカイブファイル形式 (.tar および .tar.gz) は、Windows Server インスタンスではサポートされていません。
     + `s3Location --> version`: (オプション) リビジョンの Amazon S3 バージョン ID。(バージョン ID を指定しない場合、CodeDeploy は最新バージョンを使用します。)
     + `s3Location --> eTag`: (オプション) リビジョンの ETag。(ETag が指定されていない場合、CodeDeploy はオブジェクトの検証をスキップします。)

     GitHub で格納されたリビジョンの場合。
     + `gitHubLocation --> repository`: スラッシュ (`/`)、リポジトリの名前が後に続く、リポジトリに割り当てられたリビジョンを含む GitHub ユーザーまたは組織の名前。
     + `gitHubLocation --> commitId`: リビジョンのコミット ID。
   + `--deployment-config-name`: (オプション) 使用するデプロイ設定の名前。デプロイ設定のリストを表示するには、[list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) コマンドを呼び出します。(指定されない場合、CodeDeploy は特定のデフォルトのデプロイ設定を使用します。)
   + `--ignore-application-stop-failures | --no-ignore-application-stop-failures`:（オプション）`BeforeInstall` デプロイライフサイクルのイベントを続行してインスタンスへのデプロイを続行するかどうか。たとえ `ApplicationStop` デプロイライフサイクルイベントが失敗してもです。
   + `--description`: (オプション) デプロイの説明。
   + `--file-exists-behavior`: (オプション) デプロイプロセスの一環として、CodeDeploy エージェントは、前回のデプロイでインストールされたすべてのファイルを各インスタンスから削除します。前回のデプロイに含まれていないファイルがデプロイ先に表示された場合の処理を選択します。
   + `--target-instances`: Blue/Green デプロイの場合、1 つ以上の Amazon EC2 Auto Scaling グループの名前、または、Amazon EC2 インスタンスを識別するのに使用するタグフィルタキー、型、および値を含む、Blue/Green デプロイの置き換え先環境に属するインスタンスに関する情報です。

**注記**  
Amazon S3 内のリビジョンに関する情報をコマンドラインで直接指定するには、**create-deployment** 呼び出しの一部としてこの構文を使用します。(`version` および `eTag` 設定はオプションです)。  

```
--s3-location bucket=string,key=string,bundleType=tar|tgz|zip,version=string,eTag=string
```
コマンドラインで、GitHub のリビジョンについての情報を直接呼び出す **create-deployment** の一部としてこの構文を使用します。  

```
--github-location repository=string,commitId=string
```
すでにプッシュされているリビジョンについての情報を入手するには、[list-application-revisions](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-application-revisions.html) コマンドを呼び出します。

デプロイの状態を追跡するには、「[CodeDeploy デプロイの詳細を表示する](deployments-view-details.md)」を参照してください。

## create-deployment コマンドリファレンス
<a name="deployments-create-cli-reference"></a>

以下に、`create-deployment` コマンドのコマンド構造とオプションを示します。詳細については、「*AWS CLI コマンドリファレンス*」の「[create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html)」を参照してください。

```
create-deployment
--application-name <value>
[--deployment-group-name <value>]
[--revision <value>]
[--deployment-config-name <value>]
[--description <value>]
[--ignore-application-stop-failures | --no-ignore-application-stop-failures]
[--target-instances <value>]
[--auto-rollback-configuration <value>]
[--update-outdated-instances-only | --no-update-outdated-instances-only]
[--file-exists-behavior <value>]
[--s3-location <value>]
[--github-location <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
```

# CodeDeploy アプリケーションを GitHub リポジトリに接続します。
<a name="deployments-create-cli-github"></a>

を使用して GitHub リポジトリからアプリケーションを初めてデプロイする前に AWS CLI、まず GitHub アカウントに代わって GitHub とやり取りするためのアクセス許可を CodeDeploy に付与する必要があります。 GitHub CodeDeploy コンソールを使用して、このステップをアプリケーションごとに一度実行する必要があります。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. **[Applications]** (アプリケーション) を選択します。

1. [**アプリケーション**] から、GitHub ユーザーアカウントにリンクするアプリケーションを選択し、[**アプリケーションをデプロイする**] を選択します。
**注記**  
デプロイを作成していません。これは現在、GitHub ユーザーアカウントに代わって GitHub を操作するためにアクセス権限を CodeDeploy に付与する唯一の方法です。

1. [**Repository type**] の横の [**My application revision is stored in GitHub**] を選択します。

1. **[Connect to GitHub]** (GitHub に接続) を選択します。
**注記**  
[**Connect to a different GitHub account**] リンクが表示されている場合:  
すでに CodeDeploy が GitHub とやりとりすることを、アプリケーションの別の GitHub アカウントに代わって許可している場合があります。  
CodeDeploy にリンクされているすべてのアプリケーションに対してサインインしている GitHub アカウントに代わって、GitHub を操作する CodeDeploy の承認を取り消した可能性があります。  
詳細については、「[CodeDeploy のアプリケーションを使用した GitHub の認証](integrations-partners-github.md#behaviors-authentication)」を参照してください。

1. GitHub にまだサインインしていない場合は、[**Sign in**] ページの手順に従います。

1. [**Authorize application**] ページで、[**Authorize application**] を選択します。

1. CodeDeploy にアクセス許可が付与されたら、[**キャンセル**] を選択して、「[EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)」の手順に進んでください。

# を使用して Amazon ECS ブルー/グリーンデプロイを作成する CloudFormation
<a name="deployments-create-ecs-cfn"></a>

を使用して AWS CloudFormation 、CodeDeploy を通じて Amazon ECS ブルー/グリーンデプロイを管理できます。デプロイを生成するには、Green と Blue のリソースを定義し、 CloudFormationで使用するトラフィックルーティングと安定化の設定を指定します。このトピックでは、CodeDeploy によって管理される Amazon ECS Blue/Green デプロイと CloudFormationによって管理されるデプロイの違いについて説明します。

 CloudFormation を使用して Amazon ECS ブルー/グリーンデプロイを管理するstep-by-stepについては、*AWS CloudFormation 「 ユーザーガイド*[」の「 を使用した CodeDeploy による ECS ブルー/グリーンデプロイの自動化 AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)」を参照してください。

**注記**  
を使用した Amazon ECS ブルー/グリーンデプロイの管理 CloudFormation は、アジアパシフィック (大阪) リージョンでは利用できません。

## CodeDeploy と を使用した Amazon ECS ブルー/グリーンデプロイの違い CloudFormation
<a name="differences-ecs-bg-cfn"></a>

 CloudFormation スタックテンプレートは、Amazon ECS タスク関連のリソースとインフラストラクチャ、およびデプロイの設定オプションをモデル化します。したがって、標準の Amazon ECS ブルー/グリーンデプロイと、 を通じて作成されるブルー/グリーンデプロイには違いがあります CloudFormation。

標準の Amazon ECS Blue/Green デプロイとは異なり、以下のモデル作成や手動作成は行いません。
+ デプロイする内容を一意に表す名前を指定しても、 AWS CodeDeploy アプリケーションは作成されません。
+  AWS CodeDeploy デプロイグループを作成しません。
+ *アプリケーション仕様ファイル* (AppSpec ファイル)を指定しない。通常、AppSpec ファイルで管理される情報 (加重設定オプションやライフサイクルイベントなど) は、`AWS::CodeDeploy::BlueGreen` フックによって管理されます。

 この表は、デプロイタイプ間の高レベルのワークフローの違いをまとめたものです。


****  

| 関数 | 標準 Blue/Green デプロイ | によるブルー/グリーンデプロイ CloudFormation | 
| --- | --- | --- | 
| Amazon ECS クラスター、Amazon ECS サービス、Application Load Balancer またはNetwork Load Balancer、本稼働リスナー、テストリスナー、および 2 つのターゲットグループを指定します。 | これらのリソースを指定する CodeDeploy デプロイグループを作成します。 | これらのリソースをモデル化する CloudFormation テンプレートを作成します。 | 
| デプロイする変更を指定します。 | CodeDeploy でアプリケーションを作成します。 | コンテナイメージを指定する CloudFormation テンプレートを作成します。 | 
| Amazon ECS タスク定義、コンテナ名、コンテナポートを指定します。 | これらのリソースを指定する AppSpec ファイルを作成します。 | これらのリソースをモデル化する CloudFormation テンプレートを作成します。 | 
| デプロイトラフィックシフトオプションとライフサイクルイベントフックを指定します。 | これらのオプションを指定する AppSpec ファイルを作成します。 | AWS::CodeDeploy::BlueGreen フックパラメータを使用してこれらのオプションを指定する CloudFormation テンプレートを作成します。 | 
|  CloudWatch アラーム。  |  ロールバックをトリガーする CloudWatch アラームを作成します。  |  ロールバックをトリガーする CloudWatch アラームを CloudFormation スタックレベルで設定します。  | 
| ロールバック/再デプロイ。 | ロールバックおよび再デプロイのオプションを指定します。 | スタックの更新をキャンセルします CloudFormation。 | 

## による Amazon ECS ブルー/グリーンデプロイのモニタリング CloudFormation
<a name="monitoring-ecs-bg-cfn"></a>

ブルー/グリーンデプロイは、 CloudFormation と CodeDeploy を使用してモニタリングできます。によるモニタリングの詳細については CloudFormation、「 *AWS CloudFormation ユーザーガイド*」の[「 でのブルー/グリーンイベントのモニタリング CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html#blue-green-events)」を参照してください。

**CodeDeploy で Blue/Green デプロイのデプロイステータスを表示するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. **デプロイ**では、 CloudFormation スタックの更新によってトリガーされたデプロイが表示されます。デプロイを選択して、[**デプロイ履歴**] を表示します。  
![\[デプロイセクションとデプロイ履歴を示すコンソールのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/images/cfn-cd-bg-deplhist.png)

1. デプロイを選択して、トラフィックシフトステータスを表示します。アプリケーションおよびデプロイグループは作成されないことに注意してください。  
![\[デプロイステータスが完了のデプロイの詳細を示すコンソールのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/images/cfn-cd-bg-deplstatus.png)

1. デプロイのロールバックまたは停止には、次のことが適用されます。
   + 成功したデプロイは CodeDeploy に表示され、 CloudFormationによってデプロイが開始されたことが示されます。
   + デプロイを停止してロールバックする場合は、スタックの更新をキャンセルする必要があります CloudFormation。

# CodeDeploy デプロイの詳細を表示する
<a name="deployments-view-details"></a>

CodeDeploy コンソール、 AWS CLI、または CodeDeploy APIs を使用して、 AWS アカウントに関連付けられたデプロイの詳細を表示できます。

**注記**  
インスタンスの EC2　オンプレミスデプロイログは以下の場所で確認できます。  
Amazon Linux、RHEL、Ubuntu Server:`/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log`
Windows Server の場合: C:\$1ProgramData\$1Amazon\$1CodeDeploy<DEPLOYMENT-GROUP-ID><DEPLOYMENT-ID>\$1logs\$1scripts.log
詳細については、「[ログファイルの分析によるインスタンスでのデプロイの失敗の調査](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)」を参照してください。

**Topics**
+ [デプロイの詳細の表示 (コンソール)](#deployments-view-details-console)
+ [デプロイの詳細の表示 (CLI)](#deployments-view-details-cli)

## デプロイの詳細の表示 (コンソール)
<a name="deployments-view-details-console"></a>

CodeDeploy コンソールを使用してデプロイの詳細を表示するには:

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。
**注記**  
エントリが表示されない場合は、正しいリージョンが選択されていることを確認しましょう。ナビゲーションバーのリージョンセレクターで、「AWS 全般のリファレンス」**の「[リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)」に一覧表示されているいずれかのリージョンを選択します。CodeDeploy は、これらのリージョンでのみサポートされています。

1. 1 つのデプロイの詳細を表示するには、[**デプロイ履歴**] でデプロイ ID を選択するか、デプロイ ID の横にあるボタンを選択して、[**表示**] を選択します。

## デプロイの詳細の表示 (CLI)
<a name="deployments-view-details-cli"></a>

を使用してデプロイの詳細 AWS CLI を表示するには、 `get-deployment` コマンドまたは `batch-get-deployments` コマンドを呼び出します。`list-deployments` コマンドを呼び出して、`get-deployment` コマンドおよび `batch-get-deployments` コマンドへの入力として使用する一意のデプロイ ID のリストを取得できます。

1 つのデプロイの詳細を表示するには、[[デプロイの取得](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment.html)] コマンドを呼び出し、一意のデプロイ ID を特定します。デプロイ ID を取得するには、[[リストデプロイグループ](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html)] コマンドを呼び出します。

複数のデプロイの詳細を表示するには、[[デプロイの取得バッチ](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-deployments.html)] コマンドを呼び出し、複数の一意のデプロイ ID を特定します。デプロイ ID を取得するには、[[リストデプロイ](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html)] コマンドを呼び出します。

デプロイ ID の一覧を表示するには、[[リストデプロイ](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html)] コマンドを呼び出し、指定します。
+ デプロイに関連付けられたアプリケーションの名前。アプリケーション名のリストを表示するには、[[リストアプリケーション](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html)] コマンドを呼び出します。
+ デプロイに関連付けられたデプロイグループの名前。デプロイグループ名のリストを表示するには、[[リストデプロイグループ](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html)] コマンドを呼び出します。
+ オプションで、デプロイの詳細をデプロイの状態別に含めるかどうか (指定しない場合、一致するすべてのデプロイが、デプロイの状態にかかわらず表示されます)。
+ オプションで、デプロイの作成開始または終了時間別、あるいはその両方を基準にデプロイの詳細を含めるかどうか (指定しない場合、一致するすべてのデプロイが、作成時間にかかわらず表示されます)。

# CodeDeploy EC2/オンプレミスデプロイのログデータの表示
<a name="deployments-view-logs"></a>

CodeDeploy デプロイで作成されたログデータを表示するには、CloudWatch コンソールに集約データを表示するように Amazon CloudWatch エージェントを設定するか、個別のインスタンスにログインしてログファイルを確認します。

**注記**  
 ログは、 AWS Lambda または Amazon ECS デプロイではサポートされていません。EC2 オンプレミスデプロイのみに作成できます。

**Topics**
+ [Amazon CloudWatch コンソールでのログファイルのデータの表示](#deployments-view-logs-cloudwatch)
+ [インスタンスでのログファイルの表示](#deployments-view-logs-instance)

## Amazon CloudWatch コンソールでのログファイルのデータの表示
<a name="deployments-view-logs-cloudwatch"></a>

インスタンスに Amazon CloudWatch エージェントがインストールされていると、そのインスタンスに対するすべてのデプロイのデータは、CloudWatch コンソールで表示できるようになります。わかりやすいように、インスタンス別に表示するのではなく、CloudWatch を使用してログファイルを集中的にモニタリングすることをお勧めします。詳細については、「[CodeDeploy エージェントログを CloudWatch に送信する](codedeploy-agent-operations-cloudwatch-agent.md)」を参照してください。

## インスタンスでのログファイルの表示
<a name="deployments-view-logs-instance"></a>

個別のインスタンスのデプロイログデータを表示するには、インスタンスにサインインして、エラーや他のデプロイイベントに関する情報を参照します。

**Topics**
+ [Amazon Linux、RHEL、および Ubuntu サーバーインスタンスのデプロイログファイルを表示するには](#deployments-view-logs-instance-unix)
+ [Windows Server インスタンスのデプロイログファイルを表示するには](#deployments-view-logs-instance-windows)

### Amazon Linux、RHEL、および Ubuntu サーバーインスタンスのデプロイログファイルを表示するには
<a name="deployments-view-logs-instance-unix"></a>

Amazon Linux、RHEL、および Ubuntu サーバーの各インスタンスのデプロイログは、次の場所に保存されています。

 `/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log`

Amazon Linux、RHEL、および Ubuntu サーバーの各インスタンスのデプロイログを表示または分析するには、インスタンスにサインインし、次のコマンドを入力して CodeDeploy エージェントのログファイルを開きます。

```
less /var/log/aws/codedeploy-agent/codedeploy-agent.log
```

エラーメッセージのログファイルを参照するには、次のコマンドを入力します。


| コマンド | 結果 | 
| --- | --- | 
| & ERROR  | ログファイルでエラーメッセージのみを表示します。ERROR という単語の前後に 1 つのスペースを使用します。 | 
| / ERROR  | 次のエラーメッセージを検索します。¹  | 
| ? ERROR  | 前のエラーメッセージを検索します。² 単語の前後に 1 つのスペースを入力します ERROR 。 | 
| G | ログファイルの末尾に移動します。 | 
| g | ログファイルの先頭に移動します。 | 
| q | ログファイルを終了します。 | 
| h | 追加のコマンドについて参照します。 | 
|  ¹ **/ ERROR ** と入力してから、次のエラーメッセージを検索するには、**n** と入力します。前のエラーメッセージを検索するには、**N** と入力します。 ² **? ERROR ** と入力してから、次のエラーメッセージを検索するには **n** か前のエラーメッセージを検索するには **N** と入力します。  | 

また、次のコマンドを入力して CodeDeploy スクリプトのログファイルを開くこともできます。

```
less /opt/codedeploy-agent/deployment-root/deployment-group-ID/deployment-ID/logs/scripts.log
```

エラーメッセージのログファイルを参照するには、次のコマンドを入力します。


| コマンド | 結果 | 
| --- | --- | 
| &stderr | ログファイルでエラーメッセージのみを表示します。 | 
| /stderr | 次のエラーメッセージを検索します。¹ | 
| ?stderr | 前のエラーメッセージを検索します。² | 
| G | ログファイルの末尾に移動します。 | 
| g | ログファイルの先頭に移動します。 | 
| q | ログファイルを終了します。 | 
| h | 追加のコマンドについて参照します。 | 
|  ¹**/stderr** と入力してから、次のエラーメッセージを前方に検索するには **n** と入力します。前のエラーメッセージを後方に検索するには、 **N** と入力します。 ²**?stderr** と入力してから、次のエラーメッセージを後方に検索するには、**n** と入力します。前のエラーメッセージを前方に検索するには、**N** と入力します。  | 

### Windows Server インスタンスのデプロイログファイルを表示するには
<a name="deployments-view-logs-instance-windows"></a>

**CodeDeploy エージェントのログファイル**: Windows サーバーインスタンスで CodeDeploy エージェントのログファイルは次の場所に保存されています。

`C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt`

Windows Serve インスタンスで CodeDeploy エージェントのログファイルを表示または分析するには、インスタンスにサインインし、次のコマンドを入力してファイルを開きます。

```
notepad C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt
```

ログファイルでエラーメッセージを参照するには、Ctrl\$1F キーを押し、**ERROR [** と入力してから、Enter キーを押して最初のエラーを見つけます。

**CodeDeploy スクリプトログファイル**: Windows サーバーインスタンスのデプロイログは次の場所に保存されています。

`C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\logs\scripts.log`

コードの説明は以下のとおりです。
+ *deployment-group-id* は `examplebf3a9c7a-7c19-4657-8684-b0c68d0cd3c4` などの文字列
+ *deployment-id* は、`d-12EXAMPLE` などの識別子

また、次のコマンドを入力して CodeDeploy スクリプトのログファイルを開くこともできます。

```
notepad C:\ProgramData\Amazon\CodeDeploy\deployment-group-ID\deployment-ID\logs\scripts.log
```

ログファイルでエラーメッセージを参照するには、Ctrl\$1F キーを押し、**stderr** と入力してから、Enter キーを押して最初のエラーを見つけます。

# CodeDeploy でデプロイの停止
<a name="deployments-stop"></a>

CodeDeploy コンソールか、AWS CLI、または CodeDeploy API を使用して、AWS アカウントに関連付けられているデプロイを停止できます。

**警告**  
EC2 オンプレミス のデプロイを停止すると、デプロイグループのインスタンスの一部またはすべてを未確定のデプロイメントの状態のまま残すことができます。詳細については、「[停止、失敗したデプロイ](deployment-steps-server.md#deployment-stop-fail)」を参照してください。

**Topics**
+ [デプロイ (コンソール) の停止](#deployments-stop-console)
+ [デプロイ (CLI) の停止](#deployments-stop-cli)

**注記**  
CloudFormation を通じた blue/green のデプロイの場合、CodeDeploy コンソールでこのタスクを実行することはできません。CloudFormation コンソールに移動して、このタスクを実行します。

## デプロイ (コンソール) の停止
<a name="deployments-stop-console"></a>

1. 次の URL から AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) でCodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。
**注記**  
エントリが表示されない場合は、正しいリージョンが選択されていることを確認しましょう。ナビゲーションバーのリージョンセレクターで、「AWS 全般のリファレンス」**の「[リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)」に一覧表示されているいずれかのリージョンを選択します。CodeDeploy は、これらのリージョンでのみサポートされています。

1. 停止するデプロイを選択し、以下のいずれかの操作を行います。

   1. [**デプロイの停止**] を選択し、ロールバックなしでデプロイを停止します。

   1. デプロイを停止してロールバックするには、[**Stop and roll back deployment (デプロイを停止してロールバック)**] を選択します。

   詳細については、「[CodeDeploy を使用した再デプロイおよびデプロイのロールバック](deployments-rollback-and-redeploy.md)」を参照してください。
**注記**  
[**デプロイの停止**] および [**Stop and roll back deployment (デプロイを停止してロールバック)**] が使用不可の場合、そのデプロイは停止できないところまで進行しています。

## デプロイ (CLI) の停止
<a name="deployments-stop-cli"></a>

デプロイ ID を指定して、[[停止デプロイ](https://docs.aws.amazon.com/cli/latest/reference/deploy/stop-deployment.html)] コマンドを呼び出します。デプロイ ID の一覧を表示するには、[[リストデプロイ](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html)] コマンドを呼び出します。

# CodeDeploy を使用した再デプロイおよびデプロイのロールバック
<a name="deployments-rollback-and-redeploy"></a>

CodeDeploy は、以前にデプロイされたアプリケーションのリビジョンを新しいデプロイとして再デプロイすることによって、デプロイをロールバックします。これらのロールバックされたデプロイは、前のデプロイのバージョンを復元するのではなく、新しいデプロイ ID を使用する技術的に新しいデプロイです。

デプロイは、自動または手動でロールバックできます。

**Topics**
+ [自動ロールバック](#deployments-rollback-and-redeploy-automatic-rollbacks)
+ [手動ロールバック](#deployments-rollback-and-redeploy-manual-rollbacks)
+ [ロールバックおよび再デプロイのワークフロー](#deployments-rollback-and-redeploy-workflow)
+ [既存のコンテンツでのロールバック動作](#deployments-rollback-and-redeploy-content-options)

## 自動ロールバック
<a name="deployments-rollback-and-redeploy-automatic-rollbacks"></a>

デプロイが失敗した場合、または指定した監視しきい値に達した場合、自動的にロールバックするように、デプロイグループまたはデプロイを設定できます。この場合、アプリケーションリビジョンの最後の既知の正常なバージョンがデプロイされます。自動ロールバックは、アプリケーションを作成するとき、またはデプロイグループを作成または更新するときに設定します。

新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。

**注記**  
デプロイが自動的にロールバックされるときには、Amazon Simple Notification Service を使用して通知を受け取ることができます。詳細については、「[Amazon SNS イベント通知を使用したデプロイのモニタリング](monitoring-sns-event-notifications.md)」を参照してください。

自動ロールバックの設定の詳細については、「[デプロイグループの詳細オプションの設定](deployment-groups-configure-advanced-options.md)」を参照してください。

## 手動ロールバック
<a name="deployments-rollback-and-redeploy-manual-rollbacks"></a>

自動ロールバックをセットアップしていない場合は、以前にデプロイされたアプリケーションリビジョンを使用する新しいデプロイを作成し、リビジョンを再デプロイする手順に従うことによって、デプロイを手動でロールバックすることができます。アプリケーションが不明な状態になった場合、これを行う場合があります。トラブルシューティングに多くの時間を費やすのではなく、アプリケーションを既知の動作状態に再デプロイすることができます。詳細については、「[CodeDeploy でデプロイを作成する](deployments-create.md)」を参照してください。

**注記**  
デプロイグループからインスタンスを削除する場合、CodeDeploy はそのインスタンスにすでにインストールされているものはアンインストールしません。

## ロールバックおよび再デプロイのワークフロー
<a name="deployments-rollback-and-redeploy-workflow"></a>

自動ロールバックが開始された場合、または再デプロイまたは手動ロールバックを手動で開始した場合、CodeDeploy は、まず、最後に正常にインストールされたすべてのファイルを各参加インスタンスから削除しようとします。CodeDeploy は、クリーンアップファイルをチェックすることでこれを行います :

 `/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup` ファイル (Amazon Linux、Ubuntu Server、および RHEL インスタンス用) 

`C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup` ファイル (Windows Server インスタンス用) 

存在する場合、CodeDeploy は、クリーンアップファイルを使用して、新しいデプロイを開始する前にリストされたすべてのファイルをインスタンスから削除します。

例えば、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルは、Windows Server を実行している Amazon EC2 インスタンスにデプロイ済みであり、スクリプトによってデプロイライフサイクルイベント中にさらに 2 つのテキストファイルが作成されました :

```
c:\temp\a.txt (previously deployed by CodeDeploy)
c:\temp\b.txt (previously deployed by CodeDeploy)
c:\temp\c.bat (previously deployed by CodeDeploy)
c:\temp\d.bat (previously deployed by CodeDeploy)
c:\temp\e.txt (previously created by c.bat)
c:\temp\f.txt (previously created by d.bat)
```

クリーンアップファイルは、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルのみが表示されます。

```
c:\temp\a.txt
c:\temp\b.txt 
c:\temp\c.bat 
c:\temp\d.bat
```

新しいデプロイの前に、CodeDeploy は最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルのみを削除し、最後の 2 つのテキストファイルはそのまま残します :

```
c:\temp\a.txt will be removed
c:\temp\b.txt will be removed
c:\temp\c.bat will be removed
c:\temp\d.bat will be removed
c:\temp\e.txt will remain
c:\temp\f.txt will remain
```

このプロセスの一部として、CodeDeploy は、手動または自動ロールバックであっても、その後の再デプロイの間に以前のデプロイのスクリプトによって実行されるアクションを元に戻したり、一致させたりしません。例えば、`c.bat` および `d.bat` のファイルに、`e.txt` および `f.txt` のファイルが既に存在している場合、再作成しないロジックを含んでいる場合は、`e.txt` および `f.txt` の古いバージョンはそのまま残り、それは CodeDeploy デプロイがその後のデプロイで `c.bat` および `d.bat` を実行しても残ったままです。`c.bat` および `d.bat` にロジックを追加して、新しいバージョンを作成する前に `e.txt` および `f.txt` の古いバージョンを常にチェックして削除することができます。

## 既存のコンテンツでのロールバック動作
<a name="deployments-rollback-and-redeploy-content-options"></a>

デプロイプロセスの一環として、CodeDeploy エージェントは、前回のデプロイでインストールされたすべてのファイルを各インスタンスから削除します。前回のデプロイに含まれていないファイルがデプロイが、ターゲットデプロイに表示された場合は、次回のデプロイ時にこれらのファイルを CodeDeploy で処理する方法を選択できます :
+ [**Fail the deployment**] — エラーが報告され、デプロイのステータスが「Failed (失敗)」に変更されます。
+ [**コンテンツの上書き**] — アプリケーションリビジョンのファイルのバージョンにより、インスタンスの既存のファイルのバージョンが置き換えられます。
+ [**コンテンツの保持**] — デプロイ先のファイルは保持され、アプリケーションリビジョンのバージョンはインスタンスにコピーされません。

この動作は、デプロイの作成時に選択できます。コンソールでデプロイを作成する場合は、「[EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)」を参照してください。を使用してデプロイを作成する場合は AWS CLI、「」を参照してください[EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)。

ファイルを保持して次回のデプロイの一部とすることを選択すると、そのファイルはアプリケーションリビジョンパッケージに追加する必要がなくなります。例えば、デプロイに必要なファイルでもアプリケーションリビジョンバンドルには追加しないで直接インスタンスにアップロードできます。または、アプリケーションが既に本番稼働環境にあっても CodeDeploy を初めて使用してデプロイする場合は、ファイルをインスタンスにアップロードできます。

ロールバックでは、デプロイの失敗が原因で前回の成功したデプロイのアプリケーションリビジョンが再デプロイされますが、その前回の成功したデプロイのコンテンツ処理オプションがロールバックデプロイに適用されます。

ただし、失敗したデプロイの設定がファイルを保持せずに上書きするようになっていた場合、ロールバックは予期しない結果になる可能性があります。特に、保持しようとしていたファイルが、失敗したデプロイによって削除される可能性があります。ロールバックデプロイを実行したときに、ファイルは、ロールバック時にインスタンス上ではなくデプロイが実行されます。

次の例では 3 つのデプロイがあります。失敗したデプロイ 2 で上書き (削除) されたファイルは、デプロイ 3 でアプリケーションリビジョン 1 が再度デプロイされたときには使用不能 (保持不能) です。


****  

|  デプロイメント  |  アプリケーションリビジョン  |  コンテンツ上書きオプション  |  デプロイのステータス  |  動作と結果  | 
| --- | --- | --- | --- | --- | 
|  デプロイ 1  |  アプリケーションリビジョン 1  |  保持  |  成功  |  CodeDeploy は、前回のデプロイでデプロイされなかったファイルをデプロイ先で検出します。これらのファイルは、現在のデプロイの一部とするために意図的に置かれている場合があります。これらのファイルは今回のデプロイパッケージの一部として保持および記録されます。  | 
|  デプロイ 2  |  アプリケーションリビジョン 2  |  上書き  |  失敗  |  デプロイプロセス中に、CodeDeploy は前回の成功したデプロイに含まれているすべてのファイルを削除します。これには、デプロイ 1 で保持されたファイルも含まれます。 ただし、デプロイが失敗する原因は、これとは無関係です。  | 
|  デプロイ 3  |  アプリケーションリビジョン 1  |  保持  |    | デプロイまたはデプロイグループに対して自動ロールバックが有効になっているため、CodeDeploy は正常であることが判明している前回のアプリケーションリビジョン (アプリケーションリビジョン 1) をデプロイします。ただし、デプロイ 1 で保持するファイルは、デプロイ 2 が失敗する前に削除され、 では取得できません AWS CodeDeploy。これらのファイルは、アプリケーションリビジョン 1 に必要であれば、自分でインスタンスに追加できます。または、新しいアプリケーションリビジョンを作成できます。 | 

# 別の AWS アカウントにアプリケーションをデプロイする
<a name="deployments-cross-account"></a>

通常、組織には、さまざまな目的で使用する複数の AWS アカウントがあります (例えば、1 つはシステム管理タスク用、もう 1 つは開発、テスト、本番稼働用タスク用、または 1 つは開発およびテスト環境に関連付けられ、もう 1 つは本番稼働用環境に関連付けられます）。

異なるアカウントで関連作業を実行できる場合でも、CodeDeploy デプロイグループとデプロイ先の Amazon EC2 インスタンスは、これらを作成したアカウントに厳密に関連付けられています。たとえば、1 つのアカウントで起動したインスタンスを別のデプロイグループに追加することはできません。

開発 AWS アカウントと本番稼働用アカウントの 2 つのアカウントがあるとします。主に開発用アカウントで作業しますが、認証情報のフルセットまたは開発用アカウントからのサインアウトや本番稼働用アカウントへのサインインなしで、本番稼働用アカウントでデプロイの開始を可能にします。

クロスアカウント設定手順に従うことで、別のアカウントの認証情報フルセットの必要なしで、組織の別のアカウントに属するデプロイを開始できます。これは、そのアカウントへの一時的アクセスを許可する AWS Security Token Service (AWS STS) が提供する機能を利用して一部行われます。

## ステップ 1: いずれかのアカウントで S3 バケットを作成する
<a name="deployments-cross-account-1-create-s3-bucket"></a>

開発用アカウントまたは本番稼働用アカウントで以下を行います。
+ まだそうしていない場合は、本稼働用アカウントのアプリケーションリビジョンが保存される Amazon S3 バケットを作成します。詳細については、「[Amazon S3 のバケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)」を参照してください。同じファイルを開発用アカウントでテスト、確認した本稼働環境にデプロイして、同じバケットとアプリケーションリビジョンを両方のアカウントに使用することもできます。

## ステップ 2: Amazon S3 バケットへのアクセス許可を本番稼働用アカウントの インスタンスプロファイルに付与する
<a name="deployments-cross-account-2-grant-bucket-permissions"></a>

ステップ 1 で作成した Amazon S3 バケットが本番稼働用アカウントにある場合、このステップは必要ありません。後で引き受けるロールは、本番稼働用アカウントにもあるため、このバケットへのアクセス権限をすでに持っています。

開発用アカウントで Amazon S3 バケットを作成する場合は、以下を実行します。
+ 本番稼働用アカウントで、IAM インスタンスプロファイルを作成します。詳細については、「[ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する](getting-started-create-iam-instance-profile.md)」を参照してください。
**注記**  
この IAM インスタンスプロファイルの ARN を書き留めます。次に作成するクロスバケットポリシーにそれを追加する必要があります。
+ 開発用アカウントで作成した Amazon S3 バケットへのアクセス権限を、本番稼働用アカウントで先ほど作成した IAM インスタンスプロファイルに付与します。詳細については、「[例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)」を参照してください。

  クロスアカウントのバケットのアクセス許可を付与するプロセスを完了するにあたり、次の点に注意してください。
  + サンプルチュートリアルでは、アカウント A は開発用アカウントを表し、アカウント B は本番稼働用アカウントを表します。
  + [アカウント A (開発用アカウント) タスクを実行](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html#access-policies-walkthrough-cross-account-permissions-acctA-tasks)する際、チュートリアルで提供されているサンプルポリシーを使用する代わりに、次のバケットポリシーを変更してクロスアカウントアクセス許可を付与します。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "Cross-account permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::111122223333:role/role-name"
                },
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Resource": [
                    "arn:aws:s3:::bucket-name/*"
                ]
            }
        ]
    }
    ```

------

    *account-id*は、IAM インスタンスプロファイルを作成した本番稼働用アカウントのアカウント番号を表します。

    *role-name*は、作成した IAM インスタンスプロファイルの名前を表します。

    *bucket-name* は、ステップ 1 で作成したバケットの名前を表します。バケット名の後に必ず `/*` が含まれるようにして、バケット内の各ファイルへのアクセスを提供します。

## ステップ 3: 本番稼働用アカウントでリソースとクロスアカウントロールを作成する
<a name="deployments-cross-account-3-create-resources-and-role"></a>

本番稼働用アカウントで以下を行います。
+ このガイドの手順を使用して、CodeDeploy リソース（アプリケーション、デプロイグループ、デプロイ設定、Amazon EC2 インスタンス、Amazon EC2 インスタンスプロファイル、サービスロールなど）を作成します。
+ 開発用アカウントのユーザーが、この本番稼働用アカウントで CodeDeploy オペレーションを実行するために追加で引き受けるクロスアカウント IAM ロールを作成します。

  クロス[AWS アカウントロールの作成に役立つガイドとして、チュートリアル: IAM ロールを使用してアカウント間のアクセスを委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html)します。チュートリアルのサンプルアクセス許可をポリシードキュメントに追加する代わりに、少なくとも次の 2 つの AWS 指定されたポリシーをロールにアタッチする必要があります。
  + `AmazonS3FullAccess`: S3 バケットが開発用アカウントにある場合にのみ必要です。引き受けた本番稼働用アカウントのロールに対して、リビジョンが保存されている、開発用アカウントの Amazon S3 サービスとリソースへのフルアクセスを提供します。
  + `AWSCodeDeployDeployerAccess`: リビジョンを登録してデプロイすることをユーザーに許可します。

  デプロイを開始するだけでなく、デプロイグループを作成および管理する場合、`AWSCodeDeployFullAccess` ポリシーの代わりに、`AWSCodeDeployDeployerAccess` ポリシーを追加します。IAM マネージドポリシーを使用して CodeDeploy タスクにアクセス許可を付与する方法の詳細については、「[AWS CodeDeploy の マネージド (事前定義) ポリシー](managed-policies.md)」を参照してください。

  このクロスアカウントロールの使用時に、ほかの AWS サービスでタスクを実行する場合、追加のポリシーをアタッチできます。

**重要**  
クロスアカウントの IAM ロールを作成する際に、本番稼働用アカウントへのアクセスを得るために必要な詳細を書き留めておきます。  
を使用してロール AWS マネジメントコンソール を切り替えるには、次のいずれかを指定する必要があります。  
引き受けたロールの認証情報を使用して本番稼働用アカウントにアクセスするための URL。URL は [**確認**] ページのクロスアカウント作成プロセスの最後に表示されます。
クロスアカウントロール名およびアカウント ID 番号またはエイリアス。
を使用してロール AWS CLI を切り替えるには、以下を指定する必要があります。  
引き受けるクロスアカウントロールの ARN。

## ステップ 4: Amazon S3 バケットにアプリケーションリビジョンをアップロードする
<a name="deployments-cross-account-4-upload-application-revision"></a>

Amazon S3 バケットを作成したアカウントで
+ Amazon S3 バケットにアプリケーションリビジョンをアップロードします。詳細については、「[Amazon S3 に CodeDeploy のリビジョンをプッシュする (EC2/オンプレミスのデプロイのみ)](application-revisions-push.md)」を参照してください。

## ステップ 5: クロスアカウントロールを引き受け、アプリケーションをデプロイする
<a name="deployments-cross-account-5-assume-role-and-deploy"></a>

開発アカウントでは、 AWS CLI または AWS マネジメントコンソール を使用してクロスアカウントロールを引き受け、本番稼働用アカウントでデプロイを開始できます。

を使用してロール AWS マネジメントコンソール を切り替え、デプロイを開始する方法については、[「ロールへの切り替え (AWS マネジメントコンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)」および「」を参照してください[EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)。

を使用してクロスアカウントロールを AWS CLI 引き受け、デプロイを開始する方法については、[「IAM ロールへの切り替え (AWS Command Line Interface)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html)」および「」を参照してください[EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)。

を通じてロールを引き受ける方法の詳細については AWS STS、[AWS Security Token Service 「 ユーザーガイド](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)」の[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)」および[AWS CLI 「 コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/)」の[「 assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)」を参照してください。

**関連トピック**:
+ [CodeDeploy: 開発用アカウントから本番稼働用アカウントへのデプロイ](https://aws.amazon.com/blogs/devops/aws-codedeploy-deploying-from-a-development-account-to-a-production-account/)

# CodeDeploy エージェントを使用してローカルマシン上のデプロイパッケージを検証する
<a name="deployments-local"></a>

CodeDeploy エージェントを使用して、ログインしているインスタンスのコンテンツをデプロイできます。これにより、デプロイ時に使用予定のアプリケーション仕様ファイル (AppSpec ファイル) とデプロイ予定のコンテンツの整合性を検証することができます。

アプリケーションおよびデプロイグループを作成する必要はありません。ローカルインスタンスに保存されているコンテンツをデプロイする場合は、 AWS アカウントも必要ありません。最も簡単な検証方法としては、AppSpec ファイル やデプロイ予定のコンテンツが含まれているディレクトリで、オプションを指定せずに **codedeploy-local** コマンドを実行します。このツールには、他のテストケースのオプションが含まれています。

ローカルマシン上のデプロイパッケージを検証することで、以下を行うことができます。
+ アプリケーションリビジョンの整合性の検証。
+ AppSpec ファイルのコンテンツの検証。
+ 既存のアプリケーションコードを使用した CodeDeploy の初回実行。
+ コンテンツの迅速なデプロイ (インスタンスにすでにログインしている場合)。

ローカルインスタンス、またはサポートされているリモートリポジトリタイプ (Amazon S3 バケットまたはパブリックの GitHub リポジトリ) 上に保存されているコンテンツをデプロイできます。

## 前提条件
<a name="deployments-local-prerequisites"></a>

ローカルのデプロイを開始する前に、以下の手順を行います。
+ CodeDeploy エージェントでサポートされているインスタンスタイプを作成または使用します。詳細については、「[CodeDeploy エージェントで対応するオペレーティングシステム](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)」を参照してください。
+ バージョン 1.0.1.1352 以降の CodeDeploy エージェントをインストールします。詳細については、「[CodeDeploy エージェントをインストールする](codedeploy-agent-operations-install.md)」を参照してください。
+ Amazon S3 バケットや GitHub リポジトリからコンテンツをデプロイする場合は、CodeDeploy で使用するユーザーをプロビジョニングします。詳細については、「[ステップ 1: セットアップ](getting-started-setting-up.md)」を参照してください。
+ Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合は、作業をしているリージョンで Amazon S3 バケットを作成し、このバケットに Amazon S3 バケットポリシーを適用します。このポリシーでは、アプリケーションリビジョンをダウンロードするために必要なアクセス許可をインスタンスに付与します。

  例えば、次の Amazon S3 バケットポリシーは、ARN `arn:aws:iam::444455556666:role/CodeDeployDemo` を含む IAM インスタンスプロファイルがアタッチされた Amazon EC2 インスタンスが、`amzn-s3-demo-bucket` という名前の Amazon S3 バケットの任意の場所からダウンロードすることを許可します。

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  次の Amazon S3 バケットポリシーは、ARN `arn:aws:iam::444455556666:user/CodeDeployUser` を含む IAM ユーザーに関連付けられたオンプレミスインスタンスが、`amzn-s3-demo-bucket` という名前の Amazon S3 バケット内の任意の場所からダウンロードすることを許可します。

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「[バケットポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)」を参照してください。
+ Amazon S3 バケットまたは GitHub リポジトリからアプリケーションリビジョンをデプロイする場合は、IAM インスタンスプロファイルをセットアップして、そのプロファイルをインスタンスにアタッチします。詳細については、「[ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する](getting-started-create-iam-instance-profile.md)」、「[CodeDeploy (AWS CLI または Amazon EC2 コンソール) 用の Amazon EC2 インスタンスを作成する](instances-ec2-create.md)」、および「[CodeDeploy 用の Amazon EC2 インスタンスを作成する (CloudFormation テンプレート)](instances-ec2-create-cloudformation-template.md)」を参照してください。
+ GitHub からコンテンツをデプロイする場合は、GitHub アカウントおよびパブリックリポジトリを作成します。GitHub のアカウントを作成するには、「[GitHub への参加](https://github.com/join)」を参照してください。GitHub リポジトリを作成するには、「[Repo の作成](https://help.github.com/articles/create-a-repo/)」を参照してください。
**注記**  
 プライベートリポジトリは、現在サポートされていません。プライベートの GitHub リポジトリにコンテンツが保存されている場合は、インスタンスにダウンロードし、`--bundle-location` オプションでローカルパスを指定します。
+ インスタンスにデプロイするコンテンツ (AppSpec ファイルなど) を準備し、Amazon S3 バケットまたは GitHub リポジトリのローカルインスタンスに配置します。詳細については、「[CodeDeploy のアプリケーションリビジョンの操作](application-revisions.md)」を参照してください。
+ 他の設定オプションでデフォルト以外の値を使用する場合は、設定ファイルを作成し、その設定ファイルをインスタンスに配置します (Amazon Linux、RHEL、または Ubuntu Server インスタンスの場合は `/etc/codedeploy-agent/conf/codedeployagent.yml`、Windows Server インスタンスの場合は `C:\ProgramData\Amazon\CodeDeploy\conf.yml`)。詳細については、「[CodeDeploy エージェント設定リファレンス](reference-agent-configuration.md)」を参照してください。
**注記**  
Amazon Linux、RHEL、または Ubuntu Server インスタンスで設定ファイルを使用する場合は、以下のいずれかを行う必要があります。  
`:root_dir:` 変数および `:log_dir:` 変数を使用して、デプロイルートおよびログディレクトリフォルダでデフォルト以外の場所を指定する。
`sudo` を使用して、CodeDeploy エージェントのコマンドを実行する。

## ローカルのデプロイを作成する。
<a name="deployments-local-deploy"></a>

ローカルデプロイを作成するインスタンスで、ターミナルセッション (Amazon Linux、RHEL、または Ubuntu Server インスタンスの場合)、またはコマンドプロンプト (Windows Server の場合) を開き、ツールコマンドを実行します。

**注記**  
 **codedeploy-local** コマンドは、以下の場所にインストールされます。  
 Amazon Linux、RHEL、または Ubuntu Server: `/opt/codedeploy-agent/bin` 
 Windows Server: `C:\ProgramData\Amazon\CodeDeploy\bin` 

**基本的なコマンド構文**

```
codedeploy-local [options]
```

**概要**

```
codedeploy-local
[--bundle-location <value>]
[--type <value>]
[--file-exists-behavior <value>]
[--deployment-group <value>]
[--events <comma-separated values>]
[--agent-configuration-file <value>]
[--appspec-filename <value>]
```

**オプション**

**-l**、**--bundle-location**

アプリケーションリビジョンバンドルの場所。場所を指定しない場合は、現在作業中のディレクトリがデフォルトで使用されます。`--bundle-location` に値を指定する場合、`--type` の値も指定する必要があります。

バンドルの場所を表す形式の例を以下に示します。
+ ローカルのAmazon Linux、RHEL、または Ubuntu Server インスタンス: `/path/to/local/bundle.tgz`
+ ローカルの Windows Server インスタンス: `C:/path/to/local/bundle`
+ Amazon S3 バケット: `s3://amzn-s3-demo-bucket/bundle.tar`
+ GitHub リポジトリ: `https://github.com/account-name/repository-name/`

**-t**、**--type**

アプリケーションリビジョンバンドルの形式。サポートされるタイプには `tgz`、`tar`、`zip`、`directory` などがあります。タイプを指定しない場合は、デフォルトで `directory` が使用されます。`--type` に値を指定する場合、`--bundle-location` の値も指定する必要があります。

**-b**、**--file-exists-behavior**

デプロイのターゲット場所に存在しているが、デプロイが正常に完了していないファイルを処理する方法について説明します。オプションには DISALLOW、OVERWRITE、RETAIN などがあります。詳細については、「[https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html#CodeDeploy-CreateDeployment-request-fileExistsBehavior](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html#CodeDeploy-CreateDeployment-request-fileExistsBehavior)」の*「fileExistsBehavior*」を参照してください。

**-g**、**--deployment-group**

デプロイされるコンテンツのターゲット場所を示すフォルダへのパス。フォルダを指定しない場合は、*default-local-deployment-group* という名前のフォルダがデプロイルートディレクトリ内に作成されます。ローカルデプロイを作成する度に、*d-98761234-local* のような名前のサブディレクトリがこのフォルダ内に作成されます。

**-e**、**--events**

上書きライフサイクルのイベントフックセット。AppSpec ファイルに表示されているイベントの代わりに、順番に実行されます。フックが複数ある場合は、カンマ区切りで指定できます。このオプションは以下の場合に使用できます。
+ AppSpec ファイルをアップデートせずに、異なるイベントのセットを実行する場合。
+ AppSpec ファイルの例外として、単一のイベントフックを実行する場合 (例: `ApplicationStop`)。

上書きリストで **DownloadBundle** イベントや **Install** イベントを指定しない場合は、指定したすべてのイベントフックより前に実行されます。**DownloadBundle** や **Install** を `--events` オプションのリストに含めた場合、これらのイベントに先行するイベントは、CodeDeploy デプロイでこれらのイベントの前に通常実行されるイベントに限ります。詳細については、「[AppSpec の「hooks」セクション](reference-appspec-file-structure-hooks.md)」を参照してください。

**-c**、**--agent-configuration-file**

デプロイに使用する設定ファイルの場所 (デフォルト以外の場所に設定ファイルを保存している場合)。設定ファイルは、デプロイ向けに別のデフォルト値および動作を指定します。

デフォルトでは、設定ファイルは `/etc/codedeploy-agent/conf/codedeployagent.yml` (Amazon Linux、RHEL、または Ubuntu Server インスタンス)、または `C:/ProgramData/Amazon/CodeDeploy/conf.yml` (Windows Server)。詳細については、「[CodeDeploy エージェント設定リファレンス](reference-agent-configuration.md)」を参照してください。

**-A**, **--appspec-filename**

AppSpec ファイルの名前。ローカルデプロイの場合、許容される値は `appspec.yml` と `appspec.yaml` です。デフォルトでは、AppSpec ファイルは `appspec.yml` と呼ばれます。

**-h**、**--help**

ヘルプコンテンツの概要を表示します。

**-v**、**--version**

ツールのバージョン番号を表示します。

## 例
<a name="deployments-local-examples"></a>

有効なコマンド形式の例を以下に示します。

```
codedeploy-local
```

```
codedeploy-local --bundle-location /path/to/local/bundle/directory
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
```

```
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group
```

Amazon S3 からバンドルをデプロイする。

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.tgz --type tgz
```

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group
```

パブリック GitHub リポジトリからバンドルをデプロイする:

```
codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip
```

複数のライフサイクルイベントを指定するバンドルをデプロイする:

```
codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck
```

ApplicationStop ライフサイクルイベントを使用して、以前にデプロイされたアプリケーションを停止する:

```
codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop
```

特定のデプロイグループ ID を使用してデプロイする:

```
codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```