

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

# 建置自訂 AMI
<a name="hyperpod-custom-ami-how-to"></a>

下頁說明如何使用 Amazon SageMaker HyperPod 基礎 AMI 建置自訂 Amazon Machine Image (AMI)。首先選取基礎 AMI，然後使用任何用於建立新映像的常見方法來建立自訂的 AMI，例如 AWS CLI。

## 選取 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 AMIs。SageMaker HyperPod AMIs是公有且可見於每個 AWS 帳戶。您可以套用篩選條件來搜尋 Amazon 擁有的公有 AMI，以在 Amazon EC2 AMI 目錄中找到它們。

若要在主控台中尋找 SageMaker HyperPod AMI：

1. 登入 Amazon SNS 主控台。

1. 在左側導覽窗格中選擇 **AMI**。

1. 針對**映像類型**下拉式清單，選取**公有映像**。

1. 在搜尋列篩選條件中，將**擁有者別名**篩選條件設定為 **amazon**。

1. 搜尋字首為 **HyperPod EKS** 的 AMI，然後選取適合您使用案例的 AMI (最好是最新的)。例如，您可以在 Kubernetes 1.31 與 Kubernetes 1.30 之間選擇 AMI。

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

如果您想要一律使用最新版本的公有 AMI，則使用公有 SageMaker HyperPod SSM 參數會更有效率，因為該參數包含 SageMaker HyperPod 發行的最新 AMI ID 值。

下列範例展示如何使用 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>

在您選取了 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 的開放原始碼工具，可讓您從單一來源組態為多個平台建立相同的機器映像。它支援為 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 金鑰政策許可的詳細資訊，請參閱[SageMaker HyperPod 的客戶受管 AWS KMS key 加密](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" 
            }
        }
    ]'
```