でビルドプロジェクトを作成する AWS CodeBuild - AWS CodeBuild

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

でビルドプロジェクトを作成する AWS CodeBuild

AWS CodeBuild コンソール、 AWS CLI、または AWS SDKs を使用してビルドプロジェクトを作成できます。

前提条件

ビルドプロジェクトを作成する前に、ビルドを計画する の質問に回答します。

ビルドプロジェクトの作成 (コンソール)

https://console.aws.amazon.com/codesuite/Codebuild/home で AWS CodeBuild コンソールを開きます。

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

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

次のセクションに入力します。完了したら、ページの下部にある [Create build project] (ビルドプロジェクトを作成する) を選択します。

プロジェクトの設定

[Project name] (プロジェクト名)

このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、各 AWS アカウントで一意である必要があります。

説明

また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

ビルドバッジ

(オプション)[Enable build badge] (ビルドバッジを有効にする) を選択すると、プロジェクトのビルドステータスが表示可能および埋め込み可能になります。詳細については、「ビルドバッジサンプル」を参照してください。

注記

ソースプロバイダーが Amazon S3 の場合、ビルドバッジは適用されません。

同時ビルド制限を有効にする

(オプション) このプロジェクトで同時ビルド数を制限するには、次の手順を実行します。

  1. [Restrict number of concurrent builds this project can start] (このジョブで許可される同時実行の最大数を設定) を選択します。

  2. [Concurrent build limit] (同時ビルド制限) で、このジョブで許可される同時実行の最大数を設定します。この制限は、アカウントに設定された同時ビルド制限より大きくすることはできません。アカウント制限を超える数値を入力しようとすると、エラーメッセージが表示されます。

新しいビルドは、現在のビルド数がこの制限以下の場合にのみ開始されます。現在のビルドカウントがこの制限を満たす場合、新しいビルドはスロットルされ、実行されません。

追加情報

(オプション) タグ には、サポート AWS サービスで使用するタグの名前と値を入力します。[Add row] を使用して、タグを追加します。最大 50 個のタグを追加できます。

ソース

ソースプロバイダー

ソースコードプロバイダーのタイプを選択します。次のリストを使用して、ソースプロバイダーに関する適切な選択を行います。

注記

CodeBuild は Bitbucket Server をサポートしていません。

Amazon S3
バケット

ソースコードが格納されている入力バケットの名前を選択します。

S3 オブジェクトキーまたは S3 フォルダ

ファイルの名前ZIPまたはソースコードを含むフォルダへのパスを入力します。S3 バケットの中身をすべてダウンロードするには、スラッシュ記号 (/) を入力します。

ソースバージョン

入力ファイルのビルドを表すオブジェクトのバージョン IDを入力。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

CodeCommit
リポジトリ

使用するリポジトリを選択します。

参照タイプ

[Branch] (ブランチ) または [Git tag] (Git タグ) を選択するか、[Commit ID] (コミット ID) を入力して、ソースコードのバージョンを指定します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

Git サブモジュール

リポジトリに Git サブモジュールを含める場合は、[Git サブモジュールを使用する] を選択します。

Bitbucket
認証情報

デフォルトのソース認証情報またはカスタムソース認証情報を選択し、手順に従ってデフォルトのソース認証情報を管理するか、ソース認証情報をカスタマイズします。

接続タイプ

CodeConnectionsに接続するにはOAuth、、アプリパスワード、、または個人アクセストークンを選択します CodeBuild。

Connection

Bitbucket 接続または Secrets Manager シークレットを選択して、指定した接続タイプを介して接続します。

リポジトリ

Bitbucket アカウントまたはパブリックリポジトリでリポジトリを選択し、リポジトリ を入力しますURL。

ソースバージョン

ブランチ、コミット ID、タグあるいはリファレンスとコミット ID を入力します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

[Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

Git サブモジュール

リポジトリに Git サブモジュールを含める場合は、[Git サブモジュールを使用する] を選択します。

ビルドステータス

ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) を選択します。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

[Status context] (ステータスコンテキスト) に、Bitbucket コミットステータスの name パラメータに使用する値を記入します。詳細については、Bitbucket APIドキュメントのビルドを参照してください。

ターゲット にはURL、Bitbucket コミットステータスの urlパラメータに使用する値を入力します。詳細については、Bitbucket APIドキュメントのビルドを参照してください。

webhook によってトリガーされたビルドのステータスは常にソースプロバイダーにレポートされます。コンソールまたはソースプロバイダーに報告されたAPI呼び出しから開始されたビルドのステータスを取得するには、この設定を選択する必要があります。

プロジェクトのビルドが webhook によってトリガーされた場合、この設定への変更を有効にするには、新しいコミットをリポジトリにプッシュする必要があります。

プライマリソースウェブフックイベント で、コード変更がこのリポジトリにプッシュされるたびにソースコードを構築する場合は、コード変更がこのリポジトリにプッシュされるたびに再構築を選択します。 CodeBuild Webhook およびフィルターグループの詳細については、「Bitbucket ウェブフックイベント」を参照してください。

GitHub
認証情報

デフォルトのソース認証情報またはカスタムソース認証情報を選択し、手順に従ってデフォルトのソース認証情報を管理するか、ソース認証情報をカスタマイズします。

接続タイプ

GitHub App OAuth、または Personal アクセストークンを選択して に接続します CodeBuild。

Connection

指定された GitHub 接続タイプを介して接続する接続または Secrets Manager シークレットを選択します。

リポジトリ

GitHub アカウント 、パブリックリポジトリ 、またはスコープ付きウェブフックでリポジトリ を選択し、リポジトリ を入力しますURL。 GitHub

ソースバージョン

ブランチ、コミット ID、タグあるいはリファレンスとコミット ID を入力します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

[Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

Git サブモジュール

リポジトリに Git サブモジュールを含める場合は、[Git サブモジュールを使用する] を選択します。

ビルドステータス

ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) を選択します。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

ステータスコンテキスト には、 GitHub コミットステータスの contextパラメータに使用する値を入力します。詳細については、 デ GitHub ベロッパーガイドの「コミットステータスの作成」を参照してください。

ターゲット URLには、 GitHub コミットステータスの target_urlパラメータに使用する値を入力します。詳細については、 デ GitHub ベロッパーガイドの「コミットステータスの作成」を参照してください。

webhook によってトリガーされたビルドのステータスは常にソースプロバイダーにレポートされます。コンソールまたはソースプロバイダーに報告されたAPI呼び出しから開始されたビルドのステータスを取得するには、この設定を選択する必要があります。

プロジェクトのビルドが webhook によってトリガーされた場合、この設定への変更を有効にするには、新しいコミットをリポジトリにプッシュする必要があります。

プライマリソースウェブフックイベント で、コード変更がこのリポジトリにプッシュされるたびにソースコードを構築する場合は、コード変更がこのリポジトリにプッシュされるたびに再構築を選択します。 CodeBuild Webhook およびフィルターグループの詳細については、「GitHub Webhook イベント」を参照してください。

GitHub Enterprise Server
認証情報

デフォルトのソース認証情報またはカスタムソース認証情報を選択し、手順に従ってデフォルトのソース認証情報を管理するか、ソース認証情報をカスタマイズします。

接続タイプ

CodeConnections または個人用アクセストークンを選択して に接続します CodeBuild。

