リザーブドキャパシティキャパシティフリートでビルドを実行 - AWS CodeBuild

リザーブドキャパシティキャパシティフリートでビルドを実行

CodeBuild には以下のコンピューティングフリートがあります。

  • オンデマンドフリート

  • リザーブドキャパシティフリート

オンデマンドフリートでは、CodeBuild がビルドのコンピューティングを行います。マシンはビルドが終了すると破棄されます。オンデマンドフリートはフルマネージド型で、需要の急増にも対応できる自動スケーリング機能を備えています。

注記

オンデマンドフリートでは、macOS はサポートされません。

CodeBuild では、CodeBuild が管理する Amazon EC2 ベースのインスタンスを含むリザーブドキャパシティフリートも提供しています。リザーブドキャパシティフリートでは、ビルド環境に合わせて専有インスタンスのセットを設定します。これらのマシンはアイドル状態のままで、ビルドやテストをすぐに処理できる状態になり、ビルド時間を短縮します。リザーブドキャパシティフリートでは、マシンは常に稼働しており、プロビジョニングされている間はコストが発生し続けます。

重要

インスタンスの実行時間に関係なく、リザーブドキャパシティフリートにはインスタンスごとに初期料金が発生し、その後は追加の関連コストが発生する場合があります。詳細については、「https://aws.amazon.com/codebuild/pricing/」を参照してください。

リザーブドキャパシティフリートを作成

以下の手順に従って、リザーブドキャパシティフリートを作成します。

リザーブドキャパシティフリートを作成するには
  1. AWS マネジメントコンソール にサインインして、AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. ナビゲーションペインで、[コンピューティングフリート][フリートを作成] の順に選択します。

  3. [コンピューティングフリート名] テキストフィールドに、フリートの名前を入力します。

  4. [オペレーティングシステム] ドロップダウンメニューから、オペレーティングシステムを選択します。

  5. [アーキテクチャ] ドロップダウンメニューから、アーキテクチャを選択します。

  6. (オプション) [インスタンス実行モードを使用する - オプション] で、Docker コンテナの代わりに Amazon EC2 インスタンスで直接実行します。次に、[メジャーバージョン][マイナーバージョン] を選択します。

  7. (オプション) [追加設定] で、以下を実行します。

    • [VPC の設定 - オプション] を選択してフリートを VPC に接続し、使用中にプライベートリソースにアクセスします。

      • [VPC] ドロップダウンメニューから、CodeBuild フリートがアクセスする VPC を選択します。

      • [サブネット] ドロップダウンメニューから、CodeBuild が VPC 設定のセットアップに使用するサブネットを選択します。

      • [セキュリティグループ] のドロップダウンメニューから、CodeBuild が VPC の操作に使用するセキュリティグループを選択します。

      • [フリートサービスロール] フィールドで、既存のサービスロールを選択します。

        注記

        フリートロールに必要なアクセス許可が付与されていることを確認してください。詳細については、「フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可」を参照してください。

      • Amazon Linux オペレーティングシステムを選択した場合は、[プロキシ設定の定義 - オプション] を選択して、リザーブドキャパシティインスタンスにネットワークアクセスコントロールを適用します。

      • [デフォルトの動作] では、デフォルトですべての送信先への送信トラフィックを許可または拒否することを選択します。

      • [プロキシルール] では、[プロキシルールを追加] を選択して、ネットワークアクセスコントロールを許可または拒否する送信先ドメインまたは IP を指定します。

    • [カスタム AMI の設定 - オプション] を選択し、カスタム Amazon マシンイメージ (AMI) を使用します。

  8. [キャパシティ設定] で、[コンピューティング選択モード] から次のいずれかを選択します。

    • [ガイド付き選択] を選択した場合は、次の操作を行います。

      • [コンピューティング] で、このフリートに含まれるインスタンスのタイプを選択します。

      • [容量] テキストフィールドに、フリート内の最小インスタンス数を入力します。

      • (オプション) [追加設定] で、以下を実行します。

        • [スケーリングの設定 - オプション] を選択し、この設定に基づいてフリートを自動的にスケーリングします。[スケーリングモード - オプション] ドロップダウンメニューから、需要がフリート容量を超えたときの動作を選択します。

    • [カスタムインスタンス] を選択した場合は、次の操作を行います。

      • [コンピューティングインスタンスタイプ] ドロップダウンメニューから、このフリートに含まれるインスタンスのタイプを選択します。

      • [追加の EBS ボリュームサイズ - オプション] テキストフィールドに、提供された 64GB のディスク容量に追加するボリュームを入力します。

      • [容量] テキストフィールドに、フリート内の最小インスタンス数を入力します。

      • (オプション) [追加設定] で、以下を実行します。

        • [スケーリングの設定 - オプション] を選択し、この設定に基づいてフリートを自動的にスケーリングします。[スケーリングモード - オプション] ドロップダウンメニューから、需要がフリート容量を超えたときの動作を選択します。

  9. [コンピューティングフリートの作成] を選択します。

  10. コンピューティングフリートを作成したら、新しい CodeBuild プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。[環境] から [プロビジョニングモデル][リザーブドキャパシティ] を選択し、[フリート名] で指定したフリートを選択します。

