メニュー
AWS CodeBuild
ユーザーガイド (API バージョン 2016-10-06)

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

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

前提条件

ビルドを計画する の質問に答えます。

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

  1. Open the AWS CodeBuild console at https://console.aws.amazon.com/codebuild/.

  2. ウェルカムページが表示された場合は、[今すぐ始める] を選択します。

    ウェルカムページが表示されない場合は、ナビゲーションペインで [Build projects] を選択し、次に [Create project] を選択します。

  3. [Configure your project] ページの [Project name] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクトの名前は、各 AWS アカウントで一意である必要があります。

  4. (オプション) [Add description] を選択して、[Description] ボックスに説明を入力します。

  5. [Source: What to build (ソース: ビルド対象)] の [ソースプロバイダ] で、ソースコードプロバイダのタイプを選択します。次のテーブルを使用して、ソースプロバイダに関する適切な選択を行います。

    ソースプロバイダ Amazon S3 AWS CodeCommit Bitbucket GitHub GitHub Enterprise

    For Bucket, choose the name of the input bucket that contains the source code.

    X

    For S3 object key, type the name of the ZIP file that contains the source code.

    X

    Choose Connect to Bitbucket and follow the instructions to connect (or reconnect) with Bitbucket.

    X

    Choose Connect to GitHub and follow the instructions to connect (or reconnect) with GitHub and authorize access to AWS CodeBuild.

    X

    For Personal Access token, see GitHub Enterprise のサンプル for information about how to copy a personal access token to your clipboard. Paste the token in the text field, and then choose Save Token.

    注記

    You only need to enter and save the personal access token once. All future AWS CodeBuild projects will use this token.

    X

    From Repository, choose the repository you want to use.

    X

    For Repository, choose whether to use a public repository or a repository in your account.

    X X

    Use Repository URL only if you use a public repository. Enter its URL.

    X X

    Use Choose a repository only if you use a repository in your account.

    X X

    Choose Git clone depth to create a shallow clone with a history truncated to the specified number of commits. If you want a full clone, choose Full.

    X X X X

    Choose Webhook if you want AWS CodeBuild to build the source code every time a code change is pushed to this repository.

    X X

    If you chose Webhook, in Branch filter, enter a regular expression filter to specify which branches are built. If the name of a branch matches the branch filter, the branch is built. If no filter is specified, all branches are built.

    X X

    Choose Report build status, if you want the status of your build's start and completion reported to your source provider.

    注記

    The status of a build triggered by a webhook is always reported to your source provider.

    X

    Choose Insecure SSL to ignore SSL warnings while connecting to your GitHub Enterprise project repository.

    X

    Choose Build Badge to make your project's build status visible and embeddable. For more information, see ビルドバッジサンプル.

    X X X X
  6. [Environment: How to build] で以下の操作を行います。

    [Environment image] で、次のいずれかの操作を行います。

    • AWS CodeBuild で管理されている Docker イメージを使用するには、[Use an image managed by AWS CodeBuild] を選択し、次に [Operating system]、[Runtime]、および [Version] で選択を行います。

    • 別の Docker イメージを使用するには、[Specify a Docker image] を選択します。[Custom image type] で [Other] または [Amazon ECR] を選択します。[その他] を選択した場合は、[カスタムイメージタイプ] に Docker Hub の Docker イメージの名前とタグを入力します。形式として、repository-name/image-name:image-tag を使用します。[Amazon ECR] を選択した場合は、[Amazon ECR repository] および [Amazon ECR image] を使用して AWS アカウントの Docker イメージを選択します。

    [Build specification] で、次のいずれかの操作を行います。

    • ソースコードにビルド仕様ファイルが含まれている場合は、[ソースコードのルートディレクトリの buildspec.yml を使用] を選択します。

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

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

  7. [Artifacts: Where to put the artifacts from this build project] の、[Artifacts type] で次のいずれかの操作を行います。

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

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

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

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

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

  8. [Cache] で、次のいずれかの操作を行います。

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

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

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

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

        重要

        パスのプレフィックスの末尾に「/」を追加しないでください。

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

  9. [Service role] で、次のいずれかの操作を行います。

    • AWS CodeBuild サービスロールがない場合は、[Create a service role in your account] を選択します。[Role name] で、デフォルト名を受け入れるか、独自の名前を入力します。

    • AWS CodeBuild サービスロールがある場合は、[Choose an service existing role from your account] を選択します。[Role name] で、サービスロールを選択します。

    注記

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

  10. [VPC] で、次のいずれかの操作を行います。

    • プロジェクトに VPC を使用していない場合は、[No VPC] を選択します。

    • AWS CodeBuild を VPC で動作させる場合、

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

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

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

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

  11. [Show advanced settings] を展開します。

    注記

    ウェルカムページから [今すぐ始める] 選択してこのページに到着した場合、[Show advanced settings] セクションは表示されません。この手順のステップ 20 に進みます。デフォルト設定の変更については、「ビルドプロジェクトの設定を変更する (コンソール)」を参照してください。

  12. (オプション) [Timeout] の場合は、5 分から 480 分 (8 時間) の間の値を指定します。この時間が経過すると、AWS CodeBuild は完了していない場合にビルドを停止します。[hours] と [minutes] を空白のままにすると、デフォルト値の 60 分が使用されます。

  13. (オプション) [Encryption key] で次のいずれかの操作を行います。

    • アカウントの Amazon S3 の AWS 管理の顧客マスターキー (CMK) を使用してビルド出力アーティファクトを暗号化するには、[Encryption key] を空白のままにします。これがデフォルト値です。

    • To use a カスタマー管理 CMK を使用してビルド出力アーティファクトを暗号化するには、[Encryption key] に CMK の ARN を入力します。arn:aws:kms:region-ID:account-ID:key/key-ID の形式を使用します。

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

    - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
  15. (オプション) この手順で以前に [Artifacts type] で [Amazon S3] を選択した場合は、[Artifacts packaging] で、次のいずれかの操作を行います。

    • ビルド出力を含む ZIP ファイルを AWS CodeBuild で作成するには、[Zip] を選択します。

    • ビルド出力を含むフォルダを AWS CodeBuild で作成するには、[なし] を選択します (これがデフォルトです)。

  16. [Compute type] で、以下のいずれかの利用可能なオプションを選択します。

  17. [Environment variables] には、使用するビルドの各環境変数の名前、値、タイプを入力します。[Add row] を使用して環境変数を追加します。

    注記

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

    • AWS_ACCOUNT_ID

    • IMAGE_REPO_NAME

    • IMAGE_TAG

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

    Amazon EC2 Systems Manager パラメータストアには、AWS アクセスキー ID、AWS シークレットアクセスキー、またはパスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします。[Type] で [Parameter Store] を選択します。[Name] に、参照する AWS CodeBuild の識別子を入力します。[Value] に、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータの名前を入力します。たとえば、/CodeBuild/dockerLoginPassword という名前のパラメータを使用して、[Type] で [Parameter Store] を選択します。[Name] に、「LOGIN_PASSWORD」と入力します。[Value] に、「/CodeBuild/dockerLoginPassword」と入力します。

    重要

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

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

    ビルドプロジェクトが、/CodeBuild/ で始まらないパラメータ名を持つ、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照し、[Create a service role in your account] を選択した場合、/CodeBuild/ で始まらないパラメータ名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールが /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_ で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

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

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

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

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

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

  19. [次へ] を選択します。

  20. [Review] ページで、次のいずれかの操作を行います。

    • ビルドを実行するには、[Save and build] を選択します。

    • ビルドを実行せずにビルドプロジェクトの作成を終了するには、[Save] を選択します。

