

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

# のセルフマネージド Buildkite ランナー AWS CodeBuild
<a name="buildkite-runner"></a>

CodeBuild コンテナにセルフホスト型 Buildkite ランナーを設定して、Buildkite ワークフロージョブを処理するようにプロジェクトを構成できます。これは、CodeBuild プロジェクトを使用してウェブフックを設定し、CodeBuild マシンでホストされているセルフホスト型ランナーを使用するように Buildkite パイプラインワークフロー YAML ステップを更新することによって実行できます。

Buildkite ジョブを実行するように CodeBuild プロジェクトを設定する大まかな手順は次のとおりです。
+ CodeBuild コンソールに移動し、Buildkite ランナープロジェクトのランナータイプ設定を使用して CodeBuild プロジェクトを作成します。
+ Buildkite 組織に `job.scheduled` ウェブフックを追加します。
+ Buildkite パイプラインの YAML ステップを更新して、ビルド環境を設定します。

より詳細な手順については、「[チュートリアル: CodeBuild がホストする Buildkite ランナーを設定](sample-runner-buildkite.md)」を参照してください。この機能を使用すると、Buildkite ジョブが とネイティブに統合され、IAM AWS、、 AWS Secrets Manager、Amazon VPC などの機能を通じてセキュリティ AWS CloudTrailと利便性が提供されます。ARM ベースのインスタンスなど、最新のインスタンスタイプにアクセスできます。

# CodeBuild がホストする Buildkite ランナーについて
<a name="buildkite-runner-about"></a>

以下は、CodeBuild がホストする Buildkite ランナーに関する、よくある質問です。

## ラベルにイメージとインスタンスの上書きを含める必要があるのはいつですか。
<a name="buildkite-runner-about-overrides"></a>

