AWS CodeBuild でのビルドプロジェクトの設定の変更 - AWS CodeBuild

AWS CodeBuild でのビルドプロジェクトの設定の変更

ビルドプロジェクトの設定を変更するには、AWS CodeBuild コンソール、AWS CLI、または AWS SDK を使用します。

ビルドプロジェクトにテストレポートを追加する場合は、テストレポートのアクセス許可の使用 で記載されている権限が IAM に付与されていることを確認してください。

ビルドプロジェクトの設定の変更 (コンソール)

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

  2. ナビゲーションペインで、[Build projects] を選択します。

  3. 以下のいずれかを行います。

    • 変更するビルドプロジェクトのリンクを選択し、[ビルドの詳細] を選択します。

    • 変更するビルドプロジェクトの横にあるラジオボタンを選択して、[View details (詳細を表示)] を選択後 [ビルドの詳細] を選択します。

  4. プロジェクトの説明を変更するには、[Project configuration (プロジェクトの設定)] の [Edit (編集)] を選択し、説明を入力します。

    [Update configuration (設定の更新)] を選択します。

    この手順ので参照される設定の詳細については、「ビルドプロジェクトの作成 (コンソール)」を参照してください。

  5. ソースコードの場所に関する情報を変更するには、[Source (ソース)] で [Edit (編集)] を選択します。次の表を使用して、ソースプロバイダーに適した選択を行い、[ソースの更新] を選択します。

    注記

    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

    [Webhook] を選択した場合、コードの変更によりビルドがトリガーされるたびに GitHub でシークレットキーを更新する場合は、[ウェブフックシークレットキーの更新] を選択します。

    X X

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

    X

    このプロジェクトで使用するサービスロールを CodeBuild で変更できるかどうかを変更するには、[AWS CodeBuild にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする] をオンまたはオフにします。オフにする場合は、CodeBuild のアクセス許可がアタッチされたサービスロールを使用する必要があります。詳細については、「IAM グループまたは IAM ユーザーに対して CodeBuild へのアクセス許可を追加する」および「CodeBuild サービスロールの作成」を参照してください。

  6. ビルド環境に関する情報を変更するには、[Environment (環境)] の [Edit (編集)] を選択します。ビルド環境タイプ (例: [環境イメージ]、[オペレーティングシステム]、[ランタイム]、[ランタイムバージョン]、[Custom image (カスタムイメージ)]、[Other location (その他の場所)]、[Amazon ECR リポジトリ (Amazon ECR リポジトリ)]、[Amazon ECR image (Amazon ECR イメージ)]) に適切な変更を行います。

  7. このビルドプロジェクトを使用して Docker イメージを作成し、指定したビルド環境イメージが Docker サポート付きの CodeBuild によって提供されない場合、[Privileged (特権付与)] を選択します。それ以外の場合、関連付けられているビルドで Docker デーモンと通信しようとすると、すべて失敗します。必要に応じて、ビルドで Docker デーモンを操作できるように、Docker デーモンも起動する必要があります。そのためには、次のビルドコマンドを実行して、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"
  8. CodeBuild サービスロールに関する情報を変更するには、[サービスロール] で、[New service role (新しいサービスロール)]、[Existing service role (既存のサービスロール)]、または [Role name (ロール名)] の値を変更します。

    注記

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

  9. ビルドタイムアウトに関する情報を変更するには、[Additional configuration (追加設定)] で、[タイムアウト] の [時間] と [] の値を変更します。[hours] と [minutes] が空白のままの場合、デフォルト値は 60 分になります。

  10. Amazon VPC で作成した VPC に関する情報を変更するには、[Additional configuration (追加設定)] で [VPC]、[サブネット]、[セキュリティグループ] の値を変更します。

  11. Amazon EFS で作成したファイルシステムに関する情報を変更するには、[Additional configuration (追加設定)] で [識別子]、[ID]、[ディレクトリパス]、[マウントポイント]、[マウントオプション] の値を変更します。詳細については、「AWS CodeBuild の Amazon Elastic File System サンプル」を参照してください。

  12. ビルドの実行に使用するメモリと vCPU の量を変更するには、[Additional configuration (追加設定)] で、[Compute (コンピューティング)] の値を変更します。

  13. ビルドに使用する環境変数に関する情報を変更するには、[Additional configuration (追加設定)] で、[環境変数] の、[名前]、[]、および [タイプ] の値を変更します。[環境変数の追加] で、環境変数を追加します。もう使用しない環境変数の横にある [Remove (削除)] を選択します。

    他のユーザーは、CodeBuild コンソールと 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」と入力します。[Value] に、「/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/ 名前空間ですべてのシークレットを復号するアクセス許可が含まれます。

  14. [Update environment (環境の更新)] を選択します。

  15. プロジェクトのビルド仕様を変更するには、[Buildspec] の [Edit (編集)] を選択します。デフォルトでは、CodeBuild はソースコードのルートディレクトリで buildspec.yml という名前のファイルを探します。buildspec ファイルに別の名前または場所が使用されている場合は、[Buildspec 名] にソースルートからのパスを入力します(buildspec-two.ymlconfiguration/buildspec.ymlなど)。buildspec ファイルが S3 バケットにある場合は、ビルドプロジェクトと同じ AWS リージョンに存在する必要があります。ARN を使用して buildspec ファイルを指定します(例: arn:aws:s3:::my-codebuild-sample2/buildspec.yml)。

    • 以前のソースコードには buildspec.yml ファイルが含まれていなかったが、現在は含まれている場合は、[Use a buildspec file (buildspec ファイルを使用)] を選択します。

    • 以前のソースコードに buildspec.yml ファイルが含まれていたが現在のソースコードに含まれていない場合は、[ビルドコマンドの挿入] を選択し、[ビルドコマンド] にコマンドを入力します。

  16. [Update buildspec (buildspec の更新)] を選択します。

  17. ビルド出力アーティファクトの場所と名前に関する情報を変更するには、[アーティファクト] で、[Edit (編集)] を選択し、[タイプ]、[名前]、[パス]、[名前空間のタイプ]、または [バケット名] の値を変更します。

  18. AWS KMS カスタマーマネージドキー (CMK) に関する情報を変更するには、[Additional configuration (追加設定)] の [暗号化キー] の値を変更します。

    重要

    [暗号化キー] を空白のままにした場合、CodeBuild は代わりに AWS アカウントの Amazon S3 用 AWS 管理 CMK を使用します。

  19. キャッシュを使用すると、ビルド環境の再利用可能な部分がキャッシュに保存され、複数のビルド間で利用されるため、ビルド時間が大幅に節約されます。ビルド仕様ファイルのキャッシュの指定に関する詳細については、「buildspec の構文」を参照してください。キャッシュに関する情報を変更するには、[Additional configuration (追加設定)] を展開します。[Cache type (キャッシュタイプ)] で、次のいずれかの操作を行います。

    • 以前にキャッシュを選択したが今はキャッシュを使用しない場合、[No cache (キャッシュなし)] を選択します。

    • 以前に [No cache (キャッシュなし)] を選択したが今はキャッシュを使用する場合は、[Amazon S3] を選択し、次のいずれかを実行します。

      • [Cache bucket (キャッシュバケット)] で、キャッシュを保存する先の S3 バケットの名前を選択します。

      • (省略可能) [Cache path prefix (キャッシュパスのプレフィックス)] に、Amazon S3 パスのプレフィックスを入力します。キャッシュパスのプレフィックスの値はディレクトリ名に似ています。これを使用して、バケット内の同じディレクトリにキャッシュを保存できます。

        重要

        [Path prefix (パスプレフィックス)] の末尾にスラッシュ (/) を追加しないでください。

  20. ログ設定を変更するには、[ログ] で [CloudWatch ログ] と [S3 ログ] をオンまたはオフにします。

    CloudWatchログ を選択した場合:

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

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

    S3 ログを選択した場合:

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

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

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

  21. ビルド出力アーティファクトの保存方法に関する情報を変更するには、[Additional configuration (追加設定)] で、[Artifacts packaging (アーティファクトのパッケージ化)] の値を変更します。

  22. ビルドアーティファクトを暗号化するかどうかを変更するには、[Disable artifacts encryption (アーティファクトの暗号化を無効にする)] を使用します。

  23. [Update artifacts (アーティファクトの更新)] を選択します。

ビルドプロジェクトの設定の変更 (AWS CLI)

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

  1. 次のように update-project コマンドを実行します。

    aws codebuild update-project --generate-cli-skeleton

    JSON 形式のデータが出力に表示されます。AWS CLI がインストールされているローカルコンピュータまたはインスタンス上の場所にあるファイル (例: update-project.json) にデータをコピーします。次に、「ビルドプロジェクトの作成 (AWS CLI)」の説明に従って、コピーしたデータを変更して、結果を保存します。

    注記

    JSON 形式のデータでは、ビルドプロジェクトの名前を指定する必要があります。その他のすべての設定はオプションです。ビルドプロジェクトの名前を変更することはできませんが、他の設定を変更することはできます。

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

    aws codebuild update-project --cli-input-json file://update-project.json
  3. 成功した場合は、「ビルドプロジェクトの作成 (AWS CLI)」に示すものと同様のデータが出力に表示されます。

ビルドプロジェクトの設定の変更 (AWS SDK)

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