Connection

GitHub エンタープライズ接続または Secrets Manager シークレットを選択して、指定した接続タイプを介して接続します。

リポジトリ

GitHub エンタープライズアカウントまたはエンタープライズスコープのウェブフックでリポジトリ を選択し、リポジトリ を入力しますURL。 GitHub

ソースバージョン

プルリクエスト、ブランチ、コミット ID、コミット ID、参照、およびコミット ID を入力します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

[Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

Git サブモジュール

リポジトリに Git サブモジュールを含める場合は、[Git サブモジュールを使用する] を選択します。

ビルドステータス

ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) を選択します。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

ステータスコンテキスト には、 GitHub コミットステータスの contextパラメータに使用する値を入力します。詳細については、 デ GitHub ベロッパーガイドの「コミットステータスの作成」を参照してください。

ターゲット URLには、 GitHub コミットステータスの target_urlパラメータに使用する値を入力します。詳細については、 デ GitHub ベロッパーガイドの「コミットステータスの作成」を参照してください。

webhook によってトリガーされたビルドのステータスは常にソースプロバイダーにレポートされます。コンソールまたはソースプロバイダーに報告されたAPI呼び出しから開始されたビルドのステータスを取得するには、この設定を選択する必要があります。

プロジェクトのビルドが webhook によってトリガーされた場合、この設定への変更を有効にするには、新しいコミットをリポジトリにプッシュする必要があります。

安全でない SSL

GitHub エンタープライズプロジェクトリポジトリへの接続中にSSL警告を無視するには、安全でないを有効にするSSLを選択します。

プライマリソースウェブフックイベント で、コード変更がこのリポジトリにプッシュされるたびにソースコードを構築する場合は、コード変更がこのリポジトリにプッシュされるたびに再構築を選択します。 CodeBuild Webhook およびフィルターグループの詳細については、「GitHub Webhook イベント」を参照してください。

GitLab
認証情報

デフォルトのソース認証情報またはカスタムソース認証情報を選択し、手順に従ってデフォルトのソース認証情報を管理するか、ソース認証情報をカスタマイズします。

接続タイプ

CodeConnections は GitLab への接続に使用されます CodeBuild。

Connection

経由で接続する GitLab 接続を選択します CodeConnections。

リポジトリ

使用するリポジトリを選択します。

ソースバージョン

プルリクエスト ID、ブランチ、コミット ID、タグ、またはリファレンスとコミット ID を入力します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

[Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

ビルドステータス

ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) を選択します。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

GitLab Self Managed
認証情報

デフォルトのソース認証情報またはカスタムソース認証情報を選択し、手順に従ってデフォルトのソース認証情報を管理するか、ソース認証情報をカスタマイズします。

接続タイプ

CodeConnections は、 GitLab セルフマネージドを に接続するために使用されます CodeBuild。

Connection

経由で接続する GitLab セルフマネージド接続を選択します CodeConnections。

リポジトリ

使用するリポジトリを選択します。

ソースバージョン

プルリクエスト ID、ブランチ、コミット ID、タグ、またはリファレンスとコミット ID を入力します。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

注記

811dd1ba1aba14473856cee38308caed7190c0d や などIDs、コミット とは見えない Git ブランチ名を選択することをお勧めします5392f7。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

Git クローンの深度

[Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

ビルドステータス

ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) を選択します。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

環境

プロビジョニングモデル

次のいずれかを行います。

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

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

詳細については、予約済みキャパシティフリートでビルドを実行する を参照してください。

環境イメージ

次のいずれかを行います。

  • によって管理される Docker イメージを使用するには AWS CodeBuild、マネージドイメージ を選択し、オペレーティングシステム ランタイム (複数可)イメージ イメージバージョン から選択します。利用可能な場合は、[環境タイプ] から選択します。

  • 別の Docker イメージを使用するには、[カスタムイメージ] を選択します。環境タイプ の場合は、、Linux ARMLinux GPU、または Windows を選択します。その他のレジストリ を選択した場合は、外部レジストリ URLに、Docker Hub で 形式 を使用して Docker イメージの名前とタグを入力しますdocker repository/docker image nameAmazon を選択した場合はECRAmazon ECRリポジトリAmazon ECRイメージを使用して、 AWS アカウントの Docker イメージを選択します。

  • プライベート Docker イメージを使用するには、[カスタムイメージ] を選択します。環境タイプ では、、Linux ARMLinux GPU、または Windows を選択します。イメージレジストリ で、その他のレジストリ を選択し、プライベート Docker イメージARNの認証情報の を入力します。認証情報は、Secrets Manager で作成する必要があります。詳細については、AWS Secrets Manager ユーザーガイドの「AWS Secrets Managerとは」を参照してください。

注記

CodeBuild は、カスタム Docker イメージENTRYPOINTの を上書きします。

コンピューティング

次のいずれかを行います。

  • EC2 コンピューティングを使用するには、 を選択しますEC2。EC2 コンピューティングは、アクションの実行中に最適化された柔軟性を提供します。

  • Lambda コンピューティングを使用するには、Lambda を選択します。Lambda コンピューティングは、ビルドの起動速度を最適化します。Lambda は、起動レイテンシーが低いため、高速ビルドをサポートします。Lambda も自動的にスケーリングされるため、ビルドはキューで実行を待つことはありません。詳細については、AWS Lambda コンピューティングでビルドを実行する を参照してください。

サービスロール

次のいずれかを行います。

  • CodeBuild サービスロールがない場合は、新しいサービスロール を選択します。[Role name] に、新しいロールの名前を入力します。

  • CodeBuild サービスロールがある場合は、「既存のサービスロール」を選択します。ロール ARNで、サービスロールを選択します。

注記

コンソールを使用してビルドプロジェクトを作成する場合、 CodeBuild 同時にサービスロールを作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。

追加設定
自動再試行の制限

ビルドが失敗した後の追加の自動再試行の数を指定します。例えば、自動再試行の制限が 2 に設定されている場合、 CodeBuild は を呼び出しRetryBuildAPIて、ビルドを最大 2 回自動的に再試行します。

タイムアウト

5 分から 36 時間までの値を指定します。その後、完了しないとビルドが CodeBuild 停止します。[hours] と [minutes] を空白のままにすると、デフォルト値の 60 分が使用されます。

特権付与

(オプション) Docker イメージを構築する場合、またはこのビルドプロジェクトを使用して Docker イメージを構築する場合にのみ、ビルドに昇格された権限を付与する場合は、このフラグを有効にするを選択します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。ビルドが Docker デーモンと連係動作できるように、Docker デーモンも起動する必要があります。これを行う 1 つの方法は、次のビルドコマンドを実行してビルドスペックの install フェーズで Docker デーモンを初期化することです。Docker サポート CodeBuild で が提供するビルド環境イメージを選択した場合は、これらのコマンドを実行しないでください。

注記

デフォルトでは、Docker デーモンはビルドVPC以外の で有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトのランタイム権限と Linux 機能を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
VPC

CodeBuild を操作する場合VPC:

  • ではVPC、 が CodeBuild 使用する VPC ID を選択します。

  • VPC サブネット では、 が CodeBuild 使用するリソースを含むサブネットを選択します。

  • VPC セキュリティグループ では、 CodeBuild が 内のリソースへのアクセスを許可するために使用するセキュリティグループを選択しますVPCs。

