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

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

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

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

JSON ファイルの作成

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

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" | "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" | "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", "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 アカウントのすべてのビルドプロジェクトにわたって一意である必要があります。

説明

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

source (ソース

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

source/type

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

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • BITBUCKET

  • S3

  • NO_SOURCE

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

source/location

source-typeCODEPIPELINE に設定しない場合は必須です。指定されたリポジトリタイプのソースコードの場所。

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

    1. GitHub の [Authorize application] ページの [Organization access] で、CodeBuild にアクセスを許可する各リポジトリの横にある [Request access] を選択します。

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

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

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

    2. このトークンをクリップボードにコピーし、CodeBuild プロジェクトの作成時に使用します。詳細については、GitHub Help ウェブサイトの Creating a personal access token for the command line を参照してください。

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

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

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

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

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

source/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 コンソールでのみ使用されます。

source/reportBuildStatus

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

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

source/buildStatusConfig

CodeBuild ビルドプロジェクトがソースプロバイダにビルドステータスを報告する方法を定義する情報が含まれています。このオプションは、ソースタイプが GITHUBGITHUB_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/<path to build>」とコミットステータスをこのURLにリンクします。

また、CodeBuild 環境変数「targetUrl」に URL 情報を追加するには、[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
source/gitSubmodulesConfig

オプション。Git サブモジュール設定に関する情報。CodeCommit、GitHub、GitHub Enterprise Server、Bitbucket でのみ使用されます。

source/gitSubmodulesConfig/fetchSubmodules

リポジトリに Git サブモジュールを含める場合は、fetchSubmodulestrue に設定します。含まれている 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 が使用されます。

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

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

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

アーティファクト

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

artifacts/type

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

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifacts/location

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

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

artifacts/path

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

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

artifacts/namespaceType

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

ビルド出力 ZIP ファイルまたはフォルダの名前空間。有効な値は、BUILD_ID および NONE です。BUILD_ID を使用してビルド出力 ZIP ファイルまたはフォルダのパスにビルド ID を挿入します。それ以外の場合は、NONE を使用します。namespaceType の値を指定しない場合、CodeBuild では path (指定されている場合) と name を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前を決定します。たとえば、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 は、アーティファクト オブジェクトで使用されているのと同じ設定の多くを使用します。

cache

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

環境

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

environment/type

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

environment/image

必須。このビルド環境で使用される Docker イメージ識別子。通常、この識別子は image-name:tag として表されます。例えば、CodeBuild で Docker イメージの管理に使用する Docker リポジトリの場合、これは aws/codebuild/standard:4.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 です。詳細については、「CodeBuild に用意されている Docker イメージ」を参照してください。

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 Secrets Manager には AWS アクセスキー ID、AWS シークレットアクセスキー、またはパスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします。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_ で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

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

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

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

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

value で Secrets Manager を使用する場合は、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

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

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

注記

デフォルトでは、Docker コンテナはどのデバイスにもアクセスできません。権限モードは、ビルドプロジェクトの Docker コンテナにすべてのデバイスへのアクセスを許可します。詳細については、Docker Docs Web サイトの「Runtime Privilege and Linux Capabilities」を参照してください。

- 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 は、IAM ユーザーに代わってサービスとやり取りするために使用します (例: arn:aws:iam::account-id:role/role-name)。

timeoutInMinutes

オプション。5〜480 分 (8 時間) の分単位の時間。この時間が経過すると、ビルドが完了していない場合に CodeBuild によってビルドが停止されます。指定しない場合は、デフォルトの 60 が使用されます。CodeBuild がタイムアウトによりビルドを停止したかどうかを判断するには、batch-get-builds コマンドを実行します。ビルドが停止しているかどうかを確認するには、出力で buildStatusFAILED 値を調べます。ビルドがタイムアウトした時間を確認するには、 出力で endTimephaseStatus 値に関連付けられている TIMED_OUT 値を調べます。

queuedTimeoutInMinutes

オプション。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 S3 の AWS 管理 KMS キーが使用されます。

タグ

オプション。タグオブジェクトの配列。このビルドプロジェクトに関連付けるタグを提供します。最大 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

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

logsConfig/s3Logs

S3LogsConfig オブジェクト。これには、Amazon S3 にログをプッシュする方法に関する情報が含まれます。

fileSystemLocations

オプション。Amazon EFS 設定に関する情報を含むプロジェクトファイルシステムの場所オブジェクトの配列です。

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 表現のプロジェクトオブジェクトが、コンソール出力に表示されます。フレームワークの使用の詳細については、CreateProject レスポンスの構文このデータの例を参照してください。

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

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

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