翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 アクションリファレンス
Amazon EC2 EC2
アクションを使用して、アプリケーションコードをデプロイフリートにデプロイします。デプロイフリートは、Amazon EC2 Linux インスタンスまたは Linux SSM マネージドノードで構成できます。インスタンスには SSM エージェントがインストールされている必要があります。
注記
このアクションは Linux インスタンスタイプのみをサポートします。サポートされているフリートの最大サイズは 500 インスタンスです。
アクションは、指定された最大値に基づいてインスタンスの数を選択します。以前のインスタンスから失敗したインスタンスが最初に選択されます。アクションが以前に失敗した場合など、インスタンスが既に同じ入力アーティファクトのデプロイを受信している場合、アクションは特定のインスタンスでのデプロイをスキップします。
注記
このアクションは V2 タイプのパイプラインでのみサポートされています。
トピック
アクションタイプ
-
カテゴリ:
Deploy
-
所有者:
AWS
-
プロバイダー:
EC2
-
バージョン:
1
設定パラメータ
- 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
-
必須: はい (デプロイ仕様が指定されている場合)
デプロイのインストールイベントとライフサイクルイベントを設定するために使用される ファイル。デプロイ仕様フィールドの説明と情報については、「」を参照してください仕様ファイルのリファレンスをデプロイする。指定されたデプロイ仕様ファイルを使用してアクション設定を表示するには、「」の例を参照してくださいDeploy 仕様を使用したアクション宣言の例。
- MaxBatch
-
必須: いいえ
並列でデプロイできるインスタンスの最大数。
- MaxError
-
必須: いいえ
デプロイ中に許可されるインスタンスエラーの最大数。
- TargetGroupNameList
-
必須: いいえ
デプロイのターゲットグループ名のリスト。ターゲットグループは作成済みである必要があります。
ターゲットグループは、特定のリクエストを処理するための一連のインスタンスを提供します。ターゲットグループが指定されている場合、インスタンスはデプロイ前にターゲットグループから削除され、デプロイ後にターゲットグループに戻されます。
- PreScript
-
必須: いいえ
アクションデプロイフェーズの前に実行するスクリプト。
- PostScript
-
必須: はい
アクションデプロイフェーズの後に実行するスクリプト。
次の図は、アクション設定の使用が選択されているアクションの編集ページの例を示しています。

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

