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

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

ビルドプロジェクトの作成 (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-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>", "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 コンソールを使用してビルドプロジェクトを作成します。

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

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

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

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

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

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

  • Bitbucket の場合は、ソースコードと buildspec ファイルが格納されているリポジトリへの HTTPS クローン URL。URL には bitbucket.org が含まれている必要があります。また、 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 リージョンに存在する必要があります。ARN を使用して buildspec ファイルを指定します(例: arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。詳細については、「buildspec ファイル名とストレージの場所」を参照してください。

source/auth

使用しません。このオブジェクトは CodeBuild コンソールでのみ使用されます。

ソース/reportBuildStatus

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

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

ソース/buildStatusConfig

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

source/buildStatusConfig/context

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
source/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 Enterprise Server GitHub、Bitbucket でのみ使用されます。

source/gitSubmodulesConfig/fetchSubmodules

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

ソース/InsecureSsl

オプション。 GitHub Enterprise Server でのみ使用されます。Enterprise Server プロジェクトリポジトリへの接続中に TLS 警告を無視trueするには、この値を GitHub に設定します。デフォルト値は 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、 は namespaceType (指定されている場合) と CodeBuild を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前nameを決定します。たとえば、MyPathpath に、MyArtifact.zipname 指定すると、パスと名前は「MyPath/MyArtifact.zip」になります。

artifacts/namespaceType

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

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

artifacts/name

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

location 内のビルド出力 ZIP ファイルまたはフォルダの名前。たとえば、MyPathpath に、MyArtifact.zipname 指定すると、パスと名前は「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 リファレンスhttps://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-type「type」を参照してください。

environment/image

必須。このビルド環境で使用される Docker イメージ識別子。通常、この識別子は image-name:tag として表されます。例えば、 が Docker イメージの管理 CodeBuild に使用する 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」を参照してください。

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 オブジェクトの配列。各環境変数は、オブジェクトとして表されます。namevalue、および typenamevalue、 および type

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

Amazon EC2 Systems Manager パラメータストアまたは には、 AWS アクセスキー ID、 AWS シークレットアクセスキー、パスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします 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 EC2 Systems Manager ユーザーガイドの「Systems Manager パラメータストア」および「Systems Manager パラメータストアコンソールのチュートリアル」を参照してください。

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

ビルドプロジェクトが、/CodeBuild/ で始まらないパラメータ名を持つ、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照し、[新しいサービスロール] を選択した場合、/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/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

environment/registryCredential

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

environment/registryCredential/credential

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

environment/registryCredential/credentialProvider

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

これを設定した場合:

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

  • 選別されたイメージや Amazon ECR イメージは使用できません。

環境/imagePullCredentialsタイプ

オプション。ビルドでイメージをプルするために 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 ウェブサイトの「ランタイム特権と 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)。

timeoutInMinutes

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

queuedTimeoutIn分

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

encryptionKey

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

タグ

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

vpcConfig

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

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

vpcId

必須。が CodeBuild 使用する VPC ID。リージョン内の VPC ID を一覧表示するには、次のコマンドを実行します。

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

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

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

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

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

badgeEnabled

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

logsConfig

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

logsConfigcloudWatchLogs/

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

logsConfig/s3Logs

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

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)