

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

# でのビルド AWS CodeBuild
<a name="builds-working"></a>

*ビルド*は、一連の入力アーティファクト (Java クラスファイルのコレクションなど) に基づいて出力アーティファクト (JAR ファイルなど) を作成 AWS CodeBuild するために によって実行される一連のアクションを表します。

複数のビルドを実行するときは、以下のルールが適用されます。
+ 可能であれば、ビルドが同時に実行されます。同時実行ビルドの最大数は変化する可能性があります。詳細については、「」を参照してください[のクォータ AWS CodeBuild](limits.md) 
+ ビルドプロジェクトに同時ビルド制限が設定されている場合、実行中のビルド数がプロジェクトの同時ビルド制限に達すると、ビルドがエラーを返します。詳細については、「[同時ビルド制限を有効にする](create-project.md#enable-concurrent-build-limit.console)」を参照してください。
+ ビルドプロジェクトに同時ビルド制限が設定されていない場合、実行中のビルド数がプラットフォームとコンピューティングタイプの同時ビルド制限に達すると、ビルドがキューに入れられます。キュー内のビルドの最大数は、同時ビルド制限の 5 倍です。詳細については、「」を参照してください[のクォータ AWS CodeBuild](limits.md)

  タイムアウト値で指定された時間 (分) が経過しても開始されないキュー内のビルドは、キューから削除されます。デフォルトのタイムアウト値は 8 時間です。ビルドを実行するとき、5 分～ 8 時間の値でビルドのキュータイムアウトをオーバーライドできます。詳細については、「[AWS CodeBuild ビルドを手動で実行する](run-build.md)」を参照してください。

  キューに入れられたビルドが開始される順序を予測することはできません。

**注記**  
ビルドの履歴には、1 年間アクセスできます。

ビルドを操作するときに、次のタスクを実行できます。

**Topics**
+ [AWS CodeBuild ビルドを手動で実行する](run-build.md)
+ [AWS Lambda コンピューティングでビルドを実行する](lambda.md)
+ [リザーブドキャパシティキャパシティフリートでビルドを実行](fleets.md)
+ [ビルドをバッチで実行](batch-build.md)
+ [バッチビルドで並列テストを実行する](parallel-test.md)
+ [パフォーマンスを向上させるためのキャッシュビルド](build-caching.md)
+ [でのビルドのデバッグ AWS CodeBuild](debug-builds.md)
+ [AWS CodeBuild でのビルドの削除](delete-builds.md)
+ [でビルドを手動で再試行する AWS CodeBuild](retry-build.md)
+ [AWS CodeBuild でのビルドを自動的に再試行](auto-retry-build.md)
+ [AWS CodeBuild でのビルドを停止](stop-build.md)
+ [AWS CodeBuild でのバッチビルドを停止](stop-batch-build.md)
+ [AWS CodeBuild ビルドを自動的にトリガー](build-triggers.md)
+ [でビルドの詳細を表示する AWS CodeBuild](view-build-details.md)
+ [でビルド IDsのリストを表示する AWS CodeBuild](view-build-list.md)
+ [でビルドプロジェクトのビルド IDs のリストを表示する AWS CodeBuild](view-builds-for-project.md)

# AWS CodeBuild ビルドを手動で実行する
<a name="run-build"></a>

 AWS CodeBuild コンソール、 AWS CLI、または AWS SDKs を使用して CodeBuild でビルドを実行できます。

**Topics**
+ [AWS CodeBuild エージェントを使用してビルドをローカルで実行する](use-codebuild-agent.md)
+ [ビルドの実行 (コンソール)](run-build-console.md)
+ [ビルドの実行 (AWS CLI)](run-build-cli.md)
+ [バッチビルドの実行 (AWS CLI)](run-batch-build-cli.md)
+ [ビルドの実行の自動開始 (AWS CLI)](run-build-cli-auto-start.md)
+ [ビルドの実行の自動停止 (AWS CLI)](run-build-cli-auto-stop.md)
+ [ビルドを実行する (AWS SDKs)](run-build-sdks.md)

# AWS CodeBuild エージェントを使用してビルドをローカルで実行する
<a name="use-codebuild-agent"></a>

 AWS CodeBuild エージェントを使用して、ローカルマシンで CodeBuild ビルドを実行できます。x86\$164 および ARM プラットフォームで使用できるエージェントがあります。

通知にサブスクライブして、 エージェントの新しいバージョンがリリースされたときに通知を受信できます。

## 前提条件
<a name="use-codebuild-agent.prerequisites"></a>

開始する前に、以下を実行する必要があります。
+ ローカルマシンで Git をインストールします。
+ ローカルマシンで、[Docker](https://www.docker.com/) をインストールしてセットアップします。

## ビルドイメージの設定方法
<a name="use-codebuild-agent.setup-image"></a>

ビルドイメージを設定する必要があるのは、エージェントを初めて実行するとき、またはイメージが変更されたときだけです。

**ビルドイメージの設定方法**

1. 厳選された Amazon Linux 2 イメージを使用する場合は、次のコマンドを使用して、[https://gallery.ecr.aws/codebuild/amazonlinux-x86\$164-standard](https://gallery.ecr.aws/codebuild/amazonlinux-x86_64-standard) の CodeBuild パブリック Amazon ECR リポジトリからイメージをプルできます。

   ```
   $ docker pull public.ecr.aws/codebuild/amazonlinux-x86_64-standard:4.0
   ```

   その代わりに別の Linux イメージを使用する場合は、以下のステップを実行してください。

   1. CodeBuild イメージレポジトリをクローンします。

      ```
      $ git clone https://github.com/aws/aws-codebuild-docker-images.git
      ```

   1. イメージディレクトリを変更します。この例では、`aws/codebuild/standard:5.0` イメージを使用します。

      ```
      $ cd aws-codebuild-docker-images/ubuntu/standard/5.0
      ```

   1. イメージを構築します。これには数分間かかります。

      ```
      $ docker build -t aws/codebuild/standard:5.0 .
      ```

1. CodeBuild エージェントをダウンロードします。

   エージェントの x86\$164 バージョンをダウンロードするには、次のコマンドを実行します。

   ```
   $ docker pull public.ecr.aws/codebuild/local-builds:latest
   ```

   次のコマンドを使用して、ARM バージョンのエージェントをダウンロードしてインストールします。

   ```
   $ docker pull public.ecr.aws/codebuild/local-builds:aarch64
   ```

1. <a name="codebuild-agent-sha"></a>CodeBuild エージェントは、[https://gallery.ecr.aws/codebuild/local-builds](https://gallery.ecr.aws/codebuild/local-builds) から入手できます。

   エージェントの x86\$164 バージョンのセキュアハッシュアルゴリズム (SHA) 署名は次のとおりです。

   ```
   sha256:ccb19bdd7af94e4dc761e4c58c267e9455c28ec68d938086b4dc1cf8fe6b0940
   ```

   エージェントの ARM バージョンの SHA 署名は次のとおりです。

   ```
   sha256:7d7b5d35d2ac4e062ae7ba8c662ffed15229a52d09bd0d664a7816c439679192
   ```

   SHA を使用してエージェントのバージョンを識別できます。エージェントの SHA 署名を表示するには、次のコマンドを実行して、`RepoDigests` の下で SHA を探します。

   ```
   $ docker inspect public.ecr.aws/codebuild/local-builds:latest
   ```

## CodeBuild エージェントを実行する
<a name="use-codebuild-agent.run-agent"></a>

**CodeBuild エージェントを実行するには**

1. ビルドプロジェクトソースを含むディレクトリに移動します。

1. [codebuild.sh](https://github.com/aws/aws-codebuild-docker-images/blob/master/local_builds/codebuild_build.sh) スクリプトをダウンロードします。

   ```
   $ curl -O  https://raw.githubusercontent.com/aws/aws-codebuild-docker-images/master/local_builds/codebuild_build.sh
   $ chmod +x codebuild_build.sh
   ```

1. `codebuild_build.sh` スクリプトを実行し、コンテナイメージおよび出力ディレクトリを指定します。

   x86\$164 ビルドを実行するには、次のコマンドを実行します。

   ```
   $ ./codebuild_build.sh -i <container-image> -a <output directory>
   ```

   ARM ビルドを開始するには、次のコマンドを実行します。

   ```
   $ ./codebuild_build.sh -i <container-image> -a <output directory> -l public.ecr.aws/codebuild/local-builds:aarch64
   ```

   *<container-image>* は、コンテナイメージの名前 (`aws/codebuild/standard:5.0` または `public.ecr.aws/codebuild/amazonlinux-x86_64-standard:4.0` など) に置き換えてください。

   スクリプトはビルドイメージを起動し、現在のディレクトリにあるプロジェクトを使用してビルドを実行します。ビルドプロジェクトの場所を指定するには、`-s <build project directory>` オプションをスクリプトコマンドに追加します。

## CodeBuild エージェントの新しいバージョンに関する通知の受信
<a name="receive-codebuild-agent-notifications"></a>

Amazon SNS 通知をサブスクライブして、 AWS CodeBuild エージェントの新しいバージョンがリリースされたときに通知を受け取ることができます。

**CodeBuild エージェントの通知にサブスクライブするには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. ナビゲーションバーで、まだ選択されていない場合は、 AWS リージョンを**米国東部 (バージニア北部)** に変更します。サブスクライブしている Amazon SNS 通知がこの AWS リージョンで作成されるため、このリージョンを選択する必要があります。

1. ナビゲーションペインで [**Subscriptions**] を選択してください。

1. [**Create subscription**] を選択してください。

1. **[Create subscription]** (サブスクリプションの作成) で、次の操作を行います。

   1. **[Topic ARN]** (トピック ARN) で、以下の Amazon リソースネーム (ARN) を使用します。

      ```
      arn:aws:sns:us-east-1:850632864840:AWS-CodeBuild-Local-Agent-Updates
      ```

   1. [**プロトコル**] で、[**E メール**] または [**SMS**] を選択します。

   1. [**エンドポイント**] で、通知を受信する場所 (E メールまたは SMS) を選択します。E メール、住所、または電話番号 (市外局番を含む) を入力します。

   1. [**Create subscription**] (サブスクリプションの作成) を選択します。

   1. **[Email]** (E メール) を選択した場合は、サブスクリプションの確認を求める E メールが届きます。E メールの指示に従ってサブスクリプションを完了します。

      通知が不要になった場合は、次の手順で受信登録を解除します。

**CodeBuild エージェントの通知のサブスクリプションを解除するには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. ナビゲーションペインで [**Subscriptions**] (サブスクリプション) を選択します。

1. サブスクリプションを選択し、**[Actions]** (アクション) から **[Delete subscriptions]** (サブスクリプションの削除) を選択します。確認を求められたら [**Delete**] (削除) を選択します。

# ビルドの実行 (コンソール)
<a name="run-build-console"></a>

CodeBuild で AWS CodePipeline を使用してビルドを実行するには、この手順をスキップして「[CodePipeline で CodeBuild を使用](how-to-create-pipeline.md)」の手順に従います。

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. ナビゲーションペインで、[**Build projects**] を選択します。

1. ビルドプロジェクトのリストで、ビルドプロジェクトを選択します。

1. デフォルトのビルドプロジェクト設定でビルドを実行することも、このビルドのみのビルド設定を上書きすることもできます。

   1. デフォルトのビルドプロジェクト設定を使用してビルドを実行するには、**[ビルドの開始]** を選択します。ビルドがすぐに開始されます。

   1. デフォルトのビルドプロジェクト設定を上書きする場合は、**[上書きでビルドを開始]** を選択します。**[ビルドを開始]** ページで、以下を上書きできます。
      + **[ビルド設定]**
      + **ソース**:
      + **[環境変数の上書き]**

      より高度な上書きを選択する必要がある場合は、**[高度なビルドの上書き]** を選択します。このページでは、以下の操作を上書きできます。
      + **[ビルド設定]**
      + **ソース**:
      + **環境**:
      + **BuildSpec**
      + **アーティファクト**
      + **ログ**:

      上書きを選択したら、**[ビルドを開始]** を選択します。

このビルドの詳細については、「[ビルドの詳細の表示 (コンソール)](view-build-details.md#view-build-details-console)」を参照してください。

# ビルドの実行 (AWS CLI)
<a name="run-build-cli"></a>

**注記**  
CodePipeline で AWS CodeBuild を使用してビルドを実行するには、この手順をスキップして「[CodeBuild を使用するパイプラインの作成 (AWS CLI)](how-to-create-pipeline-cli.md)」の手順に従います。  
CodeBuild で AWS CLI を使用する方法については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

1. 次のいずれかの方法で `start-build` コマンドを実行します。

   ```
   aws codebuild start-build --project-name <project-name>
   ```

   ビルド入力アーティファクトの最新バージョンとビルドプロジェクトの既存の設定を使用するビルドを実行する場合は、これを使用します。

   ```
   aws codebuild start-build --generate-cli-skeleton
   ```

   以前のバージョンのビルド入力アーティファクトを使用してビルドを実行する場合、またはビルド出力アーティファクト、環境変数、ビルド仕様、またはデフォルトのビルドタイムアウト期間の設定をオーバーライドする場合は、これを使用します。

1. `--project-name` オプションを指定して **start-build** コマンドを実行する場合は、*<project-name>* をビルドプロジェクトの名前に置き換えて、この手順のステップ 6 に進みます。ビルドプロジェクトのリストを表示するには、「[ビルドプロジェクト名を表示](view-project-list.md)」を参照してください。

1. `--idempotency-token` オプションを指定して **start-build** コマンドを実行すると、大文字と小文字を区別する一意の識別子 (トークン) が `start-build` リクエストに含まれます。このトークンは、 リクエスト後 5 分間有効です。同じトークンで `start-build` リクエストを繰り返し行い、パラメータを変更すると、CodeBuild はパラメータの不一致エラーを返します。

1. **start-build** オプションを指定して `--generate-cli-skeleton` コマンドを実行すると、出力に JSON 形式のデータが表示されます。`start-build.json` がインストールされているローカルコンピュータまたはインスタンス上の場所にあるファイル (例: AWS CLI) にデータをコピーします。コピーしたデータを次の形式に変更して、結果を保存します。

   ```
   {
     "projectName": "projectName",
     "sourceVersion": "sourceVersion",
     "artifactsOverride": {
       "type": "type",
       "location": "location",
       "path": "path",
       "namespaceType": "namespaceType",
       "name": "artifactsOverride-name",
       "packaging": "packaging"
     },
     "buildspecOverride": "buildspecOverride",
     "cacheOverride": {
       "location": "cacheOverride-location",
       "type": "cacheOverride-type"
     },
     "certificateOverride": "certificateOverride",
     "computeTypeOverride": "computeTypeOverride",
     "environmentTypeOverride": "environmentTypeOverride",
     "environmentVariablesOverride": {
       "name": "environmentVariablesOverride-name",
       "value": "environmentVariablesValue",
       "type": "environmentVariablesOverride-type"
     },
     "gitCloneDepthOverride": "gitCloneDepthOverride",
     "imageOverride": "imageOverride",
     "idempotencyToken": "idempotencyToken",
     "insecureSslOverride": "insecureSslOverride",
     "privilegedModeOverride": "privilegedModeOverride",
     "queuedTimeoutInMinutesOverride": "queuedTimeoutInMinutesOverride",
     "reportBuildStatusOverride": "reportBuildStatusOverride",
     "timeoutInMinutesOverride": "timeoutInMinutesOverride",
     "sourceAuthOverride": "sourceAuthOverride",
     "sourceLocationOverride": "sourceLocationOverride",
     "serviceRoleOverride": "serviceRoleOverride",
     "sourceTypeOverride": "sourceTypeOverride"
   }
   ```

   次のプレースホルダーを置き換えます。
   + *projectName*: 必須の文字列。このビルドに使用するビルドプロジェクトの名前。
   + *sourceVersion*: オプションの文字列。作成するソースコードのバージョンで、次のようになります。
     + Amazon S3 の場合、ビルドする入力 ZIP ファイルのバージョンに対応するバージョン ID。*sourceVersion* が指定されなければ、最新のバージョンが使用されます。
     + CodeCommit の場合、ビルドするソースコードのバージョンに対応するコミット ID。*sourceVersion* が指定されなければ、デフォルトブランチの HEAD コミット ID が使用されます。(*sourceVersion* にタグ名は指定できません。しかし、タグのコミット ID は指定できます。)
     + GitHub の場合、ビルドするソースコードのバージョンに対応するコミット ID、プルリクエスト ID、ブランチ名、またはタグ名。プルリクエスト ID を指定する場合、`pr/pull-request-ID` (例: `pr/25`) 形式を使用する必要があります。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。*sourceVersion* が指定されなければ、デフォルトブランチの HEAD コミット ID が使用されます。
     + Bitbucket の場合、ビルドするソースコードのバージョンに対応するコミット ID、ブランチ名、またはタグ名。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。*sourceVersion* が指定されなければ、デフォルトブランチの HEAD コミット ID が使用されます。
   + 次に示すプレースホルダーは、`artifactsOverride` が対象です。
     + *type*: オプション。このビルドでオーバーライドするビルド出力アーティファクトタイプは、ビルドプロジェクトで定義されたものです。
     + *location*: オプション。このビルドでオーバーライドするビルド出力アーティファクトの場所は、ビルドプロジェクトで定義されたものです。
     + *path*: オプション。このビルドでオーバーライドするビルド出力アーティファクトパスは、ビルドプロジェクトで定義されたものです。
     + *namespaceType*: オプション。このビルドでオーバーライドするビルド出力アーティファクトパスのタイプは、ビルドプロジェクトで定義されたものです。
     + *name*: オプション。このビルドでオーバーライドするビルド出力アーティファクト名は、ビルドプロジェクトで定義されたものです。
     + *packaging*: オプション。このビルドでオーバーライドするビルド出力アーティファクトパッケージタイプは、ビルドプロジェクトで定義されたものです。
   + *buildspecOverride*: オプション。ビルドプロジェクトに定義されている buildspec 宣言を上書きする、このビルドの buildspec 宣言。この値が設定されている場合は、インラインのビルド仕様定義か、組み込みの環境変数 `CODEBUILD_SRC_DIR` の値に相対的な代替 buildspec ファイルへのパスか、S3 バケットへのパスになります。S3 バケットは、ビルドプロジェクトと同じ AWS リージョンに存在する必要があります。ARN を使用して buildspec ファイルを指定します（例: `arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`）。この値が指定されていない場合や、空の文字列に設定されている場合、ソースコードのルートディレクトリに `buildspec.yml` ファイルが含まれている必要があります。詳細については、「[buildspec ファイル名とストレージの場所](build-spec-ref.md#build-spec-ref-name-storage)」を参照してください。
   + 次に示すプレースホルダーは、`cacheOverride` が対象です。
     + *cacheOverride-location*: オプション。ビルドプロジェクトで指定された `ProjectCache` オブジェクトを上書きする、このビルドの `ProjectCache` オブジェクトの場所。`cacheOverride` はオプションで、`ProjectCache` オブジェクトを受け取ります。`location` は `ProjectCache` オブジェクトで必要です。
     + *cacheOverride-type*: オプション。ビルドプロジェクトで指定された `ProjectCache` オブジェクトを上書きする、このビルドの `ProjectCache` オブジェクトのタイプ。`cacheOverride` はオプションで、`ProjectCache` オブジェクトを受け取ります。`type` は `ProjectCache` オブジェクトで必要です。
   + *certificateOverride*: オプション。ビルドプロジェクトで指定された証明書を上書きする、このビルドの証明書の名前。
   + *environmentTypeOverride*: オプション。ビルドプロジェクトで指定されたコンテナタイプを上書きする、このビルドのコンテナタイプ。現在の有効な文字列は `LINUX_CONTAINER` です。
   + 次に示すプレースホルダーは、`environmentVariablesOverride` が対象です。
     + *environmentVariablesOverride-name*: オプション。このビルドで値を上書きするビルドプロジェクトの環境変数の名前。
     + *environmentVariablesOverride-type*: オプション。このビルドで値を上書きするビルドプロジェクトの環境変数のタイプ。
     + *environmentVariablesValue*: オプション。このビルドで値を上書きするビルドプロジェクトで定義された環境変数の値。
   + *gitCloneDepthOverride*: オプション。このビルドで上書きする、ビルドプロジェクトの [**Git のクローンの深さ**] の値。ソースタイプが Amazon S3 である場合、この値はサポートされません。
   + *imageOverride*: オプション。ビルドプロジェクトで指定されたイメージを上書きする、このイメージの名前。
   + *idempotencyToken*: オプション。ビルドリクエストがべき等であることを指定する、トークンとして機能する文字列。64 文字以下の任意の文字列を選択できます。このトークンは、ビルド開始リクエスト後 5 分間有効です。同じトークンでビルド開始リクエストを繰り返し行い、パラメータを変更すると、CodeBuild はパラメータの不一致エラーを返します。
   + *insecureSslOverride*: ビルドプロジェクトに指定されている安全でない TLS 設定を上書きするかどうかを指定するブール値 (オプション)。安全でない TLS 設定により、プロジェクトのソースコードに接続するときに TLS 警告を無視するかどうかが決まります。この上書きが適用されるのは、ビルドのソースが GitHub Enterprise Server である場合のみです。
   + *privilegedModeOverride*: オプションのブール値。true に設定すると、ビルドは、ビルドプロジェクトで権限モードを上書きします。
   +  *queuedTimeoutInMinutesOverride*: ビルドをキューに入れてからタイムアウトするまでの時間 (分) を指定するオプションの整数。その最小値は 5 分、最大値は 480 分 (8 時間) です。
   + *reportBuildStatusOverride*: ビルドの開始と完了のステータスをソースプロバイダに送信するかどうかを指定するオプションのブール値。これを GitHub、GitHub Enterprise Server、Bitbucket 以外のソースプロバイダーに対して設定すると、invalidInputException がスローされます。
   + *sourceAuthOverride*: オプションの文字列。ビルドプロジェクトで定義された認可タイプを上書きする、このビルドの認可タイプ。この上書きが適用されるのは、ビルドプロジェクトのソースが Bitbucket または GitHub である場合のみです。
   + *sourceLocationOverride*: オプションの文字列。このビルドで、ビルドプロジェクトで定義されたソースの場所を上書きする場所。
   + *serviceRoleOverride*: オプションの文字列。ビルドプロジェクトで指定されたサービスロールを上書きする、このビルドのサービスロールの名前。
   + *sourceTypeOverride*: オプションの文字列。このビルドで、ビルドプロジェクトで定義されたソース入力を上書きするソース入力タイプ。有効な文字列は、`NO_SOURCE`、`CODECOMMIT`、`CODEPIPELINE`、`GITHUB`、`S3`、`BITBUCKET`、および `GITHUB_ENTERPRISE` です。
   + *timeoutInMinutesOverride*: オプション番号。このビルドで上書きするビルドタイムアウトの分数は、ビルドプロジェクトで定義されたものです。

   AWS アクセスキー ID、AWS シークレットアクセスキー、パスワードなどの機密値を持つ環境変数は、パラメータとして Amazon EC2 Systems Manager Parameter Store に保存することをお勧めします。CodeBuild では、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータは、そのパラメータの名前が `/CodeBuild/` (例: `/CodeBuild/dockerLoginPassword`) で始まる場合にのみ使用できます。CodeBuild コンソールを使用して、Amazon EC2 Systems Manager にパラメータを作成することができます。[**Create a parameter (パラメータの作成)**] を選択し、手順に従います。(ダイアログボックスでは、[**KMS キー**] の場合、オプションでアカウントの AWS KMS キーの ARN を指定できます。Amazon EC2 Systems Manager では、このキーを使用して、保存中にパラメータの値を暗号化し、取得中に復号化します。) CodeBuild コンソールを使用してパラメータを作成した場合、コンソールは保存されている `/CodeBuild/` パラメータを開始します。ただし、Amazon EC2 Systems Manager パラメータストアコンソールを使用してパラメータを作成する場合、パラメータの名前を `/CodeBuild/` で開始する必要があり、**[タイプ]** を **[Secure String (安全な文字列)] **に設定する必要があります。詳細については、「*Amazon EC2 Systems Manager ユーザーガイド*」の「[AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)」および[「チュートリアル: String パラメータの作成とテスト (コンソール)」](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html)を参照してください。

   ビルドプロジェクトが Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで `ssm:GetParameters` アクションを許可する必要があります。以前に **[アカウントに新しいサービスロールを作成する]** を選択している場合、CodeBuild は、このアクションをビルドプロジェクトのデフォルトのサービスロールに自動的に含めます。ただし [**Choose an existing service role from your account (アカウントから既存のサービスロールを選択する)**] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。

   既存の環境変数は、設定した環境変数により置き換えられます。たとえば、Docker イメージに `my_value` の値を持つ `MY_VAR` という名前の環境変数が既に含まれていて、`other_value` の値を持つ `MY_VAR` という名前の環境変数を設定した場合、`my_value` が `other_value` に置き換えられます。同様に、Docker イメージに `/usr/local/sbin:/usr/local/bin` の値を持つ `PATH` という名前の環境変数が既に含まれていて、`$PATH:/usr/share/ant/bin` の値を持つ `PATH` という名前の環境変数を設定した場合、`/usr/local/sbin:/usr/local/bin` はリテラル値 `$PATH:/usr/share/ant/bin` に置き換えられます。

   `CODEBUILD_` で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

   同じ名前の環境変数が複数の場所で定義されている場合、環境変数の値は次のように決定されます。
   + ビルド開始オペレーション呼び出しの値が最も優先順位が高くなります。
   + ビルドプロジェクト定義の値が次に優先されます。
   + buildspec ファイル宣言の値の優先順位が最も低くなります。

   これらのプレースホルダの有効な値の詳細については、「[ビルドプロジェクトの作成 (AWS CLI)](create-project.md#create-project-cli)」を参照してください。ビルドプロジェクトの最新の設定の一覧については、「[ビルドプロジェクトの詳細を表示](view-project-details.md)」を参照してください。

1. 保存したばかりのファイルがあるディレクトリに移動し、`start-build` コマンドをもう一度実行します。

   ```
   aws codebuild start-build --cli-input-json file://start-build.json
   ```

1. 成功した場合は、「[ビルドを実行するには](getting-started-overview.md#getting-started-run-build-cli)」の手順で説明されているのと同様のデータが出力に表示されます。

このビルドの詳細情報を使用するには、出力の `id` の値を書き留めてから、「[ビルドの詳細の表示 (AWS CLI)](view-build-details.md#view-build-details-cli)」を参照してください。

# バッチビルドの実行 (AWS CLI)
<a name="run-batch-build-cli"></a>

1. 次のいずれかの方法で `start-build-batch` コマンドを実行します。

   ```
   aws codebuild start-build-batch --project-name <project-name>
   ```

   ビルド入力アーティファクトの最新バージョンとビルドプロジェクトの既存の設定を使用するビルドを実行する場合は、これを使用します。

   ```
   aws codebuild start-build-batch --generate-cli-skeleton > <json-file>
   ```

   以前のバージョンのビルド入力アーティファクトを使用してビルドを実行する場合、またはビルド出力アーティファクト、環境変数、ビルド仕様、またはデフォルトのビルドタイムアウト期間の設定をオーバーライドする場合は、これを使用します。

1. `--project-name` オプションを指定して **start-build-batch** コマンドを実行する場合は、*<project-name>* をビルドプロジェクトの名前に置き換えて、この手順のステップ 6 に進みます。ビルドプロジェクトのリストを表示するには、「[ビルドプロジェクト名を表示](view-project-list.md)」を参照してください。

1. `--idempotency-token` オプションを指定して **start-build-batch** コマンドを実行すると、大文字と小文字を区別する一意の識別子 (トークン) が `start-build-batch` リクエストに含まれます。このトークンは、 リクエスト後 5 分間有効です。同じトークンで `start-build-batch` リクエストを繰り返し行い、パラメータを変更すると、CodeBuild はパラメータの不一致エラーを返します。

1. `--generate-cli-skeleton` オプションを指定して **start-build-batch** コマンドを実行すると、JSON 形式のデータが *<json-file>* ファイルに出力されます。このファイルは、**start-build** コマンド実行により生成されるスケルトンに似ていますが、次のオブジェクトが追加されています。共通オブジェクトの詳細については、「[ビルドの実行 (AWS CLI)](run-build-cli.md)」を参照してください。

   このファイルを変更してビルドオーバーライドを追加し、結果を保存します。

   ```
     "buildBatchConfigOverride": {
       "combineArtifacts": combineArtifacts,
       "restrictions": {
         "computeTypesAllowed": [
           allowedComputeTypes
         ],
         "maximumBuildsAllowed": maximumBuildsAllowed
       },
       "serviceRole": "batchServiceRole",
       "timeoutInMins": batchTimeout
     }
   ```

   `buildBatchConfigOverride` オブジェクトは、[ProjectBuildBatchConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectBuildBatchConfig.html) 構造体で、このビルドのバッチビルド設定の上書きを含んでいます。  
*combineArtifacts*  
バッチビルドのビルドアーティファクトを 1 つのアーティファクトの場所に結合するかどうかを指定するブール値。  
*allowedComputeTypes*  
バッチビルドで許可されるコンピューティングタイプを指定する文字列の配列。これらの値に対しては、「[ビルド環境のコンピューティングタイプ](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)」を参照してください。  
*maximumBuildsAllowed*  
許可されるビルドの最大数を指定します。  
*batchServiceRole*  
バッチビルドプロジェクトのサービスロール ARN を指定します。  
*batchTimeout*  
バッチビルドを完了するまでの最大時間 (分単位) を指定します。

1. 保存したばかりのファイルがあるディレクトリに移動し、`start-build-batch` コマンドをもう一度実行します。

   ```
   aws codebuild start-build-batch --cli-input-json file://start-build.json
   ```

1. 成功した場合、[BuildBatch](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BuildBatch.html) の JSON 表現オブジェクトが、コンソール出力に表示されます。このデータの例については、「[StartBuildBatch レスポンスの構文](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html#API_StartBuildBatch_ResponseSyntax)」を参照してください。

# ビルドの実行の自動開始 (AWS CLI)
<a name="run-build-cli-auto-start"></a>

ソースコードが GitHub または GitHub Enterprise Server リポジトリに保存されている場合は、コード変更がリポジトリにプッシュされるたびにGitHub ウェブフックを使用してソースコードを AWS CodeBuild 再構築できます。

次のように **create-webhook** コマンドを実行します。

```
aws codebuild create-webhook --project-name <project-name>
```

*<project-name>* は、再ビルドするソースコードを含むビルドプロジェクトの名前です。

GitHub では、次のような情報が出力に表示されます。

```
{
  "webhook": {
    "url": "<url>"
  }
}
```

*<url>* は GitHub ウェブフックへの URL です。

GitHub Enterprise Server の場合、以下のような情報が出力に表示されます。

![\[サンプル出力情報。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/create-webhook-ghe.png)


1. 出力からシークレットキーとペイロード URL をコピーします。これらは、GitHub Enterprise Server に Webhook を追加するために必要となります。

1. GitHub Enterprise Server で、CodeBuild プロジェクトが保存されているリポジトリを選択します。[**設定**]、[**Hooks & services**]、[**Add webhook**] の順に選択します。

1. ペイロード URL とシークレットキーを入力し、その他のフィールドにはデフォルト値を選択して、[**Add webhook**] を選択します。

# ビルドの実行の自動停止 (AWS CLI)
<a name="run-build-cli-auto-stop"></a>

ソースコードが GitHub または GitHub Enterprise Server リポジトリに保存されている場合は、コード変更がリポジトリにプッシュされるたびにソースコードを AWS CodeBuild 再構築するように GitHub ウェブフックを設定できます。詳細については、「[ビルドの実行の自動開始 (AWS CLI)](run-build-cli-auto-start.md)」を参照してください。

この動作を有効にしている場合、次の `delete-webhook` コマンドを実行して無効化できます。

```
aws codebuild delete-webhook --project-name <project-name>
```
+ *<project-name>* は、再構築するソースコードを含むビルドプロジェクトの名前です。

このコマンドが成功すると、情報やエラーはなにも出力に表示されません。

**注記**  
これは、CodeBuild プロジェクトからのみ webhook を削除します。GitHub または GitHub Enterprise Server でも Webhook を削除する必要があります。

# ビルドを実行する (AWS SDKs)
<a name="run-build-sdks"></a>

CodePipeline を使用してビルドを実行するには AWS CodeBuild、これらのステップをスキップし、[AWS CodeBuild で AWS CodePipeline を使用してコードをテストし、ビルドを実行する](how-to-create-pipeline.md)代わりに「」の手順に従います。

SDK で CodeBuild を使用する方法については、「」を参照してください[AWS SDKsとツールのリファレンス](sdk-ref.md)。 AWS SDKs

# AWS Lambda コンピューティングでビルドを実行する
<a name="lambda"></a>

AWS Lambda コンピューティングは、ビルドの起動速度を最適化します。 は、起動レイテンシーが低いため、より高速なビルド AWS Lambda をサポートします。 AWS Lambda も自動的にスケーリングするため、ビルドはキュー内で実行されるのを待つことはありません。ただし、 AWS Lambda がサポートしていないユースケースがいくつかあり、それらが影響する場合は EC2 コンピューティングを使用します。詳細については、「[AWS Lambda コンピューティングの制限](#lambda.limitations)」を参照してください。

**Topics**
+ [AWS Lambda上で実行される、選別されたランタイム環境の Docker イメージには、どのツールとランタイムが含まれますか?](#lambda.tools)
+ [キュレートされたイメージに必要なツールが含まれていない場合はどうなりますか。](#lambda.custom)
+ [CodeBuild で AWS Lambda コンピューティングをサポートしているのはどのリージョンですか?](#lambda.regions)
+ [AWS Lambda コンピューティングの制限](#lambda.limitations)
+ [CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする](sample-lambda-sam-gradle.md)
+ [CodeBuild Lambda Node.js を使用してシングルページの React アプリを作成](sample-lambda-react-nodejs.md)
+ [CodeBuild Lambda Python を使用して Lambda 関数の設定を更新](sample-lambda-boto3-python.md)

## AWS Lambda上で実行される、選別されたランタイム環境の Docker イメージには、どのツールとランタイムが含まれますか?
<a name="lambda.tools"></a>

AWS Lambda は、次のツールをサポートしています。 AWS CLI v2、 AWS SAM CLI、git、go、Java、Node.js、Python、pip、Ruby、.NET。

## キュレートされたイメージに必要なツールが含まれていない場合はどうなりますか。
<a name="lambda.custom"></a>

キュレートされたイメージに必要なツールが含まれていない場合は、必要なツールを含むカスタム環境の Docker イメージを提供できます。

**注記**  
Lambda は、マルチアーキテクチャのコンテナイメージを使用する関数をサポートしません。詳細については、「*AWS Lambda デベロッパーガイド*」の「[コンテナイメージを使用した Lambda 関数の作成](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-reqs)」を参照してください。

Lambda コンピューティングにカスタムイメージを使用するには、次の Amazon ECR アクセス許可が必要です。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/image-repo"
        }
    ]
}
```

------

また、カスタムイメージを使用するには、`curl` または `wget` をインストールする必要があります。

## CodeBuild で AWS Lambda コンピューティングをサポートしているのはどのリージョンですか?
<a name="lambda.regions"></a>

CodeBuild では、 AWS Lambda 米国 AWS リージョン東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (ムンバイ）、アジアパシフィック (シンガポール）、アジアパシフィック (シドニー）、アジアパシフィック (東京）、欧州 (フランクフルト）、欧州 (アイルランド）、南米 (サンパウロ) でコンピューティングがサポートされています。CodeBuild が使用可能な  AWS リージョン  の詳細については、「[AWS  サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。

## AWS Lambda コンピューティングの制限
<a name="lambda.limitations"></a>

 AWS Lambda がサポートしていないユースケースがいくつかあり、それらが影響する場合は EC2 コンピューティングを使用します。
+ AWS Lambda は、ルートアクセス許可を必要とするツールをサポートしていません。`yum` や `rpm` などのツールには、EC2 コンピューティングタイプや root 権限を必要としないその他のツールを使用してください。
+ AWS Lambda は Docker のビルドまたは実行をサポートしていません。
+ AWS Lambda は、 外のファイルへの書き込みをサポートしていません`/tmp`。付属のパッケージマネージャーは、パッケージのダウンロードと参照にデフォルトで `/tmp` ディレクトリを使用するように設定されています。
+ AWS Lambda は 環境タイプをサポートしておらず`LINUX_GPU_CONTAINER`、Windows Server Core 2019 ではサポートされていません。
+ AWS Lambda は、キャッシュ、カスタムビルドタイムアウト、キュータイムアウト、ビルドバッジ、特権モード、カスタムランタイム環境、または 15 分を超えるランタイムをサポートしていません。
+ AWS Lambda は、VPC 接続、固定範囲の CodeBuild ソース IP アドレス、EFS、証明書のインストール、または Session Manager による SSH アクセスをサポートしていません。

# CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする
<a name="sample-lambda-sam-gradle"></a>

 AWS Serverless Application Model (AWS SAM) は、サーバーレスアプリケーションを構築するためのオープンソースフレームワークです。詳細については、GitHub の「[AWS Serverless Application Model repository](https://github.com/aws/serverless-application-model)」を参照してください。次の Java サンプルでは、Gradle を使用して AWS Lambda 関数を構築およびテストします。その後、CLI AWS SAM を使用して CloudFormation テンプレートとデプロイバンドルをデプロイします。CodeBuild Lambda を使用すると、ビルド、テスト、デプロイのステップがすべて自動的に処理されるため、1 つのビルドで、手動介入なしにインフラストラクチャをすばやく更新できます。

## AWS SAM リポジトリをセットアップする
<a name="sample-lambda-sam-gradle.set-up-repo"></a>

CLI AWS SAM を使用して プロジェクトを作成します AWS SAM `Hello World`。

**AWS SAM プロジェクトを作成するには**

1. ローカルマシンに [AWS SAM CLI をインストールするには、](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)*AWS Serverless Application Model 「 デベロッパーガイド*」の手順に従います。

1. `sam init` を実行し、次のプロジェクト設定を選択します。

   ```
   Which template source would you like to use?: 1 - AWS Quick Start Templates
   Choose an AWS Quick Start application template: 1 - Hello World Example
   Use the most popular runtime and package type? (Python and zip) [y/N]: N
   Which runtime would you like to use?: 8 - java21
   What package type would you like to use?: 1 - Zip
   Which dependency manager would you like to use?: 1 - gradle
   Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N
   Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N
   Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]:  N
   Project name [sam-app]: <insert project name>
   ```

1. サポートされているソースリポジトリに AWS SAM プロジェクトフォルダをアップロードします。サポートされているソースタイプのリストについては、「[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)」を参照してください。

## CodeBuild Lambda Java プロジェクトを作成
<a name="sample-lambda-sam-gradle.create-project"></a>

 AWS CodeBuild Lambda Java プロジェクトを作成し、ビルドに必要な IAM アクセス許可を設定します。

**CodeBuild Lambda Java プロジェクトを作成するには**

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. Source で****、 AWS SAM プロジェクトがあるソースリポジトリを選択します。

1. [**環境**] で以下の操作を行います。
   + **[コンピューティング]** で、**[Lambda]** を選択します。
   + **[ランタイム]** で **[Java]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:corretto21]** を選択します。
   + **[サービスロール]** では、**[新しいサービスロール]** を選択したままにします。**[ロール名]** を書き留めます。これは、このサンプルの後半でプロジェクトの IAM アクセス許可を更新するときに必要です。

1. **Create build project (ビルドプロジェクトの作成)**を選択します。

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**[ロール]** を選択し、プロジェクトに関連付けられたサービスロールを選択します。CodeBuild でプロジェクトロールを見つけるには、ビルドプロジェクトを選択し、**[編集]**、**[環境]**、**[サービスロール]** を選択します。

1. **[信頼関係]** タブを選択し、続いて **[信頼ポリシーの編集]** を選択します。

1. IAM ロールに以下のインラインポリシーを追加します。これは、後で AWS SAM インフラストラクチャをデプロイするために使用されます。詳細については、* IAM ユーザーガイド*の「[IAM ID アクセス許可の追加および削除](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*",
                   "lambda:*",
                   "iam:*",
                   "apigateway:*",
                   "s3:*"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------

## プロジェクトの buildspec の設定
<a name="sample-lambda-sam-gradle.set-up-buildspec"></a>

Lambda 関数をビルド、テスト、デプロイするために、CodeBuild は buildspec からビルドコマンドを読み取り、実行します。

**プロジェクトの buildspec を設定するには**

1. CodeBuild コンソールで、ビルドプロジェクトを選択し、**[編集]** と **[Buildspec]** を選択します。

1. **[Buildspec]** で、**[ビルドコマンドを挿入]**、**[エディタに切り替え]** の順に選択します。

1. 事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。

   ```
   version: 0.2
   env:
     variables:
       GRADLE_DIR: "HelloWorldFunction"
   phases:
     build:
       commands:
         - echo "Running unit tests..."
         - cd $GRADLE_DIR; gradle test; cd ..
         - echo "Running build..."
         - sam build --template-file template.yaml
         - echo "Running deploy..."
         - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml
         - yes | sam deploy
   ```

1. [**Update buildspec (buildspec の更新)**] を選択します。

## AWS SAM Lambda インフラストラクチャをデプロイする
<a name="sample-lambda-sam-gradle.deploy"></a>

CodeBuild Lambda を使用して Lambda インフラストラクチャを自動的にデプロイ

**Lambda インフラストラクチャをデプロイするには**

1. [**Start build**] を選択します。これにより、 AWS Lambda を使用して AWS SAM アプリケーションが自動的に構築、テスト、デプロイされます CloudFormation。

1. ビルドが完了したら、 AWS Lambda コンソールに移動し、 AWS SAM プロジェクト名で新しい Lambda 関数を検索します。

1. **[関数]** の概要で **[API Gateway]** を選択し、**[API エンドポイント]** URL をクリックして、Lambda 関数をテストします。メッセージ `"message": "hello world"` を含むページが開きます。

## インフラストラクチャをクリーンアップ
<a name="sample-lambda-sam-gradle.clean-up"></a>

このチュートリアルで使用したリソースの追加料金を回避するには、 AWS SAM テンプレートと CodeBuild によって作成されたリソースを削除します。

**インフラストラクチャをクリーンアップするには**

1.  CloudFormation コンソールに移動し、 を選択します`aws-sam-cli-managed-default`。

1. **[リソース]** で、デプロイバケット `SamCliSourceBucket` を空にします。

1. `aws-sam-cli-managed-default` スタックを削除します。

1.  AWS SAM プロジェクトに関連付けられている CloudFormation スタックを削除します。このスタックの名前は AWS SAM プロジェクトと同じである必要があります。

1. CloudWatch コンソールに移動し、CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。

1. CodeBuild コンソールに移動し、**[ビルドプロジェクトを削除]** を選択して CodeBuild プロジェクトを削除します。

# CodeBuild Lambda Node.js を使用してシングルページの React アプリを作成
<a name="sample-lambda-react-nodejs"></a>

「[Create React App](https://create-react-app.dev/)」は、シングルページの React アプリケーションを作成する方法です。次の Node.js サンプルは、Node.js を使用して「Create React App」からソースアーティファクトをビルドし、ビルドアーティファクトを返します。

## ソースリポジトリとアーティファクトバケットを設定
<a name="sample-lambda-react-nodejs.set-up-repo"></a>

yarn と「Create React App」を使用して、プロジェクトのソースリポジトリを作成します。

**ソースリポジトリとアーティファクトバケットを設定するには**

1. ローカルマシンで `yarn create react-app <app-name>` を実行して、シンプルな React アプリを作成します。

1. サポートされているソースリポジトリに、React アプリプロジェクトフォルダをアップロードします。サポートされているソースタイプのリストについては、「[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)」を参照してください。

## CodeBuild Lambda Node.js プロジェクトを作成
<a name="sample-lambda-react-nodejs.create-project"></a>

 AWS CodeBuild Lambda Node.js プロジェクトを作成します。

**CodeBuild Lambda Node.js プロジェクトを作成するには**

1.  AWS CodeBuild コンソールを [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)://https://https://https://https://https

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. Source で****、 AWS SAM プロジェクトが配置されているソースリポジトリを選択します。

1. [**環境**] で以下の操作を行います。
   + **[コンピューティング]** で、**[Lambda]** を選択します。
   + **[ランタイム]** で、**[Node.js]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:nodejs20]** を選択します。

1. [**アーティファクト**] で、次のようにします。
   + **[タイプ]** で、**[Amazon S3]** を選択します。
   + **[バケット名]** で、先ほど作成したプロジェクトアーティファクトバケットを選択します。
   + **[アーティファクトのパッケージ化]** では、**[Zip]** を選択します。

1. **Create build project (ビルドプロジェクトの作成)**を選択します。

## プロジェクトの buildspec の設定
<a name="sample-lambda-react-nodejs.set-up-buildspec"></a>

React アプリをビルドするために、CodeBuild は buildspec ファイルからビルドコマンドを読み取り、実行します。

**プロジェクトの buildspec を設定するには**

1. CodeBuild コンソールで、ビルドプロジェクトを選択し、**[編集]** と **[Buildspec]** を選択します。

1. **[Buildspec]** で、**[ビルドコマンドを挿入]**、**[エディタに切り替え]** の順に選択します。

1. 事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。

   ```
   version: 0.2
   phases:
     build:
       commands:
         - yarn
         - yarn add --dev jest-junit @babel/plugin-proposal-private-property-in-object
         - yarn run build
         - yarn run test -- --coverage --watchAll=false --testResultsProcessor="jest-junit" --detectOpenHandles
   artifacts:
     name: "build-output"
     files:
       - "**/*"
   reports:
     test-report:
       files:
         - 'junit.xml'
       file-format: 'JUNITXML'
     coverage-report:
       files:
         - 'coverage/clover.xml'
       file-format: 'CLOVERXML'
   ```

1. [**Update buildspec (buildspec の更新)**] を選択します。

## React アプリをビルドして実行
<a name="sample-lambda-react-nodejs.build"></a>

CodeBuild Lambda で React アプリをビルドし、ビルドアーティファクトをダウンロードして、React アプリをローカルで実行します。

**React アプリをビルドして実行するには**

1. [**Start build**] を選択します。

1. ビルドが完了したら、Amazon S3 プロジェクトアーティファクトバケットに移動し、React アプリアーティファクトをダウンロードします。

1. React ビルドアーティファクトと `run npm install -g serve && serve -s build` をプロジェクトフォルダに解凍します。

1. `serve` コマンドは、ローカルポートで静的サイトを提供し、出力をターミナルに出力します。ターミナル出力の `Local:` にある localhost URL にアクセスして、React アプリを表示できます。

React ベースのサーバーのデプロイを処理する方法の詳細については、「[Create React App Deployment](https://create-react-app.dev/docs/deployment/)」を参照してください。

## インフラストラクチャをクリーンアップ
<a name="sample-lambda-react-nodejs.clean-up"></a>

このチュートリアルで使用したリソースに対して追加料金が発生しないようにするには、CodeBuild プロジェクト用に作成されたリソースを削除します。

**インフラストラクチャをクリーンアップするには**

1. プロジェクトアーティファクト Amazon S3 バケットを削除

1. CloudWatch コンソールに移動し、CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。

1. CodeBuild コンソールに移動し、**[ビルドプロジェクトを削除]** を選択して CodeBuild プロジェクトを削除します。

# CodeBuild Lambda Python を使用して Lambda 関数の設定を更新
<a name="sample-lambda-boto3-python"></a>

次の Python サンプルは、[Boto3](https://aws.amazon.com/sdk-for-python/) と CodeBuild Lambda Python を使用して Lambda 関数の設定を更新します。このサンプルを拡張して、他の AWS リソースをプログラムで管理できます。詳細については、「[Boto3 ドキュメント](https://aws.amazon.com/sdk-for-python/)」を参照してください。

## 前提条件
<a name="sample-lambda-boto3-python.prerequisites"></a>

アカウントで Lambda 関数を作成または検索します。

このサンプルは、アカウントで Lambda 関数を既に作成しており、CodeBuild を使用して Lambda 関数の環境変数を更新することを前提としています。CodeBuild を使用して Lambda 関数を設定する方法の詳細については、「[CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする](sample-lambda-sam-gradle.md)」サンプルを参照するか、「[AWS Lambda](https://aws.amazon.com/lambda/)」を参照してください。

## ソースリポジトリを設定
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Boto3 Python スクリプトを保存するソースリポジトリを作成します。

**ソースコードリポジトリを設定するには**

1. 次の Python スクリプトを `update_lambda_environment_variables.py` という名前の新しいファイルにコピーします。

   ```
   import boto3
   from os import environ
   
   
   def update_lambda_env_variable(lambda_client):
       lambda_function_name = environ['LAMBDA_FUNC_NAME']
       lambda_env_variable = environ['LAMBDA_ENV_VARIABLE']
       lambda_env_variable_value = environ['LAMBDA_ENV_VARIABLE_VALUE']
       print("Updating lambda function " + lambda_function_name + " environment variable "
             + lambda_env_variable + " to " + lambda_env_variable_value)
       lambda_client.update_function_configuration(
           FunctionName=lambda_function_name,
           Environment={
               'Variables': {
                   lambda_env_variable: lambda_env_variable_value
               }
           },
       )
   
   
   if __name__ == "__main__":
       region = environ['AWS_REGION']
       client = boto3.client('lambda', region)
       update_lambda_env_variable(client)
   ```

1. サポートされているソースリポジトリに Python ファイルをアップロードします。サポートされているソースタイプのリストについては、「[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)」を参照してください。

## CodeBuild Lambda Python プロジェクトを作成
<a name="sample-lambda-boto3-python.create-project"></a>

CodeBuild Lambda Python プロジェクトを作成します。

**CodeBuild Lambda Java プロジェクトを作成するには**

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. Source で****、 AWS SAM プロジェクトがあるソースリポジトリを選択します。

1. [**環境**] で以下の操作を行います。
   + **[コンピューティング]** で、**[Lambda]** を選択します。
   + **[ランタイム]** で **[Python]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12]** を選択します。
   + **[サービスロール]** では、**[新しいサービスロール]** を選択したままにします。**[ロール名]** を書き留めます。これは、このサンプルの後半でプロジェクトの IAM アクセス許可を更新するときに必要です。

1. **Create build project (ビルドプロジェクトの作成)**を選択します。

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**[ロール]** を選択し、プロジェクトに関連付けられたサービスロールを選択します。CodeBuild でプロジェクトロールを見つけるには、ビルドプロジェクトを選択し、**[編集]**、**[環境]**、**[サービスロール]** を選択します。

1. **[信頼関係]** タブを選択し、続いて **[信頼ポリシーの編集]** を選択します。

1. IAM ロールに以下のインラインポリシーを追加します。これは、後で AWS SAM インフラストラクチャをデプロイするために使用されます。詳細については、* IAM ユーザーガイド*の「[IAM ID アクセス許可の追加および削除](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "UpdateLambdaPermissions",
               "Effect": "Allow",
               "Action": [
                   "lambda:UpdateFunctionConfiguration"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

## プロジェクトの buildspec の設定
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Lambda 関数を更新するために、スクリプトは buildspec から環境変数を読み取り、Lambda 関数の名前、環境変数名、および環境変数値を検索します。

**プロジェクトの buildspec を設定するには**

1. CodeBuild コンソールで、ビルドプロジェクトを選択し、**[編集]** と **[Buildspec]** を選択します。

1. **[Buildspec]** で、**[ビルドコマンドを挿入]**、**[エディタに切り替え]** の順に選択します。

1. 事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。

   ```
   version: 0.2
   env:
     variables:
       LAMBDA_FUNC_NAME: "<lambda-function-name>"
       LAMBDA_ENV_VARIABLE: "FEATURE_ENABLED"
       LAMBDA_ENV_VARIABLE_VALUE: "true"
   phases:
     install:
       commands:
          - pip3 install boto3
     build:
       commands:
          - python3 update_lambda_environment_variables.py
   ```

1. [**Update buildspec (buildspec の更新)**] を選択します。

## Lambda 設定を更新
<a name="sample-lambda-boto3-python.update"></a>

CodeBuild Lambda Python を使用して、Lambda 関数の設定を自動的に更新します。

**Lambda 関数の設定を更新するには**

1. [**Start build**] を選択します。

1. ビルドが完了したら、Lambda 関数に移動します。

1. **[設定]** を選択してから、**[環境]** 変数を選択します。キー `FEATURE_ENABLED` と値 `true` を持つ新しい環境変数が表示されます。

## インフラストラクチャをクリーンアップ
<a name="sample-lambda-boto3-python.clean-up"></a>

このチュートリアルで使用したリソースに対して追加料金が発生しないようにするには、CodeBuild プロジェクト用に作成されたリソースを削除します。

**インフラストラクチャをクリーンアップするには**

1. CloudWatch コンソールに移動し、CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。

1. CodeBuild コンソールに移動し、**[ビルドプロジェクトを削除]** を選択して CodeBuild プロジェクトを削除します。

1. このサンプル用に Lambda 関数を作成した場合は、**[アクション]** および **[関数を削除]** を選択して Lambda 関数をクリーンアップします。

## 拡張子
<a name="sample-lambda-boto3-python.extensions"></a>

 AWS CodeBuild Lambda Python を使用して他の AWS リソースを管理するためにこのサンプルを拡張する場合:
+ Boto3 を使用して新しいリソースを変更するように Python スクリプトを更新します。
+ CodeBuild プロジェクトに関連付けられた IAM ロールを更新して、新しいリソースに対するアクセス許可を付与します。
+ 新しいリソースに関連付けられた新しい環境変数を buildspec に追加します。

# リザーブドキャパシティキャパシティフリートでビルドを実行
<a name="fleets"></a>

CodeBuild には以下のコンピューティングフリートがあります。
+ オンデマンドフリート
+ リザーブドキャパシティフリート

オンデマンドフリートでは、CodeBuild がビルドのコンピューティングを行います。マシンはビルドが終了すると破棄されます。オンデマンドフリートはフルマネージド型で、需要の急増にも対応できる自動スケーリング機能を備えています。

**注記**  
オンデマンドフリートでは、macOS はサポートされません。

CodeBuild では、CodeBuild が管理する Amazon EC2 ベースのインスタンスを含むリザーブドキャパシティフリートも提供しています。リザーブドキャパシティフリートでは、ビルド環境に合わせて専有インスタンスのセットを設定します。これらのマシンはアイドル状態のままで、ビルドやテストをすぐに処理できる状態になり、ビルド時間を短縮します。リザーブドキャパシティフリートでは、マシンは常に稼働しており、プロビジョニングされている間はコストが発生し続けます。

**重要**  
インスタンスの実行時間に関係なく、リザーブドキャパシティフリートにはインスタンスごとに初期料金が発生し、その後は追加の関連コストが発生する場合があります。詳細については、「[https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/)」を参照してください。

**Topics**
+ [リザーブドキャパシティフリートを作成](#fleets.how-to)
+ [ベストプラクティス](#fleets.best-practices)
+ [リザーブドキャパシティフリートを複数の CodeBuild プロジェクトで共有できますか?](#fleets.share)
+ [属性ベースのコンピューティングはどのような仕組みですか?](#fleets.attribute-compute)
+ [フリートの Amazon EC2 インスタンスを手動で指定することはできますか?](#fleets.manual-input-compute)
+ [リザーブドキャパシティフリートをサポートしているのはどのリージョンですか?](#fleets.regions)
+ [リザーブドキャパシティの macOS フリートを設定するにはどうすればよいですか。](#fleets.configure-macos)
+ [リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?](#fleets.custom-ami)
+ [リザーブドキャパシティフリートの制限](#fleets.limitations)
+ [リザーブドキャパシティフリートのプロパティ](fleets.reserved-capacity-fleets.md)
+ [を使用したリザーブドキャパシティのサンプル AWS CodeBuild](reserved-capacity-samples.md)

## リザーブドキャパシティフリートを作成
<a name="fleets.how-to"></a>

以下の手順に従って、リザーブドキャパシティフリートを作成します。

**リザーブドキャパシティフリートを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[コンピューティングフリート]**、**[フリートを作成]** の順に選択します。

1. **[コンピューティングフリート名]** テキストフィールドに、フリートの名前を入力します。

1. **[オペレーティングシステム]** ドロップダウンメニューから、オペレーティングシステムを選択します。

1. **[アーキテクチャ]** ドロップダウンメニューから、アーキテクチャを選択します。

1. (オプション) **[インスタンス実行モードを使用する - オプション]** で、Docker コンテナの代わりに Amazon EC2 インスタンスで直接実行します。次に、**[メジャーバージョン]** と **[マイナーバージョン]** を選択します。

1. (オプション) **[追加設定]** で、以下を実行します｡
   + **[VPC の設定 - オプション]** を選択してフリートを VPC に接続し、使用中にプライベートリソースにアクセスします。
     + **[VPC]** ドロップダウンメニューから、CodeBuild フリートがアクセスする VPC を選択します。
     + **[サブネット]** ドロップダウンメニューから、CodeBuild が VPC 設定のセットアップに使用するサブネットを選択します。
     + **[セキュリティグループ]** のドロップダウンメニューから、CodeBuild が VPC の操作に使用するセキュリティグループを選択します。
     + **[フリートサービスロール]** フィールドで、既存のサービスロールを選択します。
**注記**  
フリートロールに必要なアクセス許可が付与されていることを確認してください。詳細については、「[フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)」を参照してください。
     + Amazon Linux オペレーティングシステムを選択した場合は、**[プロキシ設定の定義 - オプション]** を選択して、リザーブドキャパシティインスタンスにネットワークアクセスコントロールを適用します。
     + **[デフォルトの動作]** では、デフォルトですべての送信先への送信トラフィックを許可または拒否することを選択します。
     + **[プロキシルール]** では、**[プロキシルールを追加]** を選択して、ネットワークアクセスコントロールを許可または拒否する送信先ドメインまたは IP を指定します。
   + **[カスタム AMI の設定 - オプション]** を選択し、カスタム Amazon マシンイメージ (AMI) を使用します。
     + **[AMI]** ドロップダウンメニューから、フリートの Amazon マシンイメージ (AMI) を選択します。
     + **[フリートサービスロール]** フィールドで、既存のサービスロールを選択します。
**注記**  
フリートロールに必要なアクセス許可が付与されていることを確認してください。詳細については、「[フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)」を参照してください。

1. **[キャパシティ設定]** で、**[コンピューティング選択モード]** から次のいずれかを選択します。
   + **[ガイド付き選択]** を選択した場合は、次の操作を行います。
     + **[コンピューティング]** で、このフリートに含まれるインスタンスのタイプを選択します。
     + **[容量]** テキストフィールドに、フリート内の最小インスタンス数を入力します。
     + (オプション) **[追加設定]** で、以下を実行します｡
       + **[スケーリングの設定 - オプション]** を選択し、この設定に基づいてフリートを自動的にスケーリングします。**[スケーリングモード - オプション]** ドロップダウンメニューから、需要がフリート容量を超えたときの動作を選択します。
   + **[カスタムインスタンス]** を選択した場合は、次の操作を行います。
     + **[コンピューティングインスタンスタイプ]** ドロップダウンメニューから、このフリートに含まれるインスタンスのタイプを選択します。
     + **[追加の EBS ボリュームサイズ - オプション]** テキストフィールドに、提供された 64GB のディスク容量に追加するボリュームを入力します。
     + **[容量]** テキストフィールドに、フリート内の最小インスタンス数を入力します。
     + (オプション) **[追加設定]** で、以下を実行します｡
       + **[スケーリングの設定 - オプション]** を選択し、この設定に基づいてフリートを自動的にスケーリングします。**[スケーリングモード - オプション]** ドロップダウンメニューから、需要がフリート容量を超えたときの動作を選択します。

1. **[コンピューティングフリートの作成]** を選択します。

1. コンピューティングフリートを作成したら、新しい CodeBuild プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。**[環境]** から **[プロビジョニングモデル]** の **[リザーブドキャパシティ]** を選択し、**[フリート名]** で指定したフリートを選択します。

## ベストプラクティス
<a name="fleets.best-practices"></a>

リザーブドキャパシティフリートを使用する場合は、以下のベストプラクティスに従うことをお勧めします。
+ ソースをキャッシュしてビルドパフォーマンスを向上させるには、ソースキャッシュモードを使用することをお勧めします。
+ Docker レイヤーキャッシュを使用し、既存の Docker レイヤーをキャッシュしてビルドパフォーマンスを向上させることをお勧めします。

## リザーブドキャパシティフリートを複数の CodeBuild プロジェクトで共有できますか?
<a name="fleets.share"></a>

はい。フリートのキャパシティを複数のプロジェクトで使用することで、そのキャパシティを最大限に活用できます。

**重要**  
リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。

## 属性ベースのコンピューティングはどのような仕組みですか?
<a name="fleets.attribute-compute"></a>

フリートの `computeType` として `ATTRIBUTE_BASED_COMPUTE` を選択した場合は、`computeConfiguration` という新しいフィールドで属性を指定できます。これらの属性には、vCPU メモリ、ディスク容量、`machineType` が含まれます。この `machineType` は `GENERAL` または `NVME` のいずれかになります。使用可能な属性の 1 つまたは一部を指定した後、CodeBuild は、サポートされている使用可能なインスタンスタイプからコンピューティングタイプを確定済み `computeConfiguration` として選択します。

**注記**  
CodeBuild は、すべての入力要件を満たす最も安価なインスタンスを選択します。選択したインスタンスのメモリ、vCPU、ディスク容量はすべて、入力要件以上になります。作成または更新されたフリートで、解決された `computeConfiguration` を確認できます。

CodeBuild で満たすことができない `computeConfiguration` を入力した場合は、検証例外が表示されます。また、`computeConfiguration` がオンデマンドで利用できない場合、オンデマンドフリートのオーバーフロー動作はキュー動作に上書きされる点に注意してください。

## フリートの Amazon EC2 インスタンスを手動で指定することはできますか?
<a name="fleets.manual-input-compute"></a>

はい。**[カスタムインスタンス]** を選択するか、API パラメータ `InstanceType` を設定することで、コンソールで目的の Amazon EC2 インスタンスを直接入力できます。このフィールドは、CreateFleet、UpdateFleet、CreateProject、UpdateProject、StartBuild の各 API で使用されます。詳細については、「[Compute instance type](fleets.reserved-capacity-fleets.md#compute)」を参照してください。

## リザーブドキャパシティフリートをサポートしているのはどのリージョンですか?
<a name="fleets.regions"></a>

リザーブドキャパシティの Amazon Linux および Windows フリートは、 AWS リージョン米国東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (ムンバイ）、アジアパシフィック (シンガポール）、アジアパシフィック (シドニー）、アジアパシフィック (東京）、欧州 (フランクフルト）、欧州 (アイルランド）、南米 (サンパウロ) でサポートされています。CodeBuild が使用可能な  AWS リージョン  の詳細については、「[AWS  サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。

リザーブドキャパシティの macOS Medium フリートは、 AWS リージョン米国東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (シドニー）、欧州 (フランクフルト) でサポートされています。リザーブドキャパシティの macOS Large フリートは、 AWS リージョン米国東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (シドニー) でサポートされています。

## リザーブドキャパシティの macOS フリートを設定するにはどうすればよいですか。
<a name="fleets.configure-macos"></a>

**リザーブドキャパシティの macOS フリートを設定するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[コンピューティングフリート]**、**[フリートを作成]** の順に選択します。

1. **[コンピューティングフリート名]** テキストフィールドに、フリートの名前を入力します。

1. **[オペレーティングシステム]** のドロップダウンメニューから、**[macOS]** を選択します。

1. **[コンピューティング]** フィールドで、**[Apple M2、24 GB メモリ、8 vCPU]** または **[Apple M2、32 GB メモリ、12 vCPU]** のいずれかのコンピューティングマシンタイプを選択します。

1. **[容量]** テキストフィールドに、フリート内の最小インスタンス数を入力します。

1. (オプション) フリートにカスタムイメージを使用するには、「[リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?](#fleets.custom-ami)」を参照して、Amazon マシンイメージ (AMI) に必要な前提条件があることを確認します。

1. (オプション) フリートで VPC を設定するには、**[追加設定]** で以下を実行します。
   + **[VPC - オプション]** のドロップダウンメニューから、CodeBuild フリートがアクセスする VPC を選択します。
   + **[サブネット]** ドロップダウンメニューから、CodeBuild が VPC 設定のセットアップに使用するサブネットを選択します。
   + **[セキュリティグループ]** のドロップダウンメニューから、CodeBuild が VPC の操作に使用するセキュリティグループを選択します。
   + **[フリートサービスロール]** フィールドで、既存のサービスロールを選択します。
**注記**  
フリートロールに必要なアクセス許可が付与されていることを確認してください。詳細については、「[フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)」を参照してください。

1. **[コンピューティングフリートを作成]** を選択し、フリートインスタンスの起動を待ちます。起動すると、キャパシティは `n/n` になります。*n* は指定されたキャパシティです。

1. コンピューティングフリートが起動したら、新しい CodeBuild プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。**[環境]** から **[プロビジョニングモデル]** の **[リザーブドキャパシティ]** を選択し、**[フリート名]** で指定したフリートを選択します。

## リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?
<a name="fleets.custom-ami"></a>

**リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[コンピューティングフリート]**、**[フリートを作成]** の順に選択します。

1. **[コンピューティングフリート名]** テキストフィールドに、フリートの名前を入力します。

1. フリートの **[カスタムイメージ]** を選択し、Amazon マシンイメージ (AMI) に次の前提条件があることを確認してください。
   + 環境タイプが `MAC_ARM` の場合は、AMI **アーキテクチャ**が 64 ビット `Mac-Arm` であることを確認します。
   + 環境タイプが `LINUX_EC2` の場合は、AMI **アーキテクチャ**が 64 ビット `x86` であることを確認します。
   + 環境タイプが `ARM_EC2` の場合は、AMI **アーキテクチャ**が 64 ビット `Arm` であることを確認します。
   + 環境タイプが `WINDOWS_EC2` の場合は、AMI **アーキテクチャ**が 64 ビット `x86` であることを確認します。
   + AMI は CodeBuild サービスに **[組織 ARN]** を許可します。組織 ARN のリストについては、「[Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami)」を参照してください。
   + AMI が AWS KMS キーで暗号化されている場合、 AWS KMS キーは CodeBuild サービス**組織 ID** も許可する必要があります。組織 ID のリストについては、「[Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami)」を参照してください。 AWS KMS キーの詳細については、*Amazon EC2 * [ ユーザーガイド」のOUs に KMS キーの使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html#allow-org-ou-to-use-key)を許可する」を参照してください。CodeBuild 組織に KMS キーを使用するアクセス許可を付与するには、次のステートメントをキーポリシーに追加します。

     ```
     {
         "Sid": "Allow access for organization root",
         "Effect": "Allow",
         "Principal": "*",
         "Action": [
             "kms:Describe*",
             "kms:List*",
             "kms:Get*",
             "kms:Encrypt",
             "kms:Decrypt",
             "kms:ReEncrypt*",
             "kms:GenerateDataKey*",
             "kms:CreateGrant"
         ],
         "Resource": "*",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "o-123example"
             }
         }
     }
     ```
   + **[フリートサービスロール]** フィールドで、次の Amazon EC2 アクセス許可を付与します。

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                    "ec2:DescribeImages",
                    "ec2:DescribeSnapshots"
                 ],
                 "Resource": "*"
             }
         ]
     }
     ```

------

## リザーブドキャパシティフリートの制限
<a name="fleets.limitations"></a>

リザーブドキャパシティフリートではサポートされていないユースケースがいくつかあります。それにより影響が出る場合は、代わりにオンデマンドフリートを使用してください。
+ リザーブドキャパシティフリートは、ビルド使用率メトリクスをサポートしていません。
+ リザーブドキャパシティの macOS フリートはデバッグセッションをサポートしていません。

クォータと制限の詳細については、「[コンピューティングフリート](limits.md#fleet-limits)」を参照してください。

# リザーブドキャパシティフリートのプロパティ
<a name="fleets.reserved-capacity-fleets"></a>

リザーブドキャパシティフリートには以下のプロパティが含まれます。リザーブドキャパシティフリートの詳細については、「[リザーブドキャパシティキャパシティフリートでビルドを実行](fleets.md)」を参照してください。

**オペレーティングシステム**  
オペレーティングシステム。使用できるオペレーションシステムは次のとおりです。  
+ Amazon Linux
+ macOS
+ Windows Server 2019
+ Windows Server 2022

**アーキテクチャ**  
プロセッサアーキテクチャ。以下のアーキテクチャが利用可能です。  
+ x86\$164
+ Arm64

**環境タイプ**  
**Amazon Linux** が選択されているときに使用できる環境タイプ。以下の環境キーが利用できます。  
+ Linux EC2
+ Linux GPU

**コンピューティングインスタンスタイプ**  
フリートインスタンスのコンピューティング設定。    
**ガイド付き選択**  
vCPU、メモリ、ディスク容量の設定を選択して、さまざまなコンピューティングタイプを指定します。リージョン別のコンピューティングタイプの可用性については、「[リザーブドキャパシティ環境タイプについて](build-env-ref-compute-types.md#environment-reserved-capacity.types)」を参照してください。  
**カスタムインスタンス**  
目的のインスタンスタイプを手動で指定します。

**Capacity**  
フリートに割り当てられるマシンの初期数。これにより、並列で実行できるビルドの数が定義されます。

**オーバーフロー動作**  
ビルド数がフリート容量を超えたときの動作を定義します。    
**[オンデマンド]**  
オーバーフロービルドは CodeBuild でオンデマンドで実行されます。  
VPC 接続フリートの作成中にオーバーフロー動作をオンデマンドに設定する場合は、必要な VPC アクセス許可をプロジェクトサービスロールに追加してください。詳細については、「[Example policy statement to allow CodeBuild access to AWS services required to create a VPC network interface](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-create-vpc-network-interface)」を参照してください。
オーバーフロー動作をオンデマンドに設定する場合は、オンデマンドの Amazon EC2 と同様に、オーバーフロービルドには別途請求されることに注意してください。詳細については、「[https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/)」を参照してください。  
**[キュー]**  
ビルドの実行は、マシンが使用可能になるまでキューに入れられます。これにより、さらにマシンが割り当てられないため、追加のコストが抑えられます。

**Amazon マシンイメージ (AMI)**  
フリートの Amazon マシンイメージ (AMI) プロパティです。CodeBuild では以下のプロパティがサポートされています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/fleets.reserved-capacity-fleets.html)

**追加設定**    
**[VPC - オプション]**  
CodeBuild フリートがアクセスする VPC です。詳細については、「[Amazon Virtual Private Cloud AWS CodeBuild で を使用する](vpc-support.md)」を参照してください。  
StartBuild API を呼び出すときにフリートオーバーライドが指定されている場合、CodeBuild はプロジェクト VPC 設定を無視します。  
**サブネット**  
CodeBuild が VPC 設定のセットアップに使用する VPC サブネット。リザーブドキャパシティフリートは、単一のアベイラビリティゾーンで 1 つのサブネットのみをサポートすることに注意してください。また、サブネットに NAT ゲートウェイが含まれていることを確認してください。  
**セキュリティグループ**  
CodeBuild が VPC で使用する VPC セキュリティグループです。セキュリティグループがアウトバウンド接続を許可していることを確認します。  
**[フリートサービスロール]**  
アカウント内の既存のサービスロールからフリートのサービスロールを定義します。  
**[プロキシ設定の定義 - オプション]**  
リザーブドキャパシティインスタンスにネットワークアクセスコントロールを適用するプロキシ設定。詳細については、「[マネージドプロキシサーバー AWS CodeBuild で を使用する](run-codebuild-in-managed-proxy-server.md)」を参照してください。  
プロキシ設定は、VPC、Windows、または MacOS をサポートしていません。  
**デフォルトの動作**  
送信トラフィックの動作を定義します。    
**許可**  
デフォルトでは、すべての送信先への送信トラフィックを許可します。  
**拒否**  
デフォルトでは、すべての送信先への送信トラフィックを拒否します。  
**プロキシルール**  
ネットワークアクセスコントロールを許可または拒否する送信先ドメインまたは IP を指定します。

# を使用したリザーブドキャパシティのサンプル AWS CodeBuild
<a name="reserved-capacity-samples"></a>

これらのサンプルを使用して、CodeBuild のリザーブドキャパシティフリートを試すことができます。

**Topics**
+ [リザーブドキャパシティのサンプルを使用したキャッシュ](#reserved-capacity-samples.caching)

## リザーブドキャパシティのサンプルを使用したキャッシュ
<a name="reserved-capacity-samples.caching"></a>

キャッシュでは、ビルド環境の再利用可能な部分が保存され、複数のビルドでそれらを使用することができます。このサンプルでは、リザーブドキャパシティを使用してビルドプロジェクト内のキャッシュを有効にする方法を示しました。詳細については、「[パフォーマンスを向上させるためのキャッシュビルド](build-caching.md)」を参照してください。

プロジェクト設定で 1 つ以上のキャッシュモードを指定することから開始できます。

```
Cache:
        Type: LOCAL
        Modes:
          - LOCAL_CUSTOM_CACHE
          - LOCAL_DOCKER_LAYER_CACHE
          - LOCAL_SOURCE_CACHE
```

**注記**  
Docker レイヤーキャッシュを使用するには、必ず特権モードを有効にしてください。

プロジェクトの buildspec 設定は以下のようになります。

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - touch /codebuild/cache/workspace/foobar.txt
            - git checkout -b cached_branch
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | grep 'Pulling from' || exit 1
            - echo testing local custom cache
            - touch foo
            - mkdir bar && ln -s foo bar/foo2
            - mkdir bar/bar && touch bar/bar/foo3 && touch bar/bar/foo4
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```

新しいプロジェクトでビルドを実行してキャッシュをシードすることから開始できます。それが完了したら、次のように buildspec を上書きして別のビルドを開始する必要があります。

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - git branch | if grep 'cached_branch'; then (exit 0); else (exit 1); fi
            - ls /codebuild/cache/workspace | if grep 'foobar.txt'; then (exit 0); else (exit 1); fi
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | if grep 'Pulling from'; then (exit 1); else (exit 0); fi
            - echo testing local custom cache
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```

# ビルドをバッチで実行
<a name="batch-build"></a>

を使用して AWS CodeBuild 、バッチビルドでプロジェクトの同時ビルドと調整ビルドを実行できます。

**Topics**
+ [セキュリティロール](#batch_security_role)
+ [バッチビルドのタイプ](#batch_build_types)
+ [バッチレポートモード](#batch-report-mode)
+ [詳細情報](#batch_more_info)

## セキュリティロール
<a name="batch_security_role"></a>

バッチビルドでは、バッチ設定に新しいセキュリティロールが導入されます。この新しいロールでは、CodeBuild が `StartBuild`、`StopBuild` および `RetryBuild` アクションを使用して、バッチの一部としてビルドを実行する上で必要です。次の2つの理由により、お客様はビルドで使用するものと同じロールではなく、新しいロールを使用する必要があります。
+ ビルドの役割を与える `StartBuild`、`StopBuild`、および `RetryBuild` アクセス権限を使用すると、単一のビルドが buildspec を介してより多くのビルドを開始することができます。
+ CodeBuild バッチビルドには、バッチ内のビルドに使用できるビルドと計算タイプの数を制限する制限があります。ビルドロールにこれらの権限がある場合、ビルド自体がこれらの制限を回避する可能性があります。

## バッチビルドのタイプ
<a name="batch_build_types"></a>

CodeBuild は、次のバッチビルドタイプをサポートしています。

**Topics**
+ [ビルドグラフ](#batch_build_graph)
+ [ビルドリスト](#batch_build_list)
+ [ビルドマトリックス](#batch_build_matrix)
+ [ビルドファンアウト](#batch_build_fanout)

### ビルドグラフ
<a name="batch_build_graph"></a>

ビルドグラフは、バッチ内の他のタスクに依存する一連のタスクを定義します。

次の例では、依存関係チェーンを作成するビルドグラフを定義します。

```
batch:
  fast-fail: false
  build-graph:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      depend-on:
        - build1
    - identifier: build3
      env:
        variables:
          BUILD_ID: build3
      depend-on:
        - build2
    - identifier: build4
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build5
      env:
        fleet: fleet_name
```

この例では、以下のことを行います。
+ `build1` は、依存関係を持たないため、最初に実行されます。
+ `build2` は `build1` への依存関係があるため、`build2` は `build1` の完了後に実行されます。
+ `build3` は `build2` への依存関係があるため、`build3` は `build2` の完了後に実行されます。

ビルドグラフの buildspec 構文の詳細については、「[`batch/build-graph`](batch-build-buildspec.md#build-spec.batch.build-graph)」を参照してください。

### ビルドリスト
<a name="batch_build_list"></a>

ビルドリストは、並行して実行されるタスクの数を定義します。

次の例では、ビルドリストを定義します。`build1` ビルドと `build2` ビルドは並行して実行されます。

```
batch:
  fast-fail: false
  build-list:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      ignore-failure: true
    - identifier: build3
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build4
      env:
        fleet: fleet_name
    - identifier: build5
      env:
        compute-type: GENERAL_LINUX_XLAGRE
```

ビルドリストの buildspec 構文の詳細については、「[`batch/build-list`](batch-build-buildspec.md#build-spec.batch.build-list)」を参照してください。

### ビルドマトリックス
<a name="batch_build_matrix"></a>

ビルドマトリックスは、並行して実行される異なる構成のタスクを定義します。CodeBuild は、設定可能な組み合わせごとに個別のビルドを作成します。

次の例は、2 つの buildspec ファイルと環境変数の 3 つの値を含むビルド行列を示しています。

```
batch:
  build-matrix:
    static:
      ignore-failure: false
    dynamic:
      buildspec: 
        - matrix1.yml
        - matrix2.yml
      env:
        variables:
          MY_VAR:
            - VALUE1
            - VALUE2
            - VALUE3
```

この例では、CodeBuild は 6 つのビルドを作成します。
+ `matrix1.yml` ( を含む)`$MY_VAR=VALUE1`
+ `matrix1.yml` ( を含む)`$MY_VAR=VALUE2`
+ `matrix1.yml` ( を含む)`$MY_VAR=VALUE3`
+ `matrix2.yml` ( を含む)`$MY_VAR=VALUE1`
+ `matrix2.yml` ( を含む)`$MY_VAR=VALUE2`
+ `matrix2.yml` ( を含む)`$MY_VAR=VALUE3`

各ビルドには次の設定があります。
+ `ignore-failure` が `false` に設定
+ `env/type` が `LINUX_CONTAINER` に設定
+ `env/image` が `aws/codebuild/amazonlinux-x86_64-standard:4.0` に設定
+ `env/privileged-mode` が `true` に設定

これらのビルドは並行して実行されます。

ビルドマトリックスの buildspec 構文の詳細については、「[`batch/build-matrix`](batch-build-buildspec.md#build-spec.batch.build-matrix)」を参照してください。

### ビルドファンアウト
<a name="batch_build_fanout"></a>

ビルドファンアウトは、バッチ内の複数のビルドに分割されるタスクを定義します。これは、テストを並行して実行するために使用できます。CodeBuild は、`parallelism` フィールドで設定された値に基づいて、テストケースのシャードごとに個別のビルドを作成します。

次の例では、並行して実行される 5 つのビルドを作成するビルドファンアウトを定義します。

```
version: 0.2

batch:
   fast-fail: false 
   build-fanout:
     parallelism: 5
     ignore-failure: false

phases:
  install:
    commands:
      - npm install
   build:
    commands:
      - mkdir -p test-results
      - cd test-results
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'
```

この例では、実行する必要があるテストが 100 あると仮定して、CodeBuild は 5 つのビルドを作成し、それぞれが 20 のテストを並行して実行します。

ビルドグラフの buildspec 構文の詳細については、「[`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout)」を参照してください。

## バッチレポートモード
<a name="batch-report-mode"></a>

プロジェクトのソースプロバイダーが Bitbucket、GitHub、または GitHub Enterprise であり、ソースプロバイダーにビルドステータスを報告するようにプロジェクトが設定されている場合は、ソースプロバイダーにバッチビルドステータスを送信する方法を選択できます。バッチに関する単一の集約ステータスレポートとしてステータスを送信する、またはバッチ内の各ビルドのステータスを個別に報告することを選択できます。

詳細については、以下の各トピックを参照してください。
+ [Batch 設定 (作成)](create-project.md#create-project-console-batch-config)
+ [Batch 設定 (更新)](change-project.md#change-project-console-batch-config)

## 詳細情報
<a name="batch_more_info"></a>

詳細については、以下の各トピックを参照してください。
+ [バッチビルドのビルド仕様 (buildspec) のリファレンス](batch-build-buildspec.md)
+ [Batch 構成](create-project.md#create-project-console-batch-config)
+ [バッチビルドの実行 (AWS CLI)](run-batch-build-cli.md)
+ [AWS CodeBuild でのバッチビルドを停止](stop-batch-build.md)

# バッチビルドで並列テストを実行する
<a name="parallel-test"></a>

を使用して AWS CodeBuild 、バッチビルドで並列テストを実行できます。並列テスト実行は、複数のテストケースを順番に実行するのではなく、異なる環境、マシン、またはブラウザ間で同時に実行するテストアプローチです。このアプローチにより、全体的なテスト実行時間を大幅に短縮し、テスト効率を向上させることができます。CodeBuild では、テストを複数の環境に分割し、同時に実行できます。

並列テスト実行の主な利点は次のとおりです。

1. **実行時間の短縮** - 数時間かかるテストを数分で完了できます。

1. **リソース使用率の向上** - 利用可能なコンピューティングリソースを効率的に使用できます。

1. **早期のフィードバック** - テストの完了が早いほど、開発者にすばやくフィードバックできます。

1. **費用対効果** - 時間とコンピューティングコストの両方を長期的に節約できます。

並列テスト実行を実装する場合、2 つの主なアプローチとして、一般的に個別の環境とマルチスレッドを検討できます。どちらの方法も同時テストの実行を目指していますが、その実装と有効性は大きく異なります。個別の環境では、各テストスイートが個別に実行される独立したインスタンスが作成され、マルチスレッドでは、複数のテストが異なるスレッドを使用して同じプロセススペース内で同時に実行されます。

マルチスレッドと比較した場合、個別の環境の主な利点な次のとおりです。

1. **分離** - 各テストは完全に分離された環境で実行されるため、テスト間の干渉がなくなります。

1. **リソースの競合** - マルチスレッドでは頻繁に発生する共有リソースとの競合がありません。

1. **安定性** - 競合状態や同期の問題が発生しにくくなります。

1. **デバッグが容易 **- 各環境が独立しているため、テストが失敗した場合でも原因を容易に特定できます。

1. **状態管理** - マルチスレッドテストの弱点である共有状態の問題を簡単に管理できます。

1. **スケーラビリティの向上** - 複雑な操作なしで環境を簡単に追加できます。

**Topics**
+ [でのサポート AWS CodeBuild](#parallel-test-support)
+ [バッチビルドで並列テスト実行を有効にする](parallel-test-enable.md)
+ [CLI コマンド `codebuild-tests-run` を使用する](parallel-test-tests-run.md)
+ [`codebuild-glob-search` CLI コマンド を使用する](parallel-test-glob-search.md)
+ [テスト分割について](parallel-test-splitting.md)
+ [個々のビルドレポートを自動的にマージする](parallel-test-auto-merge.md)
+ [さまざまなテストフレームワークサンプルの並列テスト実行](sample-parallel-test.md)

## でのサポート AWS CodeBuild
<a name="parallel-test-support"></a>

AWS CodeBuild は、個別の環境実行を活用するように特別に設計されたバッチビルド機能を通じて、並列テスト実行の堅牢なサポートを提供します。この実装により、分離されたテスト環境の利点がすべて実現します。

**テストディストリビューションを使用したバッチビルド**  
CodeBuild のバッチビルド機能を使用すると、同時に実行される複数のビルド環境を作成できます。各環境は、独自のコンピューティングリソース、ランタイム環境、依存関係を持つ完全に分離したユニットとして動作します。バッチビルド設定を使用して、必要な並列環境の数と、それらの環境間にテストを分散する方法を指定できます。

**テストシャーディング CLI**  
CodeBuild には、CLI ツールである `codebuild-tests-run` を通じてテスト分散メカニズムが組み込まれており、テストが異なる環境に自動的に分割されます。

**レポートの集約**  
CodeBuild の実装の主な強みの 1 つは、テスト結果の集約をシームレスに処理できることです。テストが個別の環境で実行されている間、CodeBuild は各環境からテストレポートを自動的に収集し、バッチビルドレベルで統合テストレポートに結合します。この統合により、並列実行の効率上の利点を維持しながら、テスト結果を包括的に把握できます。

以下は、 AWS CodeBuildでの並列テスト実行の詳細な概念を示す図です。

![\[並列テスト実行の概念図。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/parallel-test.png)


# バッチビルドで並列テスト実行を有効にする
<a name="parallel-test-enable"></a>

テストを並列で実行するには、次に示すように、バッチビルドの buildspec ファイルを更新して、build-fanout フィールドと、テストスイートを分割する並列ビルドの数を `parallelism` フィールドに含めます。`parallelism` フィールドでは、テストスイートを実行するようセットアップされている独立したエグゼキュターの数を指定します。

複数の並列実行環境でテストを実行するには、`parallelism` フィールドを 0 より大きい値に設定します。以下の例では、`parallelism` は 5 に設定されています。つまり、CodeBuild はテストスイートの一部を並行して実行する 5 つの同一ビルドを開始します。

[codebuild-tests-run](parallel-test-tests-run.md) CLI コマンドを使用すると、テストを分割して実行できます。テストファイルが分割され、テストの一部は各ビルドで実行されます。これにより、テストスイート全体の実行にかかる全体的な時間が短縮されます。次の例では、テストが 5 つに分割されます。分割ポイントはテストの名前に基づいて計算されます。

```
version: 0.2

batch:
  fast-fail: false 
  build-fanout:
    parallelism: 5
    ignore-failure: false
    
phases:
  install:
    commands:
      - npm install jest-junit --save-dev
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/_tests_/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'

  post_build:
    commands:
      - codebuild-glob-search '**/*.xml'  
      - echo "Running post-build steps..."
      - echo "Build completed on `date`"

reports:
  test-reports:
    files:
      - '**/junit.xml'               
    base-directory: .
    discard-paths: yes           
    file-format: JUNITXML
```

ビルドファンアウトビルド用にレポートが設定されている場合、テストレポートはビルドごとに個別に生成され、 AWS CodeBuild コンソールの対応するビルドの**レポート**タブに表示されます。

並列テストをバッチで実行する方法の詳細については、「[さまざまなテストフレームワークサンプルの並列テスト実行](sample-parallel-test.md)」を参照してください。

# CLI コマンド `codebuild-tests-run` を使用する
<a name="parallel-test-tests-run"></a>

AWS CodeBuild は、テストコマンドとテストファイルの場所を入力として受け取る CLI を提供します。これらの入力を持つ CLI は、テストファイル名に基づいて、`parallelism` フィールドで指定されたシャード数にテストを分割します。テストファイルのシャードへの割り当ては、シャーディング戦略によって決まります。

```
codebuild-tests-run \
    --files-search "codebuild-glob-search '**/__tests__/*.js'" \
    --test-command 'npx jest --runInBand --coverage' \
    --sharding-strategy 'equal-distribution'
```

次の表では、`codebuild-tests-run` CLI コマンドのフィールドについて説明します。


| フィールド名 | タイプ | 必須またはオプション | 定義 | 
| --- | --- | --- | --- | 
|  `test-command`  |  String  |  必須  |  このコマンドは、テストの実行に使用されます。  | 
|  `files-search`  |  String  |  必須  |  このコマンドは、テストファイルのリストを表示します。 AWS CodeBuild 提供されている [codebuild-glob-search](parallel-test-glob-search.md) CLI コマンドまたは任意のファイル検索ツールを使用できます。  `files-search` コマンドによりファイル名が出力され、それぞれが改行で区切られていることを確認します。   | 
|  `sharding-strategy`  |  列挙型  |  オプションです。  |  有効な値: `equal-distribution` (デフォルト)、`stability` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/parallel-test-tests-run.html) 詳細については、「[テスト分割について](parallel-test-splitting.md)」を参照してください。  | 

`codebuild-tests-run` CLI はまず、`files-search` パラメータで指定されたコマンドを使用してテストファイルのリストを識別します。その後、指定されたシャーディング戦略を使用して、現在のシャード (環境) に指定されたテストファイルのサブセットを決定します。最後に、このテストファイルのサブセットがスペース区切りリストにフォーマットされ、実行前に `test-command` パラメータで指定されたコマンドの末尾に追加されます。

スペース区切りリストを受け入れないテストフレームワークの場合、`codebuild-tests-run` CLI は `CODEBUILD_CURRENT_SHARD_FILES` 環境変数を通じて柔軟な代替手段を提供します。この変数には、現在のビルドシャードに指定されたテストファイルパスの改行区切りリストが含まれています。この環境変数を利用することで、さまざまなテストフレームワーク要件に簡単に適応し、スペース区切りリストとは異なる入力形式が想定される要件に対応できます。さらに、テストフレームワークの必要性に応じてテストファイル名をフォーマットすることもできます。以下は、Django フレームワークを使用した Linux での `CODEBUILD_CURRENT_SHARD_FILES` の使用例です。以下では、Django によりサポートされている*ドット表記*ファイルパスを取得するために `CODEBUILD_CURRENT_SHARD_FILES` が使用されています。

```
codebuild-tests-run \
    —files-search "codebuild-glob-search '/tests/test_.py'" \
    —test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \
    —sharding-strategy 'equal-distribution'
```

**注記**  
`CODEBUILD_CURRENT_SHARD_FILES` 環境変数は `codebuild-tests-run` CLI のスコープ内でのみ使用できることに注意してください。  
また、test-command 内で `CODEBUILD_CURRENT_SHARD_FILES` を使用する場合は、上の例に示すように `CODEBUILD_CURRENT_SHARD_FILES` を二重引用符で囲んでください。

# `codebuild-glob-search` CLI コマンド を使用する
<a name="parallel-test-glob-search"></a>

AWS CodeBuild には、1 つ以上の glob パターンに基づいて作業ディレクトリ内のファイルを検索`codebuild-glob-search`できる という組み込み CLI ツールが用意されています。このツールは、プロジェクト内の特定のファイルまたはディレクトリでテストを実行する場合に特に役立ちます。

## 使用量
<a name="parallel-test-glob-search.usage"></a>

`codebuild-glob-search` CLI には、次の使用構文があります。

```
codebuild-glob-search <glob_pattern1> [<glob_pattern2> ...]
```
+ `<glob_pattern1>`、`<glob_pattern2>` など: 作業ディレクトリ内のファイルと一致する 1 つ以上の glob パターン。
+ `*`: 任意の文字シーケンス (パス区切り文字を除く) に一致します。
+ `**`: 任意の文字シーケンス (パス区切り文字を含む) に一致します。

**注記**  
glob 文字列に引用符があることを確認します。パターンマッチングの結果を確認するには、`echo` コマンドを使用します。  

```
version: 0.2

phases:
  build:
    commands:
      - echo $(codebuild-glob-search '**/__tests__/*.js')
      - codebuild-glob-search '**/__tests__/*.js' | xargs -n 1 echo
```

## Output
<a name="parallel-test-glob-search.output"></a>

CLI は、指定された glob パターンに一致するファイルパスの改行区切りリストを出力します。返されるファイルパスは、作業ディレクトリを基準にした相対パスになります。

指定されたパターンに一致するファイルが見つからない場合、CLI はファイルが見つからないことを示すメッセージを出力します。

特定のパターンが原因で見つかったディレクトリは検索結果から除外されることに注意してください。

## 例
<a name="parallel-test-glob-search.example"></a>

`.js` 拡張子を持つテストディレクトリとそのサブディレクトリ内のファイルのみを検索する場合は、`codebuild-glob-search` CLI で次のコマンドを使用できます。

```
codebuild-glob-search '**/__tests__/*.js'
```

このコマンドは、パターンに示されるように、`__tests__` ディレクトリとそのサブディレクトリ内に `.js` 拡張子を持つすべてのファイルを検索します。

# テスト分割について
<a name="parallel-test-splitting"></a>

AWS CodeBuildのテスト分割機能を使用すると、複数のコンピューティングインスタンス間でテストスイートの実行を並列化できるため、全体的なテスト実行時間を短縮できます。この機能は、CodeBuild プロジェクト設定のバッチ設定と buildspec ファイルの `codebuild-tests-run` ユーティリティを通じて有効になります。

テストは、指定されたシャーディング戦略に基づいて分割されます。CodeBuild には、以下に示すように 2 つのシャーディング戦略が用意されています。

均等分散  
`equal-distribution` シャーディング戦略では、テストファイル名のアルファベット順で、並列ビルド間にテストが分割されます。このアプローチでは、まずテストファイルがソートされ、次にチャンクベースの方法を使用してファイルが分散されます。これにより、類似したファイルがテストのためにグループ化されます。このアプローチは、比較的小さいテストファイルセットを扱う場合に推奨されます。この方法は、各シャードにほぼ等しい数のファイルを割り当てることを目的としていますが (最大差は 1)、安定性は保証されません。以降のビルドでテストファイルが追加または削除されると、既存のファイルの分散が変更され、シャード間に再割り当てされる可能性があります。

安定性  
`stability` シャーディング戦略では、一貫したハッシュアルゴリズムを使用してテストがシャード間に分割されます。これにより、ファイルの分散が安定します。新しいファイルが追加または削除されても、このアプローチでは、ファイルからシャードへの既存の割り当てはほとんど変更されません。大規模なテストスイートでは、安定性オプションを使用してテストをシャード間に均等に分散することをお勧めします。このメカニズムは、ほぼ均等な分散を行うことにより、各シャードにほぼ同数のファイルを割り当て、相違を最小限に抑えることを目的としています。安定性戦略では、理想的な均等分散は保証されませんが、ファイルが追加または削除された場合でもほぼ均等に分散され、ビルド間でファイル割り当ての一貫性が維持されます。

テスト分割を有効にするには、CodeBuild プロジェクト設定でバッチセクションを設定し、必要な `parallelism` レベルやその他の関連パラメータを指定する必要があります。さらに、buildspec ファイルに `codebuild-tests-run` ユーティリティと、適切なテストコマンドおよび分割方法を含める必要があります。

# 個々のビルドレポートを自動的にマージする
<a name="parallel-test-auto-merge"></a>

ファンアウトバッチビルドでは、 は個々のビルドレポートの一括バッチレベルレポートへの自動マージ AWS CodeBuild をサポートします。この機能では、バッチ内のすべてのビルドのテスト結果とコードカバレッジが包括的に示されます。

## 仕組み
<a name="parallel-test-auto-merge.how"></a>

`fanout` バッチビルドを実行すると、個々のビルドごとに[テストレポート](test-reporting.md)が生成されます。その後 CodeBuild が、異なるビルドの同じレポートを、バッチビルドにアタッチされた統合レポートに自動的に統合します。これらの統合レポートは、[BatchGetBuildBatches](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetBuildBatches.html#CodeBuild-BatchGetBuildBatches-response-buildBatches) API の `reportArns` フィールドから簡単にアクセスでき、コンソールの **[レポート]** タブでも表示できます。このマージ機能は、自動検出されたレポートにも拡張されます。

統合レポートは、buildspec で指定されているか CodeBuild によって自動検出された[レポートグループ](test-report-group.md)の下に作成されます。これらのレポートグループの直下でマージされたレポートの傾向を分析し、同じビルドバッチプロジェクトの過去のビルド全体のビルドパフォーマンスと品質メトリクスに関する貴重なインサイトを引き出すことができます。

バッチ内の個々のビルドごとに、CodeBuild により個別のレポートグループが自動的に作成されます。これらは、バッチビルドレポートグループ名とサフィックス `BuildFanoutShard<shard_number>` を組み合わせた特定の命名規則に従います。ここで、`shard_number` は、レポートグループが作成されるシャードの数を表します。この構造では、統合ビルドレベルと個々のビルドレベルの両方で傾向を追跡および分析できるため、ビルドプロセスを柔軟にモニタリングおよび評価できます。

バッチビルドレポートは、[個々のビルドレポート](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Report.html)と同じ構造に従います。**[レポート]** タブの次のキーフィールドは、バッチビルドレポートに固有です。

**バッチビルドレポートのステータス**  
バッチビルドレポートのステータスは、レポートタイプに応じて特定のルールに従います。  
+ テストレポート:
  + 成功: 個々のビルドレポートがすべて成功すると、ステータスは「成功」に設定されます。
  + 失敗: 個々のビルドレポートのうち、失敗したレポートがある場合、ステータスは「失敗」に設定されます。
  + 未完了: 個々のビルドレポートのうち、欠落しているかステータスが「未完了」になっているレポートがある場合、ステータスは「未完了」とマークされます。
+ コードカバレッジレポート:
  + 完了: 個々のビルドレポートがすべて完了すると、ステータスは「完了」に設定されます。
  + 失敗: 個々のビルドレポートのうち、失敗したレポートがある場合、ステータスは「失敗」に設定されます。
  + 未完了: 個々のビルドレポートのうち、欠落しているかステータスが「未完了」になっているレポートがある場合、ステータスは「未完了」とマークされます。

**テストの要約**  
マージされたテストレポートでは、すべての個々のビルドレポートに含まれる次のフィールドが統合されます。  
+ duration-in-nano-seconds: すべての個々のビルドレポートにおけるナノ秒単位の最大テスト期間。
+ total: すべてのテストケースの合計数。各ビルドのテスト合計数が合計されます。
+ status-counts: テストステータス (合格、不合格、スキップなど) の統合ビューが提供され、すべての個々のビルドにおける各ステータスタイプのカウントを集計して計算されます。

**コードカバレッジの要約**  
マージされたコードカバレッジレポートでは、次の計算を使用して、すべての個々のビルドのフィールドが組み合わされます。  
+ branches-covered: 個々のレポートのすべての対象ブランチの合計。
+ branches-missed: 個々のレポートの欠落しているすべてのブランチの合計。
+ branch-coverage-percentage: `(Total covered branches / Total branches) * 100`
+ lines-covered: 個々のレポートのすべての対象ラインの合計。
+ lines-missed: 個々のレポートの欠落しているすべてのラインの合計。
+ lines-coverage-percentage: `(Total covered lines / Total lines) * 100`

**実行 ID**  
バッチビルド ARN。

**テストケース**  
マージされたレポートには、個々のビルドのすべてのテストケースの統合リストが含まれており、[DescribeTestCases](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DescribeTestCases.html) API とコンソールのバッチビルドレポートのどちらからでもアクセスできます。

**コードカバレッジ**  
マージされたコードカバレッジレポートでは、個々のビルドすべてにおいて各ファイルの統合されたラインとブランチカバレッジの情報が提供され、[DescribeCodeCoverages](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DescribeCodeCoverages.html) API とコンソールのバッチビルドレポートのどちらからでもアクセスできます。注: 異なるシャードに分散された複数のテストファイルの対象となるファイルの場合、マージされたレポートでは次の選択基準が使用されます。  

1. プライマリ選択は、シャード間の最大のラインカバレッジに基づきます。

1. 複数のシャード間でラインカバレッジが等しい場合、ブランチカバレッジが最も高いシャードが選択されます。

# さまざまなテストフレームワークサンプルの並列テスト実行
<a name="sample-parallel-test"></a>

`codebuild-tests-run` CLI コマンドを使用すると、並列実行環境間にテストを分割して実行できます。次のセクションでは、`codebuild-tests-run` コマンドの使用方法を示す、さまざまなフレームワークの `buildspec.yml` サンプルを示します。
+ 以下の各例には 5 つの `parallelism` レベルが含まれています。つまり、テストを分割する 5 つの同一の実行環境が作成されます。`build-fanout` セクション `parallelism` 値を変更することで、プロジェクトに適した `parallelism` レベルを選択できます。
+ 以下の各例は、デフォルトでテストファイル名で分割されるようテストを設定する方法を示しています。これにより、テストが並列実行環境間に均等に分散されます。

始める前に、「[バッチビルドで並列テストを実行する](parallel-test.md)」で詳細を参照してください。

`codebuild-tests-run` CLI コマンドで使用するオプションの詳細なリストについては、「[CLI コマンド `codebuild-tests-run` を使用する](parallel-test-tests-run.md)」を参照してください。

**Topics**
+ [Django で並列テストを設定する](sample-parallel-test-django.md)
+ [Elixir で並列テストを設定する](sample-parallel-test-elixir.md)
+ [Go で並列テストを設定する](sample-parallel-test-go.md)
+ [Java (Maven) で並列テストを設定する](sample-parallel-test-java-maven.md)
+ [Javascript (Jest) で並列テストを設定する](sample-parallel-test-javascript.md)
+ [Kotlin で並列テストを設定する](sample-parallel-test-kotlin.md)
+ [PHPUnit で並列テストを設定する](sample-parallel-test-phpunit.md)
+ [Pytest で並列テストを設定する](sample-parallel-test-python.md)
+ [Ruby (Cucumber) で並列テストを設定する](sample-parallel-test-ruby-cucumber.md)
+ [Ruby (RSpec) で並列テストを設定する](sample-parallel-test-ruby.md)

# Django で並列テストを設定する
<a name="sample-parallel-test-django"></a>

以下は、Ubuntu プラットフォームでの Django による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - sudo yum install -y python3 python3-pip 
      - python3 -m ensurepip --upgrade 
      - python3 -m pip install django
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Django Tests'
      - |
        codebuild-tests-run \
         --test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \ 
         --files-search "codebuild-glob-search '**/tests/*test_*.py'" \
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo 'Test execution completed'
```

上記の例は、環境変数 `CODEBUILD_CURRENT_SHARD_FILES` の使用方法を示しています。ここで、`CODEBUILD_CURRENT_SHARD_FILES` は Django によりサポートされているドット表記ファイルパスを取得するために使用されます。上記のように、`CODEBUILD_CURRENT_SHARD_FILES` を二重引用符内で囲みます。

# Elixir で並列テストを設定する
<a name="sample-parallel-test-elixir"></a>

以下は、Ubuntu プラットフォームでの Elixir による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Elixir dependencies'
      - sudo apt update
      - sudo DEBIAN_FRONTEND=noninteractive apt install -y elixir
      - elixir --version
      - mix --version
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Elixir Tests'
      - |
        codebuild-tests-run \
         --test-command 'mix test' \
         --files-search "codebuild-glob-search '**/test/**/*_test.exs'" \ 
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

# Go で並列テストを設定する
<a name="sample-parallel-test-go"></a>

以下は、Linux プラットフォームでの Go による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Fetching Go version'
      - go version
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running go Tests'
      - go mod init calculator
      - cd calc
      - |
        codebuild-tests-run \
         --test-command "go test -v calculator.go" \
         --files-search "codebuild-glob-search '**/*test.go'"
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、`calculator.go` 関数にはテストする単純な数学関数が含まれており、すべてのテストファイルと `calculator.go` ファイルは `calc` フォルダ内にあります。

# Java (Maven) で並列テストを設定する
<a name="sample-parallel-test-java-maven"></a>

以下は、Linux プラットフォームでの Java による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false 
  build-fanout:
    parallelism: 5
    ignore-failure: false
    
phases:
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo "Running mvn test"
      - |
        codebuild-tests-run \
          --test-command 'mvn test -Dtest=$(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed "s|src/test/java/||g; s/\.java//g; s|/|.|g; s/ /,/g" | tr "\n" "," | sed "s/,$//")' \
          --files-search "codebuild-glob-search '**/test/**/*.java'"
         
  post_build:
    commands:
      - echo "Running post-build steps..."
      - echo "Test execution completed"
```

示されている例では、環境変数 `CODEBUILD_CURRENT_SHARD_FILES` には現在のシャード内のテストファイルが含まれており、それぞれ改行で区切られています。これらのファイルは、Maven の `-Dtest` パラメータで受け入れられる形式のクラス名のカンマ区切りリストに変換されます。

# Javascript (Jest) で並列テストを設定する
<a name="sample-parallel-test-javascript"></a>

以下は、Ubuntu プラットフォームでの Javascript による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: true
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Node.js dependencies'
      - apt-get update
      - apt-get install -y nodejs
      - npm install
      - npm install --save-dev jest-junit
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running JavaScript Tests'
      - |
         codebuild-tests-run \
          --test-command "npx jest" \
          --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
          --sharding-strategy 'stability'
    post_build:
      commands:
        - echo 'Test execution completed'
```

# Kotlin で並列テストを設定する
<a name="sample-parallel-test-kotlin"></a>

以下は、Linux プラットフォームでの Kotlin による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 2
    ignore-failure: false

phases:
  install:
    runtime-versions:
      java: corretto11 
    commands:
      - echo 'Installing dependencies'
      - KOTLIN_VERSION="1.8.20" # Replace with your desired version
      - curl -o kotlin-compiler.zip -L "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip"
      - unzip kotlin-compiler.zip -d /usr/local
      - export PATH=$PATH:/usr/local/kotlinc/bin
      - kotlin -version
      - curl -O https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.8.2/junit-platform-console-standalone-1.8.2.jar
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Kotlin Tests'
      - |
        codebuild-tests-run \
          --test-command 'kotlinc src/main/kotlin/*.kt $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | tr "\n" " ") -d classes -cp junit-platform-console-standalone-1.8.2.jar' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
      - |
        codebuild-tests-run \
          --test-command '
            java -jar junit-platform-console-standalone-1.8.2.jar --class-path classes \
              $(for file in $CODEBUILD_CURRENT_SHARD_FILES; do
                 class_name=$(basename "$file" .kt)
                 echo "--select-class $class_name"
               done)
          ' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、`codebuild-tests-run` CLI が 2 回使用されています。最初の実行時、kotlinc はファイルをコンパイルします。`CODEBUILD_CURRENT_SHARD_FILES` 変数は、現在のシャードに割り当てられたテストファイルを取得し、その後スペース区切りリストに変換されます。2 回目の実行では、JUnit がテストを実行します。ここでも、`CODEBUILD_CURRENT_SHARD_FILES` は現在のシャードに割り当てられたテストファイルを取得しますが、今回はクラス名に変換されます。

# PHPUnit で並列テストを設定する
<a name="sample-parallel-test-phpunit"></a>

以下は、Linux プラットフォームでの PHPUnit による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2
 
batch:
   fast-fail: false
   build-fanout:
     parallelism: 5
     ignore-failure: false
 
phases:
   install:
     commands:
       - echo 'Install dependencies'
       - composer require --dev phpunit/phpunit
   pre_build:
     commands:
       - echo 'prebuild'
   build:
     commands:
       - echo 'Running phpunit Tests'
       - composer dump-autoload
       - | 
         codebuild-tests-run \
          --test-command "./vendor/bin/phpunit --debug" \ 
          --files-search "codebuild-glob-search '**/tests/*Test.php'"
   post_build:
       commands:
         - echo 'Test execution completed'
```

# Pytest で並列テストを設定する
<a name="sample-parallel-test-python"></a>

以下は、Ubuntu プラットフォームでの Pytest による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - apt-get update
      - apt-get install -y python3 python3-pip
      - pip3 install --upgrade pip
      - pip3 install pytest
  build:
    commands:
      - echo 'Running Python Tests'
      - |
         codebuild-tests-run \
          --test-command 'python -m pytest' \
          --files-search "codebuild-glob-search 'tests/test_*.py'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

以下は、Windows プラットフォームでの Pytest による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - pip install pytest
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running pytest'
      - |
        & codebuild-tests-run `
         --test-command 'pytest @("$env:CODEBUILD_CURRENT_SHARD_FILES" -split \"`r?`n\")'  `
         --files-search "codebuild-glob-search '**/test_*.py' '**/*_test.py'" `
         --sharding-strategy 'equal-distribution' 
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、現在のシャードに割り当てられており、pytest コマンドに配列として渡されるテストファイルを取得するために `CODEBUILD_CURRENT_SHARD_FILES` 環境変数が使用されています。

# Ruby (Cucumber) で並列テストを設定する
<a name="sample-parallel-test-ruby-cucumber"></a>

以下は、Linux プラットフォームでの Cucumber による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - gem install bundler
      - bundle install
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Cucumber Tests'
      - cucumber --init
      - |
        codebuild-tests-run \
         --test-command "cucumber" \
         --files-search "codebuild-glob-search '**/*.feature'"
  post_build:
    commands:
      - echo "Test execution completed"
```

# Ruby (RSpec) で並列テストを設定する
<a name="sample-parallel-test-ruby"></a>

以下は、Ubuntu プラットフォームでの RSpec による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - apt-get update
      - apt-get install -y ruby ruby-dev build-essential
      - gem install bundler
      - bundle install
  build:
    commands:
      - echo 'Running Ruby Tests'
      - |
         codebuild-tests-run \
          --test-command 'bundle exec rspec' \
          --files-search "codebuild-glob-search 'spec/**/*_spec.rb'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

# パフォーマンスを向上させるためのキャッシュビルド
<a name="build-caching"></a>

キャッシュを使用すると、プロジェクトを構築する時間を短縮できます。キャッシュでは、ビルド環境の再利用可能な部分が保存され、複数のビルドでそれらを使用することができます。ビルドプロジェクトでは、Amazon S3 とローカルの 2 種類のキャッシュのうち、いずれかを使用できます。ローカルキャッシュを使用する場合は、3 つのキャッシュモード (ソースキャッシュ、Docker レイヤーキャッシュ、カスタムキャッシュ) のうち 1 つ以上を選択する必要があります。

**注記**  
Docker レイヤーキャッシュモードは Linux 環境でのみ利用可能です。このモードを選択する場合は、権限モードでビルドを実行する必要があります。CodeBuild のプロジェクトでは、権限モードは、ビルドプロジェクトの Docker コンテナにすべてのデバイスへのアクセスを許可します。詳細については、Docker Docs ウェブサイトの「[ランタイム特権と Linux 機能](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)」を参照してください。

**Topics**
+ [Amazon S3 のキャッシュ](caching-s3.md)
+ [ローカルキャッシュ](caching-local.md)
+ [ローカルキャッシュを指定](specify-caching-local.md)

# Amazon S3 のキャッシュ
<a name="caching-s3"></a>

Amazon S3 キャッシュでは、複数のビルドホスト間で利用できるキャッシュを Amazon S3 バケットに保存します。これは、ダウンロードするよりも構築にコストがかかる小規模から中間ビルドアーティファクトに適したオプションです。

ビルドで Amazon S3 を使用するには、`buildspec.yml` にキャッシュするファイルのパスを指定できます。CodeBuild は、プロジェクトで設定された Amazon S3 の場所にキャッシュを自動的に保存し、更新します。ファイルパスを指定しない場合、CodeBuild はビルドの高速化に役立つ共通言語の依存関係をベストエフォートでキャッシュします。キャッシュの詳細は、ビルドログで表示できます。

さらに、複数のバージョンのキャッシュが必要な場合は、`buildspec.yml` でキャッシュキーを定義できます。CodeBuild はこのキャッシュキーのコンテキストにキャッシュを保存し、作成後に更新されない一意のキャッシュコピーを作成します。キャッシュキーはプロジェクト間で共有することもできます。動的キー、キャッシュバージョニング、ビルド間のキャッシュ共有などの機能は、キーが指定されている場合にのみ使用できます。

buildspec ファイルのキャッシュ構文の詳細については、buildspec リファレンスの「[キャッシュ](build-spec-ref.md#build-spec.cache)」を参照してください。

**Topics**
+ [動的キーを生成する](#caching-s3-dynamic)
+ [codebuild-hash-files](#caching-s3-dynamic.codebuild-hash-files)
+ [キャッシュバージョン](#caching-s3-version)
+ [プロジェクト間のキャッシュ共有](#caching-s3-sharing)
+ [buildspec の例](#caching-s3-examples)

## 動的キーを生成する
<a name="caching-s3-dynamic"></a>

キャッシュキーは、シェルコマンドと環境変数を含めて一意にし、キーが変更されたときの自動キャッシュ更新を有効にすることができます。たとえば、`package-lock.json` ファイルのハッシュを使用してキーを定義できます。そのファイルの依存関係が変更されると、ハッシュ、つまりキャッシュキーが変更され、新しいキャッシュの自動作成がトリガーされます。

```
cache:
    key: npm-key-$(codebuild-hash-files package-lock.json)
```

CodeBuild は式 `$(codebuild-hash-files package-lock.json)` を評価して最終的なキーを取得します。

```
npm-key-abc123
```

`CODEBUILD_RESOLVED_SOURCE_VERSION` などの環境変数を使用してキャッシュキーを定義することもできます。これにより、ソースが変更されるたびに新しいキーが生成され、新しいキャッシュが自動的に保存されます。

```
cache:
   key: npm-key-$CODEBUILD_RESOLVED_SOURCE_VERSION
```

CodeBuild は式を評価して最終的なキーを取得します。

```
npm-key-046e8b67481d53bdc86c3f6affdd5d1afae6d369
```

## codebuild-hash-files
<a name="caching-s3-dynamic.codebuild-hash-files"></a>

`codebuild-hash-files` は、glob パターンを使用して CodeBuild ソースディレクトリ内の一連のファイルの SHA-256 ハッシュを計算する CLI ツールです。

```
codebuild-hash-files <glob-pattern-1> <glob-pattern-2> ...
```

次に `codebuild-hash-files` の使用例を示します。

```
codebuild-hash-files package-lock.json
codebuild-hash-files '**/*.md'
```

## キャッシュバージョン
<a name="caching-s3-version"></a>

キャッシュバージョンは、キャッシュされるディレクトリのパスから生成されるハッシュです。2 つのキャッシュのバージョンが異なる場合、それらはマッチングプロセス中に個別のキャッシュとして扱われます。たとえば、次の 2 つのキャッシュは異なるパスを参照するため、異なると見なされます。

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "pip-dependencies/**/*"
```

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target tmp/pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "tmp/pip-dependencies/**/*"
```

## プロジェクト間のキャッシュ共有
<a name="caching-s3-sharing"></a>

`cache` セクションにある `cacheNamespace` API フィールドを使用して、複数のプロジェクト間でキャッシュを共有できます。このフィールドでは、キャッシュの範囲が定義されます。キャッシュを共有するには、以下を行う必要があります。
+ 同じ `cacheNamespace` を使用する。
+ 同じキャッシュ `key` を指定する。
+ 同一のキャッシュパスを定義する。
+ 同じ Amazon S3 バケットを使用し、設定されている場合は `pathPrefix` を使用する。

これにより、一貫性が確保され、プロジェクト間でキャッシュ共有が可能になります。

### キャッシュ名前空間を指定する (コンソール)
<a name="caching-s3-sharing.console"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. **[プロジェクトを作成]** を選択します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドの実行 (コンソール)](run-build-console.md)」を参照してください。

1. [**アーティファクト**] で、[**追加設定**] を選択します。

1. [**キャッシュタイプ**] で、[**Amazon S3**] を選択します。

1. [**キャッシュ名前空間 - オプション**] で、名前空間の値を入力します。  
![\[CodeBuild コンソールで名前空間パラメータをキャッシュします。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/s3-cache-namespace.png)

1. デフォルト値のまま続行し、**[ビルドプロジェクトを作成する]** を選択します。

### キャッシュ名前空間を指定する (AWS CLI)
<a name="caching-s3-sharing.cli"></a>

で `--cache`パラメータを使用して AWS CLI 、キャッシュ名前空間を指定できます。

```
--cache '{"type": "S3", "location": "your-s3-bucket", "cacheNamespace": "test-cache-namespace"}'
```

## buildspec の例
<a name="caching-s3-examples"></a>

一般的な言語の buildspec の例を以下に示します。

**Topics**
+ [Node.js の依存関係をキャッシュする](#caching-s3-examples.nodejs)
+ [Python の依存関係をキャッシュする](#caching-s3-examples.python)
+ [Ruby の依存関係をキャッシュする](#caching-s3-examples.ruby)
+ [Go の依存関係をキャッシュする](#caching-s3-examples.go)

### Node.js の依存関係をキャッシュする
<a name="caching-s3-examples.nodejs"></a>

プロジェクトに `package-lock.json` ファイルが含まれており、`npm` を使用して Node.js の依存関係を管理する場合、次の例はキャッシュをセットアップする方法を示しています。デフォルトでは、`npm` は依存関係を `node_modules` ディレクトリにインストールします。

```
version: 0.2

phases:
  build:
    commands:
      - npm install
cache:
  key: npm-$(codebuild-hash-files package-lock.json)
  paths:
    - "node_modules/**/*"
```

### Python の依存関係をキャッシュする
<a name="caching-s3-examples.python"></a>

プロジェクトに `requirements.txt` ファイルが含まれており、pip を使用して Python の依存関係を管理する場合、次の例はキャッシュをセットアップする方法を示しています。デフォルトでは、pip はシステムの `site-packages` ディレクトリにパッケージをインストールします。

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "/root/.pyenv/versions/${python_version}/lib/python${python_major_version}/site-packages/**/*"
```

さらに、依存関係を特定のディレクトリにインストールし、そのディレクトリのキャッシュを設定できます。

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt --target python-dependencies
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "python-dependencies/**/*"
```

### Ruby の依存関係をキャッシュする
<a name="caching-s3-examples.ruby"></a>

プロジェクトに `Gemfile.lock` ファイルが含まれており、`Bundler` を使用して gem の依存関係を管理する場合、次の例はキャッシュを効果的に設定する方法を示しています。

```
version: 0.2

phases:
  build:
    commands:
      - bundle install --path vendor/bundle
cache:
  key: ruby-$(codebuild-hash-files Gemfile.lock)
  paths:
    - "vendor/bundle/**/*"
```

### Go の依存関係をキャッシュする
<a name="caching-s3-examples.go"></a>

プロジェクトに `go.sum` ファイルが含まれており、Go モジュールを使用して依存関係を管理する場合、次の例はキャッシュを設定する方法を示しています。デフォルトでは、Go モジュールは `${GOPATH}/pkg/mod` ディレクトリにダウンロードされて保存されます。

```
version: 0.2

phases:
  build:
    commands:
      - go mod download
cache:
  key: go-$(codebuild-hash-files go.sum)
  paths:
    - "/go/pkg/mod/**/*"
```

# ローカルキャッシュ
<a name="caching-local"></a>

ローカルキャッシュは、そのビルドホストのみが利用できるキャッシュをそのビルドホストにローカルに保存します。キャッシュはビルドホストですぐに利用できるため、この方法は大規模から中間ビルドアーティファクトに適しています。ビルドの頻度が低い場合、これは最適なオプションではありません。つまり、ビルドパフォーマンスはネットワーク転送時間の影響を受けません。

ローカルキャッシングを選択した場合は、次のキャッシュモードを 1 つ以上選択する必要があります。
+ ソースキャッシュモードは、プライマリソースとセカンダリソースの Git メタデータをキャッシュします。キャッシュ作成後のビルドでは、コミット間の変更のみプルされます。このモードは、クリーンな作業ディレクトリと、大きな Git リポジトリであるソースを持つプロジェクトに適しています。このオプションを選択しても、プロジェクトで Git リポジトリ (AWS CodeCommit、GitHub、GitHub Enterprise Server、または Bitbucket) を使用しない場合、このオプションは無視されます。
+ Docker レイヤーキャッシュモードは、既存の Docker レイヤーをキャッシュします。このモードは、大きな Docker イメージを構築または取得するプロジェクトに適しています。そのため、大きな Docker イメージをネットワークからプルすることによって生じるパフォーマンス上の問題を回避できます。
**注記**  
Docker レイヤーキャッシュは Linux 環境でのみ使用できます。
プロジェクトに必要な Docker アクセス許可が付与されるように、`privileged` フラグを設定する必要があります 。  
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「[Runtime Privilege and Linux Capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。
Docker レイヤーキャッシュを使用する前に、セキュリティへの影響を考慮してください。
+ カスタムキャッシュモードは buildspec ファイルで指定したディレクトリをキャッシュします。このシナリオは、ビルドシナリオが他の 2 つのローカルキャッシュモードのいずれにも適していない場合に適しています。カスタムキャッシュを使用する場合: 
  + キャッシュに指定できるのはディレクトリのみです。個々のファイルを指定することはできません。
  + キャッシュされたディレクトリを参照するには、シンボリックリンクを使用します。
  + キャッシュされたディレクトリは、プロジェクトソースをダウンロードする前にビルドにリンクされます。キャッシュされたアイテムにより、同じ名前のソースアイテムが上書きされます。ディレクトリは buildspec ファイルのキャッシュパスを使って指定されます。詳細については、「[buildspec の構文](build-spec-ref.md#build-spec-ref-syntax)」を参照してください。
  + ソースとキャッシュで同じディレクトリ名は使用しないでください。ローカルにキャッシュされたディレクトリにより、ソースリポジトリ内の同じ名前のディレクトリの内容が上書きまたは削除される場合があります。

**注記**  
ローカルキャッシュは、環境タイプ `LINUX_GPU_CONTAINER` とコンピューティングタイプ `BUILD_GENERAL1_2XLARGE` ではサポートされていません。詳細については、「[ビルド環境のコンピューティングモードおよびタイプ](build-env-ref-compute-types.md)」を参照してください。

**注記**  
VPC で動作するように CodeBuild を設定する場合、ローカルキャッシュはサポートされません。CodeBuild で VPC を使用する方法については、「[Amazon Virtual Private Cloud AWS CodeBuild で を使用する](vpc-support.md)」を参照してください。

# ローカルキャッシュを指定
<a name="specify-caching-local"></a>

 AWS CLI、コンソール、SDK、または CloudFormation を使用して、ローカルキャッシュを指定できます。ローカルキャッシュの詳細については、「[ローカルキャッシュ](caching-local.md)」を参照してください。

**Topics**
+ [ローカルキャッシュの指定 (CLI)](#caching-local-cli)
+ [ローカルキャッシュの指定 (コンソール)](#caching-local-console)
+ [ローカルキャッシュの指定 (CloudFormation)](#caching-local-cfn)

## ローカルキャッシュの指定 (CLI)
<a name="caching-local-cli"></a>

の `--cache`パラメータを使用して AWS CLI 、3 つのローカルキャッシュタイプをそれぞれ指定できます。
+ ソースキャッシュを指定するには: 

  ```
  --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  ```
+ Docker レイヤーキャッシュを指定するには: 

  ```
  --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  ```
+ カスタムキャッシュを指定するには: 

  ```
  --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]
  ```

詳細については、「[ビルドプロジェクトの作成 (AWS CLI)](create-project.md#create-project-cli)」を参照してください。

## ローカルキャッシュの指定 (コンソール)
<a name="caching-local-console"></a>

キャッシュは、コンソールの [**アーティファクト**] セクションで指定します。**[Cache type]** (キャッシュタイプ) で、**[Amazon S3]** または **[Local]** (ローカル) を選択します。[**ローカル**] を選択した場合は、3 つのローカルキャッシュオプションのうち、1 つ以上を選択します。

![\[3 つのローカルキャッシュオプションのうち 1 つ以上を選択して、ローカルキャッシュを指定します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/local-cache.png)


詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」を参照してください。

## ローカルキャッシュの指定 (CloudFormation)
<a name="caching-local-cfn"></a>

 CloudFormation を使用してローカルキャッシュを指定する場合は、 `Cache`プロパティで に `Type`を指定します`LOCAL`。次の YAML 形式の CloudFormation コード例では、3 つのローカルキャッシュタイプすべてを指定します。任意のタイプの組み合わせを指定できます。Docker レイヤーキャッシュを使用する場合は、`Environment` で、`PrivilegedMode` を `true`、`Type` を `LINUX_CONTAINER` に設定する必要があります。

```
CodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: MyProject
      ServiceRole: <service-role>
      Artifacts:
        Type: S3
        Location: <bucket-name>
        Name: myArtifact
        EncryptionDisabled: true
        OverrideArtifactName: true
      Environment:
        Type: LINUX_CONTAINER
        ComputeType: BUILD_GENERAL1_SMALL
        Image: aws/codebuild/standard:5.0
        Certificate: <bucket/cert.zip>
        # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE
        PrivilegedMode: true
      Source:
        Type: GITHUB
        Location: <github-location>
        InsecureSsl: true
        GitCloneDepth: 1
        ReportBuildStatus: false
      TimeoutInMinutes: 10
      Cache:
        Type: LOCAL
        Modes: # You can specify one or more cache mode, 
          - LOCAL_CUSTOM_CACHE
          - LOCAL_DOCKER_LAYER_CACHE
          - LOCAL_SOURCE_CACHE
```

**注記**  
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「[Runtime Privilege and Linux Capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

詳細については、「[ビルドプロジェクトの作成 (CloudFormation)](create-project.md#create-project-cloud-formation)」を参照してください。

# でのビルドのデバッグ AWS CodeBuild
<a name="debug-builds"></a>

AWS CodeBuild には、開発およびトラブルシューティング中にビルドをデバッグするための 2 つの方法があります。CodeBuild サンドボックス環境を使用して問題を調査し、修正をリアルタイムで検証することも、 AWS Systems Manager Session Manager を使用してビルドコンテナに接続し、コンテナの状態を表示することもできます。

## CodeBuild サンドボックスを使用してビルドをデバッグする
<a name="debug-codebuild-sandbox"></a>

CodeBuild サンドボックス環境では、安全で隔離された環境にインタラクティブなデバッグセッションが用意されています。環境と直接やり取りするには AWS CLI、 AWS マネジメントコンソール または コマンドを実行し、ビルドプロセスをステップバイステップで検証します。コスト効率の高い 1 秒あたりの請求モデルを使用し、ビルド環境と同じソースプロバイダーや AWS サービスとのネイティブ統合をサポートします。SSH クライアントを使用するか、統合開発環境 (IDE) からサンドボックス環境に接続することもできます。

CodeBuild サンドボックス料金の詳細については、[CodeBuild 料金表ドキュメント](https://aws.amazon.com/codebuild/pricing/#Sandbox)を参照してください。詳細な手順については、ドキュメント「[CodeBuild サンドボックスを使用してビルドをデバッグする](sandbox.md)」を参照してください。

## Session Manager を使用してビルドをデバッグする
<a name="debug-codebuild-session-manager"></a>

AWS Systems Manager Session Manager を使用すると、実際の実行環境で実行中のビルドに直接アクセスできます。このアプローチにより、アクティブなビルドコンテナに接続し、ビルドプロセスをリアルタイムで検査できます。ファイルシステムを調べて、実行中のプロセスを監視し、問題が発生したときにトラブルシューティングできます。

詳細な手順については、ドキュメント「[Session Manager を使用してビルドをデバッグする](session-manager.md)」を参照してください。

# CodeBuild サンドボックスを使用してビルドをデバッグする
<a name="sandbox"></a>

では AWS CodeBuild、CodeBuild サンドボックスを使用してカスタムコマンドを実行し、ビルドをトラブルシューティングすることで、ビルドをデバッグできます。

**Topics**
+ [前提条件](#sandbox-prereq)
+ [CodeBuild サンドボックスを使用してビルドをデバッグする (コンソール)](#sandbox-console)
+ [CodeBuild サンドボックスを使用してビルドをデバッグする (AWS CLI)](#sandbox-cli)
+ [チュートリアル: SSH を使用してサンドボックスに接続する](sandbox-ssh-tutorial.md)
+ [AWS CodeBuild サンドボックス SSH 接続の問題のトラブルシューティング](sandbox-troubleshooting.md)

## 前提条件
<a name="sandbox-prereq"></a>

CodeBuild サンドボックスを使用する前に、CodeBuild サービスロールに次の SSM ポリシーがあることを確認してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:111122223333:build/*",
                "arn:aws:ssm:us-east-1::document/AWS-StartSSHSession"
            ]
        }
    ]
}
```

------

## CodeBuild サンドボックスを使用してビルドをデバッグする (コンソール)
<a name="sandbox-console"></a>

次の手順を使用してコマンドを実行し、コンソールで SSH クライアントを CodeBuild サンドボックスに接続します。

### CodeBuild サンドボックスを使用してコマンドを実行する (コンソール)
<a name="sandbox-console.commands"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[ビルドプロジェクト]** を選択します。ビルドプロジェクトを選択した後、[**ビルドの開始**] を選択します。  
![\[コンソールのビルドプロジェクトのデバッグ詳細ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/sandbox-debug-build.png)

1. [**コマンドの実行**] タブで、カスタムコマンドを入力し、[**コマンドの実行**] を選択します。  
![\[コンソールのコマンドの実行の詳細ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/debug-build-run.png)

1. CodeBuild サンドボックスが初期化され、カスタムコマンドの実行が開始されます。出力が完了すると、[**出力**] タブに表示されます。  
![\[コンソールのコマンドの実行の出力ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/debug-build-run-output.png)

1. トラブルシューティングが完了したら、[**サンドボックスを停止**] を選択してサンドボックスを停止できます。次に、[**停止**] を選択してサンドボックスが停止することを確認します。  
![\[サンドボックスの停止ダイアログボックス。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/stop-sandbox.png)  
![\[コンソールの停止したサンドボックスを含むコマンドの実行の出力ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/stopped-sandbox.png)

### CodeBuild サンドボックスを使用して SSH クライアントに接続する (コンソール)
<a name="sandbox-console.ssh"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[ビルドプロジェクト]** を選択します。ビルドプロジェクトを選択した後、[**ビルドの開始**] を選択します。  
![\[コンソールのビルドプロジェクトのデバッグ詳細ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/sandbox-debug-build.png)

1. [**SSH クライアント**] タブで、[**サンドボックスを開始する**] を選択します。  
![\[コンソールの SSH クライアントサンドボックスページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/ssh-client-sandbox.png)

1. CodeBuild サンドボックスの実行が開始されたら、コンソールの手順に従って SSH クライアントをサンドボックスに接続します。  
![\[コンソールの SSH クライアントサンドボックスページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/ssh-client-sandbox-terminal.png)

1. トラブルシューティングが完了したら、[**サンドボックスを停止**] を選択してサンドボックスを停止できます。次に、[**停止**] を選択してサンドボックスが停止することを確認します。  
![\[サンドボックスの停止ダイアログボックス。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/stop-sandbox-2.png)  
![\[コンソールの停止したサンドボックスを含むコマンドの実行の出力ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/stopped-sandbox-2.png)

## CodeBuild サンドボックスを使用してビルドをデバッグする (AWS CLI)
<a name="sandbox-cli"></a>

次の手順を使用してコマンドを実行し、SSH クライアントを CodeBuild サンドボックスに接続します。

### CodeBuild サンドボックスを起動する (AWS CLI)
<a name="sandbox-cli.start-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild start-sandbox --project-name $PROJECT_NAME
```
+ `--project-name` : CodeBuild プロジェクト名

------
#### [ Sample request ]

```
aws codebuild start-sandbox --project-name "project-name"
```

------
#### [ Sample response ]

```
{
    "id": "project-name",
    "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
    "projectName": "project-name",
    "requestTime": "2025-02-06T11:24:15.560000-08:00",
    "status": "QUEUED",
    "source": {
        "type": "S3",
        "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
        "insecureSsl": false
    },
    "environment": {
        "type": "LINUX_CONTAINER",
        "image": "aws/codebuild/standard:6.0",
        "computeType": "BUILD_GENERAL1_SMALL",
        "environmentVariables": [{
                "name": "foo",
                "value": "bar",
                "type": "PLAINTEXT"
            },
            {
                "name": "bar",
                "value": "baz",
                "type": "PLAINTEXT"
            }
        ],
        "privilegedMode": false,
        "imagePullCredentialsType": "CODEBUILD"
    },
    "timeoutInMinutes": 10,
    "queuedTimeoutInMinutes": 480,
    "logConfig": {
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    },
    "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
    "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
    "currentSession": {
        "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
        "currentPhase": "QUEUED",
        "status": "QUEUED",
        "startTime": "2025-02-06T11:24:15.626000-08:00",
        "logs": {
            "groupName": "group",
            "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }
}
```

------

### サンドボックスのステータスに関する情報を取得する (AWS CLI)
<a name="sandbox-cli.batch-get-sandboxes"></a>

------
#### [ CLI command ]

```
aws codebuild batch-get-sandboxes --ids $SANDBOX_IDs
```

------
#### [ Sample request ]

```
aws codebuild stop-sandbox --id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```
+ `--ids` : `sandboxIds` または `sandboxArns` カンマ区切りリスト。

サンドボックス ID またはサンドボックス ARN を指定できます。
+ サンドボックス ID: `<codebuild-project-name>:<UUID>`

  例えば、`project-name:d25be134-05cb-404a-85da-ac5f85d2d72c`。
+ サンドボックス ARN: arn:aws:codebuild:*<region>*:*<account-id>*:sandbox/*<codebuild-project-name>*:*<UUID>*

  例えば、`arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name:d25be134-05cb-404a-85da-ac5f85d2d72c`。

------
#### [ Sample response ]

```
{
    "sandboxes": [{
        "id": "project-name",
        "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
        "projectName": "project-name",
        "requestTime": "2025-02-06T11:24:15.560000-08:00",
        "endTime": "2025-02-06T11:39:21.587000-08:00",
        "status": "STOPPED",
        "source": {
            "type": "S3",
            "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
            "insecureSsl": false
        },
        "environment": {
            "type": "LINUX_CONTAINER",
            "image": "aws/codebuild/standard:6.0",
            "computeType": "BUILD_GENERAL1_SMALL",
            "environmentVariables": [{
                    "name": "foo",
                    "value": "bar",
                    "type": "PLAINTEXT"
                },
                {
                    "name": "bar",
                    "value": "baz",
                    "type": "PLAINTEXT"
                }
            ],
            "privilegedMode": false,
            "imagePullCredentialsType": "CODEBUILD"
        },
        "timeoutInMinutes": 10,
        "queuedTimeoutInMinutes": 480,
        "logConfig": {
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        },
        "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
        "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
        "currentSession": {
            "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "currentPhase": "COMPLETED",
            "status": "STOPPED",
            "startTime": "2025-02-06T11:24:15.626000-08:00",
            "endTime": "2025-02-06T11:39:21.600000-08:00",
            "phases": [{
                    "phaseType": "SUBMITTED",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:15.577000-08:00",
                    "endTime": "2025-02-06T11:24:15.606000-08:00",
                    "durationInSeconds": 0
                },
                {
                    "phaseType": "QUEUED",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:15.606000-08:00",
                    "endTime": "2025-02-06T11:24:16.067000-08:00",
                    "durationInSeconds": 0
                },
                {
                    "phaseType": "PROVISIONING",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:16.067000-08:00",
                    "endTime": "2025-02-06T11:24:20.519000-08:00",
                    "durationInSeconds": 4,
                    "contexts": [{
                        "statusCode": "",
                        "message": ""
                    }]
                },
                {
                    "phaseType": "DOWNLOAD_SOURCE",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:20.519000-08:00",
                    "endTime": "2025-02-06T11:24:22.238000-08:00",
                    "durationInSeconds": 1,
                    "contexts": [{
                        "statusCode": "",
                        "message": ""
                    }]
                },
                {
                    "phaseType": "RUNNING_SANDBOX",
                    "phaseStatus": "TIMED_OUT",
                    "startTime": "2025-02-06T11:24:22.238000-08:00",
                    "endTime": "2025-02-06T11:39:21.560000-08:00",
                    "durationInSeconds": 899,
                    "contexts": [{
                        "statusCode": "BUILD_TIMED_OUT",
                        "message": "Build has timed out. "
                    }]
                },
                {
                    "phaseType": "COMPLETED",
                    "startTime": "2025-02-06T11:39:21.560000-08:00"
                }
            ],
            "logs": {
                "groupName": "group",
                "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        }
    }],
    "sandboxesNotFound": []
}
```

------

### サンドボックスを停止する (AWS CLI)
<a name="sandbox-cli.stop-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild stop-sandbox --id $SANDBOX-ID
```
+ `--id` : `sandboxId` または `sandboxArn`。

------
#### [ Sample request ]

```
aws codebuild stop-sandbox --id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "id": "project-name",
    "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
    "projectName": "project-name",
    "requestTime": "2025-02-06T11:24:15.560000-08:00",
    "status": "STOPPING",
    "source": {
        "type": "S3",
        "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
        "insecureSsl": false
    },
    "environment": {
        "type": "LINUX_CONTAINER",
        "image": "aws/codebuild/standard:6.0",
        "computeType": "BUILD_GENERAL1_SMALL",
        "environmentVariables": [{
                "name": "foo",
                "value": "bar",
                "type": "PLAINTEXT"
            },
            {
                "name": "bar",
                "value": "baz",
                "type": "PLAINTEXT"
            }
        ],
        "privilegedMode": false,
        "imagePullCredentialsType": "CODEBUILD"
    },
    "timeoutInMinutes": 10,
    "queuedTimeoutInMinutes": 480,
    "logConfig": {
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    },
    "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
    "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
    "currentSession": {
        "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
        "currentPhase": "RUN_SANDBOX",
        "status": "STOPPING",
        "startTime": "2025-02-06T11:24:15.626000-08:00",
        "phases": [{
                "phaseType": "SUBMITTED",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.144000-08:00",
                "endTime": "2025-02-08T14:33:26.173000-08:00",
                "durationInSeconds": 0
            },
            {
                "phaseType": "QUEUED",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.173000-08:00",
                "endTime": "2025-02-08T14:33:26.702000-08:00",
                "durationInSeconds": 0
            },
            {
                "phaseType": "PROVISIONING",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.702000-08:00",
                "endTime": "2025-02-08T14:33:30.530000-08:00",
                "durationInSeconds": 3,
                "contexts": [{
                    "statusCode": "",
                    "message": ""
                }]
            },
            {
                "phaseType": "DOWNLOAD_SOURCE",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:30.530000-08:00",
                "endTime": "2025-02-08T14:33:33.478000-08:00",
                "durationInSeconds": 2,
                "contexts": [{
                    "statusCode": "",
                    "message": ""
                }]
            },
            {
                "phaseType": "RUN_SANDBOX",
                "startTime": "2025-02-08T14:33:33.478000-08:00"
            }
        ],
        "logs": {
            "groupName": "group",
            "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }
}
```

------

### コマンド実行を開始する (AWS CLI)
<a name="sandbox-cli.start-command-execution"></a>

------
#### [ CLI command ]

```
aws codebuild start-command-execution --command $COMMAND --type $TYPE --sandbox-id $SANDBOX-ID
```
+ `--command` : 実行する必要があるコマンド。
+ `--sandbox-id` : `sandboxId` または `sandboxArn`。
+ `--type` : コマンドタイプ `SHELL`。

------
#### [ Sample request ]

```
aws codebuild start-command-execution --command "echo "Hello World"" --type SHELL --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name
```

------
#### [ Sample response ]

```
{
    "id": "e1c658c2-02bb-42a8-9abb-94835241fcd6",
    "sandboxId": "f7126a4a-b0d5-452f-814c-fea73718f805",
    "submitTime": "2025-02-06T20:12:02.683000-08:00",
    "status": "SUBMITTED",
    "command": "echo \"Hello World\"",
    "type": "SHELL",
    "logs": {
        "groupName": "group",
        "streamName": "stream",
        "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
        "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/f7126a4a-b0d5-452f-814c-fea73718f805.gz?region=us-west-2",
        "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
        "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/f7126a4a-b0d5-452f-814c-fea73718f805.gz",
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    }
}
```

------

### コマンド実行に関する情報を取得する (AWS CLI)
<a name="sandbox-cli.batch-get-command-executions"></a>

------
#### [ CLI command ]

```
aws codebuild batch-get-command-executions --command-execution-ids $COMMAND-IDs --sandbox-id $SANDBOX-IDs
```
+ `--command-execution-ids` : `commandExecutionIds` のカンマ区切りリスト。
+ `--sandbox-id` : `sandboxId` または `sandboxArn`。

------
#### [ Sample request ]

```
aws codebuild batch-get-command-executions --command-execution-ids"c3c085ed-5a8f-4531-8e95-87d547f27ffd" --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "commandExecutions": [{
        "id": "c3c085ed-5a8f-4531-8e95-87d547f27ffd",
        "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
        "submitTime": "2025-02-10T20:18:17.118000-08:00",
        "startTime": "2025-02-10T20:18:17.939000-08:00",
        "endTime": "2025-02-10T20:18:17.976000-08:00",
        "status": "SUCCEEDED",
        "command": "echo \"Hello World\"",
        "type": "SHELL",
        "exitCode": "0",
        "standardOutputContent": "Hello World\n",
        "logs": {
            "groupName": "group",
            "streamName": "stream",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }],
    "commandExecutionsNotFound": []
}
```

------

### サンドボックスのコマンド実行を一覧表示する (AWS CLI)
<a name="sandbox-cli.list-command-executions-for-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild list-command-executions-for-sandbox --sandbox-id $SANDBOX-ID --next-token $NEXT_TOKEN --max-results $MAX_RESULTS --sort-order $SORT_ORDER
```
+ `--next-token` : ページ分割された結果を取得するための次のトークン (ある場合)。この値は、リストサンドボックスの以前の実行から取得します。
+ `--max-results` : (オプション) 取得するサンドボックスレコードの最大数。
+ `--sort-order` : サンドボックスレコードを取得する順序。

------
#### [ Sample request ]

```
aws codebuild list-command-executions-for-sandbox --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "commandExecutions": [{
            "id": "aad6687e-07bc-45ab-a1fd-f5440229b528",
            "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
            "submitTime": "2025-02-10T20:18:35.304000-08:00",
            "startTime": "2025-02-10T20:18:35.615000-08:00",
            "endTime": "2025-02-10T20:18:35.651000-08:00",
            "status": "FAILED",
            "command": "fail command",
            "type": "SHELL",
            "exitCode": "127",
            "standardErrContent": "/codebuild/output/tmp/script.sh: 4: fail: not found\n",
            "logs": {
                "groupName": "group",
                "streamName": "stream",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        },
        {
            "id": "c3c085ed-5a8f-4531-8e95-87d547f27ffd",
            "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
            "submitTime": "2025-02-10T20:18:17.118000-08:00",
            "startTime": "2025-02-10T20:18:17.939000-08:00",
            "endTime": "2025-02-10T20:18:17.976000-08:00",
            "status": "SUCCEEDED",
            "command": "echo \"Hello World\"",
            "type": "SHELL",
            "exitCode": "0",
            "standardOutputContent": "Hello World\n",
            "logs": {
                "groupName": "group",
                "streamName": "stream",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        }
    ]
}
```

------

### サンドボックスを一覧表示する (AWS CLI)
<a name="sandbox-cli.list-sandboxes"></a>

------
#### [ CLI command ]

```
aws codebuild list-sandboxes --next-token $NEXT_TOKEN --max-results $MAX_RESULTS --sort-order $SORT_ORDER
```

------
#### [ Sample request ]

```
aws codebuild list-sandboxes
```

------
#### [ Sample response ]

```
{
    "ids": [
        "s3-log-project-integ-test-temp173925062814985d64e0f-7880-41df-9a3c-fb6597a266d2:827a5243-0841-4b69-a720-4438796f6967",
        "s3-log-project-integ-test-temp1739249999716bbd438dd-8bb8-47bd-ba6b-0133ac65b3d3:e2fa4eab-73af-42e3-8903-92fddaf9f378",
        "s3-log-project-integ-test-temp17392474779450fbdacc2-2d6e-4190-9ad5-28f891bb7415:cd71e456-2a4c-4db4-ada5-da892b0bba05",
        "s3-log-project-integ-test-temp17392246284164301421c-5030-4fa1-b4d3-ca15e44771c5:9e26ab3f-65e4-4896-a19c-56b1a95e630a",
        "s3-log-project-integ-test-temp173921367319497056d8d-6d8e-4f5a-a37c-a62f5686731f:22d91b06-df1e-4e9c-a664-c0abb8d5920b",
        "s3-log-project-integ-test-temp1739213439503f6283f19-390c-4dc8-95a9-c8480113384a:82cc413e-fc46-47ab-898f-ae23c83a613f",
        "s3-log-project-integ-test-temp1739054385570b1f1ddc2-0a23-4062-bd0c-24e9e4a99b99:c02562f3-2396-42ec-98da-38e3fe5da13a",
        "s3-log-project-integ-test-temp173905400540237dab1ac-1fde-4dfb-a8f5-c0114333dc89:d2f30493-f65e-4fa0-a7b6-08a5e77497b9",
        "s3-log-project-integ-test-temp17390534055719c534090-7bc4-48f1-92c5-34acaec5bf1e:df5f1c8a-f017-43b7-91ba-ad2619e2c059",
        "s3-log-project-integ-test-temp1739052719086a61813cc-ebb9-4db4-9391-7f43cc984ee4:d61917ec-8037-4647-8d52-060349272c4a",
        "s3-log-project-integ-test-temp173898670094078b67edb-c42f-42ed-9db2-4b5c1a5fc66a:ce33dfbc-beeb-4466-8c99-a3734a0392c7",
        "s3-log-project-integ-test-temp17389863425584d21b7cd-32e2-4f11-9175-72c89ecaffef:046dadf0-1f3a-4d51-a2c0-e88361924acf",
        "s3-log-project-integ-test-temp1738985884273977ccd23-394b-46cc-90d3-7ab94cf764dc:0370dc41-9339-4b0a-91ed-51929761b244",
        "s3-log-project-integ-test-temp1738985365972241b614f-8e41-4387-bd25-2b8351fbc9e0:076c392a-9630-47d8-85a9-116aa34edfff",
        "s3-log-project-integ-test-temp1738985043988a51a9e2b-09d6-4d24-9c3c-1e6e21ac9fa8:6ea3949c-435b-4177-aa4d-614d5956244c",
        "s3-log-project-integ-test-temp1738984123354c68b31ad-49d1-4f4b-981d-b66c00565ff6:6c3fff6c-815b-48b5-ada3-737400a6dee8",
        "s3-log-project-integ-test-temp1738977263715d4d5bf6c-370a-48bf-8ea6-905358a6cf92:968a0f54-724a-42d1-9207-6ed854b2fae8",
        "s3-log-project-integ-test-temp173897358796816ce8d7d-2a5e-41ef-855b-4a94a8d2795d:80f9a7ce-930a-402e-934e-d8b511d68b04",
        "s3-log-project-integ-test-temp17389730633301af5e452-0966-467c-b684-4e36d47f568c:cabbe989-2e8a-473c-af25-32edc8c28646",
        "s3-log-project-integ-test-temp1738901503813173fd468-b723-4d7b-9f9f-82e88d17f264:f7126a4a-b0d5-452f-814c-fea73718f805",
        "s3-log-project-integ-test-temp1738890502472c13616fb-bd0f-4253-86cc-28b74c97a0ba:c6f197e5-3a53-45b6-863e-0e6353375437",
        "s3-log-project-integ-test-temp17388903044683610daf3-8da7-43c6-8580-9978432432ce:d20aa317-8838-4966-bbfc-85b908213df1",
        "s3-log-project-integ-test-temp173888857196780b5ab8b-e54b-44fd-a222-c5a374fffe96:ab4b9970-ffae-47a0-b3a8-7b6790008cad",
        "s3-log-project-integ-test-temp1738888336931c11d378d-e74d-49a4-a723-3b92e6f7daac:4922f0e8-9b7d-4119-9c9f-115cd85e703e",
        "s3-log-project-integ-test-temp17388881717651612a397-c23f-4d88-ba87-2773cd3fc0c9:be91c3fc-418e-4feb-8a3a-ba58ff8f4e8a",
        "s3-log-project-integ-test-temp17388879727174c3c62ed-6195-4afb-8a03-59674d0e1187:a48826a8-3c0d-43c5-a1b5-1c98a0f978e9",
        "s3-log-project-integ-test-temp1738885948597cef305e4-b8b4-46b0-a65b-e2d0a7b83294:c050e77d-e3f8-4829-9a60-46149628fe96",
        "s3-log-project-integ-test-temp173888561463001a7d2a8-e4e4-4434-94db-09d3da9a9e17:8c3ac3f5-7111-4297-aec9-2470d3ead873",
        "s3-log-project-integ-test-temp1738869855076eb19cafd-04fe-41bd-8aa0-40826d0c0d27:d25be134-05cb-404a-85da-ac5f85d2d72c",
        "s3-project-integ-test-temp1738868157467148eacfc-d39b-49fc-a137-e55381cd2978:4909557b-c221-4814-b4b6-7d9e93d37c35",
        "s3-project-integ-test-temp1738820926895abec0af2-e33d-473c-9cf4-2122dd9d6876:8f5cf218-71d6-40a4-a4be-6cacebd7765f",
        "s3-project-integ-test-temp173881998877574f969a6-1c2e-4441-b463-ab175b45ce32:04396851-c901-4986-9117-585528e3877f",
        "s3-project-integ-test-temp17388189812309abd2604-29ba-4cf6-b6bf-073207b7db9c:540075c7-f5ec-41e8-9341-2233c09247eb",
        "s3-project-integ-test-temp1738818843474d3ea9ac1-b609-461b-bbdb-2da245c9bc96:865d4c3c-fbfe-4ece-9c92-d0c928341404",
        "s3-project-integ-test-temp1738818542236006e9169-e6d9-4344-9b59-f557e7aec619:1f9ffa87-da15-4290-83e2-eebdd877497b",
        "s3-project-integ-test-temp173881809557486ad11fd-7931-48d7-81d5-499cea52a6bc:c4c2efc4-685f-4e13-8b0f-1ef85ec300b1",
        "s3-project-integ-test-temp173881794103322941020-3f0b-49c3-b836-fcd818ec9484:0344cfba-de48-456d-b2a8-6566bd4a5d6e",
        "s3-project-integ-test-temp1738817680747b93d0d0b-ea16-497f-9559-af25ee6dcfdf:654a3a55-d92a-4dc6-8da8-56fd4d40d7e1",
        "s3-project-integ-test-temp17388174027191255c3da-086c-4270-b047-acac0b7bee0d:b7e82740-2c69-42fc-ab5a-dbf15bc016a1",
        "s3-project-integ-test-temp1738817099799016e7fa3-b9b5-46a2-bcd5-0888c646743f:8705a6a4-79ff-427a-a1c3-85c4e8fe462e",
        "s3-project-integ-test-temp1738816479281bb0c3606-5ebf-4623-bed5-12b60e9d3512:f23fc74b-a981-4835-8e28-375fcd4c99e4",
        "s3-project-integ-test-temp1738816263585c939a133-4d37-482c-9238-1dbff34b7674:ca28e234-0045-4ae6-8732-938b17597f50",
        "s3-project-integ-test-temp173881580873072d18733-8fe4-43b1-83f7-95f25bb27ccf:c6f0f55b-5736-47c7-a3aa-1b8461a6d5ed"
    ]
}
```

------

# チュートリアル: SSH を使用してサンドボックスに接続する
<a name="sandbox-ssh-tutorial"></a>

このチュートリアルでは、SSH クライアントを使用して CodeBuild サンドボックスに接続する方法を示します。

このチュートリアルを完了するには、まず以下を行う必要があります。
+ 既存の AWS CodeBuild プロジェクトがあることを確認します。
+ CodeBuild プロジェクトロール用に設定された適切な IAM アクセス許可を設定します。
+ ローカルマシン AWS CLI に をインストールして設定します。

## ステップ 1: サンドボックスを開始する
<a name="sandbox-ssh-tutorial.start-sandbox"></a>

**コンソールで CodeBuild サンドボックスを起動するには**

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[ビルドプロジェクト]** を選択します。ビルドプロジェクトを選択した後、[**ビルドの開始**] を選択します。  
![\[コンソールのプロジェクトのビルドの詳細ページ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/project-debug-build.png)

1. [**SSH クライアント**] タブで、[**サンドボックスを開始する**] を選択します。  
![\[コンソールの [SSH クライアント] タブと [サンドボックスを開始する] ボタン。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/ssh-client-sandbox.png)

1. サンドボックスの初期化プロセスには時間がかかる場合があります。サンドボックスのステータスが `RUN_SANDDBOX` に変わったら、サンドボックスに接続できます。  
![\[ステータスが「RUN_SANDDBOX」に変わった後の SSH サンドボックス接続。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/run-sandbox.png)

## ステップ 2: ローカル SSH 設定を変更する
<a name="sandbox-ssh-tutorial.modify-ssh"></a>

サンドボックスに初めて接続する場合は、次の手順を使用して 1 回限りのセットアッププロセスを実行する必要があります。

**コンソールでローカル SSH 設定を変更するには**

1. オペレーティングシステムのセットアップコマンドを見つけます。

1. ローカルターミナルを開き、提供されたコマンドをコピーして実行した後、スクリプトをダウンロードして実行し、ローカル SSH 設定をセットアップします。たとえば、オペレーティングシステムが macOS の場合は、次のコマンドを使用します。  
![\[コンソールの CodeBuild サンドボックスへの SSH 接続用の macOS コマンド。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/modify-ssh-macOS.png)

1. 設定スクリプトにより、サンドボックスに接続するために必要な設定が追加されます。これらの変更を受け入れるよう求められます。

1. 設定に成功すると、CodeBuild サンドボックスの新しい SSH 設定エントリが作成されます。  
![\[SSH サンドボックス接続に成功しました。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/ssh-terminal-success.png)

## ステップ 3: サンドボックスに接続する
<a name="sandbox-ssh-tutorial.connect-sandbox"></a>

**コンソールでローカル SSH 設定を変更するには**

1.  AWS CLI 認証を設定し、 AWS CLI ユーザーに アクセス`codebuild:StartSandboxConnection`許可があることを確認します。詳細については、「*バージョン 1 のAWS Command Line Interface ユーザーガイド*」の「[AWS CLIの IAM ユーザー認証情報を使用した認証](https://docs.aws.amazon.com/cli/v1/userguide/cli-authentication-user.html)」を参照してください。

1. 次のコマンドを使用してサンドボックスに接続します。

   ```
   ssh codebuild-sandbox-ssh=arn:aws:codebuild:us-east-1:<account-id>:sandbox/<sandbox-id>
   ```
**注記**  
接続障害のトラブルシューティングを行うには、`-v` フラグを使用して詳細な出力を有効にします。例えば、`ssh -v codebuild-sandbox-ssh=arn:aws:codebuild:us-east-1:<account-id>:sandbox/<sandbox-id>`。  
他のトラブルシューティングガイダンスについては、「[AWS CodeBuild サンドボックス SSH 接続の問題のトラブルシューティング](sandbox-troubleshooting.md)」を参照してください。

## ステップ 4: 結果を確認する
<a name="sandbox-ssh-tutorial.review-results"></a>

接続すると、ビルド障害のデバッグ、ビルドコマンドのテスト、設定変更の実験、サンドボックスでの環境変数と依存関係の検証を行うことができます。

# AWS CodeBuild サンドボックス SSH 接続の問題のトラブルシューティング
<a name="sandbox-troubleshooting"></a>

このトピックの情報を使用して、CodeBuild サンドボックス SSH 接続の問題を特定、診断、対処します。

**Topics**
+ [`StartSandboxConnection` `InvalidInputException` CodeBuild サンドボックス環境への SSH のエラー](#sandbox-troubleshooting.invalid-input)
+ [エラー: CodeBuild サンドボックス環境への SSH 接続時に「認証情報を見つけることができません」](#sandbox-troubleshooting.credentials)
+ [`StartSandboxConnection` `AccessDeniedException` CodeBuild サンドボックス環境への SSH のエラー](#sandbox-troubleshooting.access-denied)
+ [エラー: CodeBuild サンドボックス環境への SSH 接続時に「ssh: ホスト名を解決できませんでした」](#sandbox-troubleshooting.hostname)

## `StartSandboxConnection` `InvalidInputException` CodeBuild サンドボックス環境への SSH のエラー
<a name="sandbox-troubleshooting.invalid-input"></a>

**問題:** `ssh codebuild-sandbox-ssh=<sandbox-arn>` コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のような `InvalidInputException` エラーが発生する可能性があります。

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for {sandbox-arn}
User: arn:aws:sts::<account-ID>:assumed-role/<service-role-name>/AWSCodeBuild-<UUID> 
is not authorized to perform: ssm:StartSession on resource.
```

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for 
sandbox <sandbox-arn>: codebuild:<UUID> is not connected.
```

**考えられる原因:**
+ Amazon EC2 Systems Manager エージェントがない: ビルドイメージに SSM エージェントが正しくインストールまたは設定されていません。
+ アクセス許可が不十分: CodeBuild プロジェクトサービスロールに必要な SSM アクセス許可がありません。

**推奨される解決策:** ビルドにカスタムイメージを使用している場合は、次の操作を行います。

1. SSM Agent をインストールします。詳細については、「**」の「[Linux 用 Amazon EC2 インスタンスに SSM エージェントを手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)」を参照してください。SSM エージェントは、バージョン `3.0.1295.0` 以降である必要があります。

1. [https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json) ファイルをイメージの `/etc/amazon/ssm/` ディレクトリにコピーします。これにより、SSM エージェントで**コンテナモード**が有効になります。

1. CodeBuild プロジェクトのサービスロールに次のアクセス許可があることを確認し、サンドボックス環境を再起動します。

   ```
   {
      "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
    },
    {
       "Effect": "Allow",
       "Action": [
          "ssm:StartSession"
        ],
        "Resource": [
           "arn:aws:codebuild:region:account-id:build/*",
           "arn:aws:ssm:region::document/AWS-StartSSHSession"
        ]
    }
   ```

## エラー: CodeBuild サンドボックス環境への SSH 接続時に「認証情報を見つけることができません」
<a name="sandbox-troubleshooting.credentials"></a>

**問題:** `ssh codebuild-sandbox-ssh=<sandbox-arn>` コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次の認証情報エラーが発生することがあります。

```
Unable to locate credentials. You can configure credentials by running 
"aws configure".
```

**考えられる原因:** AWS 認証情報がローカル環境で正しく設定されていません。

**推奨される解決策:** 公式ドキュメント「 バージョン 2 コマンドラインインターフェイスユーザーガイド」の[「 の設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」に従って AWS CLI 認証情報を設定します。 *AWS *

## `StartSandboxConnection` `AccessDeniedException` CodeBuild サンドボックス環境への SSH のエラー
<a name="sandbox-troubleshooting.access-denied"></a>

**問題:** `ssh codebuild-sandbox-ssh=<sandbox-arn>` コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のアクセス許可エラーが発生することがあります。

```
An error occurred (AccessDeniedException) when calling the StartSandboxConnection 
operation: 
User: arn:aws:sts::account-id:assumed-role/role-name
is not authorized to perform: codebuild:StartSandboxConnection on resource: 
sandbox-arn
because no identity-based policy allows the codebuild:StartSandboxConnection action
```

**考えられる原因:** AWS 認証情報に、このオペレーションを実行するために必要な CodeBuild アクセス許可がありません。

**推奨される解決策:** AWS CLI 認証情報に関連付けられた IAM ユーザーまたはロールに次のアクセス許可があることを確認します。

```
{
    "Effect": "Allow",
    "Action": [
       "codebuild:StartSandboxConnection"
     ],
     "Resource": [
        "arn:aws:codebuild:region:account-id:sandbox/*"
     ]
}
```

## エラー: CodeBuild サンドボックス環境への SSH 接続時に「ssh: ホスト名を解決できませんでした」
<a name="sandbox-troubleshooting.hostname"></a>

**問題:** `ssh codebuild-sandbox-ssh=<sandbox-arn>` コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のホスト名解決エラーが発生します。

```
ssh: Could not resolve hostname
```

**考えられる原因:** このエラーは通常、必要な CodeBuild サンドボックス接続スクリプトがローカル環境で正しく実行されていない場合に発生します。

**推奨される解決策:**

1. CodeBuild サンドボックス接続スクリプトをダウンロードします。

1. ターミナルでスクリプトを実行して、必要な SSH 設定を確立します。

1. サンドボックス環境への SSH 接続を再試行します。

# Session Manager を使用してビルドをデバッグする
<a name="session-manager"></a>

では AWS CodeBuild、実行中のビルドを一時停止し、 AWS Systems Manager Session Manager を使用してビルドコンテナに接続し、コンテナの状態を表示できます。

**注記**  
この機能は、Windows 環境では使用できません。

**Topics**
+ [前提条件](#ssm.prerequisites)
+ [ビルドの一時停止](#ssm-pause-build)
+ [ビルドを開始します](#ssm-start-build)
+ [ビルドコンテナに接続する](#ssm-connect)
+ [ビルドを再開する](#ssm-resume-build)

## 前提条件
<a name="ssm.prerequisites"></a>

ビルドセッションでセッションマネージャーを使用できるようにするには、ビルドのセッション接続を有効にする必要があります。次の 2 つの前提条件があります。
+ CodeBuild Linux 標準キュレーションイメージには、すでに SSM エージェントがインストールされており、SSM エージェント コンテナモードが有効になっています。

  ビルドにカスタムイメージを使用している場合は、次の操作を行います。

  1. SSM Agent をインストールします。詳細については、 AWS Systems Manager ユーザーガイドの「[Linux 用 EC2 インスタンスに SSM Agent を手動でインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html)」を参照してください。SSM エージェントは、バージョン 3.0.1295.0 以降である必要があります。

  1. [https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json) ファイルをイメージの `/etc/amazon/ssm/` ディレクトリにコピーします。これにより、SSM エージェントでコンテナモードが有効になります。
**注記**  
この機能が正常に動作するには、カスタムイメージに最新の SSM エージェントが必要です。
+ CodeBuild サービスロールには、次の SSM ポリシーが必要です。

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	  
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
       }
     ]
  }
  ```

------

  CodeBuild コンソールは、ビルドの開始時にこのポリシーをサービスロールに自動的にアタッチするように設定できます。または、このポリシーを手動でサービスロールにアタッチすることもできます。
+ **セッションアクティビティのログ記録と監査**を Systems Manager 設定で有効にしている場合は、CodeBuild サービスロールにも追加のアクセス許可が必要です。アクセス許可は、ログが格納されている場所によって異なります。  
[CloudWatch Logs]  
CloudWatch Logs を使用してログを保存する場合は、CodeBuild サービスロールに次のアクセス権限を追加します。    
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "logs:DescribeLogGroups",
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*:*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:MyLogGroup:*"
          }
      ]
  }
  ```  
Amazon S3  
Amazon S3 を使用してログを保存する場合は、CodeBuild サービスロールに次のアクセス権限を追加します。    
****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetEncryptionConfiguration",
          "s3:PutObject"
        ],
        "Resource": [
          "arn:aws:s3:::<bucket-name>",
          "arn:aws:s3:::<bucket-name>/*"
        ]
      }
    ]
  }
  ```

  詳細については、*AWS Systems Manager ユーザーガイド*の「[セッションアクティビティのログ記録と監査](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging-auditing.html)」を参照してください。

## ビルドの一時停止
<a name="ssm-pause-build"></a>

ビルドを一時停止するには、buildspec ファイルのビルドフェーズのいずれかで **codebuild-breakpoint** コマンドを実行します。この時点でビルドは一時停止されます。これにより、ビルドコンテナに接続し、コンテナを現在の状態で表示できます。

たとえば、buildspec ファイルのビルドフェーズに、以下を追加します。

```
phases:
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - echo "Hello World" > /tmp/hello-world
      - codebuild-breakpoint
```

このコードは、`/tmp/hello-world`ファイルを作成し、この時点でビルドを一時停止します。

## ビルドを開始します
<a name="ssm-start-build"></a>

ビルドセッションでセッションマネージャーを使用できるようにするには、ビルドのセッション接続を有効にする必要があります。これを行うには、ビルドを開始するときに、以下の手順を実行します。

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[ビルドプロジェクト]** を選択します。ビルドプロジェクトを選択した後、[**Start build with overrides**] を選択します。

1. [**Advanced build overrides (高度なビルドの上書き)**] を選択します。

1. [**Environment**] セクションで、[**Enable session connection**] オプションを選択します。このオプションが選択されていない場合、**codebuild-breakpoint** および **codebuild-resume** コマンドは無視されます。

1. その他の必要な変更を行い、[**Start build**] を選択します。

1. コンソールでビルドステータスを監視します。セッションが利用可能になると、**AWS セッションマネージャー**リンクが [**Build status**] セクションに表示されます。

## ビルドコンテナに接続する
<a name="ssm-connect"></a>

ビルドコンテナには、次の 2 つのいずれかに接続できます。

CodeBuild コンソール  
ウェブブラウザで、**AWS セッションマネージャー**リンクをクリックして、ビルドコンテナに接続します。ターミナルセッションが開き、ビルドコンテナを表示して制御できます。

AWS CLI  
この手順を実行するには、ローカルマシンにセッションマネージャプラグインがインストールされている必要があります。詳細については、「 AWS Systems Manager ユーザーガイド[」の「 CLI AWS 用の Session Manager プラグインのインストール](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)」を参照してください。

1. **batch-get-builds** APIを呼び出し、ビルドIDに置き換えて、セッションターゲット識別子を含むビルドに関する情報を取得します。セッションターゲット識別子のプロパティ名は、`aws` コマンドの出力タイプによって異なります。これが、コマンドに `--output json` が追加される理由です。

   ```
   aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
   ```

1. プロパティの値 `sessionTarget` をコピーします。`sessionTarget` プロパティ名は、`aws` コマンドの出力タイプによって異なる場合があります。これが、前のステップでコマンドに `--output json` が追加される理由です。

1. ビルドコンテナに接続するには、次のコマンドを使用します。

   ```
   aws ssm start-session --target <sessionTarget> --region <region>
   ```

この例では、`/tmp/hello-world`ファイルが存在し、`Hello World` テキストを含む検証です。

## ビルドを再開する
<a name="ssm-resume-build"></a>

ビルドコンテナーを調べ終わったら、**codebuild-resume** コマンドをコンテナーシェルから実行します。

```
$ codebuild-resume
```

# AWS CodeBuild でのビルドの削除
<a name="delete-builds"></a>

AWS CLI でビルドを削除するには、AWS または AWS CodeBuild SDK を使用できます。

**Topics**
+ [ビルドの削除 (AWS CLI)](#delete-builds-cli)
+ [ビルドの削除 (AWS SDK)](#delete-builds-sdks)

## ビルドの削除 (AWS CLI)
<a name="delete-builds-cli"></a>

`batch-delete-builds` コマンドを実行します。

```
aws codebuild batch-delete-builds --ids ids
```

上記のコマンドで、次のプレースホルダを置き換えます。
+ *ids*: 必須の文字列。削除するビルドの ID。複数のビルドを指定するには、各ビルド ID をスペースで区切ります。ビルド ID のリストを取得するには、次のトピックを参照してください。
  + [ビルド ID の一覧表示 (AWS CLI)](view-build-list.md#view-build-list-cli)
  + [ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

成功すると、`buildsDeleted` 配列が出力に表示されます。この配列には、正常に削除された各ビルドの Amazon リソースネーム (ARN) が含まれています。正常に削除されなかったビルドに関する情報は、出力の `buildsNotDeleted` 配列内に表示されます。

たとえば、次のコマンドを実行するとします。

```
aws codebuild batch-delete-builds --ids my-demo-build-project:f8b888d2-5e1e-4032-8645-b115195648EX my-other-demo-build-project:a18bc6ee-e499-4887-b36a-8c90349c7eEX
```

次のような情報が出力に表示されます。

```
{
  "buildsNotDeleted": [
    {
      "id": "arn:aws:codebuild:us-west-2:123456789012:build/my-demo-build-project:f8b888d2-5e1e-4032-8645-b115195648EX",
      "statusCode": "BUILD_IN_PROGRESS"
    }
  ], 
  "buildsDeleted": [
    "arn:aws:codebuild:us-west-2:123456789012:build/my-other-demo-build-project:a18bc6ee-e499-4887-b36a-8c90349c7eEX"
  ]
}
```

## ビルドの削除 (AWS SDK)
<a name="delete-builds-sdks"></a>

AWS CodeBuild を AWS SDK と組み合わせて使用する方法については、「[AWS SDKsとツールのリファレンス](sdk-ref.md)」を参照してください。

# でビルドを手動で再試行する AWS CodeBuild
<a name="retry-build"></a>

 AWS CodeBuild コンソール、 AWS CLI、または AWS SDKs を使用して、1 つのビルドまたはバッチビルドを手動で再試行できます AWS CodeBuild。

**Topics**
+ [ビルドを手動で再試行 (コンソール)](#retry-build-console)
+ [ビルドを手動で再試行 (AWS CLI)](#retry-build-cli)
+ [ビルドを手動で再試行する (AWS SDKs)](#retry-build-sdks)

## ビルドを手動で再試行 (コンソール)
<a name="retry-build-console"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. 次のいずれかを行います。
   + **[*build-project-name*:*build-ID*]** ページが表示された場合は、**[ビルドの再試行]** を選択します。
   + ナビゲーションペインで、[**Build history**] を選択します。ビルドのリストで、ビルドのボックスを選択後、**[ビルドの再試行]** を選択します。
   + ナビゲーションペインで、[**Build projects**] を選択します。ビルドプロジェクトのリストの [**名前**] 列で、ビルドプロジェクト名のリンクを選択します。ビルドのリストで、ビルドのボックスを選択後、**[ビルドの再試行]** を選択します。

**注記**  
デフォルトでは、最新の 100 個のビルドまたはビルドプロジェクトのみが表示されます。さらに多くのビルドまたはビルドプロジェクトを表示するには、歯車アイコンを選択してから [**ページ毎ビルド数**] または [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

## ビルドを手動で再試行 (AWS CLI)
<a name="retry-build-cli"></a>
+ **retry-build** コマンドを実行します。

  ```
  aws codebuild retry-build --id <build-id> --idempotency-token <idempotencyToken>
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *<build-id>*: 必須の文字列。再試行するビルドまたはバッチビルドの ID。ビルド ID のリストを取得するには、次のトピックを参照してください。
    + [ビルド ID の一覧表示 (AWS CLI)](view-build-list.md#view-build-list-cli)
    + [バッチビルド ID のリストを表示 (AWS CLI)](view-build-list.md#view-batch-build-list-cli)
    + [ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)
    + [ビルドプロジェクトのバッチビルド ID のリストを表示 (AWS CLI)](view-builds-for-project.md#view-batch-builds-for-project-cli)
  + `--idempotency-token`: オプション。オプションを指定して **retry-build** コマンドを実行すると、大文字と小文字を区別する一意の識別子 (トークン) が `retry-build` リクエストに含まれます。このトークンは、 リクエスト後 5 分間有効です。同じトークンで `retry-build` リクエストを繰り返し行い、パラメータを変更すると、CodeBuild はパラメータの不一致エラーを返します。

## ビルドを手動で再試行する (AWS SDKs)
<a name="retry-build-sdks"></a>

SDK AWS CodeBuild で を使用する方法の詳細については、「」を参照してください[AWS SDKsとツールのリファレンス](sdk-ref.md)。 AWS SDKs

# AWS CodeBuild でのビルドを自動的に再試行
<a name="auto-retry-build"></a>

AWS CodeBuild コンソール、AWS CLI、または AWS SDK を使用して、AWS CodeBuild でのビルドを自動的に再試行できます。自動再試行を有効にすると、CodeBuild は、ビルドが失敗した後、指定された制限回数までプロジェクトのサービスロールを使用して自動的に `RetryBuild` を呼び出します。例えば、自動再試行の制限が 2 に設定されている場合、CodeBuild は `RetryBuild` API を呼び出して、さらに最大 2 回までビルドを自動的に再試行します。

**注記**  
CodeBuild は、CodePipeline の自動再試行をサポートしていません。

**Topics**
+ [ビルドを自動的に再試行 (コンソール)](#auto-retry-build-console)
+ [ビルドを自動的に再試行 (AWS CLI)](#auto-retry-build-cli)
+ [ビルドを自動的に再試行 (AWS SDK)](#auto-retry-build-sdks)

## ビルドを自動的に再試行 (コンソール)
<a name="auto-retry-build-console"></a>

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. **[プロジェクトを作成]** を選択します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドの実行 (コンソール)](run-build-console.md)」を参照してください。
   +  [**環境**] で以下の操作を行います。
     +  **[自動再試行の制限]** には、ビルドが失敗した後に希望する自動再試行の最大回数を入力します。

1. **[環境]** で、**[追加設定]** を選択します。

1. デフォルト値のまま続行し、**[ビルドプロジェクトを作成する]** を選択します。

## ビルドを自動的に再試行 (AWS CLI)
<a name="auto-retry-build-cli"></a>
+ **create-project** コマンドを実行します。

  ```
  aws codebuild create-project \
      --name "<project-name>" \
      --auto-retry-limit <auto-retry-limit> \
      --source "<source>" \
      --artifacts {<artifacts>} \
      --environment "{\"type\": \"environment-type>\",\"image\": \"image-type>\",\"computeType\": \"compute-type>\"}" \
      --service-role "service-role>"
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *<auto-retry-limit>*: 自動再試行の制限を、ビルドが失敗した後に希望する自動再試行の最大回数に設定します。
  + *<project-name>*、*<source>*、*<artifacts>*、*<environment-type>*、*<image-type>*、*<compute-type>*、*<service-role>*: 希望するプロジェクト設定を構成します。

## ビルドを自動的に再試行 (AWS SDK)
<a name="auto-retry-build-sdks"></a>

AWS CodeBuild を AWS SDK と組み合わせて使用する方法については、「[AWS SDKsとツールのリファレンス](sdk-ref.md)」を参照してください。

# AWS CodeBuild でのビルドを停止
<a name="stop-build"></a>

AWS CodeBuild でビルドを停止するには、AWS CLI コンソール、AWS、または AWS CodeBuild SDK を使用します。

**Topics**
+ [ビルドの停止 (コンソール)](#stop-build-console)
+ [ビルドの停止 (AWS CLI)](#stop-build-cli)
+ [ビルドの停止 (AWS SDK)](#stop-build-sdks)

## ビルドの停止 (コンソール)
<a name="stop-build-console"></a>

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. 次のいずれかを行ってください。
   + [***build-project-name*:*build-ID***] ページが表示された場合は、[**ビルドの停止**] を選択します。
   + ナビゲーションペインで、[**Build history**] を選択します。ビルドのリストで、ビルドのボックスを選択後、[**ビルドの停止**] を選択します。
   + ナビゲーションペインで、[**Build projects**] を選択します。ビルドプロジェクトのリストの [**名前**] 列で、ビルドプロジェクト名のリンクを選択します。ビルドのリストで、ビルドのボックスを選択後、[**ビルドの停止**] を選択します。

**注記**  
デフォルトでは、最新の 100 個のビルドまたはビルドプロジェクトのみが表示されます。さらに多くのビルドまたはビルドプロジェクトを表示するには、歯車アイコンを選択してから [**ページ毎ビルド数**] または [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。  
AWS CodeBuild でビルドを正常に停止できない場合 (ビルドプロセスが完了済みである場合など) は、[**停止**] ボタンが使用できないか、表示されないことがあります。

## ビルドの停止 (AWS CLI)
<a name="stop-build-cli"></a>
+ **stop-build** コマンドを実行します。

  ```
  aws codebuild stop-build --id id
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *id*: 必須の文字列。停止するビルドの ID。ビルド ID のリストを取得するには、次のトピックを参照してください。
    + [ビルド ID の一覧表示 (AWS CLI)](view-build-list.md#view-build-list-cli)
    + [ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

  AWS CodeBuild がビルドを正常に停止した場合、出力で `buildStatus` オブジェクトの `build` 値が `STOPPED` になります。

  CodeBuild がビルドを正常に停止できない場合 (たとえば、ビルドがすでに完了している場合)、`build` オブジェクトの出力の オブジェクトの `buildStatus` 値が最終的なビルドステータス (例: `SUCCEEDED`) になります。

## ビルドの停止 (AWS SDK)
<a name="stop-build-sdks"></a>

AWS CodeBuild を AWS SDK と組み合わせて使用する方法については、「[AWS SDKsとツールのリファレンス](sdk-ref.md)」を参照してください。

# AWS CodeBuild でのバッチビルドを停止
<a name="stop-batch-build"></a>

AWS CodeBuild でバッチビルドを停止するには、AWS CodeBuild コンソール、AWS CLI、または AWS SDK を使用します。

**注記**  
バッチビルドで Lambda コンピューティングを使用する場合、進行中の Lambda ビルドを停止することはできません。

**Topics**
+ [バッチビルドの停止 (コンソール)](#stop-batch-build-console)
+ [バッチビルドを停止 (AWS CLI)](#stop-batch-build-cli)
+ [ビルドを停止 (AWS SDK)](#stop-batch-build-sdks)

## バッチビルドの停止 (コンソール)
<a name="stop-batch-build-console"></a>

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. 次のいずれかを行ってください。
   + [***build-project-name*:*build-ID***] ページが表示された場合は、[**ビルドの停止**] を選択します。
   + ナビゲーションペインで、[**Build history**] を選択します。ビルドのリストで、ビルドのボックスを選択後、[**ビルドの停止**] を選択します。
   + ナビゲーションペインで、[**Build projects**] を選択します。ビルドプロジェクトのリストの [**名前**] 列で、ビルドプロジェクト名のリンクを選択します。ビルドのリストで、ビルドのボックスを選択後、[**ビルドの停止**] を選択します。

**注記**  
デフォルトでは、最新の 100 個のビルドまたはビルドプロジェクトのみが表示されます。さらに多くのビルドまたはビルドプロジェクトを表示するには、歯車アイコンを選択してから [**ページ毎ビルド数**] または [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

## バッチビルドを停止 (AWS CLI)
<a name="stop-batch-build-cli"></a>
+ [https://docs.aws.amazon.com/cli/latest/reference/codebuild/stop-build-batch.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/stop-build-batch.html) コマンドを実行します。

  ```
  aws codebuild stop-build-batch --id <batch-build-id>
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *<batch-build-id>*: 必須の文字列。停止するバッチビルドの ID。バッチビルド ID のリストを取得するには、次のトピックを参照してください。
    + [バッチビルド ID のリストを表示 (AWS CLI)](view-build-list.md#view-batch-build-list-cli)
    + [ビルドプロジェクトのバッチビルド ID のリストを表示 (AWS CLI)](view-builds-for-project.md#view-batch-builds-for-project-cli)

## ビルドを停止 (AWS SDK)
<a name="stop-batch-build-sdks"></a>

AWS CodeBuild を AWS SDK と組み合わせて使用する方法については、「[AWS SDKsとツールのリファレンス](sdk-ref.md)」を参照してください。

# AWS CodeBuild ビルドを自動的にトリガー
<a name="build-triggers"></a>

プロジェクトでトリガーを作成し、1 時間、1 日、または 1 週間に 1 回ビルドをスケジュールできます。Amazon CloudWatch cron 式でカスタムルールを使用してトリガーを編集することもできます。たとえば、cron 式を使用して、毎週特定の時間にビルドをスケジュールできます。トリガーの作成および編集に関する詳細は、「[AWS CodeBuild トリガーの作成](#trigger-create)」および「[AWS CodeBuild トリガーの編集](triggers-edit.md)」を参照してください。

**Topics**
+ [AWS CodeBuild トリガーの作成](#trigger-create)
+ [AWS CodeBuild トリガーの編集](triggers-edit.md)

## AWS CodeBuild トリガーの作成
<a name="trigger-create"></a>

プロジェクトでトリガーを作成し、1 時間、1 日、または 1 週間に 1 回ビルドをスケジュールできます。Amazon CloudWatch cron 式でカスタムルールを使用してトリガーを作成することもできます。たとえば、cron 式を使用して、毎週特定の時間にビルドをスケジュールできます。

**注記**  
ビルドトリガー、Amazon EventBridge イベント、および AWS Step Functions タスクからバッチビルドを開始することはできません。

**Topics**
+ [AWS CodeBuild トリガーを作成 (コンソール)](#trigger-create-console)
+ [プログラムを使用した AWS CodeBuild トリガーの作成](#trigger-create-code)

### AWS CodeBuild トリガーを作成 (コンソール)
<a name="trigger-create-console"></a>

次の手順で、AWS マネジメントコンソール を使用してトリガーを作成します。

**トリガーを作成するには** 

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. ナビゲーションペインで、[**Build projects**] を選択します。

1. トリガーを追加するビルドプロジェクトのリンクを選択し、[**トリガーのビルド**] タブを選択します。
**注記**  
デフォルトでは、最新の 100 個のビルドプロジェクトが表示されます。さらに多くのビルドプロジェクトを表示するには、歯車アイコンを選択して [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

1. [**Create trigger (トリガーの作成)**] を選択します。

1. [**トリガー名**] に名前を入力します。

1. [**Frequency**] (頻度) ドロップダウンリストから、トリガーの頻度を選択します。CRON 式を使用して頻度を作成する場合は、[**Custom**] (カスタム) を選択します。

1. トリガーの頻度のパラメータを指定します。選択肢の最初の数文字をテキストボックスに入力すると、ドロップダウンメニュー項目がフィルタリングされます。
**注記**  
 開始時間と分はゼロベースです。開始分は 0 から 59 までの数値です。開始時は 0 から 23 までの数値です。たとえば、毎日午後 12:15 に開始する日次トリガーは、開始時が 12、開始分が 15 になります。毎日深夜に開始される日次トリガーは、開始時がゼロで、開始分がゼロです。毎日午後 11:59 に開始する毎日のトリガーは、開始時が 23、開始分が 59 です。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-triggers.html)

1.  [**Enable this trigger (このトリガーの有効化)**] を選択します。

1.  (オプション) [**アドバンスト**] セクションを展開します。[**ソースバージョン**] に、ソースのバージョンを入力します。
   +  Amazon S3 の場合、ビルドする入力アーティファクトのバージョンに対応するバージョン ID を入力します。[**ソースバージョン**] が空白のままの場合は、最新バージョンが使用されます。
   +  AWS CodeCommit の場合は、コミット ID を入力します。[**ソースバージョン**] が空白のままの場合は、デフォルトブランチの HEAD コミット ID が使用されます。
   + GitHub または GitHub Enterprise の場合は、ビルドするソースコードのバージョンに対応するコミット ID、プルリクエスト ID、ブランチ名、またはタグ名を入力します。プルリクエスト ID を指定する場合、`pr/pull-request-ID` (例: `pr/25`) 形式を使用する必要があります。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。[**Source version**] が空白の場合は、デフォルトのブランチの HEAD コミット ID が使用されます。
   + Bitbucket の場合、ビルドするソースコードのバージョンに対応するコミット ID、ブランチ名、またはタグ名を入力します。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。[**Source version**] が空白の場合は、デフォルトのブランチの HEAD コミット ID が使用されます。

1. (オプション) 5 分～2,160 分 (36 時間) の間のタイムアウトを指定します。この値で、AWS CodeBuild が停止するまでビルドを試みる時間を指定します。[**時間**] と [**分**] が空白のままの場合、プロジェクトで指定されたデフォルトのタイムアウト値が使用されます。

1. [**Create trigger (トリガーの作成)**] を選択します。

### プログラムを使用した AWS CodeBuild トリガーの作成
<a name="trigger-create-code"></a>

CodeBuild は、ビルドトリガーに Amazon EventBridge ルールを使用します EventBridge API を使用して、CodeBuild プロジェクトのビルドトリガーをプログラムで作成できます。詳細については、「[Amazon EventBridge API リファレンス](https://docs.aws.amazon.com/eventbridge/latest/APIReference/)」を参照してください。

# AWS CodeBuild トリガーの編集
<a name="triggers-edit"></a>

プロジェクトでトリガーを編集し、1 時間、1 日、または 1 週間に 1 回ビルドをスケジュールできます。Amazon CloudWatch cron 式でカスタムルールを使用してトリガーを編集することもできます。たとえば、cron 式を使用して、毎週特定の時間にビルドをスケジュールできます。トリガーの作成方法については、「[AWS CodeBuild トリガーの作成](build-triggers.md#trigger-create)」を参照してください。

**Topics**
+ [AWS CodeBuild トリガーを編集 (コンソール)](#triggers-edit-console)
+ [プログラムを使用した AWS CodeBuild トリガーの編集](#trigger-edit-code)

## AWS CodeBuild トリガーを編集 (コンソール)
<a name="triggers-edit-console"></a>

次の手順で、AWS マネジメントコンソール を使用してトリガーを編集します。

**トリガーを編集するには**

1. AWS CodeBuild コンソール ([https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home)) を開きます。

1. ナビゲーションペインで、[**Build projects**] を選択します。

1. 変更するビルドプロジェクトのリンクを選択し、[**ビルドのトリガー**] タブを選択します。
**注記**  
デフォルトでは、最新の 100 個のビルドプロジェクトが表示されます。さらに多くのビルドプロジェクトを表示するには、歯車アイコンを選択して [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

1. 変更するトリガーの横にあるラジオボタンを選択して、[**Edit (編集)**] を選択します。

1. [**Frequency**] (頻度) ドロップダウンリストから、トリガーの頻度を選択します。CRON 式を使用して頻度を作成する場合は、[**Custom**] (カスタム) を選択します。

1. トリガーの頻度のパラメータを指定します。選択肢の最初の数文字をテキストボックスに入力すると、ドロップダウンメニュー項目がフィルタリングされます。
**注記**  
 開始時間と分はゼロベースです。開始分は 0 から 59 までの数値です。開始時は 0 から 23 までの数値です。たとえば、毎日午後 12:15 に開始する日次トリガーは、開始時が 12、開始分が 15 になります。毎日深夜に開始される日次トリガーは、開始時がゼロで、開始分がゼロです。毎日午後 11:59 に開始する毎日のトリガーは、開始時が 23、開始分が 59 です。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/triggers-edit.html)

1.  [**Enable this trigger (このトリガーの有効化)**] を選択します。

**注記**  
ソースバージョン、タイムアウト、および AWS CodeBuild で使用できないその他のオプションを編集するには、Amazon CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を使用できます。

## プログラムを使用した AWS CodeBuild トリガーの編集
<a name="trigger-edit-code"></a>

CodeBuild は、ビルドトリガーに Amazon EventBridge ルールを使用します EventBridge API を使用して、CodeBuild プロジェクトのビルドトリガーをプログラムで編集できます。詳細については、「[Amazon EventBridge API リファレンス](https://docs.aws.amazon.com/eventbridge/latest/APIReference/)」を参照してください。

# でビルドの詳細を表示する AWS CodeBuild
<a name="view-build-details"></a>

 AWS CodeBuild コンソール、、または AWS SDKs を使用して AWS CLI、CodeBuild によって管理されるビルドの詳細を表示できます。

**Topics**
+ [ビルドの詳細の表示 (コンソール)](#view-build-details-console)
+ [ビルドの詳細の表示 (AWS CLI)](#view-build-details-cli)
+ [ビルドの詳細を表示する (AWS SDKs)](#view-build-details-sdks)
+ [ビルドフェーズの移行](view-build-details-phases.md)

## ビルドの詳細の表示 (コンソール)
<a name="view-build-details-console"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. 次のいずれかを行います。
   + ナビゲーションペインで、[**Build history**] を選択します。ビルドのリストの [**Build run (ビルドの実行)**] 列で、ビルドのリンクを選択します。
   + ナビゲーションペインで、[**Build projects**] を選択します。ビルドプロジェクトのリストの [**名前**] 列で、ビルドプロジェクト名のリンクを選択します。次に、ビルドのリストの [**Build run (ビルドの実行)**] 列で、ビルドのリンクを選択します。
**注記**  
デフォルトでは、最新の 10 個のビルドまたはビルドプロジェクトのみ表示されます。さらに多くのビルドまたはビルドプロジェクトを表示するには、歯車アイコンを選択してから [**ページ毎ビルド数**] または [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

## ビルドの詳細の表示 (AWS CLI)
<a name="view-build-details-cli"></a>

 AWS CLI で を使用する方法の詳細については AWS CodeBuild、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。

**batch-get-builds** コマンドを実行します。

```
aws codebuild batch-get-builds --ids ids
```

次のプレースホルダを置き換えます。
+ *ids*: 必須の文字列。詳細を表示する 1 つ以上のビルド ID。複数のビルド ID を指定するには、各ビルド ID をスペースで区切ります。最大 100 のビルド ID を指定できます。ビルド ID のリストを取得するには、次のトピックを参照してください。
  + [ビルド ID の一覧表示 (AWS CLI)](view-build-list.md#view-build-list-cli)
  + [ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

たとえば、次のコマンドを実行するとします。

```
aws codebuild batch-get-builds --ids codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE my-other-project:813bb6c6-891b-426a-9dd7-6d8a3EXAMPLE
```

コマンドが正常に実行されると、「[要約されたビルド情報を表示するには](getting-started-overview.md#getting-started-cli-monitor-build-cli)」に示されているものと同様のデータが出力に表示されます。

## ビルドの詳細を表示する (AWS SDKs)
<a name="view-build-details-sdks"></a>

SDK AWS CodeBuild で を使用する方法の詳細については、「」を参照してください[AWS SDKsとツールのリファレンス](sdk-ref.md)。 AWS SDKs

# ビルドフェーズの移行
<a name="view-build-details-phases"></a>

ビルドは段階的に AWS CodeBuild 続行されます。



![\[CodeBuild のフェーズ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/build-phases.png)




**重要**  
`UPLOAD_ARTIFACTS` フェーズは、`BUILD` フェーズが失敗した場合でも必ず試行されます。

# でビルド IDsのリストを表示する AWS CodeBuild
<a name="view-build-list"></a>

 AWS CodeBuild コンソール AWS CLI、、または AWS SDKs を使用して、CodeBuild によって管理されるビルドIDs のリストを表示できます。

**Topics**
+ [ビルド ID の一覧表示 (コンソール)](#view-build-list-console)
+ [ビルド ID の一覧表示 (AWS CLI)](#view-build-list-cli)
+ [バッチビルド ID のリストを表示 (AWS CLI)](#view-batch-build-list-cli)
+ [ビルド IDs (AWS SDKsのリストを表示する](#view-build-list-sdks)

## ビルド ID の一覧表示 (コンソール)
<a name="view-build-list-console"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、[**Build history**] を選択します。
**注記**  
デフォルトでは、最新の 10 個のビルドのみ表示されます。さらに多くのビルドを表示するには、歯車アイコンを選択し、[**Builds per page (ページ毎ビルド数)**] で別の値を選択するか、前後の矢印を使用します。

## ビルド ID の一覧表示 (AWS CLI)
<a name="view-build-list-cli"></a>

CodeBuild AWS CLI で を使用する方法の詳細については、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。
+ **list-builds** コマンドを実行します。

  ```
  aws codebuild list-builds --sort-order sort-order --next-token next-token
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *sort-order*: ビルド ID の一覧表示方法を示すのに使用するオプションの文字列。有効な値は、`ASCENDING` および `DESCENDING` です。
  + *next-token*: オプションの文字列。以前の実行中に、リストに 100 を超える項目がある場合、最初の 100 項目だけが、*next token* と呼ばれる一意の文字列と共に返されます。リスト内の項目の次のバッチを取得するには、次のコマンドを再度実行し、次のトークンを呼び出しに追加します。リスト内のすべての項目を取得するには、次のトークンが返されなくなるまで、このコマンドを、以後のすべての次のトークンで実行し続けます。

  たとえば、次のコマンドを実行するとします。

  ```
  aws codebuild list-builds --sort-order ASCENDING
  ```

  次のような結果が出力に表示されることがあります。

  ```
  {
    "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
    "ids": [
      "codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE"
      "codebuild-demo-project:84a7f3d1-d40e-4956-b4cf-7a9d4EXAMPLE"
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:931d0b72-bf6f-4040-a472-5c707EXAMPLE"
    ]
  }
  ```

  このコマンドをもう一度実行します。

  ```
  aws codebuild list-builds --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
  ```

  次のような結果が出力に表示されることがあります。

  ```
  {
    "ids": [
      "codebuild-demo-project:49015049-21cf-4b50-9708-df115EXAMPLE",
      "codebuild-demo-project:543e7206-68a3-46d6-a4da-759abEXAMPLE",
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:c282f198-4582-4b38-bdc0-26f96EXAMPLE"
    ]
  }
  ```

## バッチビルド ID のリストを表示 (AWS CLI)
<a name="view-batch-build-list-cli"></a>

CodeBuild AWS CLI で を使用する方法の詳細については、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。
+ **list-build-batches** コマンドを実行します。

  ```
  aws codebuild list-build-batches --sort-order sort-order --next-token next-token
  ```

  上記のコマンドで、次のプレースホルダを置き換えます。
  + *sort-order*: バッチビルド ID の一覧表示方法を示すオプションの文字列です。有効な値は、`ASCENDING` および `DESCENDING` です。
  + *next-token*: オプションの文字列。以前の実行中に、リストに 100 を超える項目がある場合、最初の 100 項目だけが、*next token* と呼ばれる一意の文字列と共に返されます。リスト内の項目の次のバッチを取得するには、次のコマンドを再度実行し、次のトークンを呼び出しに追加します。リスト内のすべての項目を取得するには、次のトークンが返されなくなるまで、このコマンドを、以後のすべての次のトークンで実行し続けます。

  たとえば、次のコマンドを実行するとします。

  ```
  aws codebuild list-build-batches --sort-order ASCENDING
  ```

  次のような結果が出力に表示されることがあります。

  ```
  {
    "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
    "ids": [
      "codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE"
      "codebuild-demo-project:84a7f3d1-d40e-4956-b4cf-7a9d4EXAMPLE"
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:931d0b72-bf6f-4040-a472-5c707EXAMPLE"
    ]
  }
  ```

  このコマンドをもう一度実行します。

  ```
  aws codebuild list-build-batches --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
  ```

  次のような結果が出力に表示されることがあります。

  ```
  {
    "ids": [
      "codebuild-demo-project:49015049-21cf-4b50-9708-df115EXAMPLE",
      "codebuild-demo-project:543e7206-68a3-46d6-a4da-759abEXAMPLE",
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:c282f198-4582-4b38-bdc0-26f96EXAMPLE"
    ]
  }
  ```

## ビルド IDs (AWS SDKsのリストを表示する
<a name="view-build-list-sdks"></a>

SDK で CodeBuild を使用する方法の詳細については、「」を参照してください[AWS SDKsとツールのリファレンス](sdk-ref.md)。 AWS SDKs

# でビルドプロジェクトのビルド IDs のリストを表示する AWS CodeBuild
<a name="view-builds-for-project"></a>

 AWS CodeBuild コンソール、、または AWS SDKs を使用して AWS CLI、CodeBuild のビルドプロジェクトのビルド IDs のリストを表示できます。

**Topics**
+ [ビルドプロジェクトのビルド ID を一覧表示する (コンソール)](#view-builds-for-project-console)
+ [ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)](#view-builds-for-project-cli)
+ [ビルドプロジェクトのバッチビルド ID のリストを表示 (AWS CLI)](#view-batch-builds-for-project-cli)
+ [ビルドプロジェクト (AWS SDKs) のビルド IDs のリストを表示する](#view-builds-for-project-sdks)

## ビルドプロジェクトのビルド ID を一覧表示する (コンソール)
<a name="view-builds-for-project-console"></a>

1. CodeBuild コンソール ([https://console.aws.amazon.com/codebuild/](https://console.aws.amazon.com/codebuild/)) を開きます。

1. ナビゲーションペインで、[**Build projects**] を選択します。ビルドプロジェクトのリストの [**プロジェクト**] 列で、ビルドプロジェクトを選択します。

**注記**  
デフォルトでは、最新の 100 個のビルドまたはビルドプロジェクトのみが表示されます。さらに多くのビルドまたはビルドプロジェクトを表示するには、歯車アイコンを選択してから [**ページ毎ビルド数**] または [**Projects per page (ページ毎プロジェクト数)**] で別の値を選択するか、前後の矢印を使用します。

## ビルドプロジェクトのビルド ID を一覧表示する (AWS CLI)
<a name="view-builds-for-project-cli"></a>

 AWS CLI で を使用する方法の詳細については AWS CodeBuild、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。

次のように **list-builds-for-project** コマンドを実行します。

```
aws codebuild list-builds-for-project --project-name project-name --sort-order sort-order --next-token next-token
```

上記のコマンドで、次のプレースホルダを置き換えます。
+ *project-name*: ビルド ID を一覧表示するビルドプロジェクトの名前を示すのに必要な文字列。ビルドプロジェクトのリストを表示するには、「[ビルドプロジェクト名の一覧表示 (AWS CLI)](view-project-list.md#view-project-list-cli)」を参照してください。
+ *sort-order*: ビルド ID の一覧表示方法を示すのに使用するオプションの文字列。有効な値は、`ASCENDING` および `DESCENDING` です。
+ *next-token*: オプションの文字列。以前の実行中に、リストに 100 を超える項目がある場合、最初の 100 項目だけが、*next token* と呼ばれる一意の文字列と共に返されます。リスト内の項目の次のバッチを取得するには、次のコマンドを再度実行し、次のトークンを呼び出しに追加します。リスト内のすべての項目を取得するには、次のトークンが返されなくなるまで、次に続くトークンが返されるごとにこのコマンドを実行し続けます。

たとえば、このコマンドを次のように実行するとします。

```
aws codebuild list-builds-for-project --project-name codebuild-demo-project --sort-order ASCENDING
```

次のような結果が出力に表示されます。

```
{
  "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
  "ids": [
    "codebuild-demo-project:9b175d16-66fd-4e71-93a0-50a08EXAMPLE"
    "codebuild-demo-project:a9d1bd09-18a2-456b-8a36-7d65aEXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:fe70d102-c04f-421a-9cfa-2dc15EXAMPLE"
  ]
}
```

このコマンドをもう一度実行します。

```
aws codebuild list-builds-for-project --project-name codebuild-demo-project --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
```

次のような結果が出力に表示されます。

```
{
  "ids": [
    "codebuild-demo-project:98253670-7a8a-4546-b908-dc890EXAMPLE"
    "codebuild-demo-project:ad5405b2-1ab3-44df-ae2d-fba84EXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:f721a282-380f-4b08-850a-e0ac1EXAMPLE"
  ]
}
```

## ビルドプロジェクトのバッチビルド ID のリストを表示 (AWS CLI)
<a name="view-batch-builds-for-project-cli"></a>

 AWS CLI で を使用する方法の詳細については AWS CodeBuild、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。

次のように **list-build-batches-for-project** コマンドを実行します。

```
aws codebuild list-build-batches-for-project --project-name project-name --sort-order sort-order --next-token next-token
```

上記のコマンドで、次のプレースホルダを置き換えます。
+ *project-name*: ビルド ID を一覧表示するビルドプロジェクトの名前を示すのに必要な文字列。ビルドプロジェクトのリストを表示するには、「[ビルドプロジェクト名の一覧表示 (AWS CLI)](view-project-list.md#view-project-list-cli)」を参照してください。
+ *sort-order*: ビルド ID の一覧表示方法を示すのに使用するオプションの文字列。有効な値は、`ASCENDING` および `DESCENDING` です。
+ *next-token*: オプションの文字列。以前の実行中に、リストに 100 を超える項目がある場合、最初の 100 項目だけが、*next token* と呼ばれる一意の文字列と共に返されます。リスト内の項目の次のバッチを取得するには、次のコマンドを再度実行し、次のトークンを呼び出しに追加します。リスト内のすべての項目を取得するには、次のトークンが返されなくなるまで、次に続くトークンが返されるごとにこのコマンドを実行し続けます。

たとえば、このコマンドを次のように実行するとします。

```
aws codebuild list-build-batches-for-project --project-name codebuild-demo-project --sort-order ASCENDING
```

次のような結果が出力に表示されます。

```
{
  "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
  "ids": [
    "codebuild-demo-project:9b175d16-66fd-4e71-93a0-50a08EXAMPLE"
    "codebuild-demo-project:a9d1bd09-18a2-456b-8a36-7d65aEXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:fe70d102-c04f-421a-9cfa-2dc15EXAMPLE"
  ]
}
```

このコマンドをもう一度実行します。

```
aws codebuild list-build-batches-for-project --project-name codebuild-demo-project --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
```

次のような結果が出力に表示されます。

```
{
  "ids": [
    "codebuild-demo-project:98253670-7a8a-4546-b908-dc890EXAMPLE"
    "codebuild-demo-project:ad5405b2-1ab3-44df-ae2d-fba84EXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:f721a282-380f-4b08-850a-e0ac1EXAMPLE"
  ]
}
```

## ビルドプロジェクト (AWS SDKs) のビルド IDs のリストを表示する
<a name="view-builds-for-project-sdks"></a>

SDK AWS CodeBuild で を使用する方法の詳細については、「」を参照してください[AWS SDKsとツールのリファレンス](sdk-ref.md)。 AWS SDKs