入力アーティファクト
-
アーティファクトの数:
1
-
説明: デプロイ中にスクリプトアクションをサポートするために提供されたファイル。
出力アーティファクト
-
アーティファクトの数:
0
-
説明: 出力アーティファクトは、このアクションタイプには適用されません。
EC2 デプロイアクションのサービスロールポリシーのアクセス許可
CodePipeline がアクションを実行すると、CodePipeline サービスロールには以下のアクセス許可が必要になり、最小特権でアクセスできるように適切にスコープダウンされます。
{ "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:{{region}}:{{AccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForElasticloadbalancing", "Effect": "Allow", "Action": [ "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:{{region}}:{{AccountId}}:targetgroup/[[targetGroupName]]/*" ] }, { "Sid": "StatementForSsmOnTaggedInstances", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:{{region}}:{{AccountId}}:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/{{tagKey}}": "{{tagValue}}" } } }, { "Sid": "StatementForSsmApprovedDocuments", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ssm:{{region}}::document/AWS-RunPowerShellScript", "arn:aws:ssm:{{region}}::document/AWS-RunShellScript" ] } ] }
CloudWatch Logs のパイプラインのロググループ
CodePipeline は、アクションを実行するときに、次のようにパイプライン名を使用してロググループを作成します。これにより、パイプライン名を使用してアクセス許可の範囲をリソースのログ記録に絞り込むことができます。
/aws/codepipeline/
MyPipelineName
ログ記録のための以下のアクセス許可は、サービスロールの上記の更新に含まれています。
-
logs:CreateLogGroup
-
logs:CreateLogStream
-
logs:PutLogEvents
アクションの詳細ダイアログページを使用してコンソールでログを表示するには、ログを表示するアクセス許可をコンソールロールに追加する必要があります。詳細については、「CodePipeline コンソールでコンピューティングログを表示するために必要なアクセス許可」でコンソールのアクセス許可ポリシーの例を参照してください。
CloudWatch Logs のサービスロールポリシーのアクセス許可
CodePipeline は、アクションを実行するときに、次のようにパイプライン名を使用してロググループを作成します。これにより、パイプライン名を使用してアクセス許可の範囲をリソースのログ記録に絞り込むことができます。
/aws/codepipeline/
MyPipelineName
アクションの詳細ダイアログページを使用してコンソールでログを表示するには、ログを表示するアクセス許可をコンソールロールに追加する必要があります。詳細については、「CodePipeline コンソールでコンピューティングログを表示するために必要なアクセス許可」でコンソールのアクセス許可ポリシーの例を参照してください。
仕様ファイルのリファレンスをデプロイする
CodePipeline がアクションを実行するときに、インスタンスへのデプロイを設定する仕様ファイルを指定できます。デプロイ仕様ファイルは、デプロイライフサイクルイベントに応じてインストールする内容と実行するライフサイクルイベントフックを指定します。デプロイ仕様ファイルは常に YAML 形式です。デプロイ仕様ファイルは、次の目的で使用されます。
-
アプリケーションリビジョンのソースファイルを、インスタンスの宛先にマッピングします。
-
デプロイされたファイルのカスタムアクセス権限を指定する。
-
デプロイプロセスのさまざまなフェーズにおいて、各インスタンスで実行するスクリプトを指定する。
デプロイ仕様ファイルは、AppSpec ファイルを使用して CodeDeploy でサポートされている特定のデプロイ設定パラメータをサポートします。既存の AppSpec ファイルを直接使用でき、サポートされていないパラメータは無視されます。CodeDeploy の AppSpec ファイルの詳細については、CodeDeploy ユーザーガイド」の「アプリケーション仕様ファイルリファレンス」を参照してください。
ファイルデプロイパラメータは次のように指定されます。
-
files
- デプロイ仕様ファイルは、デプロイファイルのsource:
とdestination:
を指定します。 -
scripts
- デプロイのスクリプト化されたイベント。BeforeDeploy
と の 2 つのイベントがサポートされていますAfterDeploy
。 -
hooks
- イベントのライフサイクルフック。次のフックがサポートされています:ApplicationStop
、BeforeInstall
、AfterInstall
、ApplicationStart
、およびValidateService
。注記
hooks パラメータはCodeDeploy との AppSpec 互換性のために使用でき、バージョン 0.0 (AppSpec 形式) でのみ使用できます。この形式では、CodePipeline はイベントのベストエフォートマッピングを実行します。
正しい YAML 間隔を仕様ファイルで使用する必要があります。そうしないと、デプロイ仕様ファイル内の場所とスペース数が正しくない場合にエラーが発生します。間隔の詳細については、YAML
デプロイ仕様ファイルの例を以下に示します。
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
指定されたデプロイ仕様ファイルを使用してアクション設定を表示するには、「」の例を参照してくださいDeploy 仕様を使用したアクション宣言の例。
アクションの宣言
Deploy 仕様を使用したアクション宣言の例
関連情報
このアクションを利用する際に役立つ関連リソースは以下の通りです。
-
チュートリアル: CodePipeline を使用して Amazon EC2 インスタンスにデプロイする – このチュートリアルでは、スクリプトファイルをデプロイする EC2 インスタンスの作成と、EC2 アクションを使用したパイプラインの作成について説明します。
-
EC2 デプロイアクションがエラーメッセージで失敗する No such file – このトピックでは、EC2 アクションでファイルが見つからないエラーのトラブルシューティングについて説明します。