詳細については、「Amazon Virtual Private Cloud AWS CodeBuild で使用する」を参照してください。

コンピューティング

使用可能なオプションの 1 つを選択します。

環境変数

[環境変数] で、名前と値を入力してから、ビルドによって使用される各環境変数の種類を選択します。

注記

CodeBuild は、 AWS リージョンの環境変数を自動的に設定します。以下の環境変数を buildspec.yml に追加していない場合は、それらの変数を設定する必要があります。

  • AWS_ACCOUNT_ID

  • IMAGE_REPO_NAME

  • IMAGE_TAG

コンソールと AWS CLI ユーザーは環境変数を表示できます。環境変数の表示に懸念がない場合は、[Name] および [Value] フィールドを設定し、[Type] を [Plaintext] に設定します。

アクセスキー ID、 AWS シークレット AWS アクセスキー、パスワードなどの機密性の高い値を持つ環境変数をパラメータとして Amazon EC2 Systems Manager パラメータストアまたは に保存することをお勧めします AWS Secrets Manager。

Amazon EC2 Systems Manager パラメータストアを使用する場合は、タイプ パラメータ を選択します。名前 には、参照 CodeBuild する の識別子を入力します。 には、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータの名前を入力します。たとえば、/CodeBuild/dockerLoginPassword という名前のパラメータを使用して、[タイプ] で [Parameter (パラメータ)] を選択します。[Name (名前)] に LOGIN_PASSWORD と入力します。[Value (値)] に「/CodeBuild/dockerLoginPassword」と入力します。

重要

Amazon EC2 Systems Manager パラメータストアを使用する場合は、 で始まるパラメータ名 /CodeBuild/ (例: ) でパラメータを保存することをお勧めします/CodeBuild/dockerLoginPassword。 CodeBuild コンソールを使用して、Amazon EC2 Systems Manager でパラメータを作成できます。[パラメータの作成] を選択し、ダイアログボックスの手順に従います。(そのダイアログボックスで、KMSキー に、アカウント内の AWS KMS キーARNの を指定できます。 Amazon EC2 Systems Manager はこのキーを使用して、ストレージ中にパラメータの値を暗号化し、取得中に復号します。) CodeBuild コンソールを使用してパラメータを作成すると、コンソールは保存中のパラメータ名を で開始/CodeBuild/します。詳細については、「Amazon Systems Manager ユーザーガイド」の「Systems Manager パラメータストア」および「Systems Manager パラメータストアコンソールのチュートリアル」を参照してください。 EC2

ビルドプロジェクトが Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールは ssm:GetParametersアクションを許可する必要があります。以前に新しいサービスロールを選択した場合、 はビルドプロジェクトのデフォルトのサービスロールにこのアクション CodeBuild を含めます。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。

ビルドプロジェクトで、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータに で始まらないパラメータ名を指定し/CodeBuild/新しいサービスロール を選択した場合は、 で始まらないパラメータ名へのアクセスを許可するように、そのサービスロールを更新する必要があります/CodeBuild/。これは、サービスロールで、/CodeBuild/ で始まるパラメータ名にのみアクセスが許可されるためです。

新しいサービスロール を選択した場合、サービスロールには、Amazon EC2 Systems Manager パラメータストア/CodeBuild/の名前空間にあるすべてのパラメータを復号するアクセス許可が含まれます。

既存の環境変数は、設定した環境変数により置き換えられます。たとえば、Docker イメージに my_value の値を持つ MY_VAR という名前の環境変数が既に含まれていて、other_value の値を持つ MY_VAR という名前の環境変数を設定した場合、my_valueother_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_ で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

同じ名前の環境変数が複数の場所で定義されている場合は、その値は次のように決定されます。

  • ビルド開始オペレーション呼び出しの値が最も優先順位が高くなります。

  • ビルドプロジェクト定義の値が次に優先されます。

  • ビルド仕様宣言の値の優先順位が最も低くなります。

Secrets Manager を使用する場合は、[Type] (タイプ) で、[Secrets Manager] を選択します。名前 には、参照 CodeBuild する の識別子を入力します。[Value (値)] に、パターン reference-key を使用して secret-id:json-key:version-stage:version-id を入力します。詳細については、Secrets Manager reference-key in the buildspec file を参照してください。

重要

Secrets Manager を使用する場合は、「/CodeBuild/」で始まる名前でシークレットを保存することをお勧めします(たとえば、/CodeBuild/dockerLoginPassword)。詳細については、 AWS Secrets Managerユーザーガイドの「AWS Secrets Manager とは」を参照してください。

ビルドプロジェクトが Secrets Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで secretsmanager:GetSecretValue アクションを許可する必要があります。以前に新しいサービスロールを選択した場合、 はビルドプロジェクトのデフォルトのサービスロールにこのアクション CodeBuild を含めます。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。

ビルドプロジェクトが、/CodeBuild/ で始まらないパラメータ名を持つ、Secrets Manager に保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/CodeBuild/ で始まらないシークレット名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールで、/CodeBuild/ で始まるシークレット名にのみアクセスが許可されるためです。

[新しいサービスロール] を選択した場合、作成されるサービスロールには、Secrets Manager の /CodeBuild/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

Buildspec

ビルド仕様