ベストプラクティス

リザーブドキャパシティフリートを使用する場合は、以下のベストプラクティスに従うことをお勧めします。

  • ソースをキャッシュしてビルドパフォーマンスを向上させるには、ソースキャッシュモードを使用することをお勧めします。

  • Docker レイヤーキャッシュを使用し、既存の Docker レイヤーをキャッシュしてビルドパフォーマンスを向上させることをお勧めします。

リザーブドキャパシティフリートを複数の CodeBuild プロジェクトで共有できますか?

はい。フリートのキャパシティを複数のプロジェクトで使用することで、そのキャパシティを最大限に活用できます。

重要

リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。

属性ベースのコンピューティングはどのような仕組みですか?

フリートの computeTypeとして ATTRIBUTE_BASED_COMPUTE を選択した場合は、computeConfiguration という新しいフィールドで属性を指定できます。これらの属性には、vCPU メモリ、ディスク容量、machineType が含まれます。この machineTypeGENERAL または NVME のいずれかになります。使用可能な属性の 1 つまたは一部を指定した後、CodeBuild は、サポートされている使用可能なインスタンスタイプからコンピューティングタイプを確定済み computeConfiguration として選択します。

注記

CodeBuild は、すべての入力要件を満たす最も安価なインスタンスを選択します。選択したインスタンスのメモリ、vCPU、ディスク容量はすべて、入力要件以上になります。作成または更新されたフリートで、解決された computeConfiguration を確認できます。

CodeBuild で満たすことができない computeConfiguration を入力した場合は、検証例外が表示されます。また、computeConfiguration がオンデマンドで利用できない場合、オンデマンドフリートのオーバーフロー動作はキュー動作に上書きされる点に注意してください。

フリートの Amazon EC2 インスタンスを手動で指定することはできますか?

はい。[カスタムインスタンス] を選択するか、API パラメータ InstanceType を設定することで、コンソールで目的の Amazon EC2 インスタンスを直接入力できます。このフィールドは、CreateFleet、UpdateFleet、CreateProject、UpdateProject、StartBuild の各 API で使用されます。詳細については、「Compute instance type」を参照してください。

リザーブドキャパシティフリートをサポートしているのはどのリージョンですか?

リザーブドキャパシティフリートがサポートされている AWS リージョンは、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、アジアパシフィック (ムンバイ)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、欧州 (フランクフルト)、欧州 (アイルランド)、および南米 (サンパウロ) です。CodeBuild が使用可能な AWS リージョン の詳細については、「AWS サービス (リージョン別)」を参照してください。

リザーブドキャパシティの macOS Medium フリートは、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、アジアパシフィック (シドニー)、欧州 (フランクフルト) の AWS リージョンでサポートされています。リザーブドキャパシティの macOS Large フリートは、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、アジアパシフィック (シドニー) の AWS リージョンでサポートされています。

リザーブドキャパシティの macOS フリートを設定するにはどうすればよいですか。