イメージとインスタンスの上書きをラベルに含めることで、Buildkite ジョブごとに異なるビルド環境を指定できます。これは、複数の CodeBuild プロジェクトやウェブフックを作成しなくても実行できます。例えば、[Buildkite ジョブにマトリックス](https://buildkite.com/docs/pipelines/configure/workflows/build-matrix)を使用する必要がある場合に便利です。

```
agents:
  queue: "myQueue"
steps:
  - command: "echo \"Hello World\""
    agents:
      project: "codebuild-myProject"
      image: "{{matrix.os}}"
      instance-size: "{{matrix.size}}"
    matrix:
      setup:
        os:
          - "arm-3.0"
          - "al2-5.0"
        size:
          - "small"
          - "large"
```

## CodeBuild は Buildkite 内にウェブフックを自動的に作成できますか?
<a name="buildkite-runner-about-auto-create"></a>

現在のところ、Buildkite では、すべてのウェブフックをコンソールを使用して手動で作成する必要があります。「[チュートリアル: CodeBuild がホストする Buildkite ランナーを設定](sample-runner-buildkite.md)」のチュートリアルに従って、Buildkite コンソールで Buildkite ウェブフックを手動で作成することができます。

## CloudFormation を使用して Buildkite ウェブフックを作成できますか?
<a name="buildkite-runner-about-cloudformation"></a>

CloudFormation Buildkite ではコンソールを使用してウェブフックを手動で作成する必要があるため、 は現在 Buildkite ランナーウェブフックではサポートされていません。

## CodeBuild がホストする Buildkite ランナーの使用をサポートしているリージョンはどれですか?
<a name="buildkite-runner-about-regions"></a>

CodeBuild がホストする Buildkite ランナーは、すべての CodeBuild リージョンでサポートされています。CodeBuild が利用可能な AWS リージョンの詳細については、[AWS 「リージョン別のサービス](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。

# チュートリアル: CodeBuild がホストする Buildkite ランナーを設定
<a name="sample-runner-buildkite"></a>

このチュートリアルでは、CodeBuild プロジェクトを設定して Buildkite ジョブを実行する方法について説明します。CodeBuild で Buildkite を使用する方法の詳細については、「[のセルフマネージド Buildkite ランナー AWS CodeBuild](buildkite-runner.md)」を参照してください。<a name="sample-runner-buildkite-prerequisites"></a>

このチュートリアルを完了するには、まず以下を行う必要があります。
+ Buildkite 組織にアクセスできる。Buildkite アカウントと組織の設定の詳細については、この[入門チュートリアル](https://buildkite.com/docs/pipelines/getting-started)を参照してください。
+ セルフホスト型ランナーを使用するように設定された Buildkite パイプライン、クラスター、キューを作成する。これらのリソースをセットアップする方法の詳細については、「[Buildkite パイプラインセットアップチュートリアル](https://buildkite.com/docs/pipelines/create-your-own)」を参照してください。  
![\[Buildkite でプロジェクトを構築する\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-first.png)

## ステップ 1: Buildkite エージェントトークンを生成する
<a name="w2aac26c33c12c13b7"></a>

このステップでは、CodeBuild セルフホスト型ランナーの認証に使用されるエージェントトークンを Buildkite 内で生成します。このリソースの詳細については、「[Buildkite エージェントトークン](https://buildkite.com/docs/agent/v3/tokens)」を参照してください。

**Buildkite エージェントトークンを生成するには**

1. Buildkite クラスターで、**[エージェントトークン]** を選択し、**[新しいトークン]** を選択します。

1. トークンに説明を追加し、**[トークンを作成]** をクリックします。

1. エージェントトークン値は、後で CodeBuild プロジェクトのセットアップ中に使用するため、保存しておきます。  
![\[Buildkite のエージェントトークン\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-createtoken.png)

## ステップ 2: ウェブフックを使用して CodeBuild プロジェクトを作成する
<a name="sample-runner-buildkite-create-project"></a>

**ウェブフックを使用して CodeBuild プロジェクトを作成するには**

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)」を参照してください。
   +  **[プロジェクトの設定]** で、**[ランナープロジェクト]** を選択します。**[ランナー]** で、次のようにします。
     +  **[ランナープロバイダー]** で、**[Buildkite]** を選択します。
     + **[Buildkite エージェントトークン]** で、**[シークレットの作成ページを使用して新しいエージェントトークンを作成する]** を選択します。で、上記で生成した Buildkite エージェントトークンと等しいシークレット値 AWS Secrets Manager を持つ新しいシークレットを作成するように求められます。
     + (オプション) ジョブに CodeBuild マネージド認証情報を使用する場合は、**[Buildkite ソース認証情報オプション]** でジョブのソースリポジトリプロバイダーを選択し、アカウントに認証情報が設定されていることを確認します。さらに、Buildkite パイプラインで **HTTPS を使用したチェックアウト**が使用されていることを確認します。
**注記**  
ジョブのソースをプルするため、Buildkite によりビルド環境内でソース認証情報が求められます。使用可能なソース認証情報オプションについては、「[プライベートリポジトリへの Buildkite の認証](#sample-runner-buildkite-config)」を参照してください。
   + (オプション) **[環境]** で、次のようにします。
     + サポートされている **[環境イメージ]** と **[コンピューティング]** を選択します。

       Buildkite YAML ステップのラベルを使用して、イメージとインスタンスの設定を上書きするオプションがあることに注意してください。詳細については、「[ステップ 4: Buildkite パイプラインステップを更新する](#sample-runner-buildkite-update-pipeline)」を参照してください。
   + (オプション) **[Buildspec]** で、次のようにします。
     + `buildspec-override: "true"` がラベルとして追加されない限り、buildspec は無視されます。代わりに、CodeBuild は、セルフホスト型ランナーを設定するコマンドを使用するように上書きします。
**注記**  
CodeBuild は、Buildkite セルフホスト型ランナービルドの buildspec ファイルをサポートしていません。インライン buildspec の場合、CodeBuild マネージドソース認証情報を設定している場合は、buildspec で [git-credential-helper](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper) を有効にする必要があります。

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

1. **[ウェブフックの作成]** ポップアップから **[ペイロードの URL]** と **[シークレット]** の値を保存します。ポップアップの手順に従って新しい Buildkite 組織のウェブフックを作成するか、次のセクションに進みます。

## ステップ 3: Buildkite 内で CodeBuild ウェブフックを作成する
<a name="sample-runner-buildkite-codebuild-webhook"></a>

このステップでは、CodeBuild ウェブフックの **[ペイロード URL]** と **[シークレット]** の値を使用して、Buildkite 内に新しいウェブフックを作成します。このウェブフックは、有効な Buildkite ジョブの開始時に CodeBuild 内でビルドをトリガーするために使用されます。

**Buildkite で新しいウェブフックを作成するには**

1. Buildkite 組織の **[設定]** ページに移動します。

1. **[統合]** で、**[通知サービス]** を選択します。

1. **[ウェブフック]** ボックスの横にある **[追加]** を選択します。**[ウェブフック通知の追加]** ページで、次の設定を使用します。

   1. **[ウェブフックの URL]** で、保存された **[ペイロードの URL]** 値を追加します。

   1. **[トークン]** で、**[X-Buildkite-Token としてトークンを送信]** が選択されていることを確認します。ウェブフックの **[シークレット]** 値を **[トークン]** フィールドに追加します。

   1. **[X-Buildkite-Token としてトークンを送信]** が選択されていることを確認します。ウェブフックの **[シークレット]** 値を **[トークン]** フィールドに追加します。

   1. **[イベント]** で、`job.scheduled` ウェブフックイベントを選択します。

   1. (オプション) **[パイプライン]** では、オプションで特定のパイプラインのビルドのみをトリガーするように選択できます。

1. **[ウェブフック通知の追加]** を選択します。

## ステップ 4: Buildkite パイプラインステップを更新する
<a name="sample-runner-buildkite-update-pipeline"></a>

このステップでは、Buildkite パイプラインのステップを更新して、必要なラベルとオプションの上書きを追加します。サポートされているラベル上書きの詳細なリストについては、「[CodeBuild がホストする Buildkite ランナーでサポートされているラベルの上書き](buildkite-runner-update-labels.md)」を参照してください。

**パイプラインステップを更新する**

1. Buildkite パイプラインを選択して、**[設定]** を選択し、**[ステップ]** を選択して、Buildkite パイプラインステップページに移動します。

   まだの場合は、**[YAML ステップに変換]** を選択します。  
![\[YAML を更新するステップ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-steps.png)

1. 少なくとも、CodeBuild パイプラインの名前を参照する [Buildkite エージェントタグ](https://buildkite.com/docs/agent/v3/cli-start#agent-targeting)を指定する必要があります。Buildkite ジョブの AWS関連設定を特定の CodeBuild プロジェクトにリンクするには、プロジェクト名が必要です。YAML にプロジェクト名を含めることで、CodeBuild は正しいプロジェクト設定でジョブを呼び出すことができます。

   ```
   agents:
     project: "codebuild-<project name>"
   ```

   以下は、プロジェクトラベルタグのみを含む Buildkite パイプラインステップの例です。

   ```
   agents:
     project: "codebuild-myProject"
   steps:
     - command: "echo \"Hello World\""
   ```

   ラベル内のイメージとコンピューティングタイプを上書きすることもできます。使用可能なイメージのリストについては、「[CodeBuild がホストする Buildkite ランナーでサポートされているコンピューティングイメージ](buildkite-runner-update-yaml.images.md)」を参照してください。ラベル内のコンピューティングタイプとイメージは、プロジェクトの環境設定を上書きします。CodeBuild EC2 または Lambda コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

   ```
   agents:
     project: "codebuild-<project name>"
     image: "<environment-type>-<image-identifier>"
     instance-size: "<instance-size>"
   ```

   イメージサイズとインスタンスサイズの上書きを含む Buildkite パイプラインステップの例を次に示します。

   ```
   agents:
     project: "codebuild-myProject"
     image: "arm-3.0"
     instance-size: "small"
   steps:
     - command: "echo \"Hello World\""
   ```

   ラベル内のビルドに使用するフリートを上書きできます。これにより、プロジェクトで設定されたフリート設定が上書きされ、指定されたフリートが使用されます。詳細については、「[リザーブドキャパシティフリートでビルドを実行](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html)」を参照してください。

   Amazon EC2 コンピューティングビルドのフリート設定を上書きするには、次の構文を使用します。

   ```
   agents:
     project: "codebuild-<project name>"
     fleet: "<fleet-name>"
   ```

   ビルドに使用されるフリートとイメージの両方を上書きするには、次の構文を使用します。

   ```
   agents:
     project: "codebuild-<project name>"
     fleet: "<fleet-name>"
     image: "<environment-type>-<image-identifier>"
   ```

   フリートとイメージの上書きを含む Buildkite パイプラインステップの例を次に示します。

   ```
   agents:
     project: "codebuild-myProject"
     fleet: "myFleet"
     image: "arm-3.0"
   steps:
     - command: "echo \"Hello World\""
   ```

1. セルフホスト型 Buildkite ランナーのビルド中にインライン buildspec コマンドを実行することを選択できます (詳細については、「[INSTALL、PRE\$1BUILD、POST\$1BUILD フェーズで buildspec コマンドを実行](sample-runner-buildkite-buildspec.md)」を参照してください)。Buildkite セルフホスト型ランナーのビルド中に CodeBuild ビルドが buildspec コマンドを実行するように指定するには、次の構文を使用します。

   ```
   agents:
     project: "codebuild-<project name>"
     buildspec-override: "true"
   ```

   buildspec の上書きを使用する Buildkite パイプラインの例を次に示します。

   ```
   agents:
     project: "codebuild-myProject"
     buildspec-override: "true"
   steps:
     - command: "echo \"Hello World\""
   ```

1. 必要に応じて、CodeBuild がサポートするラベル以外のラベルを提供できます。これらのラベルは、ビルドの属性を上書きする目的で無視されますが、ウェブフックリクエストは失敗しません。例えば、`myLabel: “testLabel"` をラベルとして追加しても、ビルドの実行は妨げられません。

## ステップ 5: 結果を確認する
<a name="sample-runner-buildkite-verify"></a>

Buildkite ジョブがパイプラインで開始されるたびに、CodeBuild は Buildkite ウェブフックを介して `job.scheduled` ウェブフックイベントを受け取ります。Buildkite ビルド内のジョブごとに、CodeBuild はエフェメラル Buildkite ランナーを実行するビルドを開始します。ランナーには、単一の Buildkite ジョブを実行する役割があります。ジョブが完了すると、ランナーおよび関連付けられたビルドプロセスは即座に終了します。

ワークフロージョブログを表示するには、Buildkite パイプラインに移動し、最新のビルドを選択します (**[新しいビルド]** を選択して新しいビルドをトリガーできます)。各ジョブに関連付けられた CodeBuild ビルドが開始されてジョブが取得されると、Buildkite コンソールにジョブのログが表示されます。

![\[結果を確認します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-log.png)


## プライベートリポジトリへの Buildkite の認証
<a name="sample-runner-buildkite-config"></a>

Buildkite パイプライン内にプライベートリポジトリが設定されている場合、Buildkite はプライベートリポジトリからプルするためにセルフホスト型ランナーに認証情報を供給しないため、Buildkite はリポジトリをプルするために[ビルド環境内で追加のアクセス許可](https://buildkite.com/docs/agent/v3/github-ssh-keys)を必要とします。Buildkite セルフホスト型ランナーエージェントを外部プライベートソースリポジトリに対して認証するには、次のいずれかのオプションを使用できます。

**CodeBuild で認証するには**

CodeBuild は、サポートされているソースタイプのマネージド認証情報処理を行います。CodeBuild ソース認証情報を使用してジョブのソースリポジトリをプルするには、次の手順を使用します。

1. CodeBuild コンソールで、**[プロジェクトの編集]** に移動するか、「[ステップ 2: ウェブフックを使用して CodeBuild プロジェクトを作成する](#sample-runner-buildkite-create-project)」のステップを使用して新しい CodeBuild プロジェクトを作成します。

1. **[Buildkite ソース認証情報オプション]** で、ジョブのソースリポジトリプロバイダーを選択します。

   1. アカウントレベルの CodeBuild 認証情報を使用する場合は、それらが正しく設定されていることを確認します。さらに、プロジェクトにインライン buildspec が設定されている場合は、[git-credential-helper](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper) が有効になっていることを確認します。

   1. プロジェクトレベルの CodeBuild 認証情報を使用する場合は、**[このプロジェクトの上書き認証情報のみを使用する]** を選択し、プロジェクトの認証情報を設定します。

1. Buildkite パイプライン設定で、**[リポジトリの設定]** に移動します。ソースリポジトリのチェックアウト設定を **[HTTPS を使用してチェックアウト]** に設定する  
![\[結果を確認します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-repo-https.png)

**Buildkite シークレットで認証するには**

Buildkite には、ssh キーを使用して外部ソースリポジトリに対してセルフホスト型ランナーを認証するために使用できる [ssh-checkout プラグイン](https://github.com/buildkite-plugins/git-ssh-checkout-buildkite-plugin)が維持されます。キー値は [Buildkite シークレット](https://buildkite.com/docs/pipelines/security/secrets/buildkite-secrets)として保存され、プライベートリポジトリをプルしようとすると Buildkite セルフホスト型ランナーエージェントによって自動的に取得されます。Buildkite パイプラインの ssh-checkout プラグインを設定するには、次のステップを使用します。

1. E メールアドレスを使用してプライベートおよびパブリック SSH キーを生成します。例: `ssh-keygen -t rsa -b 4096 -C "myEmail@address.com"`

1. パブリックキーをプライベートソースリポジトリに追加します。例えば、[このガイド](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)に従って GitHub アカウントにキーを追加できます。

1. Buildkite クラスターに[新しい SSH キーシークレット](https://buildkite.com/docs/pipelines/hosted-agents/code-access#private-repositories-with-other-providers-add-the-ssh-key-secret)を追加します。Buildkite クラスター内で、**[シークレット]** → **[新しいシークレット]** を選択します。**[キー]** フィールドにシークレットの名前を追加し、**[値]** フィールドにプライベート SSH キーを追加します。  
![\[結果を確認します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-secret.png)

1. Buildkite パイプライン内で、リポジトリ設定に移動し、**SSH** を使用するようにチェックアウトを設定します。  
![\[結果を確認します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-repo.png)

1. パイプラインの YAML ステップを更新して、`git-ssh-checkout` プラグインを使用します。たとえば、次のパイプライン YAML ファイルでは、上記の Buildkite シークレットキーを使用してチェックアウトアクションを使用します。

   ```
   agents:
     project: "codebuild-myProject"
   steps:
     - command: "npm run build"
       plugins:
         - git-ssh-checkout#v0.4.1:
             ssh-secret-key-name: 'SOURCE_SSH_KEY'
   ```

1. CodeBuild 内で Buildkite セルフホスト型ランナージョブを実行すると、プライベートリポジトリをプルするときに、設定されたシークレット値が Buildkite により自動的に使用されるようになりました。

## ランナー設定オプション
<a name="sample-buildkite-runner-auth"></a>

プロジェクト設定で次の環境変数を指定して、セルフホスト型ランナーのセットアップ設定を変更できます。
+ `CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN`: CodeBuild は、Buildkite セルフホスト型ランナーエージェントを登録するために、この環境変数の値として設定されたシークレット値を AWS Secrets Manager から取得します。この環境変数はタイプ `SECRETS_MANAGER` でなければならず、値は Secrets Manager のシークレットの名前である必要があります。Buildkite エージェントトークン環境変数は、すべての Buildkite ランナープロジェクトに必要です。
+ `CODEBUILD_CONFIG_BUILDKITE_CREDENTIAL_DISABLE`: デフォルトでは、CodeBuild はアカウントまたはプロジェクトレベルのソース認証情報をビルド環境にロードします。これらの認証情報は、Buildkite エージェントによってジョブのソースリポジトリをプルするために使用されます。この動作を無効にするには、値を `true` に設定してこの環境変数をプロジェクトに追加します。これにより、ソース認証情報がビルド環境にロードされなくなります。

# INSTALL、PRE\$1BUILD、POST\$1BUILD フェーズで buildspec コマンドを実行
<a name="sample-runner-buildkite-buildspec"></a>

デフォルトでは、CodeBuild はセルフホスト型 Buildkite ランナービルドを実行するときに buildspec コマンドを無視します。ビルド中に buildspec コマンドを実行するには、

```
buildspec-override: "true"
```

 を、ラベルのサフィックスとして追加します。

```
agents:
  project: "codebuild-<project name>"
  buildspec-override: "true"
```

このコマンドを使用すると、CodeBuild はコンテナのプライマリソースフォルダに `buildkite-runner` というフォルダを作成します。Buildkite ランナーが `BUILD` フェーズ中に起動すると、ランナーはその `buildkite-runner` ディレクトリで実行されます。

セルフホスト型 Buildkite ビルドで buildspec の上書きを使用する場合、いくつかの制限があります。
+ Buildkite エージェントでは、ジョブのソースリポジトリをプルするために、ソース認証情報がビルド環境内に存在する必要があります。認証に CodeBuild ソース認証情報を使用する場合は、buildspec で `git-credential-helper` を有効にする必要があります。例えば、次の buildspec を使用して Buildkite ビルドで `git-credential-helper` を有効にできます。

  ```
  version: 0.2
  env:
    git-credential-helper: yes
  phases:
    pre_build:
      commands:
         - echo "Hello World"
  ```
+ CodeBuild は、セルフホスト型ランナーが `BUILD` フェーズで実行されるため、`BUILD` フェーズ中は buildspec コマンドを実行しません。
+ CodeBuild は、Buildkite ランナービルドの buildspec ファイルをサポートしていません。Buildlkite セルフホスト型ランナーでは、インライン buildspec のみがサポートされます
+ ビルドコマンドが `PRE_BUILD` または `INSTALL` フェーズで失敗した場合、CodeBuild はセルフホスト型ランナーを起動せず、Buildkite ジョブは手動でキャンセルする必要があります。

# Buildkite ランナーをプログラムによりセットアップする
<a name="sample-runner-buildkite-CLI"></a>

Buildkite ランナープロジェクトをプログラムにより設定するには、次のリソースを設定する必要があります。

**Buildkite ランナーをプログラムにより作成するには**

1. Buildkite エージェントトークンを作成し、トークンを AWS Secrets Manager内にプレーンテキストで保存します。

1. 任意の設定で CodeBuild プロジェクトをセットアップします。次の追加属性を設定する必要があります。

   1. `CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN` という名前の環境値、タイプ `SECRETS_MANAGER`、および Buildkite クラスターに関連付けられた Buildkite エージェントトークンと等しい値。

   1. `NO_SOURCE` と等しいソースタイプ

   1. プロジェクトのサービスロールのステップ 1 で作成したシークレットにアクセスするためのアクセス許可

   例えば、CLI で次のコマンドを使用して有効な Buildkite ランナープロジェクトを作成できます。

   ```
   aws codebuild create-project \
   --name buildkite-runner-project \
   --source "{\"type\": \"NO_SOURCE\",\"buildspec\":\"\"}" \
   --environment "{\"image\":\"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"type\":\"LINUX_CONTAINER\",\"computeType\":\"BUILD_GENERAL1_MEDIUM\",\"environmentVariables\":[{\"name\":\"CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN\",\"type\":\"SECRETS_MANAGER\",\"value\":\"<buildkite-secret-name>\"}]}" \
   --artifacts "{\"type\": \"NO_ARTIFACTS\"}" \
   --service-role <service-role>
   ```

1. ステップ 2 で作成したプロジェクトに Buildkite ランナーウェブフックを作成します。ウェブフックを作成するときは、次の設定オプションを使用する必要があります。

   1. **build-type** は `RUNNER_BUILDKITE_BUILD` と等しくなければなりません

   1. タイプが `EVENT` でパターンが `WORKFLOW_JOB_QUEUED` に等しいフィルター 

   例えば、CLI で次のコマンドを使用して有効な Buildkite ランナーウェブフックを作成できます。

   ```
   aws codebuild create-webhook \
   --project-name buildkite-runner-project \
   --filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]" \
   --build-type RUNNER_BUILDKITE_BUILD
   ```

1. `create-webhook` 呼び出しによって返された **[ペイロード URL]** と **[シークレット]** の値を保存し、認証情報を使用して Buildkite コンソール内にウェブフックを作成します。このリソースのセットアップ方法については、「[チュートリアル: CodeBuild がホストする Buildkite ランナーを設定](sample-runner-buildkite.md)」の「ステップ 3: Buildkite 内で CodeBuild ウェブフックを作成する」を参照してください。

# 失敗したビルドまたはハングしたジョブのウェブフックのトラブルシューティング
<a name="buildkite-runner-troubleshoot-webhook"></a>

 **問題: ** 

問題: [チュートリアル: CodeBuild がホストする Buildkite ランナーを設定](sample-runner-buildkite.md) でセットアップしたウェブフックが機能していないか、ワークフロージョブが Buildkite でハングしています。

 **考えられる原因: ** 
+ ウェブフックの **job.scheduled** イベントがビルドのトリガーに失敗している可能性があります。**[レスポンス]** ログを確認して、レスポンスまたはエラーメッセージを表示します。
+ Buildkite セルフホスト型ランナーエージェントを開始してジョブを処理する前に、CodeBuild ビルドが失敗します。

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

失敗した Buildkite ウェブフックイベントをデバッグするには、次のようにします。

1. Buildkite 組織設定で、**[通知サービス]** に移動し、CodeBuild ウェブフックを選択して **[リクエストログ]** を見つけます。

1. スタックした Buildkite ジョブに関連付けられた `job.scheduled` ウェブフックイベントを見つけます。ウェブフックペイロード内のジョブ ID フィールドを使用して、ウェブフックイベントを Buildkite ジョブに関連付けることができます。

1. **[レスポンス]** タブを選択し、レスポンス本文を確認します。**[レスポンス]** ステータスコードが `200` であり、**[レスポンス]** 本文に予期しないメッセージが含まれていないことを確認します。  
![\[ウェブフックのレスポンス。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/buildkite-request.png)

# ウェブフックのアクセス許可に関する問題のトラブルシューティング
<a name="buildkite-runner-troubleshoot-webhook-permissions"></a>

 **問題: ** 

アクセス許可に問題があるため、Buildkite ジョブはジョブのソースリポジトリのチェックアウトに失敗します。

 **考えられる原因: ** 
+ CodeBuild に、ジョブのソースリポジトリをチェックアウトするための十分なアクセス許可がありません。
+ パイプラインのリポジトリ設定が、CodeBuild マネージド認証情報の SSH を使用してチェックアウトするように設定されています。

 **推奨される解決策: ** 
+ CodeBuild に、ジョブのソースリポジトリをチェックアウトするための十分なアクセス許可が設定されていることを確認します。さらに、CodeBuild プロジェクトのサービスロールに、設定されたソースアクセス許可オプションにアクセスするための十分なアクセス許可があることを確認します。
+ CodeBuild マネージドソースリポジトリ認証情報を使用している場合は、HTTPS を使用してチェックアウトを使用するように Buildkite パイプラインが設定されていることを確認します。

# CodeBuild がホストする Buildkite ランナーでサポートされているラベルの上書き
<a name="buildkite-runner-update-labels"></a>

Buildkite パイプラインステップのエージェントタグラベルでは、セルフマネージド型ランナーのビルドを変更するさまざまなラベルの上書きを指定できます。CodeBuild で認識されないビルドは無視されますが、ウェブフックリクエストは失敗しません。例えば、次のワークフロー YAML には、イメージ、インスタンスサイズ、フリート、および buildspec の上書きが含まれます。

```
agents:
  queue: "myQueue"
steps:
  - command: "echo \"Hello World\""
    agents:
      project: "codebuild-myProject"
      image: "{{matrix.os}}"
      instance-size: "{{matrix.size}}"
      buildspec-override: "true"
    matrix:
      setup:
        os:
          - "arm-3.0"
          - "al2-5.0"
        size:
          - "small"
          - "large"
```

 `project:codebuild-<project-name>` (必須)
+ 例: `project: "codebuild-myProject"`
+ すべての Buildkite パイプラインステップ設定に必須です。*<project name>* は、セルフホスト型ランナーウェブフックが設定されているプロジェクトの名前と同じである必要があります。

`queue: "<queue-name>"`
+ 例: `queue: "<queue-name>"`
+ Buildkite ジョブを特定のキューにルーティングするために使用されます。詳細については、「[Buildkite エージェントキュータグ](https://buildkite.com/docs/agent/v3/cli-start#the-queue-tag)」を参照してください。

 `image: "<environment-type>-<image-identifier>"` 
+ 例: `image: "arm-3.0"`
+ 選別されたイメージを使用したセルフホスト型ランナーのビルドの開始時に使用するイメージと環境タイプを上書きします。サポートされている値については、「[CodeBuild がホストする Buildkite ランナーでサポートされているコンピューティングイメージ](buildkite-runner-update-yaml.images.md)」を参照してください。

  1. カスタムイメージで使用されるイメージと環境タイプを上書きするには、「`image: "custom-<environment-type>-<custom-image-identifier>"`」を使用します。

  1. 例: 

     ```
     image:
           "custom-arm-public.ecr.aws/codebuild/amazonlinux-aarch64-standard:3.0"
     ```
**注記**  
カスタムイメージがプライベートレジストリに存在する場合は、CodeBuild プロジェクトで適切なレジストリ認証情報を設定する必要があります。

`instance-size: "<instance-size>"`
+ 例: `instance-size: "medium"`
+ セルフホスト型ランナーのビルドの開始時に使用するインスタンスタイプを上書きします。サポートされている値については、「[CodeBuild がホストする Buildkite ランナーでサポートされているコンピューティングイメージ](buildkite-runner-update-yaml.images.md)」を参照してください。

`fleet: "<fleet-name>"`
+ 例: `fleet: "myFleet"`
+ 指定されたフリートを使用するために、プロジェクトに設定されたフリート設定を上書きします。詳細については、「[リザーブドキャパシティフリートでビルドを実行](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html)」を参照してください。

`buildspec-override: "<boolean>"`
+ 例: `buildspec-override: "true"`
+ `true` に設定されている場合、ビルドが `INSTALL`、`PRE_BUILD`、および `POST_BUILD` フェーズで buildspec コマンドを実行できるようにします。

# CodeBuild がホストする Buildkite ランナーでサポートされているコンピューティングイメージ
<a name="buildkite-runner-update-yaml.images"></a>

「[のセルフマネージド Buildkite ランナー AWS CodeBuild](buildkite-runner.md)」で設定したラベルでは、最初の 3 つの列の値を使用して Amazon EC2 環境設定を上書きできます。CodeBuild では、次の Amazon EC2 コンピューティングイメージが用意されています。詳細については、以下を参照してください。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/buildkite-runner-update-yaml.images.html)

さらに、次の値を使用して Lambda 環境設定を上書きできます。CodeBuild Lambda コンピューティングの詳細については、「[AWS Lambda コンピューティングでビルドを実行する](lambda.md)」を参照してください。CodeBuild は、次の Lambda コンピューティングイメージをサポートしています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/buildkite-runner-update-yaml.images.html)

詳細については、「[ビルド環境のコンピューティングモードおよびタイプ](build-env-ref-compute-types.md)」および「[CodeBuild に用意されている Docker イメージ](build-env-ref-available.md)」を参照してください。