

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

# 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
```