リザーブドキャパシティの macOS フリートを設定するには
  1. AWS マネジメントコンソール にサインインして、AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. ナビゲーションペインで、[コンピューティングフリート][フリートを作成] の順に選択します。

  3. [コンピューティングフリート名] テキストフィールドに、フリートの名前を入力します。

  4. [オペレーティングシステム] のドロップダウンメニューから、[macOS] を選択します。

  5. [コンピューティング] フィールドで、[Apple M2、24 GB メモリ、8 vCPU] または [Apple M2、32 GB メモリ、12 vCPU] のいずれかのコンピューティングマシンタイプを選択します。

  6. [容量] テキストフィールドに、フリート内の最小インスタンス数を入力します。

  7. (オプション) フリートにカスタムイメージを使用するには、「リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?」を参照して、Amazon マシンイメージ (AMI) に必要な前提条件があることを確認します。

  8. (オプション) フリートで VPC を設定するには、[追加設定] で以下を実行します。

    • [VPC - オプション] のドロップダウンメニューから、CodeBuild フリートがアクセスする VPC を選択します。

    • [サブネット] ドロップダウンメニューから、CodeBuild が VPC 設定のセットアップに使用するサブネットを選択します。

    • [セキュリティグループ] のドロップダウンメニューから、CodeBuild が VPC の操作に使用するセキュリティグループを選択します。

    • [フリートサービスロール] フィールドで、既存のサービスロールを選択します。

      注記

      フリートロールに必要なアクセス許可が付与されていることを確認してください。詳細については、「フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可」を参照してください。

  9. [コンピューティングフリートを作成] を選択し、フリートインスタンスの起動を待ちます。起動すると、キャパシティは n/n になります。n は指定されたキャパシティです。

  10. コンピューティングフリートが起動したら、新しい CodeBuild プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。[環境] から [プロビジョニングモデル][リザーブドキャパシティ] を選択し、[フリート名] で指定したフリートを選択します。

リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?

リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するには
  1. AWS マネジメントコンソール にサインインして、AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. ナビゲーションペインで、[コンピューティングフリート][フリートを作成] の順に選択します。

  3. [コンピューティングフリート名] テキストフィールドに、フリートの名前を入力します。

  4. フリートの [カスタムイメージ] を選択し、Amazon マシンイメージ (AMI) に次の前提条件があることを確認してください。

    • 環境タイプが MAC_ARM の場合は、AMI アーキテクチャが 64 ビット Mac-Arm であることを確認します。

    • 環境タイプが LINUX_EC2 の場合は、AMI アーキテクチャが 64 ビット x86 であることを確認します。

    • 環境タイプが ARM_EC2 の場合は、AMI アーキテクチャが 64 ビット Arm であることを確認します。

    • 環境タイプが WINDOWS_EC2 の場合は、AMI アーキテクチャが 64 ビット x86 であることを確認します。

    • AMI は CodeBuild サービスに [組織 ARN] を許可します。組織 ARN のリストについては、「Amazon Machine Images (AMI)」を参照してください。

    • AMI が AWS KMS キーで暗号化されている場合、AWS KMS キーは CodeBuild サービスの [組織 ID] も許可する必要があります。組織 ID のリストについては、「Amazon Machine Images (AMI)」を参照してください。AWS KMS キーの詳細については、「Amazon EC2 ユーザーガイド」の「組織と OU に KMS キーの使用を許可する」を参照してください。CodeBuild 組織に KMS キーを使用するアクセス許可を付与するには、次のステートメントをキーポリシーに追加します。

      { "Sid": "Allow access for organization root", "Effect": "Allow", "Principal": "*", "Action": [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123example" } } }
    • [フリートサービスロール] フィールドで、次の Amazon EC2 アクセス許可を付与します。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:DescribeSnapshots" ], "Resource": "*" } ] }

リザーブドキャパシティフリートの制限

リザーブドキャパシティフリートではサポートされていないユースケースがいくつかあります。それにより影響が出る場合は、代わりにオンデマンドフリートを使用してください。

  • リザーブドキャパシティフリートは、ビルド使用率メトリクスをサポートしていません。

  • リザーブドキャパシティの macOS フリートはデバッグセッションをサポートしていません。

クォータと制限の詳細については、「コンピューティングフリート」を参照してください。