ビルドプロジェクトを作成するには、AWS CodeBuild コンソール、AWS CLI、または AWS SDK を使用できます。
トピック
前提条件
ビルドプロジェクトを作成する前に、ビルドを計画する の質問に回答します。
ビルドプロジェクトの作成 (コンソール)
AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home
CodeBuild の情報ページが表示された場合、ビルドプロジェクトを作成するを選択します。それ以外の場合は、ナビゲーションペインでビルドを展開し、[ビルドプロジェクト] を選択し、次に [Create build project (ビルドプロジェクトの作成)] を選択します。
[Create build project (ビルドプロジェクトの作成)] を選択します。
次のセクションに入力します。完了したら、ページの下部にある [Create build project] (ビルドプロジェクトを作成する) を選択します。
プロジェクトの設定
- [Project name] (プロジェクト名)
-
このビルドプロジェクトの名前を入力します。ビルドプロジェクトの名前は、各 AWS アカウントで一意である必要があります。
- 説明
-
また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。
- ビルドバッジ
-
(オプション)[Enable build badge] (ビルドバッジを有効にする) を選択すると、プロジェクトのビルドステータスが表示可能および埋め込み可能になります。詳細については、「ビルドバッジサンプル」を参照してください。
注記
ソースプロバイダーが Amazon S3 の場合、ビルドバッジは適用されません。
- 同時ビルド制限を有効にする
-
(オプション) このプロジェクトで同時ビルド数を制限するには、次の手順を実行します。
-
[Restrict number of concurrent builds this project can start] (このジョブで許可される同時実行の最大数を設定) を選択します。
-
[Concurrent build limit] (同時ビルド制限) で、このジョブで許可される同時実行の最大数を設定します。この制限は、アカウントに設定された同時ビルド制限より大きくすることはできません。アカウント制限を超える数値を入力しようとすると、エラーメッセージが表示されます。
新しいビルドは、現在のビルド数がこの制限以下の場合にのみ開始されます。現在のビルドカウントがこの制限を満たす場合、新しいビルドはスロットルされ、実行されません。
-
- 追加情報
-
(オプション) [タグ] に、サポート対象の AWS のサービスで使用するタグの名前と値を入力します。[Add row] を使用して、タグを追加します。最大 50 個のタグを追加できます。
ソース
- ソースプロバイダー
-
ソースコードプロバイダーのタイプを選択します。次のリストを使用して、ソースプロバイダーに関する適切な選択を行います。
注記
CodeBuild は Bitbucket サーバーをサポートしていません。
- バケット
-
ソースコードが格納されている入力バケットの名前を選択します。
- S3 オブジェクトキーまたは S3 フォルダ
-
ZIP ファイルの名前、またはソースコードを含むフォルダへのパスを入力します。S3 バケットの中身をすべてダウンロードするには、スラッシュ記号 (/) を入力します。
- ソースバージョン
-
入力ファイルのビルドを表すオブジェクトのバージョン IDを入力。詳細については、「 のソースバージョンのサンプルAWS CodeBuild」を参照してください。
環境
- [プロビジョニングモデル]
-
次のいずれかを行います。
-
AWS CodeBuild が管理するオンデマンドフリートを使用するには、[オンデマンド] を選択します。オンデマンドフリートでは、CodeBuild がビルドのコンピューティングを行います。マシンはビルドが終了すると破棄されます。オンデマンドフリートはフルマネージド型で、需要の急増にも対応できる自動スケーリング機能を備えています。
-
AWS CodeBuild が管理するリザーブドキャパシティフリートを使用するには、[リザーブドキャパシティ] を選択し、[フリート名] を選択します。リザーブドキャパシティフリートでは、ビルド環境に合わせて専有インスタンスのセットを設定します。これらのマシンはアイドル状態のままで、ビルドやテストをすぐに処理できる状態になり、ビルド時間を短縮します。リザーブドキャパシティフリートでは、マシンは常に稼働しており、プロビジョニングされている間はコストが発生し続けます。
詳細については、リザーブドキャパシティキャパシティフリートでビルドを実行 を参照してください。
-
- 環境イメージ
-
次のいずれかを行ってください。
-
AWS CodeBuild が管理する Docker イメージを使用するには、[Managed image (マネージドイメージ)] を選択し、次に [オペレーティングシステム]、[ランタイム]、[イメージ]、および [ランタイムバージョン] で適切な選択を行います。利用可能な場合は、[環境タイプ] から選択します。
-
別の Docker イメージを使用するには、[カスタムイメージ] を選択します。[Environment type (環境タイプ)] で、 [ARM]、[Linux]、[Linux GPU] または [Windows] を選択します。[Other registry (その他のレジストリ)] を選択した場合は、[External registry URL (外部のレジストリ URL)] に
の形式に従って Docker Hub の Docker イメージの名前とタグを入力します。[Amazon ECR] を選択した場合は、[Amazon ECR repository] (Amazon ECR レポジトリ) および [Amazon ECR image] (Amazon ECR イメージ) を使用して AWS アカウントの Docker イメージを選択します。docker repository
/docker image name
-
プライベート Docker イメージを使用するには、[カスタムイメージ] を選択します。[Environment type (環境タイプ)] で、 [ARM]、[Linux]、[Linux GPU] または [Windows] を選択します。[Image registry (イメージレジストリ)] に [Other registry (その他のレジストリ)] を選択して、その後プライベート 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 サービスロールがある場合は、[Existing service role (既存のサービスロール)] を選択します。[Role ARN] で、サービスロールを選択します。
注記
コンソールでは、ビルドプロジェクトの作成時に CodeBuild サービスロールも作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。
-
- 追加設定
-
- [自動再試行の制限]
-
ビルドが失敗した後の追加の自動再試行回数を指定します。例えば、自動再試行の制限が 2 に設定されている場合、CodeBuild は
RetryBuild
API を呼び出して、さらに最大 2 回までビルドを自動的に再試行します。 - タイムアウト
-
5 分~36 時間の間の値を指定します。この時間が経過してもビルドが完了していない場合、CodeBuild はビルドを停止します。[hours] と [minutes] を空白のままにすると、デフォルト値の 60 分が使用されます。
- 特権付与
-
(オプション) このビルドプロジェクトを使って Dockerイメージをビルドする場合にのみ、[Docker イメージをビルドする場合、またはビルドで昇格された権限を取得する場合は、このフラグを有効にする] を選択します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。ビルドが Docker デーモンと連係動作できるように、Docker デーモンも起動する必要があります。これを行う 1 つの方法は、次のビルドコマンドを実行してビルドスペックの
install
フェーズで Docker デーモンを初期化することです。Docker をサポートする CodeBuild によって提供されるビルド環境イメージを選択した場合は、これらのコマンドを実行しないでください。注記
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「Runtime Privilege and Linux Capabilities
」を参照して、特権モードを有効にします。また、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 Subnets (サブネット)] で、CodeBuild が使用するリソースを含むサブネットを選択します。
-
[VPC Security groups (VPC セキュリティグループ)] で、CodeBuild が VPC 内のリソースへのアクセスを許可するために使用するセキュリティグループを選択します。
詳細については、「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] に設定します。
Amazon EC2 Systems Manager パラメータストア または AWS Secrets Manager には、AWS アクセスキー ID、AWS シークレットアクセスキー、またはパスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします。
Amazon EC2 Systems Manager パラメータストアを使用する場合は、[Type (タイプ)] で、[Parameter (パラメータ)] を選択します。[Name] (名前) に、参照する CodeBuild の識別子を入力します。[Value] (値) に、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 EC2 Systems Manager ユーザーガイドの「Systems Manager パラメータストア」および「Systems Manager パラメータストアコンソールのチュートリアル」を参照してください。ビルドプロジェクトが Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで
ssm:GetParameters
アクションを許可する必要があります。以前に [New service role] (新しいサービスロール) を選択した場合は、CodeBuild のビルドプロジェクトのデフォルトのサービスロールにこのアクションが含まれています。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。ビルドプロジェクトが、
/CodeBuild/
で始まらないパラメータ名を持つ、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/CodeBuild/
で始まらないパラメータ名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールで、/CodeBuild/
で始まるパラメータ名にのみアクセスが許可されるためです。[新しいサービスロールを作成] を選択した場合、サービスロールには、Amazon EC2 Systems Manager パラメータストアの
/CodeBuild/
名前空間ですべてのパラメータを復号するアクセス権限が含まれます。既存の環境変数は、設定した環境変数により置き換えられます。たとえば、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_
で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。同じ名前の環境変数が複数の場所で定義されている場合は、その値は次のように決定されます。
-
ビルド開始オペレーション呼び出しの値が最も優先順位が高くなります。
-
ビルドプロジェクト定義の値が次に優先されます。
-
ビルド仕様宣言の値の優先順位が最も低くなります。
Secrets Manager を使用する場合は、[Type] (タイプ) で、[Secrets Manager] を選択します。[Name] (名前) に、参照する CodeBuild の識別子を入力します。[Value (値)] に、パターン
reference-key
を使用して
を入力します。詳細については、Secrets Manager reference-key in the buildspec file を参照してください。secret-id
:json-key
:version-stage
:version-id
重要
Secrets Manager を使用する場合は、「
/CodeBuild/
」で始まる名前でシークレットを保存することをお勧めします(たとえば、/CodeBuild/dockerLoginPassword
)。詳細については、AWS Secrets Managerユーザーガイドの「AWS Secrets Manager とは」を参照してください。ビルドプロジェクトが Secrets Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで
secretsmanager:GetSecretValue
アクションを許可する必要があります。以前に [New service role] (新しいサービスロール) を選択した場合は、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 リージョンに存在する必要があります。ARN を使用して buildspec ファイルを指定します (例: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
、StopBuild
およびRetryBuild
アクションを使用して、バッチの一部としてビルドを実行する上で必要です。次の2つの理由により、お客様はビルドで使用するものと同じロールではなく、新しいロールを使用する必要があります。-
ビルドの役割を与える
StartBuild
、StopBuild
、およびRetryBuild
アクセス権限を使用すると、単一のビルドが buildspec を介してより多くのビルドを開始することができます。 -
CodeBuild バッチビルドには、バッチ内のビルドに使用できるビルドと計算タイプの数を制限する制限があります。ビルドロールにこれらの権限がある場合、ビルド自体がこれらの制限を回避する可能性があります。
-
- バッチに使用できる計算タイプ
-
バッチに使用できる計算タイプを選択します。該当するものをすべて選択します。
- バッチで許可される最大ビルド
-
バッチで許可されるビルドの最大数を入力します。バッチがこの制限を超えると、バッチは失敗します。
- バッチのタイムアウト
-
バッチビルドが完了する最大時間を入力します。
- アーティファクトの結合
-
[Combine all artifacts from batch into a single location] (バッチのすべてのアーチファクト) を 1 つの場所に結合するを選択して、バッチのすべてのアーチファクトを単一の場所に結合します。
- バッチレポートモード
-
バッチビルドに対して望ましいビルドステータスレポートモードを選択します。
注記
このフィールドが利用可能になるのは、プロジェクトソースが Bitbucket、GitHub、または GitHub Enterprise であり、[Source] (ソース) で [Report build statuses to source provider when your builds start and finish] (ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする) が選択されている場合のみです。
- 集約されたビルド
-
これを選択して、バッチ内にあるすべてのビルドのステータスを単一のステータスレポートにまとめます。
- 個々のビルド
-
これを選択して、バッチ内にあるすべてのビルドのビルドステータスが個別に報告されるようにします。
アーティファクト
- タイプ
-
次のいずれかを行ってください。
-
ビルド出力アーティファクトを作成しない場合は、[No artifacts] を選択します。ビルドテストのみを実行している場合や、Docker イメージを Amazon ECR リポジトリにプッシュする場合には、これを行うことができます。
-
ビルド出力を S3 バケットに保存する場合は、[Amazon S3] を選択して次のいずれかの操作を行います。
-
ビルド出力 ZIP ファイルまたはフォルダにプロジェクト名を使用する場合は、[Name (名前)] を空白のままにします。それ以外の場合は、名前を入力します。(ZIP ファイルを出力して ZIP ファイルにファイル拡張子を付ける場合は、必ず ZIP ファイル名の後に含めます)。
-
buildspec ファイルで指定した名前で、コンソールで指定した名前を上書きする場合は、[Enable semantic versioning (セマンティックバージョニングを有効にする)] を選択します。buildspec ファイル内の名前は、ビルド時に計算され、Shell コマンド言語を使用します。たとえば、アーティファクト名に日付と時刻を追加して常に一意にできます。アーティファクト名を一意にすると、アーティファクトが上書きされるのを防ぐことができます。詳細については、「buildspec の構文」を参照してください。
-
[Bucket name (バケット名)] で、出力バケットの名前を選択します。
-
この手順の前の方で [ビルドコマンドの挿入] を選択した場合は、[出力ファイル] に、ビルド出力 ZIP ファイルまたはフォルダに格納するビルドのファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例:
appspec.yml, target/my-app.jar
)。詳細については、「files
」で buildspec の構文 の説明を参照してください。 -
ビルドアーティファクトを暗号化しない場合は、[アーティファクト暗号化の削除] を選択します。
-
アーティファクトのセカンダリセットごとに:
-
[Artifact 識別子] には、英数字とアンダースコアのみを使用して 128 文字未満の値を入力します。
-
[アーティファクトの追加] を選択します。
-
セカンダリアーティファクトを設定するには、前のステップに従います。
-
[アーティファクトの保存] を選択します。
-
- 追加設定
-
- 暗号化キー
-
次のいずれかを実行します。
-
アカウントの 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 Logs
-
[CloudWatch logs] を選択します。
- グループ名
-
Amazon CloudWatch Logs のログのグループ名を入力します。
- ストリーム名
-
Amazon CloudWatch Logs ログストリーム名を入力します。
- S3
-
Amazon S3 ログが必要な場合は、以下のようになります。
- S3 ログ
-
[S3 logs (S3 ログ)] を選択します。
- バケット
-
ログを保存する S3 バケットの名前を選択します。
- パスプレフィックス
-
ログのプレフィックスを入力します。
- S3 ログの暗号化を無効にする
-
S3 ログを暗号化しない場合は、選択します。
ビルドプロジェクトの作成 (AWS CLI)
CodeBuild で AWS CLI を使用する方法の詳細については、「コマンドラインリファレンス」を参照してください。
AWS CLI を使用して CodeBuild ビルドプロジェクトを作成するには、JSON 形式のプロジェクト構造体を作成し、構造体に入力を行い、create-project
コマンドを実行してプロジェクトを作成します。
JSON ファイルの作成
--generate-cli-skeleton
オプションを使用して、create-project
コマンドでスケルトン JSON ファイルを作成します。
aws codebuild create-project --generate-cli-skeleton >
<json-file>
これにより、<json-file>
で指定されるパスとファイル名で JSON ファイルが作成されます。
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 クローン URL(例:
https://git-codecommit.
)。<region-id>
.amazonaws.com/v1/repos/<repo-name>
-
Amazon S3 では、ビルド入力バケット名の後に、ソースコードと buildspec を含む ZIP ファイルのパスと名前が続きます。次に例を示します。
-
入力バケットのルートにある ZIP ファイルの場合:
。<bucket-name>
/<object-name>
.zip -
入力バケットのサブフォルダーにある ZIP ファイルの場合:
。<bucket-name>
/<subfoler-path>
/<object-name>
.zip
-
-
GitHub の場合は、ソースコードと buildspec ファイルが格納されているリポジトリへの HTTPS クローン URL。URL には github.com が含まれている必要があります。AWS アカウントを GitHub アカウントに接続する必要があります。これを行うには、CodeBuild コンソールを使用してビルドプロジェクトを作成します。
-
[Authorize application] を選択します。(GitHub アカウントに接続した後、ビルドプロジェクトの作成を完了する必要はありません。CodeBuild コンソールを閉じることができます。)
-
-
GitHub Enterprise Server の場合は、ソースコードと buildspec ファイルを含むリポジトリへの HTTP または HTTPS クローン URL。また、AWS アカウントを GitHub Enterprise Server アカウントに接続する必要があります。これを行うには、CodeBuild コンソールを使用してビルドプロジェクトを作成します。
-
GitHub Enterprise Server で個人用アクセストークンを作成します。
-
このトークンをクリップボードにコピーし、CodeBuild プロジェクトの作成時に使用します。詳細については、GitHub Help ウェブサイトの Creating a personal access token for the command line
を参照してください。 -
コンソールを使用して CodeBuild プロジェクトを作成する場合、[ソース] の [ソースプロバイダー] で [GitHub Enterprise] を選択します。
-
[個人用アクセストークン] には、クリップボードにコピーしたトークンを貼り付けます。[トークンの保存] を選択します。これで、CodeBuild アカウントが GitHub Enterprise Server アカウントに接続されました。
-
-
GitLab および GitLab セルフマネージドの場合は、ソースコードと buildspec ファイルが格納されているリポジトリへの HTTPS クローン URL です。GitLab を使用する場合は、URL に gitlab.com を含める必要があります。GitLab セルフマネージドを使用する場合、URL に gitlab.com を含める必要はありません。AWS アカウントを GitLab または GitLab セルフマネージドアカウントに接続する必要があります。これを行うには、CodeBuild コンソールを使用してビルドプロジェクトを作成します。
-
デベロッパーツールのナビゲーションペインで [設定]、[接続]、[接続を作成] の順に選択します。このページで、GitLab または GitLab セルフマネージド接続を作成し、[GitLab に接続] を選択します。
-
-
Bitbucket の場合は、ソースコードと buildspec ファイルが格納されているリポジトリへの HTTPS クローン URL。URL には bitbucket.org が含まれている必要があります。また、AWS アカウントを Bitbucket アカウントに接続する必要があります。これを行うには、CodeBuild コンソールを使用してビルドプロジェクトを作成します。
-
コンソールを使用して Bitbucket に接続 (または再接続) する場合は、Bitbucket の [Confirm access to your account] ページで、[Grant access] を選択します (Bitbucket アカウントに接続した後、ビルドプロジェクトの作成を完了する必要はありません。CodeBuild コンソールを閉じることができます。)
-
-
AWS CodePipeline の場合は、
source
にlocation
値を指定しないでください。CodePipeline ではパイプラインを作成するときに、パイプラインのソースステージでソースコードの場所を指定するため、この値は CodePipeline では無視されます。
-
- source/gitCloneDepth
-
オプション。ダウンロードする履歴の深さ。最小値は 0 です。この値が 0、あるいは 25 より大きいか指定されていない場合、完全な履歴が各ビルドプロジェクトと共にダウンロードされます。ソースタイプが Amazon S3 である場合、この値はサポートされません。
- source/buildspec
-
オプション。使用するビルド仕様定義またはファイル。この値が指定されていない場合や、空の文字列に設定されている場合、ソースコードのルートディレクトリに
buildspec.yml
ファイルが含まれている必要があります。この値が設定されている場合は、インラインのビルド仕様定義か、プライマリソースのルートディレクトリからの相対的な代替 buildspec ファイルへのパス、S3 バケットへのパスになります。バケットは、ビルドプロジェクトと同じ AWS リージョンに存在する必要があります。ARN を使用して buildspec ファイルを指定します(例:arn:aws:s3:::
)。詳細については、「buildspec ファイル名とストレージの場所」を参照してください。<my-codebuild-sample2>
/buildspec.yml - source/auth
-
ビルドするソースコードにアクセスするための CodeBuild の承認設定に関する情報が含まれています。
- source/auth/type
-
必須。使用する権限付与タイプ。有効な値は次のとおりです。
-
OAUTH
-
CODECONNECTIONS
-
SECRETS_MANAGER
-
- source/auth/resource
-
オプション。指定した権限付与タイプに適用されるリソース値。これは Secrets Manager ARN または CodeConnections ARN になります。
- source/reportBuildStatus
-
ビルドの開始と完了のステータスをソースプロバイダーに送信するかどうかを指定します。これを GitHub、GitHub Enterprise Server、または Bitbucket 以外のソースプロバイダーに対して設定すると、
invalidInputException
がスローされます。ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「ソースプロバイダーのアクセス」を参照してください。
- source/buildStatusConfig
-
CodeBuild ビルドプロジェクトがソースプロバイダにビルドステータスを報告する方法を定義する情報が含まれています。このオプションは、ソースタイプが
GITHUB
、GITHUB_ENTERPRISE
、またはBITBUCKET
の場合にのみ使用されます。- source/buildStatusConfig/context
-
Bitbucket リソースでは、このパラメータは、Bitbucket コミットステータスの
name
パラメータに使用されます。GitHub ソースでは、このパラメータは、GitHub コミットステータスのcontext
パラメータに使用されます。例えば、
context
には、CodeBuild 環境変数を使用したビルド番号と webhook トリガーが含まれます。AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER
これにより、webhook プルリクエストイベントによってトリガーされた build #24 では、コンテキストは次のようになります。
AWS CodeBuild sample-project Build #24 - pr/8
- source/buildStatusConfig/targetUrl
-
Bitbucket リソースでは、このパラメータは、Bitbucket コミットステータスの
url
パラメータに使用されます。GitHub ソースでは、このパラメータは、GitHub コミットステータスのtarget_url
パラメータに使用されます。たとえば、「
targetUrl
」と「https://aws.amazon.com/codebuild/
」とコミットステータスをこのURLにリンクします。<path to build>
また、URL に情報を追加するには、CodeBuild 環境変数を
targetUrl
に含めることもできます。例えば、ビルド領域を 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
- source/gitSubmodulesConfig
-
オプション。Git サブモジュール設定に関する情報。CodeCommit、GitHub、GitHub Enterprise Server、Bitbucket でのみ使用されます。
- source/gitSubmodulesConfig/fetchSubmodules
-
リポジトリに Git サブモジュールを含める場合は、
fetchSubmodules
をtrue
に設定します。含まれている Git サブモジュールは HTTPS として設定する必要があります。
- source/InsecureSsl
-
オプション。GitHub Enterprise Server でのみ使用されます。GitHub Enterprise Server プロジェクトリポジトリに接続するときの TLS 警告を無視するには、この値を
true
に設定します。デフォルト値はfalse
です。InsecureSsl
は、テスト目的でのみ使用してください。本番環境では使用しないでください。 - source/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
の値を指定しない場合、CodeBuild ではnamespaceType
(指定されている場合) とname
を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前を決定します。たとえば、MyPath
をpath
に、MyArtifact.zip
にname
指定すると、パスと名前は「MyPath/MyArtifact.zip
」になります。 - artifacts/namespaceType
-
S3
アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。ビルド出力 ZIP ファイルまたはフォルダの名前空間。有効な値は、
BUILD_ID
およびNONE
です。BUILD_ID
を使用してビルド出力 ZIP ファイルまたはフォルダのパスにビルド ID を挿入します。それ以外の場合は、NONE
を使用します。namespaceType
の値を指定しない場合、CodeBuild ではpath
(指定されている場合) とname
を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前を決定します。たとえば、MyPath
をpath
に、BUILD_ID
をnamespaceType
、MyArtifact.zip
にname
指定すると、パスと名前は「MyPath/
」になります。build-ID
/MyArtifact.zip - artifacts/name
-
S3
アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。location
内のビルド出力 ZIP ファイルまたはフォルダの名前。たとえば、MyPath
をpath
に、MyArtifact.zip
にname
指定すると、パスと名前は「MyPath/MyArtifact.zip
」になります。 - artifacts/overrideArtifactName
-
S3 アーティファクトタイプ でのみ使用されます。他のアーティファクトタイプには使用されません。
オプション。
true
に設定すると、buildspec ファイルのartifacts
ブロックで指定された名前が、name
を上書きします。詳細については、「CodeBuild のビルド仕様に関するリファレンス」を参照してください。 - artifacts/packaging
-
S3
アーティファクトタイプでのみ使用されます。他のアーティファクトタイプには使用されません。オプション。アーティファクトをパッケージ化する方法を指定します。許可された値は次のとおりです:
- なし
-
ビルドアーティファクトを含むフォルダを作成します。これは、デフォルト値です。
- 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 では、
です。詳細については、「CodeBuild に用意されている Docker イメージ」を参照してください。account-id
.dkr.ecr.region-id
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
- environment/computeType
-
必須。このビルド環境で使用されるコンピュートリソースを指定します。詳細については、CodeBuild API リファレンスの「computeType」を参照してください。
- environment/certificate
-
オプション。Amazon S3 バケットの ARN、パスのプレフィックス、および PEM エンコードされた証明書を含むオブジェクトキー。オブジェクトキーとして、PEM エンコードされた証明書が含まれている .pem ファイルまたは .zip ファイルのいずれかを使用できます。たとえば、Amazon S3 バケット名が
、パスのプレフィックスが<my-bucket>
、オブジェクトキー名が<cert>
である場合、<certificate.pem>
certificate
に使用できる形式は
または<my-bucket/cert/certificate.pem>
arn:aws:s3:::
です。<my-bucket/cert/certificate.pem>
- environment/environmentVariables
-
オプション。このビルド環境に指定する環境変数が含まれている、EnvironmentVariable オブジェクトの配列。各環境変数は、オブジェクトとして表されます。
name
、value
、およびtype
のname
、value
、 およびtype
。コンソールと AWS CLI のユーザーはすべての環境変数を表示できます。環境変数の表示に懸念がない場合は、「
name
」を「value
」および 「type
」を「PLAINTEXT
」に設定します。Amazon EC2 Systems Manager パラメータストアまたは AWS Secrets Manager には、AWS アクセスキー ID、AWS シークレットアクセスキー、パスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします。
name
の場合、保存されているパラメータについては、CodeBuild の識別子を参照するように設定します。Amazon EC2 Systems Manager パラメータストアを使用する場合、
value
には、パラメータストアに保存されているとおりにパラメータの名前を設定します。type
をPARAMETER_STORE
に設定します。/CodeBuild/dockerLoginPassword
という名前のパラメータを使用するには、たとえば、「name
」を「LOGIN_PASSWORD
」に設定。value
を/CodeBuild/dockerLoginPassword
に設定します。type
をPARAMETER_STORE
に設定します。重要
Amazon EC2 Systems Manager パラメータストアを使用する場合、パラメータは
/CodeBuild/
で始まるパラメータ名(例:/CodeBuild/dockerLoginPassword
)で保存することをお勧めします。CodeBuild コンソールを使用して、Amazon EC2 Systems Manager にパラメータを作成することができます。[パラメータの作成] を選択し、ダイアログボックスの手順に従います。(ダイアログボックスでは、[KMS キー] の場合、アカウントの AWS KMS キーの ARN を指定できます。Amazon EC2 Systems Manager では、このキーを使用して、保存中にパラメータの値を暗号化し、取得中に復号化します)。CodeBuild コンソールを使用してパラメータを作成した場合、コンソールは保存されている/CodeBuild/
パラメータ名を開始します。詳細については、Amazon EC2 Systems Manager ユーザーガイドの「Systems Manager パラメータストア」および「Systems Manager パラメータストアコンソールのチュートリアル」を参照してください。ビルドプロジェクトが Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで
ssm:GetParameters
アクションを許可する必要があります。以前に [New service role] (新しいサービスロール) を選択した場合は、CodeBuild のビルドプロジェクトのデフォルトのサービスロールにこのアクションが含まれています。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。ビルドプロジェクトが、
/CodeBuild/
で始まらないパラメータ名を持つ、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/CodeBuild/
で始まらないパラメータ名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールで、/CodeBuild/
で始まるパラメータ名にのみアクセスが許可されるためです。[新しいサービスロールを作成] を選択した場合、サービスロールには、Amazon EC2 Systems Manager パラメータストアの
/CodeBuild/
名前空間ですべてのパラメータを復号するアクセス権限が含まれます。既存の環境変数は、設定した環境変数により置き換えられます。たとえば、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_
で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。同じ名前の環境変数が複数の場所で定義されている場合は、その値は次のように決定されます。
-
ビルド開始オペレーション呼び出しの値が最も優先順位が高くなります。
-
ビルドプロジェクト定義の値が次に優先されます。
-
ビルド仕様宣言の値の優先順位が最も低くなります。
Secrets Manager を使用する場合、
value
には、Secrets Manager に保存されているパラメータの名前を設定します。type
をSECRETS_MANAGER
に設定します。/CodeBuild/dockerLoginPassword
という名前のシークレットを使用するには、たとえば、「name
」を「LOGIN_PASSWORD
」に設定。value
を/CodeBuild/dockerLoginPassword
に設定します。type
をSECRETS_MANAGER
に設定します。重要
Secrets Manager を使用する場合は、「
/CodeBuild/
」で始まる名前でシークレットを保存することをお勧めします(たとえば、/CodeBuild/dockerLoginPassword
)。詳細については、AWS Secrets Managerユーザーガイドの「AWS Secrets Manager とは」を参照してください。ビルドプロジェクトが Secrets Manager パラメータストアに保存されているパラメータを参照する場合、ビルドプロジェクトのサービスロールで
secretsmanager:GetSecretValue
アクションを許可する必要があります。以前に [New service role] (新しいサービスロール) を選択した場合は、CodeBuild のビルドプロジェクトのデフォルトのサービスロールにこのアクションが含まれています。ただし [既存のサービスロール] を選択した場合は、このアクションをサービスロールに個別に含める必要があります。ビルドプロジェクトが、
/CodeBuild/
で始まらないパラメータ名を持つ、Secrets Manager に保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/CodeBuild/
で始まらないシークレット名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールで、/CodeBuild/
で始まるシークレット名にのみアクセスが許可されるためです。[新しいサービスロール] を選択した場合、作成されるサービスロールには、Secrets Manager の
/CodeBuild/
名前空間ですべてのシークレットを復号するアクセス許可が含まれます。 -
- environment/registryCredential
-
オプション。プライベート Docker レジストリへのアクセスを提供する認証情報を指定する RegistryCredential オブジェクト。
- environment/registryCredential/credential
-
AWS Managed Services を使用して作成された認証情報の ARN または名前を指定します。認証情報の名前を使用できるのは、認証情報が現在のリージョン内に存在する場合のみです。
- environment/registryCredential/credentialProvider
-
唯一の有効な値は
SECRETS_MANAGER
です。
これを設定した場合:
-
imagePullCredentials
をSERVICE_ROLE
に設定する必要があります。 -
選別されたイメージや Amazon ECR イメージは使用できません。
- environment/imagePullCredentialsType
-
オプション。ビルドのイメージをプルするために CodeBuild で使用する認証情報のタイプ。2 つの有効な値があります。
- CODEBUILD
-
CODEBUILD
は、CodeBuild で独自の認証情報を使用することを指定します。CodeBuild サービスプリンシパルを信頼するには、Amazon ECR リポジトリポリシーを編集する必要があります。 - SERVICE_ROLE
-
CodeBuild でビルドプロジェクトのサービスロールを使用することを指定します。
クロスアカウントまたはプライベートレジストリイメージを使用する場合は、
SERVICE_ROLE
の認証情報を使用する必要があります。CodeBuild の選別されたイメージを使用する場合は、CODEBUILD
の認証情報を使用する必要があります。 - environment/privilegedMode
-
このビルドプロジェクトを使用して Docker イメージをビルドする計画の場合のみ、
true
に設定します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。ビルドが Docker デーモンと連係動作できるように、Docker デーモンも起動する必要があります。これを行う 1 つの方法は、次のビルドコマンドを実行して buildspec ファイルのinstall
フェーズで Docker デーモンを初期化することです。Docker をサポートする CodeBuild によって提供されるビルド環境イメージを指定した場合は、これらのコマンドを実行しないでください。注記
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「Runtime Privilege and Linux Capabilities
」を参照して、特権モードを有効にします。また、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
必須。CodeBuild がユーザーに代わってサービスとやり取りするために使用するサービスロールの ARN (例: arn:aws:iam::
)。account-id
:role/role-name
autoRetryLimit
オプション。ビルドが失敗した後、さらに自動で再試行する回数です。例えば、自動再試行の制限が 2 に設定されている場合、CodeBuild は RetryBuild
API を呼び出して、さらに最大 2 回までビルドを自動的に再試行します。
timeoutInMinutes
オプション。5〜2,160 分 (36 時間) の分単位の時間。この時間が経過してもビルドが完了していない場合、CodeBuild はビルドを停止します。指定しない場合は、デフォルトの 60 が使用されます。CodeBuild がタイムアウトによりビルドを停止したかどうか、およびそのタイミングを確認するには、batch-get-builds
コマンドを実行します。ビルドが停止しているかどうかを確認するには、出力で FAILED
の buildStatus
値を調べます。ビルドがタイムアウトした時間を確認するには、 出力で TIMED_OUT
のphaseStatus
値に関連付けられている endTime
値を調べます。
queuedTimeoutInMinutes
オプション。5〜480 分 (8 時間) の分単位の時間。この時間が経過すると、ビルドがキューされている場合に CodeBuild によってビルドが停止されます。指定しない場合は、デフォルトの 60 が使用されます。
encryptionKey
オプション。ビルド出力を暗号化するために CodeBuild で使用する AWS KMS key のエイリアスまたは ARN。エイリアスを指定する場合に、arn:aws:kms:
形式を使用し、エイリアスが存在する場合には、region-ID
:account-ID
:key/key-ID
alias/
形式を使用します。指定しない場合は、Amazon S3 の AWS 管理 KMS キーが使用されます。key-alias
タグ
オプション。このビルドプロジェクトに関連付けるタグを提供する Tag オブジェクトの配列。最大 50 個のタグを指定できます。これらのタグは、CodeBuild ビルドプロジェクトタグをサポートする任意の AWS のサービスで使用できます。各タグは、「key
」と「value
」オブジェクトとして表現されます。
vpcConfig
オプション。VpcConfig オブジェクト。プロジェクトの VPC 設定に関する情報を含む。詳細については、「Amazon Virtual Private Cloud での AWS CodeBuild の使用」を参照してください。
これらのプロパティには、次のものがあります。
- vpcId
-
必須。CodeBuild で使用される VPC ID。リージョン内の VPC ID を一覧表示するには、次のコマンドを実行します。
aws ec2 describe-vpcs --region
<region-ID>
- サブネット
-
必須。CodeBuild で使用されるリソースを含むサブネット ID の配列。これらの ID を取得するには、次のコマンドを実行します。
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region
<region-ID>
- securityGroupIds
-
必須。VPC 内のリソースへのアクセスを許可するために CodeBuild で使用されるセキュリティグループ ID の配列。これらの ID を取得するには、次のコマンドを実行します。
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=
<vpc-id>
" --<region-ID>
badgeEnabled
オプション。CodeBuild プロジェクトにビルドバッジを含めるかどうかを指定します。true
に設定してビルドバッジを有効にするか、そうでない場合は false
に設定します。詳細については、「CodeBuild でのビルドバッジサンプル」を参照してください。
logsConfig
このビルドのログが配置されている場所に関する情報が含まれている、LogsConfig オブジェクト。
- logsConfig/cloudWatchLogs
-
CloudWatch Logs へのログのプッシュに関する情報が含まれている、CloudWatchLogsConfig オブジェクト。
- logsConfig/s3Logs
-
Amazon S3 へのログのプッシュに関する情報が含まれている、S3LogsConfig オブジェクト。
fileSystemLocations
オプション。Amazon EFS 設定に関する情報が含まれている、ProjectFileSystemsLocation オブジェクトの配列。
buildBatchConfig
オプション。buildBatchConfig
オブジェクトは ProjectBuildBatchConfig 構造体であり、プロジェクトのバッチビルド設定情報を含みます。
- buildBatchConfig/serviceRole
-
バッチビルドプロジェクトのサービスロール ARN を指定します。
- buildBatchConfig/combineArtifacts
-
バッチビルドのビルドアーティファクトを 1 つのアーティファクトの場所に結合するかどうかを指定するブール値。
- buildBatchConfig/restrictions/maximumBuildsAllowed
-
許可されるビルドの最大数。
- buildBatchConfig/restrictions/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 表現の Project オブジェクトが、コンソール出力に表示されます。このデータの例については、「CreateProject レスポンスの構文」を参照してください。
ビルドプロジェクトの名前を除いて、後でビルドプロジェクトの設定を変更することができます。詳細については、「ビルドプロジェクトの設定の変更 (AWS CLI)」を参照してください。
ビルドの実行を開始するには、「ビルドの実行 (AWS CLI)」を参照してください。
ソースコードが GitHub リポジトリに保存されていて、コード変更がリポジトリにプッシュされるたびに CodeBuild でソースコードを再構築する場合は、「ビルドの実行の自動開始 (AWS CLI)」を参照してください。
ビルドプロジェクトの作成 (AWS SDK)
AWS CodeBuild を AWS SDK と組み合わせて使用する方法については、「AWS SDK とツールのリファレンス」を参照してください。
ビルドプロジェクトの作成 (AWS CloudFormation)
AWS CloudFormation での AWS CodeBuild の使用については、AWS CloudFormation ユーザーガイドの「CodeBuild の AWS CloudFormation テンプレート」を参照してください。