次のいずれかを行ってください。

  • ソースコードにビルド仕様ファイルが含まれている場合は、[Use a buildspec file (buildspec ファイルを使用)] を選択します。デフォルトでは、 CodeBuild はソースコードルートディレクトリbuildspec.ymlで という名前のファイルを検索します。buildspec ファイルに別の名前または場所を使用する場合は、ソースルートからのパスを Buildspec 名 (例: buildspec-two.ymlまたは ) に入力しますconfiguration/buildspec.yml。 buildspec ファイルが S3 バケットにある場合、ビルドプロジェクトと同じ AWS リージョンにある必要があります。 buildspec ファイルは、 を使用して指定します ARN (例: arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。

  • ソースコードにビルド仕様ファイルが含まれていない場合、または、ソースコードのルートディレクトリで build ファイルの buildspec.yml フェーズに指定されているものと異なるビルドコマンドを実行する場合は、[ビルドコマンドの挿入] を選択します。[ビルドコマンド] に、build フェーズで実行するコマンドを入力します。複数のコマンドについては、&& で各コマンドを区切ります (例: mvn test && mvn package)。他のフェーズでコマンドを実行する場合、または build フェーズのコマンドの長いリストがある場合は、ソースコマンドのルートディレクトリに buildspec.yml ファイルを追加し、ファイルにコマンドを追加してから、[Use the buildspec.yml in the source code root directory] (ソースコードのルートディレクトリの 「buildspec.yml」を使用) を選択します。

詳細については、「ビルド仕様 (buildspec) に関するリファレンス」を参照してください。

Batch 構成

ビルドのグループを 1 つの操作として実行できます。詳細については、「ビルドをバッチで実行する」を参照してください。

バッチ構成の定義

このプロジェクトでバッチビルドを許可する場合に選択します。

Batch サービスロール

バッチビルドのサービスロールを提供します。

次のいずれかを選択します。

  • バッチサービスロールがない場合は、[New service role] (新しいサービスロール) を選択します。[Service role] (サービスロール) に、新しいロールの名前を入力します。

  • バッチサービスロールがある場合は、[Existing service role] (既存のサービスロール) を選択します。[Service role] (サービスロール) で、サービスロールを選択します。

バッチビルドでは、バッチ設定に新しいセキュリティロールが導入されます。バッチの一部としてビルドを実行するには CodeBuild 、ユーザーに代わって StartBuild、、および RetryBuildアクションを呼び出す必要があるためStopBuild、この新しいロールが必要です。次の2つの理由により、お客様はビルドで使用するものと同じロールではなく、新しいロールを使用する必要があります。

  • ビルドの役割を与える StartBuildStopBuild、および RetryBuild アクセス権限を使用すると、単一のビルドが buildspec を介してより多くのビルドを開始することができます。

  • CodeBuild バッチビルドには、バッチ内のビルドに使用できるビルドとコンピューティングタイプの数を制限する制限があります。ビルドロールにこれらの権限がある場合、ビルド自体がこれらの制限を回避する可能性があります。

バッチに使用できる計算タイプ

バッチに使用できる計算タイプを選択します。該当するものをすべて選択します。

バッチで許可される最大ビルド

バッチで許可されるビルドの最大数を入力します。バッチがこの制限を超えると、バッチは失敗します。

バッチのタイムアウト

バッチビルドが完了する最大時間を入力します。

アーティファクトの結合

[Combine all artifacts from batch into a single location] (バッチのすべてのアーチファクト) を 1 つの場所に結合するを選択して、バッチのすべてのアーチファクトを単一の場所に結合します。

バッチレポートモード

バッチビルドに対して望ましいビルドステータスレポートモードを選択します。

注記

このフィールドは、プロジェクトソースが Bitbucket GitHub、または GitHub Enterprise の場合にのみ使用でき、ビルドの開始と終了がソース で選択されているときに、ビルドステータスをソースプロバイダーに報告します

集約されたビルド

これを選択して、バッチ内にあるすべてのビルドのステータスを単一のステータスレポートにまとめます。

個々のビルド

これを選択して、バッチ内にあるすべてのビルドのビルドステータスが個別に報告されるようにします。

アーティファクト

タイプ

次のいずれかを行ってください。

  • ビルド出力アーティファクトを作成しない場合は、[No artifacts] を選択します。これは、ビルドテストのみを実行している場合や、Docker イメージを Amazon ECRリポジトリにプッシュする場合に実行できます。

  • ビルド出力を S3 バケットに保存する場合は、[Amazon S3] を選択して次のいずれかの操作を行います。

    • ビルド出力ZIPファイルまたはフォルダにプロジェクト名を使用する場合は、名前を空白のままにします。それ以外の場合は、名前を入力します。(ZIPファイルを出力し、ZIPファイルにファイル拡張子を付ける場合は、必ずZIPファイル名の後に含めてください)。

    • buildspec ファイルで指定した名前で、コンソールで指定した名前を上書きする場合は、[Enable semantic versioning (セマンティックバージョニングを有効にする)] を選択します。buildspec ファイル内の名前は、ビルド時に計算され、Shell コマンド言語を使用します。たとえば、アーティファクト名に日付と時刻を追加して常に一意にできます。アーティファクト名を一意にすると、アーティファクトが上書きされるのを防ぐことができます。詳細については、「buildspec の構文」を参照してください。

    • [Bucket name (バケット名)] で、出力バケットの名前を選択します。

    • この手順の前半でビルドコマンドを挿入を選択した場合は、出力ファイル に、ビルド出力ファイルまたはフォルダに配置するビルドのZIPファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例: appspec.yml, target/my-app.jar)。詳細については、「files」で buildspec の構文 の説明を参照してください。

    • ビルドアーティファクトを暗号化しない場合は、[アーティファクト暗号化の削除] を選択します。

アーティファクトのセカンダリセットごとに:

  1. [Artifact 識別子] には、英数字とアンダースコアのみを使用して 128 文字未満の値を入力します。

  2. [アーティファクトの追加] を選択します。

  3. セカンダリアーティファクトを設定するには、前のステップに従います。

  4. [アーティファクトの保存] を選択します。

追加設定
暗号化キー

次のいずれかを実行します。

  • アカウントの Amazon S3 の AWS マネージドキー を使用してビルド出力アーティファクトを暗号化するには、[暗号化キー] を空白のままにします。これがデフォルトです。

  • カスタマーマネージドキーを使用してビルド出力アーティファクトを暗号化するには、暗号化キー にKMSキーARNの を入力します。arn:aws:kms:region-ID:account-ID:key/key-ID の形式を使用します。

キャッシュタイプ

[キャッシュタイプ] で、以下のいずれかを選択します。

  • キャッシュを使用しない場合は、[No cache] を選択します。

  • Amazon S3 キャッシュを使用するには、[Amazon S3] を選択して次の操作を行います。

    • [バケット] では、キャッシュが保存される S3 バケットの名前を選択します。

    • (オプション) [Cache path prefix (キャッシュパスのプレフィックス)] に、Amazon S3 パスのプレフィックスを入力します。[キャッシュパスのプレフィックス] 値はディレクトリ名に似ています。これにより、バケット内の同じディレクトリにキャッシュを保存できます。

      重要

      パスのプレフィックスの末尾にスラッシュ (/) を付加しないでください。

  • ローカルキャッシュを使用する場合は、[ローカル] を選択し、ローカルキャッシュモードを 1 つ以上選択します。

    注記

    Docker レイヤーキャッシュモードは Linux でのみ利用可能です。このモードを選択する場合、プロジェクトは権限モードで実行する必要があります。

キャッシュを使用すると、再利用可能なビルド環境がキャッシュに保存され、ビルド全体で使用されるため、かなりのビルド時間が節約されます。ビルド仕様ファイルのキャッシュの指定に関する詳細については、「buildspec の構文」を参照してください。キャッシングの詳細については、「パフォーマンスを向上させるキャッシュビルド」を参照してください。

ログ

作成するログを選択します。Amazon CloudWatch Logs、Amazon S3 ログ、またはその両方を作成できます。

CloudWatch

Amazon CloudWatch Logs ログが必要な場合:

CloudWatch ログ

CloudWatch ログ を選択します。

グループ名

Amazon CloudWatch Logs ロググループの名前を入力します。

ストリーム名

Amazon CloudWatch Logs ログストリーム名を入力します。

S3

Amazon S3 ログが必要な場合は、以下のようになります。

S3 ログ

[S3 logs (S3 ログ)] を選択します。

バケット

ログを保存する S3 バケットの名前を選択します。

パスプレフィックス

ログのプレフィックスを入力します。

S3 ログの暗号化を無効にする

S3 ログを暗号化しない場合は、選択します。

ビルドプロジェクトの作成 (AWS CLI)

AWS CLI で を使用する方法の詳細については CodeBuild、「」を参照してくださいコマンドラインリファレンス

を使用して CodeBuild ビルドプロジェクトを作成するには AWS CLI、JSON形式のプロジェクト構造を作成し、構造を入力し、 create-project コマンドを呼び出してプロジェクトを作成します。

JSON ファイルを作成する

--generate-cli-skeleton オプションを使用して、 create-project コマンドを使用してスケルトンJSONファイルを作成します。

