

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

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

以下页面说明了如何使用亚马逊 SageMaker HyperPod基础版构建自定义亚马逊系统映像 (AMI) AMIs。首先选择一个基础 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>

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

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

1. 登录 Amazon EC2 控制台。

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

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

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

1. 搜索 AMIs 前缀为 **HyperPodEKS**，然后选择适合您的用例的 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。请注意，这并不是一份详尽的建筑清单 AMIs。您可以使用任何您选择的方法进行构建 AMIs。 SageMaker HyperPod 没有任何具体建议。
+ **AWS 管理控制台**：您可以使用 SageMaker HyperPod AMI 启动 Amazon EC2 实例，进行所需的自定义，然后使用该实例创建 AMI。
+ **AWS CLI**：进行自定义设置后，您也可以使用 `aws ec2 create-image` 命令从现有 Amazon EC2 实例创建 AMI。
+ **HashiCorp Packer**：Packer 是一款开源工具 HashiCorp ，可让您通过单一来源配置为多个平台创建相同的机器映像。它支持 AMIs 为 AWS其他云提供商和虚拟化平台创建映像，以及为其创建映像。
+ **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)。

### 使用客户托管 AWS KMS 加密构建自定义 AMI
<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. 右键单击您的自定义 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" 
            }
        }
    ]'
```