

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

# Amazon EC2 アクションリファレンス
<a name="action-reference-EC2Deploy"></a>

Amazon EC2 `EC2` アクションを使用して、デプロイフリートにアプリケーションコードをデプロイします。デプロイフリートは、Amazon EC2 Linux インスタンスまたは Linux SSM マネージドノードで構成できます。インスタンスに SSM エージェントがインストールされている必要があります。

**注記**  
このアクションは Linux インスタンスタイプのみをサポートします。サポートされているフリートの最大サイズは 500 インスタンスです。

アクションは、指定された最大値に基づいてインスタンスの数を選択します。以前のインスタンスで失敗したインスタンスが最初に選択されます。以前に失敗したアクションなど、インスタンスが既に同じ入力アーティファクトのデプロイを受信している場合、アクションは特定のインスタンスでのデプロイをスキップします。

**注記**  
このアクションは V2 タイプのパイプラインでのみサポートされています。

**Topics**
+ [アクションタイプ](#action-reference-EC2Deploy-type)
+ [設定パラメータ](#action-reference-EC2Deploy-parameters)
+ [入力アーティファクト](#action-reference-EC2Deploy-input)
+ [出力アーティファクト](#action-reference-EC2Deploy-output)
+ [EC2 デプロイアクションのサービスロールポリシーのアクセス許可](#action-reference-EC2Deploy-permissions-action)
+ [仕様ファイルのリファレンスをデプロイする](#action-reference-EC2Deploy-spec-reference)
+ [アクションの宣言](#action-reference-EC2Deploy-example)
+ [デプロイ仕様を使用したアクション宣言の例](#action-reference-EC2Deploy-example-spec)
+ [関連情報](#action-reference-EC2Deploy-links)

## アクションタイプ
<a name="action-reference-EC2Deploy-type"></a>
+ カテゴリ:`Deploy`
+ 所有者: `AWS`
+ プロバイダー: `EC2`
+ バージョン: `1`

## 設定パラメータ
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
必須: はい  
Amazon EC2 で作成したインスタンスのタグキー (`Name` など)。

**InstanceTagValue**  
必須: いいえ  
Amazon EC2 で作成したインスタンスのタグの値 (`my-instances` など)。  
この値を指定しない場合、**InstanceTagKey** を持つすべてのインスタンスがマッチします。

**InstanceType**  
必須: はい  
Amazon EC2 で作成されたインスタンスまたは SSM ノードのタイプ。有効な値は `EC2` および `SSM_MANAGED_NODE` です。  
すべてのインスタンスで SSM エージェントを作成、タグ付け、インストールしておく必要があります。  
インスタンスを作成する際は、既存の EC2 インスタンスロールを作成または使用します。`Access Denied` エラーを回避するには、インスタンスロールに S3 バケットアクセス許可を追加して、CodePipeline アーティファクトバケットにインスタンスアクセス許可を付与する必要があります。デフォルトのロールを作成するか、パイプラインのリージョンのアーティファクトバケットにスコープダウンされた `s3:GetObject` アクセス許可で既存のロールを更新します。

**TargetDirectory**  
必須: はい (スクリプトが指定されている場合)  
スクリプトを実行するために Amazon EC2 インスタンスで使用されるディレクトリ。

**DeploySpec**  
必須: はい (デプロイ仕様が指定されている場合)  
デプロイのインストールイベントとライフサイクルイベントを設定するために使用されるファイル。デプロイ仕様フィールドの説明と情報については、「[仕様ファイルのリファレンスをデプロイする](#action-reference-EC2Deploy-spec-reference)」を参照してください。指定されたデプロイ仕様ファイルを含むアクション設定を表示するには、「[デプロイ仕様を使用したアクション宣言の例](#action-reference-EC2Deploy-example-spec)」の例を参照してください。

**MaxBatch**  
必須: いいえ  
並列でデプロイできるインスタンスの最大数。

**MaxError**  
必須: いいえ  
デプロイ中に許可されるインスタンスエラーの最大数。

**TargetGroupNameList**  
必須: いいえ  
デプロイのターゲットグループ名のリスト。ターゲットグループは作成済みである必要があります。  
ターゲットグループは、特定のリクエストを処理するための一連のインスタンスを提供します。ターゲットグループが指定されている場合、インスタンスはデプロイ前にターゲットグループから削除され、デプロイ後にターゲットグループに追加されます。

**PreScript**  
必須: いいえ  
アクションデプロイフェーズの前に実行するスクリプト。

**PostScript**  
必須: はい  
アクションデプロイフェーズの後に実行されるスクリプト。

次の図は、**[アクションの設定を使用]** が選択されているアクションの **[編集]** ページの例を示しています。

![\[アクションの設定を使用して指定する EC2Deploy アクションを含む新しいパイプラインの [アクションを編集する] ページ\]](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/ec2deploy-action.png)


次の図は、**[DeploySpec ファイルを使用]** が選択されているアクションの **[編集]** ページの例を示しています。

![\[仕様ファイルを使用するための EC2Deploy アクションオプションを含む新しいパイプラインの [アクションを編集する] ページ\]](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## 入力アーティファクト
<a name="action-reference-EC2Deploy-input"></a>
+ **アーティファクトの数:** `1`
+ **説明:** デプロイ中にスクリプトアクションをサポートするために提供されたファイル。

## 出力アーティファクト
<a name="action-reference-EC2Deploy-output"></a>
+ **アーティファクトの数:** `0` 
+ **説明:** 出力アーティファクトは、このアクションタイプには適用されません。

## EC2 デプロイアクションのサービスロールポリシーのアクセス許可
<a name="action-reference-EC2Deploy-permissions-action"></a>

CodePipeline がアクションを実行する際、CodePipeline サービスロールには、最小特権でのアクセスに適切にスコープダウンされた次のアクセス許可が必要です。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementWithAllResource",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "ssm:CancelCommand",
                "ssm:DescribeInstanceInformation",
                "ssm:ListCommandInvocations"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "StatementForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForElasticloadbalancing",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": [
                "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*"
            ]
        },
        {
            "Sid": "StatementForSsmOnTaggedInstances",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{tagKey}}": "{{tagValue}}"
                }
            }
        },
        {
            "Sid": "StatementForSsmApprovedDocuments",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript",
                "arn:aws:ssm:us-east-1::document/AWS-RunShellScript"
            ]
        }
    ]
}
```

------

### CloudWatch ログのパイプラインのロググループ
<a name="action-reference-EC2Deploy-logs"></a>

CodePipeline は、アクションを実行するときに、次のようにパイプライン名を使用してロググループを作成します。これにより、パイプライン名を使用してアクセス許可の範囲をリソースのログ記録に絞り込むことができます。

```
/aws/codepipeline/MyPipelineName
```

ログ記録のための以下のアクセス許可は、サービスロールの上記の更新に含まれています。
+ logs:CreateLogGroup
+ logs:CreateLogStream
+ logs:PutLogEvents

アクションの詳細ダイアログページを使用してコンソールでログを表示するには、ログを表示するアクセス許可をコンソールロールに追加する必要があります。詳細については、「[コンソールでコンピューティングログを表示するために必要なアクセス許可](security-iam-permissions-console-logs.md)」でコンソールのアクセス許可ポリシーの例を参照してください。

### CloudWatch ログのサービスロールポリシーのアクセス許可
<a name="w2aac56c13c21c11"></a>

CodePipeline は、アクションを実行するときに、次のようにパイプライン名を使用してロググループを作成します。これにより、パイプライン名を使用してアクセス許可の範囲をリソースのログ記録に絞り込むことができます。

```
/aws/codepipeline/MyPipelineName
```

アクションの詳細ダイアログページを使用してコンソールでログを表示するには、ログを表示するアクセス許可をコンソールロールに追加する必要があります。詳細については、「[コンソールでコンピューティングログを表示するために必要なアクセス許可](security-iam-permissions-console-logs.md)」でコンソールのアクセス許可ポリシーの例を参照してください。

## 仕様ファイルのリファレンスをデプロイする
<a name="action-reference-EC2Deploy-spec-reference"></a>

CodePipeline がアクションを実行する際に、インスタンスへのデプロイを設定する仕様ファイルを指定できます。デプロイ仕様ファイルは、デプロイライフサイクルイベントに応じてインストールする内容と実行するライフサイクルイベントフックを指定します。デプロイ仕様ファイルは常に YAML 形式です。デプロイ仕様ファイルは、以下の目的で使用されます。
+ アプリケーションリビジョンのソースファイルを、インスタンスの宛先にマッピングします。
+ デプロイされたファイルのカスタムアクセス権限を指定する。
+ デプロイプロセスのさまざまなフェーズにおいて、各インスタンスで実行するスクリプトを指定する。

デプロイ仕様ファイルは、AppSpec ファイルを使用して CodeDeploy でサポートされている特定のデプロイ設定パラメータをサポートします。既存の AppSpec ファイルを直接使用でき、サポートされていないパラメータは無視されます。CodeDeploy の AppSpec ファイルの詳細については、「*[CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) ユーザーガイド*」のアプリケーション仕様ファイルリファレンスを参照してください。

ファイルデプロイパラメータは次のように指定されます。
+ `files` - デプロイ仕様ファイルは、デプロイファイルの `source:` と `destination:` を指定します。
+ `scripts` - デプロイのスクリプト化されたイベント。`BeforeDeploy` と `AfterDeploy` の 2 つのイベントがサポートされています。
+ `hooks` - イベントのライフサイクルフック。サポートされるフックは、`ApplicationStop`、`BeforeInstall`、`AfterInstall`、`ApplicationStart`、および `ValidateService` です。
**注記**  
フックパラメータは CodeDeploy との AppSpec の互換性のために使用でき、バージョン 0.0 (AppSpec 形式) でのみ使用できます。この形式では、CodePipeline はイベントのベストエフォートマッピングを実行します。

仕様ファイルでは正しい YAML スペースを使用する必要があります。デプロイ仕様ファイル内の場所とスペース数が正しくない場合、エラーが発生します。間隔の詳細については、[YAML](http://www.yaml.org/) の仕様を参照してください。

デプロイ仕様ファイルの例を以下に示します。

```
version: 0.1
files:
  - source: /index.html
    destination: /var/www/html/
scripts:
  BeforeDeploy:
    - location: scripts/install_dependencies
      timeout: 300
      runas: myuser
  AfterDeploy:
    - location: scripts/start_server
      timeout: 300
      runas: myuser
```

指定されたデプロイ仕様ファイルを含むアクション設定を表示するには、「[デプロイ仕様を使用したアクション宣言の例](#action-reference-EC2Deploy-example-spec)」の例を参照してください。

## アクションの宣言
<a name="action-reference-EC2Deploy-example"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
    PostScript: "test/script.sh",
    TargetDirectory: "/home/ec2-user/deploy"
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2",
                "PostScript": "test/script.sh",
                "TargetDirectory": "/home/ec2-user/deploy"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## デプロイ仕様を使用したアクション宣言の例
<a name="action-reference-EC2Deploy-example-spec"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    DeploySpec: "deployspec.yaml"
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "DeploySpec": "deployspec.yaml",
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## 関連情報
<a name="action-reference-EC2Deploy-links"></a>

このアクションを利用する際に役立つ関連リソースは以下の通りです。
+  [チュートリアル: CodePipeline を使用して Amazon EC2 インスタンスにデプロイする](tutorials-ec2-deploy.md) – このチュートリアルでは、スクリプトファイルをデプロイする EC2 インスタンスの作成と、EC2 アクションを使用したパイプラインの作成について説明します。
+ [EC2 デプロイアクションがエラーメッセージ `No such file` で失敗する](troubleshooting.md#troubleshooting-ec2-deploy) – このトピックでは、EC2 アクションでファイルが見つからないエラーのトラブルシューティングについて説明します。