

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在預留容量機群上執行組建
<a name="fleets"></a>

CodeBuild 提供下列運算機群：
+ 隨需機群
+ 預留容量機群

透過隨需機群，CodeBuild 為您的建置提供運算。這些機器會在建置完成時銷毀。隨需機群受到完整管理，並包含自動擴展功能，可處理需求激增。

**注意**  
隨需機群不支援 macOS。

CodeBuild 也提供預留容量機群，其中包含由 CodeBuild 維護且採用 Amazon EC2 技術的執行個體。使用預留容量機群，您可以為建置環境設定一組專用執行個體。這些機器保持閒置狀態，準備好立即處理組建或測試，並減少組建持續時間。使用預留容量機群時，您的機器一律在執行中，只要佈建，就會持續產生成本。

**重要**  
無論您執行執行個體的時間有多長，預留容量機群都會產生每個執行個體的初始費用，之後可能會產生額外的相關費用。如需詳細資訊，請參閱[https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/)。

**Topics**
+ [建立預留容量機群](#fleets.how-to)
+ [最佳實務](#fleets.best-practices)
+ [我可以跨多個 CodeBuild 專案共用預留容量機群嗎？](#fleets.share)
+ [屬性型運算如何運作？](#fleets.attribute-compute)
+ [我可以手動指定機群的 Amazon EC2 執行個體嗎？](#fleets.manual-input-compute)
+ [哪些區域支援預留容量機群？](#fleets.regions)
+ [如何設定預留容量 macOS 機群？](#fleets.configure-macos)
+ [如何為預留容量機群設定自訂 Amazon Machine Image (AMI)？](#fleets.custom-ami)
+ [預留容量機群的限制](#fleets.limitations)
+ [預留容量機群屬性](fleets.reserved-capacity-fleets.md)
+ [使用 的預留容量範例 AWS CodeBuild](reserved-capacity-samples.md)

## 建立預留容量機群
<a name="fleets.how-to"></a>

使用下列指示來建立預留容量機群。

**建立預留容量機群**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 在導覽窗格中，選擇**運算機群**，然後選擇**建立機群**。

1. 在**運算機群名稱**文字欄位中，輸入機群的名稱。

1. 從**作業系統**下拉式功能表中，選擇作業系統。

1. 從**架構**下拉式功能表中，選擇架構。

1. （選用） 選取**使用執行模式的執行個體 - 選擇性地**直接在 Amazon EC2 執行個體上執行，而非 Docker 容器。然後選擇**主要版本**和**次要版本**。

1. （選用） **在其他組態**中，執行下列動作：
   + 選取**設定 VPC - 選用**以將機群連線至 VPC，以便在使用期間存取私有資源。
     + 從 **VPC** 下拉式選單中，選取 CodeBuild 機群將存取的 VPC。
     + 從**子網路**下拉式功能表中，選取 CodeBuild 應該用來設定 VPC 組態的子網路。
     + 從**安全群組**下拉式功能表中，選取 CodeBuild 應用於 VPC 的安全群組。
     + 在**機群服務角色**欄位中，選擇現有的服務角色。
**注意**  
請確定您的機群角色具有必要的許可。如需詳細資訊，請參閱[允許使用者新增機群服務角色的許可政策](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)。
     + 如果您選擇 Amazon Linux 作業系統，請選取**定義代理組態 - 選用**，以套用預留容量執行個體的網路存取控制。
     + 針對**預設行為**，選擇預設允許或拒絕所有目的地的傳出流量。
     + 針對 **Proxy 規則**，選擇**新增 Proxy 規則**以指定目的地網域或 IPs，以允許或拒絕網路存取控制。
   + 選取**設定自訂 AMI - 選用**以使用自訂 Amazon Machine Image (AMI)。
     + 從 **AMI** 下拉式選單中，為您的機群選取 Amazon Machine Image (AMI)。
     + 在**機群服務角色**欄位中，選擇現有的服務角色。
**注意**  
請確定您的機群角色具有必要的許可。如需詳細資訊，請參閱[允許使用者新增機群服務角色的許可政策](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)。

1. 在**容量組態**中，從**運算選擇模式中**，選擇下列其中一項：
   + 如果您選擇**引導式選擇**，請執行下列動作：
     + 針對**運算**，選擇此機群中包含的執行個體類型。
     + 在**容量**文字欄位中，輸入機群中執行個體的最小數量。
     + （選用） **在其他組態**中，執行下列動作：
       + 選取**設定擴展 - 選用**，以根據此組態自動擴展機群。從**擴展模式 - 選用**下拉式功能表中，選擇需求超過機群容量時的行為。
   + 如果您選擇**自訂執行個體**，請執行下列動作：
     + 從**運算執行個體類型**下拉式功能表中，選取此機群中包含的執行個體類型。
     + 在**其他 EBS 磁碟區大小 - 選用**文字欄位中，輸入所提供的 64GB 磁碟空間以外的磁碟區。
     + 在**容量**文字欄位中，輸入機群中執行個體的最小數量。
     + （選用） **在其他組態**中，執行下列動作：
       + 選取**設定擴展 - 選用**，以根據此組態自動擴展機群。從**擴展模式 - 選用**下拉式功能表中，選擇需求超過機群容量時的行為。

1. 選擇**建立運算機群**。

1. 建立運算機群後，請建立新的 CodeBuild 專案或編輯現有的專案。在**環境中**，選擇**佈建模型**下的**預留容量**，然後在**機群名稱**下選擇指定的機群。

## 最佳實務
<a name="fleets.best-practices"></a>

使用預留容量機群時，建議您遵循這些最佳實務。
+ 我們建議您使用來源快取模式，透過快取來源來協助改善建置效能。
+ 我們建議您使用 Docker layer 快取，透過快取現有的 Docker layer 來協助改善建置效能。

## 我可以跨多個 CodeBuild 專案共用預留容量機群嗎？
<a name="fleets.share"></a>

可以，您可以將機群容量的使用率最大化，方法是在多個專案中使用。

**重要**  
使用預留容量功能時，同一帳戶中的其他專案可以存取機群執行個體上快取的資料，包括來源檔案、Docker layer 和 buildspec 中指定的快取目錄。這是根據設計，並允許相同帳戶中的專案共用機群執行個體。

## 屬性型運算如何運作？
<a name="fleets.attribute-compute"></a>

如果您選擇 `ATTRIBUTE_BASED_COMPUTE`做為機群的 `computeType`，您可以在名為 的新欄位中指定屬性`computeConfiguration`。這些屬性包括 vCPUs、記憶體、磁碟空間和 `machineType`。這是 `machineType` `GENERAL`或 `NVME`。指定一或多個可用屬性之後，CodeBuild 會從可用的支援執行個體類型中選擇運算類型，做為最終的 `computeConfiguration`。

**注意**  
CodeBuild 將選擇符合所有輸入需求最便宜的執行個體。所選執行個體的記憶體、vCPUs和磁碟空間都會大於或等於輸入需求。您可以在建立或更新的機群`computeConfiguration`中檢查已解析的 。

如果您輸入無法在 CodeBuild 中滿足`computeConfiguration`的 ，您將會收到驗證例外狀況。另請注意，如果 `computeConfiguration` 不適用於隨需，則會覆寫隨需機群溢位行為以佇列行為。

## 我可以手動指定機群的 Amazon EC2 執行個體嗎？
<a name="fleets.manual-input-compute"></a>

可以，您可以透過選取自訂執行個體或設定 API 參數 ，在主控台中直接輸入所需的 Amazon EC2 執行個體`InstanceType`。 ****此欄位用於下列 APIs：CreateFleet、UpdateFleet、CreateProject、UpdateProject 和 StartBuild。如需詳細資訊，請參閱[Compute instance type](fleets.reserved-capacity-fleets.md#compute)。

## 哪些區域支援預留容量機群？
<a name="fleets.regions"></a>

預留容量 Amazon Linux 和 Windows 機群支援以下項目 AWS 區域：美國東部 （維吉尼亞北部）、美國東部 （俄亥俄）、美國西部 （奧勒岡）、亞太區域 （孟買）、亞太區域 （新加坡）、亞太區域 （雪梨）、亞太區域 （東京）、歐洲 （法蘭克福）、歐洲 （愛爾蘭） 和南美洲 （聖保羅）。如需 CodeBuild 可用位置的詳細資訊 AWS 區域 ，請參閱[AWS 依區域的服務](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

預留容量 macOS Medium 機群支援以下項目 AWS 區域：美國東部 （維吉尼亞北部）、美國東部 （俄亥俄）、美國西部 （奧勒岡）、亞太區域 （雪梨） 和歐洲 （法蘭克福）。預留容量 macOS 支援大型機群 AWS 區域：美國東部 （維吉尼亞北部）、美國東部 （俄亥俄）、美國西部 （奧勒岡） 和亞太區域 （雪梨）。

## 如何設定預留容量 macOS 機群？
<a name="fleets.configure-macos"></a>

**設定預留容量 macOS 機群**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 在導覽窗格中，選擇**運算機群**，然後選擇**建立機群**。

1. 在**運算機群名稱**文字欄位中，輸入機群的名稱。

1. 從**作業系統**下拉式功能表中，選擇 **macOS**。

1. 在**運算**欄位中，選擇下列其中一種運算機器類型：**Apple M2、24 GB 記憶體、8 個 vCPUs **或 **Apple M2、32 GB 記憶體、12 個 vCPUs**。

1. 在**容量**文字欄位中，輸入機群中執行個體的最小數量。

1. （選用） 若要為您的機群使用自訂映像，請參閱 [如何為預留容量機群設定自訂 Amazon Machine Image (AMI)？](#fleets.custom-ami) 以確保您的 Amazon Machine Image (AMI) 具有必要的先決條件。

1. （選用） 若要使用機群設定 VPC，請在**其他組態**中執行下列動作：
   + 從 **VPC - 選用**下拉式功能表中，選取 CodeBuild 機群將存取的 VPC。
   + 從**子網路**下拉式功能表中，選取 CodeBuild 應該用來設定 VPC 組態的子網路。
   + 從**安全群組**下拉式功能表中，選取 CodeBuild 應用於 VPC 的安全群組。
   + 在**機群服務角色**欄位中，選擇現有的服務角色。
**注意**  
請確定您的機群角色具有必要的許可。如需詳細資訊，請參閱[允許使用者新增機群服務角色的許可政策](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role)。

1. 選擇**建立運算機群**，並等待機群執行個體啟動。啟動後，容量將為 `{{n}}/{{n}}`，其中 {{n}} 是提供的容量。

1. 運算機群啟動後，建立新的 CodeBuild 專案或編輯現有的專案。在**環境中**，選擇**佈建模型**下的**預留容量**，然後在**機群名稱**下選擇指定的機群。

## 如何為預留容量機群設定自訂 Amazon Machine Image (AMI)？
<a name="fleets.custom-ami"></a>

**為預留容量機群設定自訂 Amazon Machine Image (AMI)**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 在導覽窗格中，選擇**運算機群**，然後選擇**建立機群**。

1. 在**運算機群名稱**文字欄位中，輸入機群的名稱。

1. 選擇機群的**自訂映像**，並確保您的 Amazon Machine Image (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**。如需組織 ARNs的清單，請參閱 [Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami)。
   + 如果 AMI 使用 AWS KMS 金鑰加密，則 AWS KMS 金鑰也必須允許 CodeBuild 服務**組織 ID**。如需組織 IDs的清單，請參閱 [Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami)。如需 AWS KMS 金鑰的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[允許組織和 OUs 使用 KMS 金鑰](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html#allow-org-ou-to-use-key)。若要授予 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": "*"
             }
         ]
     }
     ```

------

## 預留容量機群的限制
<a name="fleets.limitations"></a>

有些使用案例不支援預留容量機群，如果它們影響到您，請改用隨需機群：
+ 預留容量機群不支援建置使用率指標。
+ 預留容量 macOS 機群不支援偵錯工作階段。

如需限制和配額的詳細資訊，請參閱 [運算機群](limits.md#fleet-limits)。