ビルドプロジェクトを作成する (AWS CLI)

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

  1. create-project コマンドを実行します。

    aws codebuild create-project --generate-cli-skeleton

    JSON 形式のデータが出力に表示されます。AWS CLI がインストールされているローカルコンピュータまたはインスタンス上の場所にあるファイル (例: create-project.json) にデータをコピーします。コピーされたデータを次のように変更して、結果を保存します。

    { "name": "project-name", "description": "description", "source": { "type": "source-type", "location": "source-location", "gitCloneDepth": "gitCloneDepth", "buildspec": "buildspec", "InsecureSsl": "InsecureSsl", "reportBuildStatus": reportBuildStatus", "auth": { "type": "auth-type", "resource": "resource" } }, "artifacts": { "type": "artifacts-type", "location": "artifacts-location", "path": "path", "namespaceType": "namespaceType", "name": "artifacts-name", "packaging": "packaging" }, "cache": { "type": "cache-type", "location": "cache-location" }, "serviceRole": "serviceRole", "vpcConfig": { "securityGroupIds": [ "security-group-id" ], "subnets": [ "subnet-id" ], "vpcId": "vpc-id" }, "timeoutInMinutes": timeoutInMinutes, "encryptionKey": "encryptionKey", "tags": [ { "key": "tag-key", "value": "tag-value" } ], "environment": { "type": "environment-type", "image": "image", "computeType": "computeType", "certificate": "certificate", "environmentVariables": [ { "name": "environmentVariable-name", "value": "environmentVariable-value", "type": "environmentVariable-type" } ], "privilegedMode": "privilegedMode" }, "badgeEnabled": "badgeEnabled" }

    以下に置き換えます。

    • project-name: 必須値。このビルドプロジェクトの名前。この名前は、AWS アカウントのすべてのビルドプロジェクトにわたって一意である必要があります。

    • description: (オプションの値)。このビルドの説明。

    • 必要な source オブジェクトのための、このビルドプロジェクトのソースコードの設定についての情報。これらの設定には以下が含まれます。

      • source-type: 必須値。ビルドするソースコードを含むリポジトリのタイプ。有効な値には、CODECOMMITCODEPIPELINEGITHUBGITHUB_ENTERPRISEBITBUCKET、および S3 があります。

      • source-location: 必須値 (CODEPIPELINEsource-type を設定しない場合)。指定されたリポジトリタイプのソースコードの場所。

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

        • Amazon S3 では、ビルド入力バケット名の後に、スラッシュ (/) が続き、ソースコードとビルド仕様 (例: bucket-name/object-name.zip) を含む ZIP ファイルの名前が続きます。これは ZIP ファイルがビルド入力バケットのルートにあることを前提としています。(ZIP ファイルがバケット内のフォルダにある場合は、代わりに bucket-name/path/to/object-name.zip を使用してください)。

        • GitHub の場合、ソースコードとビルド仕様を含むリポジトリへの HTTPS クローン URL。AWS アカウントを GitHub アカウントに接続する必要があります。これを行うには、AWS CodeBuild コンソールを使用してプロジェクトを作成します。コンソールを使用して GitHub に接続 (または再接続) するときは、GitHub の [Authorize application] ページの [Organization access] で、AWS CodeBuild にアクセスできるように各リポジトリの横にある [Request access] を選択します。[Authorize application] を選択します。(GitHub アカウントに接続した後、ビルドプロジェクトの作成を完了する必要はありません。AWS CodeBuild コンソールを閉じることができます。)この接続を使用するよう AWS CodeBuild に指示するには、source オブジェクトで、auth オブジェクトの type 値を OAUTH に設定します。

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

          まず、GitHub Enterprise で個人用アクセストークンを作成します。このトークンをクリップボードにコピーし、AWS CodeBuild プロジェクトの作成時に使用します。詳細については、GitHub ヘルプウェブサイトの「GitHub Enterprise で個人用アクセストークンを作成する」を参照してください。コンソールを使用して AWS CodeBuild プロジェクトを作成する場合、[ソースプロバイダ] の [ソース: 何をビルドするか] で [GitHub Enterprise] を選択します。[個人用アクセストークン] には、クリップボードにコピーしたトークンを貼り付けます。[トークンの保存] を選択します。これで、AWS CodeBuild アカウントが GitHub Enterprise アカウントに接続されました。

        • Bitbucket の場合、ソースコードとビルド仕様を含むリポジトリへの HTTPS クローン URL。また、AWS アカウントを Bitbucket アカウントに接続する必要があります。これを行うには、AWS CodeBuild コンソールを使用してプロジェクトを作成します。コンソールを使用して Bitbucket に接続 (または再接続) する場合は、Bitbucket の [Confirm access to your account] ページで、[Grant access] を選択します (Bitbucket アカウントに接続した後、ビルドプロジェクトの作成を完了する必要はありません)。AWS CodeBuild コンソールを閉じることができます。)この接続を使用するよう AWS CodeBuild に指示するには、source オブジェクトで、auth オブジェクトの type 値を OAUTH に設定します。

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

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

      • buildspec: (オプションの値)。使用するビルド仕様定義またはファイル。この値が設定されている場合は、インラインのビルド仕様定義であるか、組み込みの環境変数 CODEBUILD_SRC_DIR の値に相対的な代替ビルド仕様ファイルへのパスになります。この値が指定されていない場合、または空の文字列に設定されている場合、ソースコードにはルートディレクトリの buildspec.yml ファイルが含まれている必要があります。詳細については、「ビルド仕様のファイル名とストレージの場所」を参照してください。

      • auth: このオブジェクトは、AWS CodeBuild コンソールでのみ使用されます。auth-type (source-typeGITHUB に設定した場合を除く) または resource に値を指定しないでください。

      • reportBuildStatus: オプションの値。この値では、ビルドの開始と完了のステータスをソースプロバイダに送信するかどうかを指定します。これを GitHub 以外のソースプロバイダに対して設定すると、invalidInputException がスローされます。

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

    • 必要な artifacts オブジェクトのための、このビルドプロジェクトの出力アーティファクトの設定についての情報。これらの設定には以下が含まれます。

      • artifacts-type: 必須値。ビルド出力アーティファクトのタイプ。有効な値は、CODEPIPELINENO_ARTIFACTS、および S3 です。

      • artifacts-location: 必須値 (CODEPIPELINE または NO_ARTIFACTSartifacts-type を設定しない場合)。ビルド出力アーティファクトの場所。

        • artifacts-typeCODEPIPELINE を指定した場合は、artifactslocation を指定しないでください。

        • artifacts-typeNO_ARTIFACTS を指定した場合は、artifactslocation を指定しないでください。

        • artifacts-type として S3 を指定した場合、これは前提条件で作成または識別した出力バケットの名前です。

      • path: (オプションの値)。ビルド出力 ZIP ファイルまたはフォルダのパスと名前。

        • artifacts-typeCODEPIPELINE を指定した場合は、artifactspath を指定しないでください。

        • artifacts-typeNO_ARTIFACTS を指定した場合は、artifactspath を指定しないでください。

        • artifacts-typeS3 を指定した場合、これは artifacts-location 内のビルド出力 ZIP ファイルまたはフォルダのパスです。path の値を指定しない場合、AWS CodeBuild では namespaceType (指定されている場合) と artifacts-name を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前を決定します。たとえば、pathMyPathartifacts-nameMyArtifact.zip を指定すると、パスと名前は MyPath/MyArtifact.zip になります。

      • namespaceType: (オプションの値)。ビルド出力 ZIP ファイルまたはフォルダのパスと名前。

        • artifacts-typeCODEPIPELINE を指定した場合は、artifactsnamespaceType を指定しないでください。

        • artifacts-typeNO_ARTIFACTS を指定した場合は、artifactsnamespaceType を指定しないでください。

        • artifacts-typeS3 を指定した場合、有効な値には BUILD_IDNONE が含まれます。BUILD_ID を使用してビルド出力 ZIP ファイルまたはフォルダのパスにビルド ID を挿入します。それ以外の場合は、NONE を使用します。namespaceType の値を指定しない場合、AWS CodeBuild では path (指定されている場合) と artifacts-name を使用して、ビルド出力 ZIP ファイルまたはフォルダのパスと名前を決定します。たとえば、pathMyPathnamespaceTypeBUILD_IDartifacts-nameMyArtifact.zip を指定する場合、パスと名前は MyPath/build-ID/MyArtifact.zip になります。

      • artifacts-name: 必須値 (CODEPIPELINE または NO_ARTIFACTSartifacts-type を設定しない場合)。ビルド出力 ZIP ファイルまたはフォルダのパスと名前。

        • artifacts-typeCODEPIPELINE を指定した場合は、artifactsname を指定しないでください。

        • artifacts-typeNO_ARTIFACTS を指定した場合は、artifactsname を指定しないでください。

        • artifacts-typeS3 を指定した場合、これは artifacts-location 内のビルド出力 ZIP ファイルまたはフォルダの名前です。たとえば、pathMyPathartifacts-nameMyArtifact.zip を指定すると、パスと名前は MyPath/MyArtifact.zip になります。

      • packaging: (オプションの値)。作成するビルド出力アーティファクトのタイプ。

        • artifacts-typeCODEPIPELINE を指定した場合は、artifactspackaging を指定しないでください。

        • artifacts-typeNO_ARTIFACTS を指定した場合は、artifactspackaging を指定しないでください。

        • artifacts-typeS3 を指定した場合、有効な値には ZIPNONE が含まれます。ビルド出力を含む ZIP ファイルを作成するには、ZIP を使用します。ビルド出力を含むフォルダを作成するには、NONE を使用します。デフォルト値は NONE です。

    • 必要な cache オブジェクトのための、このビルドプロジェクトのキャッシュ設定についての情報。これらの設定には以下が含まれます。

      • CacheType: 必須値。有効な値は S3 または NO_CACHE です。

      • CacheLocation: 必須値 (CacheTypeNONE に設定しない場合)。CacheType に S3 を指定した場合、これが S3 バケットの ARN およびパスのプレフィックスになります。たとえば、Amazon S3 バケット名が my-bucket で、パスのプレフィックスが build-cache の場合、CacheLocation に使用できるフォーマットは my-bucket/build-cache または aws:s3:::my-bucket/build-cache になります。

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

    • オプションの vpcConfig オブジェクトについては、VPC 設定に関する情報を参照してください。設定は次のとおりです。

      • vpcId: 必須値。AWS CodeBuild で使用される VPC ID。リージョン内の Amazon VPC ID を一覧表示するには、次のコマンドを実行します。

        aws ec2 describe-vpcs
      • subnets: 必須値。AWS CodeBuild で使用されるリソースを含むサブネット ID。これらの ID を取得するには、次のコマンドを実行します。

        aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1

        注記

        us-east-1 以外のリージョンを使用している場合は、コマンドを実行するときに必ず使用してください。

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

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

        注記

        us-east-1 以外のリージョンを使用している場合は、コマンドを実行するときに必ず使用してください。

    • 必要な environment オブジェクトのための、このプロジェクトのビルド環境設定についての情報。設定は次のとおりです。

      • environment-type: 必須値。構築環境のタイプ。有効な値は、LINUX_CONTAINER および WINDOWS_CONTAINER です。

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

      • computeType: 必須値。このビルド環境で使用される CPU コアとメモリの数に対応するカテゴリ。使用できる値は、BUILD_GENERAL1_SMALLBUILD_GENERAL1_MEDIUM、および BUILD_GENERAL1_LARGE です。

      • 証明書: オプション値。S3 バケットの ARN、パスのプレフィックス、および PEM エンコードされた証明書を含むオブジェクトキー。オブジェクトキーとして、.pem ファイル、または pem エンコードされた証明書を含む .zip ファイルのいずれかを指定できます。たとえば、Amazon S3 バケットの名前が my-bucket、パスプレフィックスは cert、オブジェクトキー名が certificate.pem の場合、証明書に許容される形式は my-bucket/cert/certificate.pem or arn:aws:s3:::my-bucket/cert/certificate.pem となります。

      • オプションの environmentVariables 配列についての、このビルド環境で指定する任意の環境変数に関する情報。各環境変数は、environmentVariable-nameenvironmentVariable-value、および environmentVariable-typenamevalue、および type を含むオブジェクトとして表されます。

        他のユーザーは、AWS CodeBuild コンソールと AWS CLI を使用して環境変数を確認できます。環境変数の表示に懸念がない場合は、environmentVariable-nameenvironmentVariable-value を設定してから environmentVariable-typePLAINTEXT に設定します。

        Amazon EC2 Systems Manager パラメータストアには、AWS アクセスキー ID、AWS シークレットアクセスキー、パスワードなどの機密値を持つ環境変数をパラメータとして保存することをお勧めします。environmentVariable-name の場合、保存されているパラメータについては、AWS CodeBuild の識別子を参照するように設定します。environmentVariable-value には、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータの名前を設定します。environmentVariable-typePARAMETER_STORE に設定します。たとえば、/CodeBuild/dockerLoginPassword いう名前のパラメータを使用して environmentVariable-nameLOGIN_PASSWORD に設定します。environmentVariable-value/CodeBuild/dockerLoginPassword に設定します。environmentVariable-typePARAMETER_STORE に設定します。

        重要

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

        ビルドプロジェクトが、/CodeBuild/ で始まらないパラメータ名を持つ、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータを参照し、[Create a service role in your account] を選択した場合、/CodeBuild/ で始まらないパラメータ名にアクセスできるようにサービスロールを更新する必要があります。これは、サービスロールが /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_ で始まる名前の環境変数は設定しないでください。このプレフィックスは内部使用のために予約されています。

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

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

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

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

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

        - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
    • badgeEnabled: オプションの値。ビルドバッジを AWS CodeBuild プロジェクトに含めるには、badgeEnabledtrue の値で指定する必要があります。詳細については、「AWS CodeBuild のビルドバッジサンプル」を参照してください。

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

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

    • オプションの tags 配列についての、このビルドプロジェクトに関連付けるタグに関する情報。最大 50 個のタグを指定できます。これらのタグは、AWS CodeBuild ビルドプロジェクトタグをサポートする任意の AWS サービスで使用できます。各タグは、tag-keytag-valuekey 値と value 値を含むオブジェクトとして表されます。

    例については、「ビルドプロジェクト (AWS CLI) を作成するには」を参照してください。

  2. 保存したばかりのファイルがあるディレクトリに移動し、create-project コマンドをもう一度実行します。

    aws codebuild create-project --cli-input-json file://create-project.json
  3. 成功すると、次のようなデータが出力に表示されます。

    { "project": { "name": "project-name", "description": "description", "serviceRole": "serviceRole", "tags": [ { "key": "tags-key", "value": "tags-value" } ], "artifacts": { "namespaceType": "namespaceType", "packaging": "packaging", "path": "path", "type": "artifacts-type", "location": "artifacts-location", "name": "artifacts-name" }, "lastModified": lastModified, "timeoutInMinutes": timeoutInMinutes, "created": created, "environment": { "computeType": "computeType", "image": "image", "type": "environment-type", "environmentVariables": [ { "name": "environmentVariable-name", "value": "environmentVariable-value", "type": "environmentVariable-type" } ] }, "source": { "type": "source-type", "location": "source-location", "buildspec": "buildspec", "auth": { "type": "auth-type", "resource": "resource" } }, "encryptionKey": "encryptionKey", "arn": "arn" } }
    • project オブジェクトには、新しいビルドプロジェクトに関する情報が含まれています。

      • lastModified 値は、ビルドプロジェクトに関する情報が最後に変更された時刻 (Unix の時刻形式) を表します。

      • created 値は、ビルドプロジェクトが作成された時刻 (Unix の時刻形式) を表します。

      • arn 値は、ビルドプロジェクトの ARN を表します。

注記

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

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

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

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

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

ビルドプロジェクトを作成する (AWS CloudFormation)

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