

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 构建映像配置文件
<a name="image-builder-configuration-file-v3"></a>

AWS ParallelCluster 版本 3 使用 YAML 1.1 文件作为构建镜像配置参数。请确认缩进正确以减少配置错误。有关更多信息，请参阅 YAML 1.1 规范 ([https://yaml.org/spec/1.1/](https://yaml.org/spec/1.1/))。

这些配置文件用于定义如何使用 EC2 Image Buil AWS ParallelCluster der 构建您的自定义 AMI。使用 [`pcluster build-image`](pcluster.build-image-v3.md) 命令即可触发自定义 AMI 构建过程。有关一些示例配置文件，请参阅 aw [parallelcluster/tree/release-3.0/cli/tests/pcluster/schemas/test\$1imagebuilder\$1schema/tests-\$1imagebuild https://github.com/aws/ er\$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`）  
 AWS 区域 为`build-image`操作指定。例如 `us-east-2`。

`CustomS3Bucket`（**可选**，`String`）  
指定在您的 AWS 账户中创建的 Amazon S3 存储桶的名称，该存储桶用于存储自定义 AMI 构建过程使用的资源和导出日志。图像使用的信息位于镜像配置的自定义存储桶中。 AWS ParallelCluster 在您创建集群的每个 AWS 区域中维护一个 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`， IMDSv2 则同时支持 IMDSv1 和。  
如果设置`ImdsSupport`为`v2.0`，则仅支持 IMDSv2 该选项。  
有关更多信息，请参阅《适用于 *Linux 实例的 Amazon EC2 用户指南》 IMDSv2*中的[使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)  
从 3.7.0 AWS ParallelCluster 版开始，`ImdsSupport`默认值为。`v2.0`我们建议您在自定义操作调 IMDSv1 用 IMDSv2 中设置`ImdsSupport`为`v2.0`并替换为。  
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`）  
用于支持 CloudFormation 自定义资源的 AWS Lambda 函数的 IAM 角色的 ARN，该资源将在构建完成后移除构建工件。需要将 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`）  
要用作 AWS ParallelCluster创建的所有角色的权限边界的 IAM 策略的 ARN。有关 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>

（**可选**）除了默认提供的 ImageBuilder 组件外，还指定要在 AMI 构建过程中使用的 Amazon EC2 组件 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 or s3 link that points to the script to use when you create the EC2 Image Builder com点。

### `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 依赖项兼容。  
例如，假设您要为内核版本 Y.0 和某个组件 AWS ParallelCluster 版本 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 函数 IDs 的 Amazon VPC 安全组列表。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

 `SubnetIds`（**必需**，`[String]`）  
附加 IDs 到 Lambda 函数的子网列表。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**注意**  
子网和安全组必须位于同一 VPC。