コマンドアクションリファレンス - AWS CodePipeline

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

コマンドアクションリファレンス

コマンドアクションを使用すると、仮想コンピューティングインスタンスでシェルコマンドを実行できます。アクションを実行すると、アクション設定で指定したコマンドが別のコンテナで実行されます。CodeBuild アクションへの入力アーティファクトとして指定されたすべてのアーティファクトは、コマンドを実行するコンテナ内で使用できます。このアクションでは、CodeBuild プロジェクトを最初に作成せずにコマンドを指定できます。詳細については、「AWS CodePipeline API リファレンス」の「ActionDeclaration」と「OutputArtifact」を参照してください。

重要

このアクションではCodePipeline マネージド CodeBuild コンピューティングを使用して、ビルド環境でコマンドを実行します。コマンドアクションを実行すると、 AWS CodeBuildで別途料金が発生します。

注記

コマンドアクションは、V2 タイプのパイプラインでのみ使用できます。

コマンドアクションに関する考慮事項

コマンドアクションには以下の考慮事項が適用されます。

  • コマンドアクションは CodeBuild アクションと同様の CodeBuild リソースを使用しますが、ビルドプロジェクトを関連付けたり作成したりする必要はなく、仮想コンピューティングインスタンス内でシェル環境コマンドが許可されます。

    注記

    コマンドアクションを実行すると、 AWS CodeBuildで別途料金が発生します。

  • CodePipeline のコマンドアクションは CodeBuild リソースを使用するため、アクションで実行するビルドには、アカウントに対する CodeBuild のビルド制限が適用されます。コマンドアクションで実行したビルドは、アカウントに設定されている同時ビルド制限にカウントされます。

  • コマンドアクションを使用したビルドのタイムアウトは、CodeBuild ビルドに基づいて 55 分です。

  • コンピューティングインスタンスは、CodeBuild の分離されたビルド環境を使用します。

    注記

    分離されたビルド環境はアカウントレベルで使用されるため、インスタンスは別のパイプライン実行に再利用される場合があります。

  • 複数行形式を除くすべての形式がサポートされています。コマンドを入力するときは、単一行形式を使用する必要があります。

  • コマンドアクションは、クロスアカウントアクションでサポートされています。クロスアカウントコマンドアクションを追加するには、アクション宣言でターゲットアカウントactionRoleArnから を追加します。

  • このアクションでは、CodePipeline がパイプラインサービスロールを引き受け、このロールを使用してランタイムにリソースへのアクセスを許可します。アクセス許可の範囲をアクションレベルまで絞り込むように、サービスロールを設定することをお勧めします。

  • CodePipeline サービスロールに追加されるアクセス許可の詳細については、「CodePipeline サービスロールにアクセス許可を追加する」を参照してください。

  • コンソールでログを表示するために必要なアクセス許可の詳細については、「CodePipeline コンソールでコンピューティングログを表示するために必要なアクセス許可」を参照してください。

  • CodePipeline の他のアクションとは異なり、アクション設定ではフィールドを設定せず、アクション設定の外部でアクション設定フィールドを設定します。

サービスロールのポリシーのアクセス許可

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

/aws/codepipeline/MyPipelineName

既存のサービスロールを使用している場合、コマンドアクションを使用するには、サービスロールに以下のアクセス許可を追加する必要があります。

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:PutLogEvents

サービスロールポリシーステートメントで、次の例に示すように、アクセス許可の範囲をパイプラインレベルに絞り込みます。

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] }

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

アクションタイプ

  • カテゴリ:Compute

  • 所有者: AWS

  • プロバイダー: Commands

  • バージョン: 1

設定パラメータ

コマンド

必須: はい

Commands アクションで実行するシェルコマンドを指定できます。コンソールでは、各コマンドを個別の行に入力します。CLI では、コマンドを個別の文字列として入力します。

注記

複数行形式はサポートされていないため、エラーメッセージが表示されます。[コマンド] フィールドにコマンドを入力するには、単一行形式を使用する必要があります。

重要

EnvironmentType と ComputeType の値は CodeBuild の値と一致します。使用可能なタイプのサブセットがサポートされています。詳細については、「ビルド環境コンピューティングタイプ」を参照してください。

EnvironmentType

必須: いいえ

コマンドアクションをサポートするビルド環境の OS イメージ。ビルド環境の有効な値は次のとおりです。

  • LINUX_CONTAINER

  • WINDOWS_SERVER_2022_CONTAINER

EnvironmentType を選択すると、ComputeType フィールドでその OS のコンピューティングタイプが許可されます。このアクションで使用できる CodeBuild コンピューティングタイプの詳細については、「 CodeBuild ユーザーガイド」の「ビルド環境コンピューティングモードとタイプのリファレンス」を参照してください。

注記

指定しない場合、コンピューティングはビルド環境に対してデフォルトで次のようになります。

  • コンピューティングタイプ: BUILD_GENERAL1_SMALL

  • 環境タイプ: LINUX_CONTAINER

ComputeType

必須: いいえ