aws codebuild create-project --generate-cli-skeleton > <json-file>

これにより、 で指定されたパスとファイル名を持つJSONファイルが作成されます。<json-file>.

JSON ファイルを入力する

次のようにJSONデータを変更し、結果を保存します。

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "autoRetryLimit": <auto-retry-limit>, "timeoutInMinutes": <timeout>, "queuedTimeoutInMinutes": <queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts": <combine-artifacts>, "restrictions": { "maximumBuildsAllowed": <max-builds>, "computeTypesAllowed": [ "<compute-type>" ] }, "timeoutInMins": <batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit": <concurrent-build-limit> }

以下に置き換えます:

name

必須。このビルドプロジェクトの名前。この名前は、 AWS アカウント内のすべてのビルドプロジェクトで一意である必要があります。

[ Description] ( 説明)

オプション。このビルドの説明。

source

必須。このビルドプロジェクトのソースコード設定に関する情報を含むProjectSourceオブジェクト。source オブジェクトを追加したら、secondarySources を使用して最大 12 個のソースを追加できます。これらの設定には以下が含まれます。

source/type

必須。ビルドするソースコードを含むリポジトリのタイプ。有効な値を次に示します。

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • GITLAB

  • GITLAB_SELF_MANAGED

  • BITBUCKET

  • S3

  • NO_SOURCE

NO_SOURCE を使用すると、プロジェクトにはソースがないため、buildspec をファイルとして使用できません。代わりに、 buildspec 属性を使用して buildspec の YAML形式の文字列を指定する必要があります。詳細については、「ソースなしでビルドプロジェクトを作成する」を参照してください。

source/location

を設定しない限り必須 <source-type> CODEPIPELINE に送信します。指定されたリポジトリタイプのソースコードの場所。

  • の場合 CodeCommit、ソースコードと buildspec ファイル (例: https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>) を含むリポジトリURLへのHTTPSクローン。

  • Amazon S3 の場合、ビルド入力バケット名に、ソースコードと buildspec を含むZIPファイルのパスと名前が続きます。例:

    • 入力バケットのルートにあるZIPファイルの場合: <bucket-name>/<object-name>.zip

    • 入力バケットのサブフォルダにあるZIPファイルの場合: <bucket-name>/<subfoler-path>/<object-name>.zip

  • の場合 GitHub、ソースコードと buildspec ファイルを含むリポジトリURLへのHTTPSクローン。には github.com が含まれているURL必要があります。 AWS アカウントを GitHub アカウントに接続する必要があります。これを行うには、 CodeBuild コンソールを使用してビルドプロジェクトを作成します。

    • [Authorize application] を選択します。( GitHub アカウントに接続したら、ビルドプロジェクトの作成を完了する必要はありません。 CodeBuild コンソールを閉じることができます。)

  • GitHub Enterprise Server の場合、 HTTPまたは HTTPS は、ソースコードと buildspec ファイルを含むリポジトリURLにクローンします。また、 AWS アカウントを GitHub Enterprise Server アカウントに接続する必要があります。これを行うには、 CodeBuild コンソールを使用してビルドプロジェクトを作成します。

    1. Enterprise GitHub Server で個人用アクセストークンを作成します。

    2. このトークンをクリップボードにコピーして、 CodeBuild プロジェクトの作成時に使用できます。詳細については、 GitHub ヘルプウェブサイトの「コマンドライン用の個人用アクセストークンの作成」を参照してください。

    3. コンソールを使用して CodeBuild プロジェクトを作成する場合、ソースプロバイダー ソースGitHubエンタープライズ を選択します。

    4. [個人用アクセストークン] には、クリップボードにコピーしたトークンを貼り付けます。[トークンの保存] を選択します。これで CodeBuild 、アカウントが GitHub Enterprise Server アカウントに接続されました。

  • GitLab および GitLab セルフマネージドの場合、ソースコードと buildspec ファイルを含むリポジトリURLへのHTTPSクローン。を使用する場合は GitLab、 に gitlab.com が含まれているURL必要があります。 GitLab セルフマネージド型を使用する場合、 には gitlab.com を含めるURL必要はありません。 AWS アカウントを GitLab または GitLab セルフマネージドアカウントに接続する必要があります。これを行うには、コンソール CodeBuildを使用してビルドプロジェクトを作成します。

    • デベロッパーツールのナビゲーションペインで、設定 接続 を選択し、接続 を作成します。このページで、 GitLab または GitLab セルフマネージド接続を作成し、 に接続 GitLabを選択します。

  • Bitbucket の場合、ソースコードと buildspec ファイルを含むリポジトリURLへのHTTPSクローン。には bitbucket.org が含まれているURL必要があります。また、 AWS アカウントを Bitbucket アカウントに接続する必要があります。これを行うには、 CodeBuild コンソールを使用してビルドプロジェクトを作成します。

    1. コンソールを使用して Bitbucket に接続 (または再接続) する場合は、Bitbucket の [Confirm access to your account] ページで、[Grant access] を選択します (Bitbucket アカウントに接続したら、ビルドプロジェクトの作成を完了する必要はありません。 CodeBuild コンソールを閉じることができます。)

  • では AWS CodePipeline、 location sourceにパイプラインを作成するときにパイプラインのソースステージでソースコードの場所を指定するため CodePipeline、この値 CodePipeline に の値を指定しないでください。

ソース/gitCloneDepth

オプション。ダウンロードする履歴の深さ。最小値は 0 です。この値が 0、あるいは 25 より大きいか指定されていない場合、完全な履歴が各ビルドプロジェクトと共にダウンロードされます。ソースタイプが Amazon S3 である場合、この値はサポートされません。

source/buildspec

