AWS CodeBuild でのビルドプロジェクトの作成 - AWS CodeBuild

AWS CodeBuild でのビルドプロジェクトの作成

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

前提条件

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

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

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

  2. CodeBuild の情報ページが表示された場合は、[ビルドプロジェクトの作成] を選択します。それ以外の場合は、ナビゲーションペインで [ビルド] を展開し、[ビルドプロジェクト] を選択してから、[Create build project (ビルドプロジェクトの作成)] を選択します。

  3. [Create build project (ビルドプロジェクトの作成)] を選択します。

  4. [Project configuration (プロジェクトの設定)] で、次のようにします。

    [Create build project (ビルドプロジェクトの作成)] ページの [Project configuration (プロジェクト設定)] で、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、各 アカウントで一意である必要があります。このプロジェクトの用途を他のユーザーが理解しやすいように、必要に応じてビルドプロジェクトの説明を含めることもできます。

    [Description (説明)] に、プロジェクトのオプションの説明を入力します。

    [Build badge (ビルドバッジ)] を選択すると、プロジェクトのビルドステータスが表示可能および埋め込み可能になります。詳細については、「ビルドバッジサンプル」を参照してください。

    注記

    ソースプロバイダーが Amazon S3 の場合、ビルドバッジは適用されません。

    [Additional configuration (追加設定)] を展開します。

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

  5. [Source (ソース)] で、次のようにします。

    [ソースプロバイダー] で、ソースコードプロバイダーのタイプを選択します。次のテーブルを使用して、ソースプロバイダーに関する適切な選択を行います。

    注記

    CodeBuild は Bitbucket Server をサポートしていません。

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

    [バケット] で、ソースコードが格納されている入力バケットの名前を選択します。

    X

    [S3 オブジェクトキーまたは S3 フォルダ] に、ZIP ファイルの名前、またはソースコードを含むフォルダへのパスを入力します。S3 バケットの中身をすべてダウンロードするには、スラッシュ記号 (/) を入力します。

    X

    [OAuth を使用して接続する] または [Bitbucket アプリパスワードで接続する] を選択し、手順に従って Bitbucket に接続(または再接続)します。

    X

    [OAuth を使用して接続する] または [GitHub の個人用アクセストークンで接続する] を選択し、手順に従って GitHub に接続(または再接続)して、AWS CodeBuild へのアクセスを許可します。

    X

    [個人用アクセストークン] については、GitHub Enterprise Server サンプル で個人用アクセストークンのクリップボードにコピーする方法に関する情報を参照してください。テキストフィールドにトークンを貼り付け、[トークンの保存] を選択します。

    注記

    個人用アクセストークンは、一回のみ入力して保存する必要があります。CodeBuild では、以降のすべてのプロジェクトにこのトークンを使用します。

    X

    [リポジトリ] で、使用するリポジトリを選択します。

    X

    [Reference type (リファレンスタイプ)] で、[ブランチ] または [Git タグ] を選択するか、[コミット ID] を入力して、ソースコードのバージョンを指定します。詳細については、「AWS CodeBuild のソースバージョンのサンプル」を参照してください。

    X

    [リポジトリ] で、パブリックのリポジトリかアカウント内のリポジトリかを選択します。

    X X

    [リポジトリの URL] は、パブリックのリポジトリを使用する場合にのみ使用します。URL には、ソースプロバイダーの名前が含まれている必要があります。たとえば、Bitbucket URL には、bitbucket.org が含まれている必要があります。

    X X

    ソースプロバイダーが Amazon S3 である場合は、[ソースバージョン] に、入力ファイルのビルドを表すオブジェクトのバージョン ID を入力します。ソースプロバイダーが GitHub または GitHub エンタープライズである場合は、プルリクエスト、ブランチ、コミット ID、タグ、参照、およびコミット ID を入力します。ソースプロバイダーが Bitbucket である場合は、ブランチ、コミット ID、タグ、または参照とコミット ID を入力します。詳細については、「AWS CodeBuild のソースバージョンのサンプル」を参照してください。

    X X X X

    [Git のクローンの深さ] を選択して、指定されるコミット数で切り捨てられる履歴の浅いクローンを作成します。完全クローンを希望する場合には、[Full (完全)] を選択します。

    X X X X

    リポジトリに Git サブモジュールを含める場合は、[Git サブモジュールを使用する] を選択します。

    X X X X

    ビルドの開始と終了のステータスをソースプロバイダーにレポートする場合は、[ビルドの開始と終了時にソースプロバイダーにビルドステータスをレポートする] を選択します。

    注記

    ウェブフックによってトリガーされたビルドのステータスは常にソースプロバイダーにレポートされます。

    X X X

    CodeBuild でコード変更がこのリポジトリにプッシュされるたびにソースコードをビルドするには、[コードの変更がこのレポジトリにプッシュされるたびに再構築する] を選択します。ウェブフックは、自身の Bitbucket、GitHub、または GitHub Enterprise リポジトリでのみ許可されています。

    X X X

    [イベントタイプ] で [コードの変更がこのレポジトリにプッシュされるたびに再構築する] を選択した場合は、ビルドをトリガーするイベントを選択します。フィルタを作成するには正規表現を使用します。フィルタを指定しない場合、プルリクエストのすべての更新および作成と、すべてのプッシュイベントで、ビルドがトリガーされます。詳細については、「 GitHub ウェブフックイベントのフィルタリング」および「 Bitbucket ウェブフックイベントのフィルタリング」を参照してください。

    X X X

    GitHub Enterprise プロジェクトリポジトリに接続するときに SSL 警告を無視するには、[セキュアでない SSL] を選択します。

    X

    使用する各セカンダリソース:

    1. [ソースの追加] を選択します。

    2. [ソース識別子] には、英数字とアンダースコアのみを使用して 128 文字未満の値を入力します。

    3. [ソースプロバイダー] で、ソースコードプロバイダーのタイプを選択します。このステップの前述のテーブルを使用して、セカンダリソースプロバイダーに適切な選択を行います。

  6. [環境] で以下の操作を行います。

    [Environment image (環境イメージ)] で、次のいずれかの操作を行います。

    • AWS CodeBuild が管理する Docker イメージを使用するには、[Managed image (マネージドイメージ)] を選択し、次に [オペレーティングシステム]、[ランタイム]、[イメージ]、および [ランタイムバージョン] で適切な選択を行います。利用可能な場合は、[環境タイプ] から選択します。

    • 別の Docker イメージを使用するには、[カスタムイメージ] を選択します。[環境タイプ] は、ARM, Linux, Linux GPU, or Windows を選択します。[Other registry (その他のレジストリ)] を選択した場合は、[External registry URL (外部のレジストリ URL)] に docker repository/docker image name の形式に従って Docker Hub の Docker イメージの名前とタグを入力します。[Amazon ECR] を選択した場合は、[Amazon ECR repository (ECR リポジトリ)] および [Amazon ECR image (ECR イメージ)] を使用して AWS アカウントの Docker イメージを選択します。

    • プライベート Docker イメージを使用するには、[カスタムイメージ] を選択します。[環境タイプ] は、ARM, Linux, Linux GPU, or Windows を選択します。[Image registry (イメージレジストリ)] に [Other registry (その他のレジストリ)] を選択して、その後プライベート Docker イメージの認証情報の ARN を入力します。認証情報は、Secrets Manager で作成する必要があります。詳細については、AWS Secrets Manager ユーザーガイドの「AWS Secrets Manager とは」を参照してください。

    (オプション) このビルドプロジェクトを使用して Docker イメージを作成し、選択したビルド環境イメージが Docker サポート付きの CodeBuild によって提供されない場合にのみ、[特権付与] を選択します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。ビルドが Docker デーモンと連係動作できるように、Docker デーモンも起動する必要があります。これを行う 1 つの方法は、次のビルドコマンドを実行してビルドスペックの 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=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

    [Service role (サービスロール)] で、次のいずれかの操作を行います。

    • CodeBuild サービスロールがない場合は、[New service role (新しいサービスロール)] を選択します。[Role name (ロール名)] に、新しいロールの名前を入力します。

    • CodeBuild サービスロールがある場合は、[Existing service role (既存のサービスロール)] を選択します。[Role ARN (ロール ARN)] で、サービスロールを選択します。

    注記

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

    [Additional configuration (追加設定)] を展開します。

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

    CodeBuild で VPC を使用する場合:

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

    • [VPC Subnets (VPC サブネット)] で、CodeBuild が使用するリソースが含まれているサブネットを選択します。

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

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

    1 つ以上の Elastic File System を使用する場合:

    • [識別子] に、一意のファイルシステム識別子を入力します。129 文字未満で、英数字とアンダースコアのみを含む必要があります。CodeBuild はこの識別子を使用して、Elastic File System を識別する環境変数を作成します。環境変数の形式は大文字で CODEBUILD_file-system-identifier です。たとえば、efs-1 と入力すると、環境変数は CODEBUILD_EFS-1 になります。

    • [ID] で、ファイルシステム ID を選択します。

    • (オプション) ファイルシステムのディレクトリを入力します。CodeBuild はこのディレクトリをマウントします。[ディレクトリパス] を空白のままにすると、CodeBuild はファイルシステム全体をマウントします。パスはファイルシステムのルートからの相対です。

    • [マウントポイント] に、ファイルシステムをマウントするビルドコンテナ内のディレクトリの名前を入力します。このディレクトリが存在しない場合は、CodeBuild によってビルド中に作成されます。

    • (オプション) マウントオプションを入力します。[マウントオプション] を空白のままにすると、CodeBuild はデフォルトのマウントオプション (nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2) を使用します。詳細については、Amazon Elastic File System ユーザーガイドの「推奨される NFS マウントオプション」を参照してください。

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

    [環境変数] で、名前と値を入力してから、ビルドによって使用される各環境変数の種類を選択します。

    注記

    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 (パラメータ)] を選択します。[名前] に、参照する CodeBuild の識別子を入力します。[] に、Amazon EC2 Systems Manager パラメータストアに保存されているパラメータの名前を入力します。たとえば、/CodeBuild/dockerLoginPassword という名前のパラメータを使用して、[タイプ] で [Parameter (パラメータ)] を選択します。[名前] に「LOGIN_PASSWORD」と入力します。[] に「/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 アクションを許可する必要があります。以前に [新しいサービスロール] を選択した場合は、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 を使用する場合は、[Type (タイプ)] で、[Secrets Manager (シークレットマネージャー)] を選択します。[名前] に、参照する CodeBuild の識別子を入力します。[Value (値)] に、パターン secret-id:json-key:version-stage:version-id を使用して reference-key を入力します。詳細については、buildspec ファイル内の Secrets 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/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

  7. [Buildspec (Buildspec)] で、次のようにします。

    [Build specifications (ビルド仕様)] で、次のいずれかの操作を行います。

    • ソースコードにビルド仕様ファイルが含まれている場合は、[Use a buildspec file (buildspec ファイルを使用)] を選択します。デフォルトでは、CodeBuild はソースコードのルートディレクトリで buildspec.yml という名前のファイルを探します。buildspec ファイルに別の名前または場所が使用されている場合は、[Buildspec 名] にソースルートからのパスを入力します(buildspec-two.ymlconfiguration/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 ファイルを追加し、ファイルにコマンドを追加してから、[ソースコードのルートディレクトリの buildspec.yml を使用] を選択します。

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

  8. [アーティファクト] で、次のようにします。

    [タイプ] で、以下のいずれかを実行します。

    • ビルド出力アーティファクトを作成しない場合は、[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)。詳細については、「buildspec の構文」の files の説明を参照してください。

      • ビルドアーティファクトを暗号化しない場合は、[アーティファクト暗号化の削除] を選択します。

    アーティファクトのセカンダリセットごとに:

    1. [アーティファクト識別子] には、英数字とアンダースコアのみを使用して 128 文字未満の値を入力します。

    2. [アーティファクトの追加] を選択します。

    3. セカンダリアーティファクトを設定するには、前のステップに従います。

    4. [アーティファクトの保存] を選択します。

    [Additional configuration (追加設定)] を展開します。

    (オプション) [暗号化キー] で次のいずれかの操作を行います。

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

    • カスタマー管理の CMK を使用してビルド出力アーティファクトを暗号化するには、[暗号化キー] に CMK の 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 でのみ利用可能です。このモードを選択する場合、プロジェクトは権限モードで実行する必要があります。ARM_CONTAINER および LINUX_GPU_CONTAINER 環境タイプと、BUILD_GENERAL1_2XLARGE コンピューティングタイプでは、ローカルキャッシュの使用はサポートされていません。

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

  9. [ログ] で、作成するログを選択します。Amazon CloudWatch Logs、Amazon S3 ログ、またはその両方を作成できます。

    必要に応じて Amazon CloudWatch Logs logs:

    • [CloudWatch ログ] を選択します。

    • [Group name (グループ名)] は、Amazon CloudWatch Logs ロググループの名前を入力します。

    • [Stream name (ストリーム名)] に、Amazon CloudWatch Logs ログストリーム名を入力します。

    必要に応じて Amazon S3 logs:

    • [S3 logs (S3 ログ)] を選択します。

    • [バケット] で、ログを保存する S3 バケットの名前を選択します。

    • [パスのプレフィックス] で、ログのプレフィックスを入力します。

    (オプション) この手順で以前に [アーティファクト] の [タイプ] で [Amazon S3] を選択した場合は、[アーティファクトのパッケージ化] で、次のいずれかの操作を行います。

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

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

    • S3 ログを暗号化しない場合は、[Remove S3 log encryption] を選択します。

  10. [Create build project (ビルドプロジェクトの作成)] を選択します。

  11. [Review] ページで、[Start build (ビルドの開始)] を選択します。

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

AWS CLI を 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", "gitSubmodulesConfig": { "fetchSubmodules": "fetchSubmodules" }, "auth": { "type": "auth-type", "resource": "resource" } }, "sourceVersion": "source-version", "secondarySourceVersions": { "sourceIdentifier": "secondary-source-identifier", "sourceVersion": "secondary-source-version" }, "artifacts": { "type": "artifacts-type", "location": "artifacts-location", "path": "path", "namespaceType": "namespaceType", "name": "artifacts-name", "overrideArtifactName": "override-artifact-name", "packaging": "packaging" }, "cache": { "type": "cache-type", "location": "cache-location", "mode": [ "cache-mode" ] }, "logsConfig": { "cloudWatchLogs": { "status": "cloudwatch-logs-status", "groupName": "group-name", "streamName": "stream-name" } "s3Logs": { "status": "s3-logs-status", "location": "s3-logs-location", "encryptionDisabled": "s3-logs-encryptionDisabled" } } "secondaryArtifacts": [ { "type": "artifacts-type", "location": "artifacts-location", "path": "path", "namespaceType": "namespaceType", "name": "artifacts-name", "packaging": "packaging", "artifactIdentifier": "artifact-identifier" } ] , "secondarySources": [ { "type": "source-type", "location": "source-location", "gitCloneDepth": "gitCloneDepth", "buildspec": "buildspec", "InsecureSsl": "InsecureSsl", "reportBuildStatus": "reportBuildStatus", "auth": { "type": "auth-type", "resource": "resource" }, "sourceIdentifier": "source-identifier" } ], "serviceRole": "serviceRole", "vpcConfig": { "securityGroupIds": [ "security-group-id" ], "subnets": [ "subnet-id" ], "vpcId": "vpc-id" }, "fileSystemLocations": [ { "type": "EFS", "location": "EFS-DNS-name-1:/directory-path", "mountPoint": "mount-point", "identifier": "efs-identifier", "mountOptions": "efs-mount-options" }, { "type": "EFS", "location": "EFS-DNS-name-2:/directory-path", "mountPoint": "mount-point", "identifier": "efs-identifier", "mountOptions": "efs-mount-options" } ], "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" } ], "registryCredential": [ { "credential": "credential-arn-or-name", "credentialProvider": "credential-provider" } ], "imagePullCredentialsType": "imagePullCredentialsType-value, "privilegedMode": "privilegedMode" }, "badgeEnabled": "badgeEnabled" }

    以下に置き換えます。

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

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

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

      • source-type: 必須。ビルドするソースコードを含むリポジトリのタイプ。有効な値には、CODECOMMITCODEPIPELINEGITHUBGITHUB_ENTERPRISEBITBUCKETS3 および 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 では、ビルド入力バケット名の後に、スラッシュ (/)、ZIP ファイル名 (ソースコードと buildspec を含む) が続きます (例: bucket-name/object-name.zip)。これは ZIP ファイルがビルド入力バケットのルートにあることを前提としています。(ZIP ファイルがバケット内のフォルダにある場合は、代わりに bucket-name/path/to/object-name.zip を使用してください)。

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

          1. コンソールを使用して GitHub に接続 (または再接続) するときは、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 では、sourcelocation 値を指定しないでください。CodePipeline では、この値は無視されます。ソースコードの場所は、CodePipeline でのパイプラインの作成時に、パイプラインのソースステージで指定するためです。

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

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

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

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

      • gitSubmodulesConfig: オプション。Git サブモジュール設定に関する情報。CodeCommit、GitHub、GitHub Enterprise Server、Bitbucket でのみ使用されます。リポジトリに Git サブモジュールを含める場合は、fetchSubmodulestrue に設定します。含まれている Git サブモジュールは HTTPS として設定する必要があります。

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

    • source-version: オプション。このプロジェクト用に構築するビルド入力のバージョン。指定しない場合、最新のバージョンが使用されます。指定した場合、次のいずれかであることが必要です。

      • CodeCommit の場合は、使用するコミット ID。

      • 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 のソースバージョンのサンプル」を参照してください。

    • secondarySourceVersions: オプション。projectSourceVersion オブジェクトの配列。secondarySourceVersions をビルドレベルで指定すると、これよりも優先されます。

      • secondary-source-identifier: ビルドプロジェクトのソースの識別子。

      • secondary-source-version: sourceVersion オブジェクト。

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

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

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

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

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

        • artifacts-type として S3 を指定すると、これは前提条件で作成または特定した出力バケットの名前になります。

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

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

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

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

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

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

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

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

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

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

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

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

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

      • override-artifact-name: オプションのブール値。true に設定すると、buildspec ファイルの artifacts ブロックで指定された名前で artifacts-name が上書きされます。詳細については、「CodeBuild のビルド仕様に関するリファレンス」を参照してください。

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

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

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

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

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

      • cache-type: 必須。有効な値は S3NO_CACHE、または LOCAL_CACHE です。

      • cache-location: 必須 (CacheTypeS3 に設定する場合のみ)。CacheType として Amazon S3 を指定すると、これは S3 バケットの ARN とパスのプレフィックスになります。たとえば、S3 バケット名が my-bucket で、パスのプレフィックスが build-cache である場合、CacheLocation に使用できる形式は my-bucket/build-cache または arn:aws:s3:::my-bucket/build-cache になります。

      • cache-mode: 必須 (CacheTypeLOCAL に設定する場合)。次のローカルキャッシュモードを 1 つ以上指定することができます。LOCAL_SOURCE_CACHELOCAL_DOCKER_LAYER_CACHELOCAL_CUSTOM_CACHE

        注記

        Docker レイヤーキャッシュモードは Linux でのみ利用可能です。このモードを選択する場合、プロジェクトは権限モードで実行する必要があります。ARM_CONTAINER および LINUX_GPU_CONTAINER 環境タイプと、BUILD_GENERAL1_2XLARGE コンピューティングタイプでは、ローカルキャッシュの使用はサポートされていません。

    • logsConfig オブジェクトの場合は、このビルドのログが配置されている場所に関する情報。

      • cloudwatch-logs-status: 必須。有効な値は ENABLED または DISABLED です。その値が ENABLED である場合、以下の値は必須です。詳細については、Amazon CloudWatch Logs ユーザーガイドの「ロググループとログストリームの使用」を参照してください。

      • group-name: CloudWatch Logs グループの名前。

      • stream-name: CloudWatch Logs ストリームの名前。

      • s3-logs-status: 必須。有効な値は ENABLED または DISABLED です。

      • s3-logs-location: s3-logs-statusENABLED​ の場合に必須です。これは、S3 バケットの ARN およびパスのプレフィックスになります。たとえば、S3 バケット名が my-bucket で、パスのプレフィックスが build-log の場合、s3-logs-location に使用できる形式は my-bucket/build-log または arn:aws:s3:::my-bucket/build-log です。

      • s3-logs-encryptionDisabled: オプションのブール値。true に設定した場合、S3 ビルドログ出力は暗号化されません。デフォルトでは S3 のビルドログは暗号化されます。

    • オプションの secondaryArtifacts オブジェクトについては、ビルドプロジェクトのセカンダリアーティファクトの設定に関する情報です。最大 12 個のセカンダリアーティファクトを追加できます。secondaryArtifacts は、CodeBuild アーティファクトオブジェクト オブジェクトで使用されているのと同じ設定の多くを使用します。その設定には以下のものがあります。

    • オプションの secondarySources オブジェクトについては、ビルドプロジェクトのセカンダリソースの設定に関する情報です。最大 12 個の secondarySources を追加できます。secondarySources オブジェクトは、CodeBuild ソースオブジェクト オブジェクトで使用されているのと同じ設定の多くを使用します。これには次のものが含まれます。

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

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

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

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

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

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

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

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

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

    • オプションの fileSystemLocations オブジェクトについては、Amazon EFS 設定に関する情報です。設定は次のとおりです。

      • type: 必須。この値は、EFS である必要があります。

      • location: 必須。EFS-DNS-name:/directory-path の形式で指定された場所。

      • mountPoint: 必須。ファイルシステムをマウントするビルドコンテナ内のディレクトリの名前。このディレクトリが存在しない場合は、CodeBuild によってビルド中に作成されます。

      • identifier: 必須。一意のファイルシステム識別子。CodeBuild によって使用されて、ファイルシステムを識別する環境変数が作成されます。環境変数の形式は大文字の CODEBUILD_file-system-identifier です。たとえば、「efs-1」と入力した結果、環境変数は CODEBUILD_EFS-1 になります。

      • mountOptions: オプション。これを空白のままにすると、CodeBuild によってデフォルトのマウントオプション (nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2) が使用されます。詳細については、Amazon Elastic File System ユーザーガイドの「NFS の推奨されるマウントオプション」を参照してください。

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

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

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

      • computeType: 必須。このビルド環境で使用する CPU コアとメモリの数に対応するカテゴリ。BUILD_GENERAL1_SMALLBUILD_GENERAL1_MEDIUMBUILD_GENERAL1_LARGE, and BUILD_GENERAL1_2XLARGE および BUILD_GENERAL1_2XLARGE を含む指定できる値は、LINUX_CONTAINER 環境タイプのみでサポートされています。

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

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

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

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

        Amazon EC2 Systems Manager パラメータストアを使用する場合、environmentVariable-value には、パラメータストアに格納されているとおりにパラメータの名前を設定します。environmentVariable-typePARAMETER_STORE に設定します。たとえば、/CodeBuild/dockerLoginPassword いう名前のパラメータを使用して environmentVariable-nameLOGIN_PASSWORD に設定します。environmentVariable-value/CodeBuild/dockerLoginPassword に設定します。environmentVariable-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 を使用する場合、environmentVariable-value には、Secrets Manager パラメータストアに保存されているパラメータの名前を設定します。environmentVariable-typeSECRETS_MANAGER に設定します。たとえば、/CodeBuild/dockerLoginPassword という名前のシークレットを使用して、environmentVariable-name tを LOGIN_PASSWORD に設定します。environmentVariable-value/CodeBuild/dockerLoginPassword に設定します。environmentVariable-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/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

      • オプションの registryCredential プロパティを使用して、プライベート Docker レジストリへのアクセスを提供する認証情報を指定します。

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

        • credential-provider: 有効な値は SECRETS_MANAGER のみです。

        これを設定した場合:

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

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

      • imagePullCredentialsType-value: オプション。ビルドのイメージをプルするために CodeBuild で使用する認証情報のタイプ。2 つの有効な値があります。

        • CODEBUILD は、CodeBuild で独自の認証情報を使用することを指定します。CodeBuild サービスプリンシパルを信頼するには、Amazon ECR リポジトリポリシーを編集する必要があります。

        • SERVICE_ROLE は、CodeBuild でビルドプロジェクトのサービスロールを使用することを指定します。

        クロスアカウントまたはプライベートレジストリイメージを使用する場合は、SERVICE_ROLE の認証情報を使用する必要があります。CodeBuild の選別されたイメージを使用する場合は、CODEBUILD の認証情報を使用する必要があります。

      • このビルドプロジェクトを使用して Docker イメージを構築する予定があり、指定したビルド環境イメージが Docker をサポートする CodeBuild によって提供されない場合にのみ、privilegedModetrue の値で指定する必要があります。それ以外の場合、関連付けられているビルドで 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=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
    • badgeEnabled: オプション。ビルドバッジを CodeBuild プロジェクトに含めるには、badgeEnabledtrue の値で指定する必要があります。詳細については、「CodeBuild のビルドバッジサンプル」を参照してください。

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

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

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

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

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

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

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

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