EnvironmentType の選択に基づいて、コンピューティングタイプを指定できます。以下はコンピューティングで使用可能な値ですが、使用可能なオプションは OS によって異なる場合があります。

  • BUILD_GENERAL1_SMALL

  • BUILD_GENERAL1_MEDIUM

  • BUILD_GENERAL1_LARGE

重要

一部のコンピューティングタイプは、特定の環境タイプと互換性がありません。たとえば、WINDOWS_SERVER_2022_CONTAINER は BUILD_GENERAL1_SMALL と互換性がありません。互換性のない組み合わせを使用すると、アクションは失敗し、ランタイムエラーが生成されます。

outputVariables

必須: いいえ

エクスポートする環境内の変数の名前を指定します。CodeBuild 環境変数のリファレンスについては、「CodeBuild ユーザーガイド」の「ビルド環境の環境変数」を参照してください。

ファイル

必須: いいえ

エクスポートするファイルは、アクションの出力アーティファクトとして指定できます。

サポートされているファイル形式は、CodeBuild ファイルパターンと同じです。例えば、すべてのファイルの場合は「**/」と入力します。詳細については、「CodeBuild ユーザーガイド」の「CodeBuild のビルド仕様リファレンス」を参照してください。

コマンドアクションを使用した新しいパイプラインの [アクションを編集] ページ
VpcId

必須: いいえ

リソースの VPC ID。

サブネット

必須: いいえ

VPC のサブネット。このフィールドは、コマンドが VPC 内のリソースに接続する必要がある場合に必要です。

SecurityGroupIds

必須: いいえ

VPC のセキュリティグループ。このフィールドは、コマンドが VPC 内のリソースに接続する必要がある場合に必要です。

以下は、環境とコンピューティングタイプの設定フィールドと環境変数の例を示す アクションの JSON 例です。

{ "name": "Commands1", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "commands": [ "ls", "echo hello", "echo $BEDROCK_TOKEN", ], "configuration": { "EnvironmentType": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_MEDIUM" }, "environmentVariables": [ { "name": "BEDROCK_TOKEN", "value": "apiTokens:bedrockToken", "type": "SECRETS_MANAGER" } ], "runOrder": 1 }

入力アーティファクト

  • アーティファクトの数: 1 to 10

出力アーティファクト

  • アーティファクトの数: 0 to 1

環境変数

キー

などのキーと値の環境変数ペアのキーBEDROCK_TOKEN

キーと値のペアの値。 などapiTokens:bedrockToken。値は、パイプラインアクションまたはパイプライン変数からの出力変数でパラメータ化できます。

SECRETS_MANAGER タイプを使用する場合、この値は Secrets Manager に既に保存しているシー AWS クレットの名前である必要があります。

タイプ

環境変数値の使用タイプを指定します。この値は PLAINTEXT または SECRETS_MANAGER となります。値が の場合SECRETS_MANAGEREnvironmentVariable値に Secrets リファレンスを指定します。指定しない場合、この値はデフォルトで PLAINTEXT になります。

注記

機密情報、特に AWS 認証情報を保存するためにプレーンテキストの環境変数を使用することは強くお勧めしません。CodeBuild コンソールまたは を使用すると AWS CLI、プレーンテキストの環境変数がプレーンテキストで表示されます。機密の値の場合は、代わりに SECRETS_MANAGER タイプを使用することをお勧めします。

注記

環境変数の設定に namevalue、および type を入力する場合 (特に環境変数に CodePipeline の出力変数の構文が含まれている場合) は、設定の値フィールドの 1000 文字制限を超えないようにしてください。この制限を超えると、検証エラーが返されます。

環境変数を示すアクション宣言の例については、「」を参照してください設定パラメータ

注記
  • SECRETS_MANAGER タイプは、 コマンドアクションでのみサポートされます。

  • コマンドアクションで参照されるシークレットは、CodeBuild のようなビルドログで編集されます。ただし、パイプラインへの編集アクセス権を持つパイプラインユーザーは、 コマンドを変更することで、これらのシークレット値に引き続きアクセスできる可能性があります。

  • SecretsManager を使用するには、パイプラインサービスロールに次のアクセス許可を追加する必要があります。

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "SECRET_ARN" ] }

サービスロールのアクセス許可: コマンドアクション

コマンドをサポートするには、ポリシーステートメントに以下を追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:{{region}}:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}", "arn:aws:logs:{{region}}:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }

アクションの宣言 (例)

YAML
name: Commands_action actionTypeId: category: Compute owner: AWS provider: Commands version: '1' runOrder: 1 configuration: {} commands: - ls - echo hello - 'echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}' outputArtifacts: - name: BuildArtifact files: - **/ inputArtifacts: - name: SourceArtifact outputVariables: - AWS_DEFAULT_REGION region: us-east-1 namespace: compute
JSON
{ "name": "Commands_action", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "runOrder": 1, "configuration": {}, "commands": [ "ls", "echo hello", "echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}" ], "outputArtifacts": [ { "name": "BuildArtifact", "files": [ "**/" ] } ], "inputArtifacts": [ { "name": "SourceArtifact" } ], "outputVariables": [ "AWS_DEFAULT_REGION" ], "region": "us-east-1", "namespace": "compute" }

このアクションを利用する際に役立つ関連リソースは以下の通りです。