

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

# 构建自定义 AMI
<a name="hyperpod-custom-ami-how-to"></a>

以下页面介绍如何使用亚马逊 SageMaker HyperPod基本 AMI 构建自定义亚马逊系统映像 (AMI)。首先选择一个基础 AMI，然后通过任何常用的新映像创建方法（例如 AWS CLI）来创建自己的自定义 AMI。

## 选择 SageMaker HyperPod 基本 AMI
<a name="hyperpod-custom-ami-select-base"></a>

您可以通过以下方法之一选择 SageMaker HyperPod 基本 AMI。

### AWS 控制台选择
<a name="hyperpod-custom-ami-console-selection"></a>

您可以通过 AWS 控制台或使用 `DescribeImages` API 调用来选择公用 SageMaker HyperPod AMI。 SageMaker HyperPod AMI 是公开的，并且在每个 AWS 账户地方都可见。您可以在 Amazon EC2 AMI 目录中，通过应用筛选条件搜索 Amazon 拥有的公有 AMI 来查找它们。

要在控制台中查找 SageMaker HyperPod AMI，请执行以下操作：

1. 登录 Amazon EC2 控制台。

1. 在左侧导航窗格中，选择 **AMI**。

1. 在**映像类型**下拉列表中，选择**公有映像**。

1. 在搜索栏筛选条件中，将**所有者别名**筛选条件设置为 **amazon**。

1. 搜索前缀为 **HyperPodEKS** 的 AMI，然后选择适合您的用例的 AMI（最好是最新的）。例如，您可以在 Kubernetes 1.31 和 Kubernetes 1.30 之间选择一个 AMI。

### 通过获取最新的公有 AMI ID AWS CLI
<a name="hyperpod-custom-ami-cli-fetch"></a>

如果您想始终使用最新版本的公有 AMI，则使用包含发布的最新 AMI ID 值的公共 SageMaker HyperPod SSM 参数会更有效率。 SageMaker HyperPod

以下示例说明如何使用 AWS CLI检索最新的 AMI ID：

```
aws ssm get-parameter \
  --name "/aws/service/sagemaker-hyperpod/ami/x86_64/eks-1.31-amazon-linux-2/latest/ami-id" \
  --region {{us-east-1}} \
  --query "Parameter.Value" \
  --output text
```

**注意**  
根据需要将参数名称替换为相应的 Kubernetes 版本。例如，如果您要使用 Kubernetes 1.30，请使用以下参数：`/aws/service/hyperpod/ami/x86_64/eks-1.30-amazon-linux-2/latest/ami-id`。

## 构建您的自定义 AMI
<a name="hyperpod-custom-ami-build"></a>

选择公有 AMI 后，使用该 SageMaker HyperPod 公有 AMI 作为基础 AMI，使用以下方法之一构建自己的自定义 AMI。请注意，这并非构建 AMI 的详尽列表。您可以使用自己选择的任何方法来构建 AMI。 SageMaker HyperPod 没有任何具体建议。
+ **AWS 管理控制台**：您可以使用 SageMaker HyperPod AMI 启动 Amazon EC2 实例，进行所需的自定义，然后使用该实例创建 AMI。
+ **AWS CLI**：进行自定义设置后，您也可以使用 `aws ec2 create-image` 命令从现有 Amazon EC2 实例创建 AMI。
+ **HashiCorp Packer**：Packer 是一款开源工具 HashiCorp ，可让您通过单一来源配置为多个平台创建相同的机器映像。它支持为 AWS其他云提供商和虚拟化平台创建 AMI 以及映像。
+ **Image Builder**：EC2 Image Builder 是一项完全托管的 AWS 服务，可让您更轻松地实现 Linux 或 Windows Server 映像的创建、维护、验证、共享和部署操作的自动化。有关更多信息，请参阅 [EC2 Image Builder 用户指南](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)。

### 构建由客户管理的自定义 AMI AWS KMS 加密
<a name="hyperpod-custom-ami-build-kms"></a>

以下各节介绍如何使用客户托管 AWS KMS 密钥构建自定义 AMI 来加密您的 HyperPod 集群卷。有关客户托管密钥 HyperPod以及授予所需的 IAM 和 KMS 密钥策略权限的更多信息，请参阅[客户管理 AWS KMS key 加密用于 SageMaker HyperPod](smcluster-cmk.md)。如果您计划使用使用客户托管密钥加密的自定义 AMI，请确保同时使用相同的密钥加密 HyperPod 集群的 Amazon EBS 根卷。

#### AWS CLI 示例：使用 EC2 Image Builder 和 HyperPod 基础映像创建新 AMI
<a name="hyperpod-custom-ami-cli-example"></a>

以下示例演示如何使用 Image Builder 通过 AWS KMS 加密创建 AMI：

```
aws imagebuilder create-image-recipe \
    name "{{hyperpod-custom-recipe}}" \
    version "1.0.0" \
    parent-image "{{<hyperpod-base-image-id>}}" \
    block-device-mappings DeviceName="/dev/xvda",Ebs={VolumeSize=100,VolumeType=gp3,Encrypted=true,KmsKeyId=arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{key-id}},DeleteOnTermination=true}
```

#### Amazon EC2 控制台：从 Amazon EC2 创建新的 AMI
<a name="hyperpod-custom-ami-console-example"></a>

要使用 Amazon EC2 控制台从 Amazon EC2 实例创建 AMI，请执行以下操作：

1. Right-click 在您的自定义 Amazon EC2 实例上，然后选择**创建映像**。

1. 在**加密**部分中，选择**加密快照**。

1. 从下拉菜单中选择您的 KMS 密钥。例如：`arn:aws:kms:{{us-east-2}}:{{111122223333}}:key/{{<your-kms-key-id>}}` 或使用密钥别名：`alias/{{<your-hyperpod-key>}}`。

#### AWS CLI 示例：从 Amazon EC2 实例创建新 AMI
<a name="hyperpod-custom-ami-cli-create-image"></a>

使用 `aws ec2 create-image` 命令与 AWS KMS 加密：

```
aws ec2 create-image \
    instance-id "{{<instance-id>}}" \
    name "{{MyCustomHyperPodAMI}}" \
    description "{{Custom HyperPod AMI}}" \
    block-device-mappings '[
        {
            "DeviceName": "/dev/xvda",
            "Ebs": {
                "Encrypted": true,
                "KmsKeyId": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{key-id}}",
                "VolumeType": "gp2" 
            }
        }
    ]'
```