ビルドプロジェクトの作成 (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" | "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 アカウントのすべてのビルドプロジェクトにわたって一意である必要があります。
[ Description] ( 説明)
オプション。このビルドの説明。
source
必須。このビルドプロジェクトのソースコード設定に関する情報が含まれている、ProjectSource オブジェクト。source
オブジェクトを追加したら、secondarySources を使用して最大 12 個のソースを追加できます。これらの設定には以下が含まれます。
- source/type
-
必須。ビルドするソースコードを含むリポジトリのタイプ。有効な値を次に示します。
-
CODECOMMIT
-
CODEPIPELINE
-
GITHUB
-
GITHUB_ENTERPRISE
-
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 コンソールを使用してビルドプロジェクトを作成します。
-
GitHub の [Authorize application] ページの [Organization access] セクションで、CodeBuild にアクセスを許可する各リポジトリの横にある [Request access] を選択します。
-
[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 アカウントに接続されました。
-
-
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/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 が使用されます。 -
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 コンテナはどのデバイスにもアクセスできません。権限モードは、ビルドプロジェクトの Docker コンテナにすべてのデバイスへのアクセスを許可します。詳細については、Docker Docs Web サイトの「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
timeoutInMinutes
オプション。5〜480 分 (8 時間) の分単位の時間。この時間が経過すると、ビルドが完了していない場合に 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)」を参照してください。