オプション。使用するビルド仕様定義またはファイル。この値が指定されていない場合や、空の文字列に設定されている場合、ソースコードのルートディレクトリに buildspec.yml ファイルが含まれている必要があります。この値が設定されている場合は、インラインのビルド仕様定義か、プライマリソースのルートディレクトリからの相対的な代替 buildspec ファイルへのパス、S3 バケットへのパスになります。バケットは、ビルドプロジェクトと同じ AWS リージョンにある必要があります。buildspec ファイルは、 を使用して指定します ARN (例: arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。詳細については、「buildspec ファイル名とストレージの場所」を参照してください。

source/auth

構築するソースコードにアクセス CodeBuild するための の承認設定に関する情報が含まれています。

ソース/認証/タイプ

必須。使用する権限付与タイプ。有効な値は次のとおりです。

  • OAUTH

  • CODECONNECTIONS

  • SECRETS_MANAGER

ソース/認証/リソース

オプション。指定した権限付与タイプに適用されるリソース値。これは Secrets Manager ARNまたは です CodeConnections ARN。

ソース/reportBuildStatus

ビルドの開始と完了のステータスをソースプロバイダーに送信するかどうかを指定します。、 GitHub エンタープライズサーバー GitHub、または Bitbucket 以外のソースプロバイダーでこれを設定すると、 invalidInputExceptionがスローされます。

ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。

ソース/buildStatusConfig

CodeBuild ビルドプロジェクトがビルドステータスをソースプロバイダーに報告する方法を定義する情報が含まれています。このオプションは、ソースタイプが GITHUBGITHUB_ENTERPRISE、または BITBUCKET の場合にのみ使用されます。

ソース/buildStatusConfig/コンテキスト

Bitbucket リソースでは、このパラメータは、Bitbucket コミットステータスの name パラメータに使用されます。 GitHub ソースの場合、このパラメータは GitHub コミットステータスの contextパラメータに使用されます。

例えば、 に環境変数を使用して CodeBuildビルド番号とウェブフックトリガーcontextを含めることができます。

AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER

これにより、webhook プルリクエストイベントによってトリガーされた build #24 では、コンテキストは次のようになります。

AWS CodeBuild sample-project Build #24 - pr/8
ソース/buildStatusConfig/targetUrl

Bitbucket リソースでは、このパラメータは、Bitbucket コミットステータスの url パラメータに使用されます。 GitHub ソースの場合、このパラメータは GitHub コミットステータスの target_urlパラメータに使用されます。

例えば、 targetUrlを に設定することでhttps://aws.amazon.com/codebuild/<path to build>、コミットステータスがこの にリンクされますURL。

また、 に CodeBuild 環境変数を含めてtargetUrl、 に追加情報を追加することもできますURL。例えば、ビルドリージョンを に追加するにはURL、 targetUrlを次のように設定します。

"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"

ビルド領域が us-east-2 の場合、これは次のように展開されます。

https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
ソース/gitSubmodulesConfig

オプション。Git サブモジュール設定に関する情報。 CodeCommit、 GitHub、 GitHub エンタープライズサーバー、および Bitbucket でのみ使用されます。

ソース/gitSubmodulesConfig/fetchSubmodules

リポジトリに Git サブモジュールを含める場合は、fetchSubmodulestrue に設定します。含まれる Git サブモジュールは、 として設定する必要がありますHTTPS。

ソース/InsecureSsl

オプション。 GitHub Enterprise Server でのみ使用されます。 GitHub Enterprise Server プロジェクトリポジトリへの接続中にTLS警告を無視trueするには、この値を に設定します。デフォルト値は false です。InsecureSsl は、テスト目的でのみ使用してください。本番環境では使用しないでください。

ソース/sourceIdentifier

プロジェクトソースのユーザー定義識別子。プライマリソースの場合、省略可能です。セカンダリソースでは必須です。

secondarySources

オプション。ビルドプロジェクトのセカンダリソースに関する情報を含むProjectSourceオブジェクトの配列。最大 12 個のセカンダリソースを追加できます。secondarySources オブジェクトは、source オブジェクトで使用されるのと同じプロパティを使用します。セカンダリソースオブジェクトでは、sourceIdentifier は必須です。

secondarySourceVersions

オプション。ProjectSourceVersion オブジェクトの配列。secondarySourceVersions をビルドレベルで指定すると、これよりも優先されます。

sourceVersion

オプション。このプロジェクト用に構築するビルド入力のバージョン。指定しない場合、最新のバージョンが使用されます。指定した場合、次のいずれかであることが必要です。

  • の場合 CodeCommit、使用するコミット ID、ブランチ、または Git タグ。

  • の場合 GitHub、ビルドするソースコードのバージョンに対応するコミット ID、プルリクエスト ID、ブランチ名、またはタグ名。プルリクエスト ID を指定する場合、pr/pull-request-ID (例: pr/25) 形式を使用する必要があります。ブランチ名を指定すると、ブランチのHEADコミット ID が使用されます。指定しない場合、デフォルトのブランチのHEADコミット ID が使用されます。

  • の場合 GitLab、コミット ID、プルリクエスト ID、ブランチ名、タグ名、またはリファレンスとコミット ID。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

  • Bitbucket の場合、ビルドするソースコードのバージョンに対応するコミット ID、ブランチ名、またはタグ名。ブランチ名を指定すると、ブランチのHEADコミット ID が使用されます。指定しない場合、デフォルトのブランチのHEADコミット ID が使用されます。

  • Amazon S3 の場合、使用するビルド入力ZIPファイルを表すオブジェクトのバージョン ID。

sourceVersion をビルドレベルで指定した場合、そのバージョンはこの (プロジェクトレベルの) sourceVersion より優先されます。詳細については、「を使用したソースバージョンサンプル AWS CodeBuild」を参照してください。

artifacts

必須。このビルドプロジェクトの出力アーティファクト設定に関する情報を含むProjectArtifactsオブジェクト。artifacts オブジェクトを追加したら、secondaryArtifacts を使用して最大 12 個のアーティファクトを追加できます。これらの設定には以下が含まれます。

artifacts/type

必須。ビルド出力アーティファクトのタイプ。有効な値は次のとおりです。

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifacts/location

S3 アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。

前提条件で作成または識別した出力バケットの名前。

artifacts/path

S3 アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。

ZIP ファイルまたはフォルダを配置する出力バケットの 内のパス。の値を指定しない場合path、 は namespaceType (指定されている場合) と name CodeBuild を使用して、ビルド出力ZIPファイルまたはフォルダのパスと名前を決定します。たとえば、MyPathpath に、MyArtifact.zipname 指定すると、パスと名前は「MyPath/MyArtifact.zip」になります。

アーティファクト/namespaceType

S3 アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。

ビルド出力ZIPファイルまたはフォルダの名前空間。有効な値は、BUILD_ID および NONE です。BUILD_ID を使用して、ビルド ID をビルド出力ZIPファイルまたはフォルダのパスに挿入します。それ以外の場合は、NONE を使用します。の値を指定しない場合namespaceType、 は path (指定されている場合) と name CodeBuild を使用して、ビルド出力ZIPファイルまたはフォルダのパスと名前を決定します。たとえば、MyPathpath に、BUILD_IDnamespaceTypeMyArtifact.zipname 指定すると、パスと名前は「MyPath/build-ID/MyArtifact.zip」になります。

artifacts/name

S3 アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。

内のビルド出力ZIPファイルまたはフォルダの名前location。たとえば、MyPathpath に、MyArtifact.zipname 指定すると、パスと名前は「MyPath/MyArtifact.zip」になります。

アーティファクト/overrideArtifactName

S3 アーティファクトタイプ でのみ使用されます。他のアーティファクトタイプには使用されません。

オプション。true に設定すると、buildspec ファイルの artifacts ブロックで指定された名前が、name を上書きします。詳細については、「のビルド仕様リファレンス CodeBuild」を参照してください。

artifacts/packaging

S3 アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。

オプション。アーティファクトをパッケージ化する方法を指定します。許可された値は次のとおりです:

NONE

ビルドアーティファクトを含むフォルダを作成します。これは、デフォルト値です。

ZIP

ビルドアーティファクトを含むZIPファイルを作成します。

secondaryArtifacts

オプション。ビルドプロジェクトのセカンダリアーティファクト設定に関する情報を含むProjectArtifactsオブジェクトの配列。最大 12 個のセカンダリアーティファクトを追加できます。secondaryArtifacts は、artifacts オブジェクトで使用されているのと同じ設定の多くを使用します。

cache

必須。このビルドプロジェクトのキャッシュ設定に関する情報を含むProjectCacheオブジェクト。詳細については、「キャッシュビルド」を参照してください。

環境

必須。このプロジェクトのビルド環境設定に関する情報を含むProjectEnvironmentオブジェクト。設定は次のとおりです。

environment/type

必須。構築環境のタイプ。詳細については、「 リファレンス」の「 タイプ」を参照してください。 CodeBuild API

environment/image

必須。このビルド環境で使用される Docker イメージ識別子。通常、この識別子は として表されます。image-name:tag。 例えば、 CodeBuild を使用して Docker イメージを管理する Docker リポジトリでは、これは である可能性がありますaws/codebuild/standard:5.0。Docker Hub では、maven:3.3.9-jdk-8 です。Amazon ではECR、account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag。詳細については、「が提供する Docker イメージ CodeBuild」を参照してください。

環境/computeType

必須。このビルド環境で使用されるコンピュートリソースを指定します。詳細については、「 リファレンスcomputeType」の「」を参照してください。 CodeBuild API

environment/certificate

オプション。PEMエンコードされた証明書を含む Amazon S3 バケット、パスプレフィックス、およびオブジェクトキーARNの 。オブジェクトキーは、.pem ファイルのみでも、 PEMエンコードされた証明書を含む .zip ファイルでもかまいません。たとえば、Amazon S3 バケット名が <my-bucket>、パスのプレフィックスが <cert>、オブジェクトキー名が <certificate.pem> である場合、certificate に使用できる形式は <my-bucket/cert/certificate.pem> または arn:aws:s3:::<my-bucket/cert/certificate.pem> です。

環境/environmentVariables

オプション。このビルド環境に指定する環境変数を含むEnvironmentVariableオブジェクトの配列。各環境変数は、オブジェクトとして表されます。namevalue、および typenamevalue、 および type

コンソールと AWS CLI ユーザーは、すべての環境変数を表示できます。環境変数の表示に懸念がない場合は、「name」を「value」および 「type」を「PLAINTEXT」に設定します。

AWS アクセスキー ID、 AWS シークレットアクセスキー、パスワードなどの機密性の高い値を持つ環境変数は、Amazon EC2 Systems Manager パラメータストアまたは のパラメータとして保存することをお勧めします AWS Secrets Manager。の場合name、その保存されたパラメータに対して、参照 CodeBuild する の識別子を設定します。

Amazon EC2 Systems Manager パラメータストアを使用する場合は、 valueでパラメータの名前をパラメータストアに保存されている名前に設定します。typePARAMETER_STORE に設定します。/CodeBuild/dockerLoginPassword という名前のパラメータを使用するには、たとえば、「name」を「LOGIN_PASSWORD」に設定。value/CodeBuild/dockerLoginPassword に設定します。typePARAMETER_STORE に設定します。

重要

Amazon EC2 Systems Manager パラメータストアを使用する場合は、 で始まるパラメータ名 /CodeBuild/ (例: ) でパラメータを保存することをお勧めします/CodeBuild/dockerLoginPassword。 CodeBuild コンソールを使用して、Amazon EC2 Systems Manager でパラメータを作成できます。[パラメータの作成] を選択し、ダイアログボックスの手順に従います。(そのダイアログボックスで、KMSキー に、アカウントで AWS KMS キーARNの を指定できます。 Amazon EC2 Systems Manager はこのキーを使用して、ストレージ中にパラメータの値を暗号化し、取得中に復号します。) CodeBuild コンソールを使用してパラメータを作成すると、コンソールは保存中のパラメータ名を で開始/CodeBuild/します。詳細については、「Amazon Systems Manager ユーザーガイド」の「Systems Manager パラメータストア」および「Systems Manager パラメータストアコンソールのチュートリアル」を参照してください。 EC2

ビルドプロジェクトが Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールは ssm:GetParametersアクションを許可する必要があります。以前に新しいサービスロールを選択した場合、 はビルドプロジェクトのデフォルトのサービスロールにこのアクション CodeBuild を含めます。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。

ビルドプロジェクトで、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータで、 で始まらないパラメータ名を参照し/CodeBuild/新しいサービスロール を選択した場合は、そのサービスロールを更新して、 で始まらないパラメータ名へのアクセスを許可する必要があります/CodeBuild/。これは、サービスロールで、/CodeBuild/ で始まるパラメータ名にのみアクセスが許可されるためです。

新しいサービスロール を選択した場合、サービスロールには、Amazon EC2 Systems Manager パラメータストア/CodeBuild/の名前空間にあるすべてのパラメータを復号するアクセス許可が含まれます。

既存の環境変数は、設定した環境変数により置き換えられます。たとえば、Docker イメージに my_value の値を持つ MY_VAR という名前の環境変数が既に含まれていて、other_value の値を持つ MY_VAR という名前の環境変数を設定した場合、my_valueother_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_ で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

同じ名前の環境変数が複数の場所で定義されている場合は、その値は次のように決定されます。

  • ビルド開始オペレーション呼び出しの値が最も優先順位が高くなります。

  • ビルドプロジェクト定義の値が次に優先されます。

  • ビルド仕様宣言の値の優先順位が最も低くなります。

Secrets Manager を使用する場合、value には、Secrets Manager に保存されているパラメータの名前を設定します。typeSECRETS_MANAGER に設定します。/CodeBuild/dockerLoginPassword という名前のシークレットを使用するには、たとえば、「name」を「LOGIN_PASSWORD」に設定。value/CodeBuild/dockerLoginPassword に設定します。typeSECRETS_MANAGER に設定します。

重要

Secrets Manager を使用する場合は、「/CodeBuild/」で始まる名前でシークレットを保存することをお勧めします(たとえば、/CodeBuild/dockerLoginPassword)。詳細については、 AWS Secrets Managerユーザーガイドの「AWS Secrets Manager とは」を参照してください。

ビルドプロジェクトが Secrets Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで secretsmanager:GetSecretValue アクションを許可する必要があります。以前に新しいサービスロールを選択した場合、 はビルドプロジェクトのデフォルトのサービスロールにこのアクション CodeBuild を含めます。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。

ビルドプロジェクトが、/CodeBuild/ で始まらないパラメータ名を持つ、Secrets Manager に保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/CodeBuild/ で始まらないシークレット名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールで、/CodeBuild/ で始まるシークレット名にのみアクセスが許可されるためです。

[新しいサービスロール] を選択した場合、作成されるサービスロールには、Secrets Manager の /CodeBuild/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

環境/registryCredential

オプション。プライベート Docker レジストリへのアクセスを提供する認証情報を指定するRegistryCredentialオブジェクト。

環境/registryCredential/認証情報

を使用して作成された認証情報の ARNまたは名前を指定します AWS Managed Services。認証情報の名前を使用できるのは、認証情報が現在のリージョン内に存在する場合のみです。

環境/registryCredential/credentialProvider

唯一の有効な値は SECRETS_MANAGER です。

これを設定した場合:

  • imagePullCredentialsSERVICE_ROLE に設定する必要があります。

  • イメージは、キュレートされたイメージまたは Amazon ECRイメージにすることはできません。

環境/imagePullCredentialsタイプ

オプション。ビルドでイメージをプルするために CodeBuild が使用する認証情報のタイプ。2 つの有効な値があります。

CODEBUILD

CODEBUILD は、独自の認証情報 CodeBuild を使用する を指定します。 CodeBuild サービスプリンシパルを信頼するには、Amazon ECRリポジトリポリシーを編集する必要があります。

SERVICE_ROLE

ビルドプロジェクトのサービスロール CodeBuild を使用する を指定します。

クロスアカウントまたはプライベートレジストリイメージを使用する場合は、SERVICE_ROLE の認証情報を使用する必要があります。 CodeBuild キュレートされたイメージを使用する場合は、CODEBUILD認証情報を使用する必要があります。

環境/privilegedMode

このビルドプロジェクトを使用して Docker イメージをビルドする計画の場合のみ、true に設定します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。ビルドが Docker デーモンと連係動作できるように、Docker デーモンも起動する必要があります。これを行う 1 つの方法は、次のビルドコマンドを実行して buildspec ファイルの install フェーズで Docker デーモンを初期化することです。Docker サポート CodeBuild で が提供するビルド環境イメージを指定した場合は、これらのコマンドを実行しないでください。

注記

デフォルトでは、Docker デーモンはビルドVPC以外の で有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトのランタイム権限と Linux 機能を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

serviceRole

必須。サービスロールARNの CodeBuild は、 を使用してユーザーに代わってサービスとやり取りします (例: arn:aws:iam::account-id:role/role-name)。

autoRetryLimit

オプション。ビルドが失敗した後の追加の自動再試行の数。例えば、自動再試行の制限が 2 に設定されている場合、 CodeBuild は を呼び出しRetryBuildAPIて、ビルドを最大 2 回自動的に再試行します。

timeoutInMinutes

オプション。5 から 2160 (36 時間) までの分数。その後 CodeBuild、完了しないとビルドが停止します。指定しない場合は、デフォルトの 60 が使用されます。タイムアウトによってビルドが CodeBuild 停止したかどうか、およびいつ停止したかを確認するには、 batch-get-builds コマンドを実行します。ビルドが停止しているかどうかを確認するには、出力で FAILEDbuildStatus 値を調べます。ビルドがタイムアウトした時間を確認するには、 出力で TIMED_OUTphaseStatus 値に関連付けられている endTime 値を調べます。

queuedTimeoutIn分

オプション。5 から 480 (8 時間) までの分数。その後 CodeBuild、キューに入れられている場合はビルドが停止します。指定しない場合は、デフォルトの 60 が使用されます。

encryptionKey

オプション。ビルド出力の暗号化 AWS KMS key CodeBuild に使用される ARNのエイリアスまたは 。エイリアスを指定する場合に、arn:aws:kms:region-ID:account-ID:key/key-ID 形式を使用し、エイリアスが存在する場合には、alias/key-alias 形式を使用します。指定しない場合、Amazon S3 の AWSマネージドKMSキーが使用されます。

タグ

オプション。このビルドプロジェクトに関連付けるタグを提供する Tag オブジェクトの配列。最大 50 個のタグを指定できます。これらのタグは、 CodeBuild ビルドプロジェクトタグをサポートするすべての AWS サービスで使用できます。各タグは、「key」と「value」オブジェクトとして表現されます。

vpcConfig

オプション。プロジェクトVPCの設定に関する情報を含むVpcConfigオブジェクト。詳細については、「Amazon Virtual Private Cloud AWS CodeBuild で使用する」を参照してください。

これらのプロパティには、次のものがあります。

vpcId

必須。が CodeBuild 使用する VPC ID。このコマンドを実行して、リージョンVPCIDs内のすべての のリストを取得します。

aws ec2 describe-vpcs --region <region-ID>
サブネット

必須。で使用されるリソースIDsを含むサブネットの配列 CodeBuild。このコマンドを実行して、次の を取得しますIDs。

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
securityGroupIds

必須。でリソースへのアクセスを許可するIDs CodeBuild ために使用されるセキュリティグループの配列VPC。このコマンドを実行して、次の を取得しますIDs。

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>

badgeEnabled

オプション。ビルドバッジを CodeBuild プロジェクトに含めるかどうかを指定します。true に設定してビルドバッジを有効にするか、そうでない場合は false に設定します。詳細については、「でバッジのサンプルを構築する CodeBuild」を参照してください。

logsConfig

このビルドのログの場所に関する情報を含むLogsConfigオブジェクト。

logsConfig/cloudWatchLogs

ログへの CloudWatch ログのプッシュに関する情報を含むCloudWatchLogsConfigオブジェクト。

logsConfig/s3Logs

ログを Amazon S3LogsConfig にプッシュする情報を含む S3 オブジェクト。 Amazon S3

fileSystemLocations

オプション。Amazon EFS設定に関する情報を含むProjectFileSystemsLocationオブジェクトの配列。

buildBatchConfig

オプション。buildBatchConfig オブジェクトは、プロジェクトのバッチビルド設定情報を含むProjectBuildBatchConfig構造です。

buildBatchConfig/serviceRole

ARN バッチビルドプロジェクトのサービスロール。

buildBatchConfig/combineArtifacts

バッチビルドのビルドアーティファクトを 1 つのアーティファクトの場所に結合するかどうかを指定するブール値。

buildBatchConfig/制限/maximumBuildsAllowed

許可されるビルドの最大数。

buildBatchConfig/制限/computeTypesAllowed

バッチビルドで許可されるコンピューティングタイプを指定する文字列の配列。これらの値については、「ビルド環境のコンピューティングタイプ」を参照してください。

buildBatchConfig/timeoutInMinutes

バッチビルドを完了するまでの最大時間 (分単位) 。

buildBatchConfig/batchReportMode

バッチビルドのソースプロバイダーにビルドステータスレポートを送信する方法を指定します。有効な値を次に示します。

REPORT_AGGREGATED_BATCH

(デフォルト) すべてのビルドステータスを 1 つのステータスレポートに集約します。

REPORT_INDIVIDUAL_BUILDS

個々のビルドごとに個別のステータスレポートを送信します。

concurrentBuildLimit

このジョブで許可される同時実行の最大数を設定します。

新しいビルドは、現在のビルド数がこの制限以下の場合にのみ開始されます。現在のビルドカウントがこの制限を満たす場合、新しいビルドはスロットルされ、実行されません。

プロジェクトの作成

プロジェクトを作成するには、 create-project コマンドを再度実行し、JSONファイルを渡します。

aws codebuild create-project --cli-input-json file://<json-file>

成功すると、プロジェクトオブジェクトのJSON表現がコンソール出力に表示されます。このデータの例については、CreateProject 「レスポンス構文」を参照してください。

ビルドプロジェクトの名前を除いて、後でビルドプロジェクトの設定を変更することができます。詳細については、「ビルドプロジェクトの設定の変更 (AWS CLI)」を参照してください。

ビルドの実行を開始するには、「ビルドの実行 (AWS CLI)」を参照してください。

ソースコードが GitHub リポジトリに保存されていて、コード変更がリポジトリにプッシュされるたびにソースコードを CodeBuild 再構築する場合は、「」を参照してくださいビルドの実行の自動開始 (AWS CLI)

ビルドプロジェクトの作成 (AWS SDKs)

AWS CodeBuild で を使用する方法については AWS SDKs、「」を参照してくださいAWS SDK とツールのリファレンス

ビルドプロジェクトの作成 (AWS CloudFormation)

AWS CodeBuild で を使用する方法については AWS CloudFormation、 AWS CloudFormation ユーザーガイドの AWS CloudFormation テンプレート CodeBuildを参照してください。