

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

# コマンドアクションリファレンス
<a name="action-reference-Commands"></a>

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

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

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

**Topics**
+ [コマンドアクションに関する考慮事項](#action-reference-Commands-considerations)
+ [サービスロールのポリシーのアクセス許可](#action-reference-Commands-policy)
+ [アクションタイプ](#action-reference-Commands-type)
+ [設定パラメータ](#action-reference-Commands-config)
+ [入力アーティファクト](#action-reference-Commands-input)
+ [出力アーティファクト](#action-reference-Commands-output)
+ [環境変数](#action-reference-Commands-envvars)
+ [サービスロールのアクセス許可: コマンドアクション](#edit-role-Commands)
+ [アクションの宣言 (例)](#action-reference-Commands-example)
+ [関連情報](#action-reference-Commands-links)

## コマンドアクションに関する考慮事項
<a name="action-reference-Commands-considerations"></a>

コマンドアクションには以下の考慮事項が適用されます。
+ コマンドアクションは CodeBuild アクションと同様の CodeBuild リソースを使用しますが、ビルドプロジェクトを関連付けたり作成したりする必要はなく、仮想コンピューティングインスタンス内でシェル環境コマンドが許可されます。
**注記**  
コマンドアクションを実行すると、 AWS CodeBuildで別途料金が発生します。
+ CodePipeline のコマンドアクションは CodeBuild リソースを使用するため、アクションで実行するビルドには、アカウントに対する CodeBuild のビルド制限が適用されます。コマンドアクションで実行したビルドは、アカウントに設定されている同時ビルド制限にカウントされます。
+ コマンドアクションを使用したビルドのタイムアウトは、CodeBuild ビルドに基づいて 55 分です。
+ コンピューティングインスタンスは、CodeBuild の分離されたビルド環境を使用します。
**注記**  
分離されたビルド環境はアカウントレベルで使用されるため、インスタンスは別のパイプライン実行に再利用される場合があります。
+ 複数行形式を除くすべての形式がサポートされています。コマンドを入力するときは、単一行形式を使用する必要があります。
+ コマンドアクションは、クロスアカウントアクションでサポートされています。クロスアカウントコマンドアクションを追加するには、アクション宣言でターゲットアカウントから `actionRoleArn` を追加します。
+ このアクションでは、CodePipeline がパイプラインサービスロールを引き受け、このロールを使用してランタイムにリソースへのアクセスを許可します。アクセス許可の範囲をアクションレベルまで絞り込むように、サービスロールを設定することをお勧めします。
+ CodePipeline サービスロールに追加されるアクセス許可の詳細については、「[CodePipeline サービスロールにアクセス許可を追加する](how-to-custom-role.md#how-to-update-role-new-services)」を参照してください。
+ コンソールでログを表示するために必要なアクセス許可の詳細については、「[コンソールでコンピューティングログを表示するために必要なアクセス許可](security-iam-permissions-console-logs.md)」を参照してください。
+ CodePipeline の他のアクションとは異なり、アクション設定ではフィールドを設定せず、アクション設定の外部でアクション設定フィールドを設定します。

## サービスロールのポリシーのアクセス許可
<a name="action-reference-Commands-policy"></a>

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:*"
   ]
}
```

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

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

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

**コマンド**  
必須: はい  
`Commands` アクションで実行するシェルコマンドを指定できます。コンソールでは、各コマンドを個別の行に入力します。CLI では、コマンドを個別の文字列として入力します。  
複数行形式はサポートされていないため、エラーメッセージが表示されます。**[コマンド]** フィールドにコマンドを入力するには、単一行形式を使用する必要があります。
EnvironmentType と ComputeType の値は CodeBuild の値と一致します。使用可能なタイプのサブセットがサポートされています。詳細については、「[ビルド環境コンピューティングタイプ](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)」を参照してください。

**EnvironmentType**  
必須: いいえ  
コマンドアクションをサポートするビルド環境の OS イメージ。ビルド環境の有効な値は次のとおりです。  
+ LINUX\$1CONTAINER
+ WINDOWS\$1SERVER\$12022\$1CONTAINER
**[EnvironmentType]** を選択すると、**[ComputeType]** フィールドでその OS のコンピューティングタイプが許可されます。このアクションで利用可能な CodeBuild コンピューティングタイプの詳細については、「CodeBuild ユーザーガイド」の「[ビルド環境のコンピューティングモードおよびタイプ](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)」リファレンスを参照してください。  
指定しない場合、コンピューティングはビルド環境に対してデフォルトで次のようになります。  
+ **コンピューティングタイプ: **BUILD\$1GENERAL1\$1SMALL
+ **環境タイプ:** LINUX\$1CONTAINER

**ComputeType**  
必須: いいえ  
EnvironmentType の選択に基づいて、コンピューティングタイプを指定できます。以下はコンピューティングで使用可能な値ですが、使用可能なオプションは OS によって異なる場合があります。  
+ BUILD\$1GENERAL1\$1SMALL
+ BUILD\$1GENERAL1\$1MEDIUM
+ BUILD\$1GENERAL1\$1LARGE
一部のコンピューティングタイプは、特定の環境タイプと互換性がありません。例えば、WINDOWS\$1SERVER\$12022\$1CONTAINER は BUILD\$1GENERAL1\$1SMALL と互換性がありません。互換性のない組み合わせを使用すると、アクションは失敗し、ランタイムエラーが生成されます。

**outputVariables**  
必須: いいえ  
エクスポートする環境内の変数の名前を指定します。CodeBuild 環境変数のリファレンスについては、「*CodeBuild ユーザーガイド*」の「[ビルド環境の環境変数](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)」を参照してください。

**ファイル**  
必須: いいえ  
エクスポートするファイルは、アクションの出力アーティファクトとして指定できます。  
サポートされているファイル形式は、CodeBuild ファイルパターンと同じです。例えば、すべてのファイルの場合は「`**/`」と入力します。詳細については、「*CodeBuild ユーザーガイド*」の「[CodeBuild のビルド仕様リファレンス](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.artifacts.files)」を参照してください。  

![\[コマンドアクションを使用した新しいパイプラインの [アクションを編集] ページ\]](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/commands-edit-screen.png)


**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
          }
```

## 入力アーティファクト
<a name="action-reference-Commands-input"></a>
+ **アーティファクトの数:** `1 to 10`

## 出力アーティファクト
<a name="action-reference-Commands-output"></a>
+ **アーティファクトの数:** `0 to 1` 

## 環境変数
<a name="action-reference-Commands-envvars"></a>

**Key**  
キーと値の環境変数ペアのキー (`BEDROCK_TOKEN` など)。

**値**  
キーと値のペアの値 (`apiTokens:bedrockToken` など)。値は、パイプラインアクションまたはパイプライン変数からの出力変数でパラメータ化できます。  
`SECRETS_MANAGER` タイプを使用する場合、この値は Secrets Manager に既に保存しているシー AWS クレットの名前である必要があります。

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

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

環境変数を示すアクション宣言の例については、「[設定パラメータ](#action-reference-Commands-config)」を参照してください。

**注記**  
`SECRETS_MANAGER` タイプは、コマンドアクションでのみサポートされます。
コマンドアクションで参照されるシークレットは、CodeBuild のようなビルドログで編集されます。ただし、パイプラインへの**編集**アクセスを持つパイプラインユーザーは、コマンドを変更することで、これらのシークレット値に引き続きアクセスできる可能性があります。
SecretsManager を使用するには、パイプラインサービスロールに次のアクセス許可を追加する必要があります。  

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

## サービスロールのアクセス許可: コマンドアクション
<a name="edit-role-Commands"></a>

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

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:iam::*:role/Service*",
                "arn:aws:iam::*:role/Service*"
            ]
        }
    ]
}
```

------

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

------
#### [ 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"
}
```

------

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

このアクションを利用する際に役立つ関連リソースは以下の通りです。
+ [チュートリアル: コンピューティングを使用してコマンドを実行するパイプラインを作成する (V2 タイプ)](tutorials-commands.md) – このチュートリアルでは、コマンドアクションを使用したサンプルパイプラインを提供します。