

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

# AWS ParallelCluster AMI 自定义
<a name="custom-ami-v3"></a>

在某些情况下，需要为 AWS ParallelCluster 构建自定义 AMI。本节介绍构建自定义 AWS ParallelCluster AMI 时应考虑的事项。

您可以使用以下方法之一构建自定义 AWS ParallelCluster AMI：

1. 创建[构建映像配置文件](image-builder-configuration-file-v3.md)，然后通过 EC2 Image Builder 使用 `pcluster` CLI 构建映像。此过程自动运行，可重复，并且支持监控。有关更多信息，请参阅 [`pcluster`](pcluster-v3.md) 映像命令。

1. 从 AWS ParallelCluster AMI 创建实例，然后登录该实例并进行手动修改。最后，使用 Amazon EC2 根据修改后的实例创建新 AMI。此过程需要更少的时间。但过程不自动运行，也不可重复，而且不支持使用 `pcluster` CLI 映像监控命令。

有关这些方法的更多信息，请参阅[构建自定义 AWS ParallelCluster AMI](building-custom-ami-v3.md)。

## AWS ParallelCluster AMI 自定义注意事项
<a name="custom-ami-considerations-v3"></a>

无论您如何创建自定义映像，我们都建议您执行初步验证测试，并包含相应的预置以监控所创建映像的状态。

要使用 `pcluster` 构建自定义 AMI，您需要创建一个包含 [`Build`](Build-v3.md) 和 [`Image`](Image-v3.md#Image-v3.properties) 部分的[构建映像配置文件](image-builder-configuration-file-v3.md)，[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 将使用该文件来构建您的自定义映像。`Build` 部分指定 Image Builder 在构建映像时需要的项目。这包括 [`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage)（基础映像）和 [`Components`](Build-v3.md#Build-v3-Components)。[Image Builder 组件](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-component-manager.html)定义一系列步骤，在创建映像之前自定义实例时或在测试由创建的映像启动的实例时，必须执行这些步骤。有关更多信息，请参阅 *EC2 Image Builder 用户指南中的使用 Image Builder* [创建自定义组件](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-component.html)。

从 pcluster 调用[`build-image`](pcluster.build-image-v3.md)以创建自定义映像时，Image Builder 会使用带有 AWS ParallelCluster 食谱的构建映像配置来引导您 AWS ParallelCluster 。[`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage)Image Builder 将会下载组件、运行构建和验证阶段、创建 AMI、从 AMI 中启动实例并运行测试。该过程完成后，Image Builder 将生成新映像或停止消息。

## 执行自定义组件验证测试
<a name="custom-ami-validation-v3"></a>

在将 Image Builder 组件包含在配置中之前，请使用以下方法之一对其进行测试和验证。由于 Image Builder 进程可能需要长达 1 小时的时间，因此我们建议您事先测试这些组件。这可为您节省大量时间。

**脚本案例**  
在构建映像过程之外，在正在运行的实例中测试脚本，并验证脚本是否以退出代码 0 退出。

**Amazon 资源名称 (ARN) 案例**  
在构建映像过程之外，在正在运行的实例中测试组件文档。有关要求列表，请参阅 *Image Builder User Guide* 中的 [Component manager](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-component-manager.html)。

**成功验证后，将组件添加到构建映像配置中**  
确认自定义组件正常工作后，将其添加到[构建映像配置文件](image-builder-configuration-file-v3.md)中。

## 使用 `pcluster` 命令监控 Image Builder 进程以帮助进行调试
<a name="custom-ami-monitor-v3"></a>

[`describe-image`](pcluster.describe-image-v3.md)

使用此命令可监控构建映像状态。

[`list-image-log-streams`](pcluster.list-image-log-streams-v3.md)

使用此命令获取可用于检索日志事件的日志流[`get-image-log-events`](pcluster.get-image-log-events-v3.md)。 IDs 

[`get-image-log-events`](pcluster.get-image-log-events-v3.md)

使用此命令可获取构建映像进程事件的日志流。

例如，您可以使用以下命令来跟踪构建映像事件。

```
$ watch -n 1 'pcluster get-image-log-events -i {{<image-id>}} \
        --log-stream-name/1 {{<pcluster-version>}} \
        --query "events[*].message" | tail -n 50'
```

[`get-image-stack-events`](pcluster.get-image-stack-events-v3.md)

使用此命令可检索 Image Builder 创建的堆栈的映像堆栈事件。

[`export-image-logs`](pcluster.export-image-logs-v3.md)

使用此命令可保存映像日志。

有关 AWS ParallelCluster 日志和 Amazon 的更多信息 CloudWatch，请参阅[Amazon CloudWatch Logs 生成镜像日志](cloudwatch-logs-v3.md#cloudwatch-logs-build-images)和[亚马逊 CloudWatch 控制面板](cloudwatch-dashboard-v3.md)。

## 其他考虑因素
<a name="custom-ami-other-v3"></a>

**新 AWS ParallelCluster 版本和自定义 AMIs**  
如果构建并使用自定义 AMI，则必须重复执行用于随每个新的 AWS ParallelCluster 版本创建自定义 AMI 的步骤。

**自定义引导操作**  
请查看该[自定义引导操作](custom-bootstrap-actions-v3.md)部分，以确定您要进行的修改是否可以编写脚本并支持未来的 AWS ParallelCluster 版本。

**使用自定义 AMIs**  
你可以在集群配置 AMIs 中的 [`Image`](Image-v3.md)/[`CustomAmi`](Image-v3.md#yaml-Image-CustomAmi)和//-[`Scheduling`[`SlurmQueues`[`Name`[`Image`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Image)](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Name)](Scheduling-v3.md#Scheduling-v3-SlurmQueues)](Scheduling-v3.md)/[`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi)部分中指定自定义。  
要排查自定义 AMI 验证警告，请参阅[排查自定义 AMI 问题](troubleshooting-v3-custom-amis.md)。