

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

# 建置映像組態檔案
<a name="image-builder-configuration-file-v3"></a>

AWS ParallelCluster 第 3 版使用 YAML 1.1 檔案來建置映像組態參數。請確認縮排正確，以減少組態錯誤。如需詳細資訊，請參閱位於 的 YAML 1[https://yaml.org/spec/1.1/](https://yaml.org/spec/1.1/).1 規格。

這些組態檔案用於定義如何使用 EC2 Image Builder 建置您的 AWS ParallelCluster AMIs。使用 [`pcluster build-image`](pcluster.build-image-v3.md)命令觸發自訂 AMI 建置程序。如需範例組態檔案，請參閱 https：//[https://github.com/aws/aws-parallelcluster/tree/release-3.0/cli/tests/pcluster/schemas/test\$1imagebuilder\$1schema/test\$1imagebuilder\$1schema](https://github.com/aws/aws-parallelcluster/tree/release-3.0/cli/tests/pcluster/schemas/test_imagebuilder_schema/test_imagebuilder_schema)。

**Topics**
+ [建置映像組態檔案屬性](#build-image-v3.properties)
+ [`Build` 區段](Build-v3.md)
+ [`Image` 區段](build-Image-v3.md)
+ [`DeploymentSettings` 區段](DeploymentSettings-build-image-v3.md)

## 建置映像組態檔案屬性
<a name="build-image-v3.properties"></a>

`Region` (**選用**，`String`)  
指定 `build-image` 操作 AWS 區域 的 。例如 `us-east-2`。

`CustomS3Bucket` (**選用**，`String`)  
指定在您的 AWS 帳戶中建立的 Amazon S3 儲存貯體名稱，以存放自訂 AMI 建置程序所使用的資源，以及匯出日誌。映像使用的資訊位於映像 config 的自訂儲存貯體中。 會在您建立叢集的每個 AWS 區域中 AWS ParallelCluster 維護一個 Amazon S3 儲存貯體。根據預設，這些 Amazon S3 儲存貯體會命名為 `parallelcluster-hash-v1-DO-NOT-DELETE`。

# `Build` 區段
<a name="Build-v3"></a>

**（必要）** 指定要在其中建置映像的組態。

```
Build:
  Imds:
    ImdsSupport: string
  InstanceType: string
  SubnetId: string
  ParentImage: string
  Iam:
    InstanceRole: string
    InstanceProfile: string
    CleanupLambdaRole: string
    AdditionalIamPolicies:
      - Policy: string
    PermissionsBoundary: string
  Components:
    - Type: string
      Value: string
  Tags:
    - Key: string
      Value: string
  SecurityGroupIds:
    - string
  UpdateOsPackages:
    Enabled: boolean
  Installation:
    NvidiaSoftware: 
      Enabled: boolean
    LustreClient:
      Enabled: boolean
```

## `Build` 屬性
<a name="Build-v3.properties"></a>

`InstanceType` (**必要**，`String`)  
指定用於建置映像之執行個體的執行個體類型。

`SubnetId` (**選用**，`String`)  
指定要佈建執行個體以建置映像的現有子網路 ID。提供的子網路需要網際網路存取。請注意，如果建置失敗[，您可能需要修改子網路的 IP 定址屬性](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)。  
`pcluster build-image` 使用預設 VPC。如果已刪除預設 VPC，可能是使用 AWS Control Tower 或 AWS 登陸區域，則必須指定子網路 ID。
當您指定 SubnetId 時，建議您也指定 SecurityGroupIds 屬性。如果您離開 SecurityGroupIds， AWS ParallelCluster 將使用預設安全群組或依賴指定子網路中的預設行為。當您同時使用兩者時，您會獲得這些優勢：  
+ 精細控制：當您明確定義兩者時，可確保在映像建置程序期間啟動的執行個體放置在正確的子網路中，並擁有建置元件和任何必要服務的精確網路存取 （例如針對建置指令碼存取 S3)。
+ 安全最佳實務：當您定義適當的安全群組時，這有助於限制網路只能存取必要的連接埠和服務，進而增強建置環境的安全性。
+ 避免潛在問題：如果您只依賴預設值，這可能會導致安全群組太開放或太嚴格，這可能會在建置過程中導致問題。

`ParentImage` (**必要**，`String`)  
指定基礎映像。父系映像可以是非 AWS ParallelCluster AMI 或相同版本的官方 AWS ParallelCluster AMI。您無法從不同版本的 使用 AWS ParallelCluster 官方或自訂 AMI AWS ParallelCluster。格式必須是映像的 ARN `arn:Partition:imagebuilder:Region:Account:image/ImageName/ImageVersion`或 AMI ID `ami-12345678`。

`SecurityGroupIds` (**選用**，`[String]`)  
指定映像的安全群組 IDs清單。

### `Imds`
<a name="Build-v3-Imds"></a>

#### `Imds` 屬性
<a name="Build-v3-Imds.properties"></a>

**（選用）** 指定 Amazon EC2 ImageBuilder 建置和測試執行個體中繼資料服務 (IMDS) 設定。

```
Imds:
  ImdsSupport: string
```

`ImdsSupport` (**選用**，`String`)  
指定在 Amazon EC2 ImageBuilder 建置和測試執行個體中支援哪些 IMDS 版本。支援的值為 `v2.0` 和 `v1.0`。預設值為 `v2.0`。  
如果 `ImdsSupport` 設定為 `v1.0`，則同時支援 IMDSv1 和 IMDSv2。  
如果 `ImdsSupport` 設定為 `v2.0`，則僅支援 IMDSv2。  
如需詳細資訊，請參閱《Amazon EC[IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)2。 *Amazon EC2 *  
[更新政策：如果變更此設定，則不允許更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)  
從 3.7.0 AWS ParallelCluster 版開始，`ImdsSupport`預設值為 `v2.0`。我們建議您在自訂動作呼叫中`ImdsSupport`將 設定為 `v2.0`，並將 IMDSv1 取代為 IMDSv2。  
3.3.0 AWS ParallelCluster 版[`ImdsSupport`](#yaml-build-image-Build-Imds-ImdsSupport)新增了對 [`Imds`](#Build-v3-Imds) / 的支援。

### `Iam`
<a name="Build-v3-Iam"></a>

#### `Iam` 屬性
<a name="Build-v3-Iam.properties"></a>

(**選用**) 指定映像建置的 IAM 資源。

```
Iam:
  InstanceRole: string
  InstanceProfile: string
  CleanupLambdaRole: string
  AdditionalIamPolicies:
    - Policy: string
  PermissionsBoundary: string
```

`InstanceProfile` (**選用**，`String`)  
指定執行個體描述檔以覆寫 EC2 Image Builder 執行個體的預設執行個體描述檔。 `InstanceProfile` `InstanceRole`和 `AdditionalIamPolicies`無法一起指定。格式是 `arn:Partition:iam::Account:instance-profile/InstanceProfileName`。

`InstanceRole` (**選用**，`String`)  
指定執行個體角色以覆寫 EC2 Image Builder 執行個體的預設執行個體角色。 `InstanceProfile` `InstanceRole`和 `AdditionalIamPolicies`無法一起指定。格式是 `arn:Partition:iam::Account:role/RoleName`。

`CleanupLambdaRole` (**選用**，`String`)  
用於 AWS Lambda 函數的 IAM 角色 ARN，該函數支援 CloudFormation 自訂資源，可在建置完成時移除建置成品。Lambda 需要設定為允許擔任角色的委託人。格式是 `arn:Partition:iam::Account:role/RoleName`。

`AdditionalIamPolicies` (**選用**)  
指定要連接至用於產生自訂 AMI 之 EC2 Image Builder 執行個體的其他 IAM 政策。  

```
AdditionalIamPolicies:
  - Policy: string
```  
`Policy` (**選用**，`[String]`)  
IAM 政策清單。格式是 `arn:Partition:iam::Account:policy/PolicyName`。

`PermissionsBoundary` (**選用**，`String`)  
要用作由 建立之所有角色之許可界限的 IAM 政策 ARN AWS ParallelCluster。如需 IAM 許可界限的詳細資訊，請參閱《[IAM 使用者指南》中的 IAM 實體的許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。 **格式是 `arn:Partition:iam::Account:policy/PolicyName`。

### `Components`
<a name="Build-v3-Components"></a>

#### `Components` 屬性
<a name="Build-v3-Components.properties"></a>

(**選用**) 除了預設提供的元件之外，指定要在 AMI 建置程序期間使用的 Amazon EC2 ImageBuilder 元件 AWS ParallelCluster。這類元件可用來自訂 AMI 建置程序。如需詳細資訊，請參閱[AWS ParallelCluster AMI 自訂](custom-ami-v3.md)。

```
Components:
  - Type: string
    Value: string
```

`Type` (**選用**，`String`)  
指定元件的類型值對類型。類型可以是 `arn`或 `script`。

`Value` (**選用**，`String`)  
指定元件的類型值對的值。當類型為 時`arn`，這是 EC2 Image Builder 元件的 ARN。當類型為 時`script`，這是指向指令碼的 https 或 s3 連結，以便在您建立 EC2 Image Builder 元件時使用。

### `Tags`
<a name="Build-v3-Tags"></a>

#### `Tags` 屬性
<a name="Build-v3-Tags.properties"></a>

(**選用**) 指定要在用於建置 AMI 的資源中設定的標籤清單。

```
Tags:
  - Key: string
    Value: string
```

`Key` (**選用**，`String`)  
定義標籤的名稱。

`Value` (**選用**，`String`)  
定義標籤的值。

### `UpdateOsPackages`
<a name="Build-v3-UpdateOsPackages"></a>

#### `UpdateOsPackages` 屬性
<a name="Build-v3-UpdateOsPackages.properties"></a>

(**選用**) 指定是否在安裝 AWS ParallelCluster 軟體堆疊之前更新作業系統。

```
UpdateOsPackages:
  Enabled: boolean
```

`Enabled` (**選用**，`Boolean`)  
如果為 `true`，作業系統會在安裝 AWS ParallelCluster 軟體之前更新並重新啟動。預設值為 `false`。  
啟用 `UpdateOsPackages` 時，所有可用的作業系統套件都會更新，包括核心。身為客戶，您有責任確認更新與更新中未包含的 AMI 相依性相容。  
例如，假設您想要為核心 AWS ParallelCluster 版本 Y.0 和某些元件版本 Z.0 隨附的版本 X.0 建置 AMI。假設可用的更新包含更新的核心版本 Y.1，而不更新元件 Z.0。在啟用 之前`UpdateOsPackages`，您有責任確認元件 Z.0 支援核心 Y.1。

### `Installation`
<a name="Build-v3-Installation"></a>

#### `Installation` 屬性
<a name="Build-v3-Installation.properties"></a>

**（選用）** 指定要在映像上安裝的其他軟體。

```
Installation:
  NvidiaSoftware: 
    Enabled: boolean
  LustreClient:
    Enabled: boolean
```

`NvidiaSoftware` 屬性 (**選用**)  
指定要安裝的 Nvidia 軟體。  

```
NvidiaSoftware: 
    Enabled: boolean
```  
`Enabled` (**選用**，`boolean`)  
如果為 `true`，則會安裝 Nvidia GPU 驅動程式和 CUDA。預設值為 `false`。

`LustreClient` 屬性 (**選用**)  
指定將安裝 Amazon FSx Lustre 用戶端。  

```
LustreClient:
    Enabled: boolean
```  
`Enabled` (**選用**，`boolean`)  
如果為 `true`，則會安裝 Lustre 用戶端。預設值為 `true`。

# `Image` 區段
<a name="build-Image-v3"></a>

**（選用）** 定義映像建置的映像屬性。

```
Image:
  Name: string
  RootVolume:
    Size: integer
    Encrypted: boolean
    KmsKeyId: string
  Tags:
    - Key: string
      Value: string
```

## `Image` 屬性
<a name="build-Image-v3.properties"></a>

`Name` (**選用**，`String`)  
指定 AMI 的名稱。如果未指定，則會使用呼叫 [`pcluster build-image`](pcluster.build-image-v3.md)命令時使用的名稱。

### `Tags`
<a name="build-Image-v3-Tags"></a>

#### `Tags` 屬性
<a name="build-Image-v3-Tags.properties"></a>

(**選用**) 指定影像的鍵/值對。

```
Tags:
  - Key: string
    Value: string
```

`Key` (**選用**，`String`)  
定義標籤的名稱。

`Value` (**選用**，`String`)  
定義標籤的值。

### `RootVolume`
<a name="build-Image-v3-RootVolume"></a>

#### `RootVolume` 屬性
<a name="build-Image-v3-RootVolume.properties"></a>

(**選用**) 指定映像根磁碟區的屬性。

```
RootVolume:
  Size: integer
  Encrypted: boolean
  KmsKeyId: string
```

`Size` (**選用**，`Integer`)  
指定映像根磁碟區的大小，以 GiB 為單位。預設大小為[`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage)加 27 GiB 的大小。

`Encrypted` (**選用**，`Boolean`)  
指定磁碟區是否已加密。預設值為 `false`。

`KmsKeyId` (**選用**，`String`)  
指定用於加密磁碟區的 AWS KMS 金鑰 ARN。格式為「`arn:Partition:kms:Region:Account:key/KeyId`。

# `DeploymentSettings` 區段
<a name="DeploymentSettings-build-image-v3"></a>

**注意**  
`DeploymentSettings` 從 3.4.0 AWS ParallelCluster 版開始新增 。

**（選用）** 指定部署設定組態。

```
DeploymentSettings:
  LambdaFunctionsVpcConfig:
    SecurityGroupIds:
      - string
    SubnetIds:
      - string
```

## `DeploymentSettings` 屬性
<a name="DeploymentSettings-build-image-v3.properties"></a>

### `LambdaFunctionsVpcConfig`
<a name="DeploymentSettings-build-image-v3-LambdaFunctionsVpcConfig"></a>

**（選用）** 指定 AWS Lambda 函數 VPC 組態。如需詳細資訊，請參閱[AWS Lambda 中的 VPC 組態 AWS ParallelCluster](lambda-vpc-v3.md)。

```
LambdaFunctionsVpcConfig:
  SecurityGroupIds:
    - string
  SubnetIds:
    - string
```

#### `LambdaFunctionsVpcConfig properties`
<a name="DeploymentSettings-build-image-v3-LambdaFunctionsVpcConfig.properties"></a>

 `SecurityGroupIds` (**必要**，`[String]`)  
連接至 Lambda 函數的 Amazon VPC 安全群組 IDs 清單。  
[更新政策：如果變更此設定，則不允許更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

 `SubnetIds` (**必要**，`[String]`)  
連接至 Lambda 函數的子網路 IDs 清單。  
[更新政策：如果變更此設定，則不允許更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**注意**  
子網路和安全群組必須位於相同的 VPC 中。