

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

# 在 Amazon SageMaker Studio 经典版中附加自定义 SageMaker 图片
<a name="studio-byoi-attach"></a>

**重要**  
允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。之所以需要为资源添加标签的权限，是因为 Studio 和 Studio Classic 会自动为创建的任何资源添加标签。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记，则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息，请参阅 [提供标记 A SageMaker I 资源的权限](security_iam_id-based-policy-examples.md#grant-tagging-permissions)。  
[AWS 亚马逊 A SageMaker I 的托管策略](security-iam-awsmanpol.md)授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

**重要**  
截至 2023 年 11 月 30 日，之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新的 Studio 体验的信息，请参阅 [亚马逊 SageMaker Studio](studio-updated.md)。  
Studio Classic 仍针对现有工作负载进行维护，但不再可供入门使用。您只能停止或删除现有的 Studio Classic 应用程序，不能创建新的应用程序。我们建议您将[工作负载迁移到全新 Studio 体验](studio-updated-migrate.md)。

要使用自定义 SageMaker 镜像，您必须将镜像版本附加到您的网域或共享空间。附加图像版本时，它会显示在 SageMaker Studio Classic Launcher 中，并显示**在 “选择图像”** 下拉列表中，用户可以使用该下拉列表启动活动或更改笔记本使用的图像。

要将自定义 SageMaker 图像提供给网域内的所有用户，您需要将该图像附加到网域。要使一个映像可供共享空间中的所有用户使用，可以将该映像附加到共享空间。要使一个映像可供单个用户使用，需要将该映像附加到该用户的配置文件中。当您附加图像时， SageMaker AI 默认使用最新的图像版本。您也可以附加特定的映像版本。附加版本后，您可以在启动笔记本电脑时从 SageMaker AI Launcher 或图像选择器中选择版本。

在任何给定时间可以附加的映像版本的数量是有限的。达到限制后，必须分离一个版本才能附加映像的另一个版本。

以下各节演示如何使用 SageMaker AI 控制台或将自定义 SageMaker 图像附加到您的网域 AWS CLI。您只能使用 AWS CLI将自定义映像附加到共享空间。

## 将 SageMaker 图像附加到网域
<a name="studio-byoi-attach-domain"></a>

### 使用控制台附加 SageMaker 图像
<a name="studio-byoi-attach-existing"></a>

本主题介绍如何使用 SageMaker AI 控制面板将现有的自定义 SageMaker 映像版本附加到您的网域。您也可以创建自定义 SageMaker 图像和图像版本，然后将该版本附加到您的域中。有关创建映像和映像版本的过程，请参阅[为 Amazon SageMaker Studio Classic 创建自定义 SageMaker 图片](studio-byoi-create.md)。

**附加现有映像**

1. 打开 Amazon A SageMaker I 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**管理员配置**。

1. 在**管理员配置**下，选择**域**。

1. 在**域**页面上，选择要将映像附加到的域。

1. 在**域详细信息**页面上，选择**环境**选项卡。

1. 在 “**环境**” 选项卡上，在 “**附加到域名的自定义 SageMaker Studio Classic 图像**” 下，选择 “**附加图像**”。

1. 对于**镜像源**，选择**现有镜像**。

1. 从列表中选择现有映像。

1. 从列表中选择映像的版本。

1. 选择**下一步**。

1. 验证**映像名称**、**映像显示名称**和**描述**的值。

1. 选择 IAM 角色。有关更多信息，请参阅 [为 Amazon SageMaker Studio Classic 创建自定义 SageMaker 图片](studio-byoi-create.md)。

1. （可选）为映像添加标签。

1. 指定 EFS 挂载路径。这是映像中挂载用户的 Amazon Elastic File System (EFS) 主目录的路径。

1. 对于**图像类型**，请选择 **SageMaker Studio 图像**

1. 对于**内核名称**中，输入映像中现有内核的名称。有关如何从镜像获取内核信息的信息，请参阅 SageMaker Studio Classic 自定义图像样本存储库中的[开发](https://github.com/aws-samples/sagemaker-studio-custom-image-samples/blob/main/DEVELOPMENT.md)。有关更多信息，请参阅 [亚马逊 SageMaker Studio 经典版的自定义 SageMaker 图片规格](studio-byoi-specs.md) 的**内核发现**和**用户数据**部分。

1. （可选）对于**内核显示名称**，输入内核的显示名称。

1. 选择**添加内核**。

1. 选择**提交**。

   1. 等待映像版本附加到域。附加后，该版本将显示在**自定义映像**列表中，并短暂高亮显示。

### 使用附加 SageMaker 图像 AWS CLI
<a name="studio-byoi-sdk-attach"></a>

以下各节演示了在创建新域名或使用更新现有域名时如何附加自定义 SageMaker 图片 AWS CLI。

#### 将 SageMaker 图像附加到新域名
<a name="studio-byoi-sdk-attach-new-domain"></a>

以下部分演示如何创建附有版本的新域。这些步骤要求您指定创建域所需的 Amazon Virtual Private Cloud (VPC) 信息和执行角色。您可以执行以下步骤来创建域并附加自定义 SageMaker 映像：
+ 获取您的默认 VPC ID 和子网 IDs。
+ 为域创建配置文件，该文件指定映像。
+ 使用配置文件创建域。

**将自定义 SageMaker 图片添加到您的网域**

1. 获取默认 VPC ID。

   ```
   aws ec2 describe-vpcs \
       --filters Name=isDefault,Values=true \
       --query "Vpcs[0].VpcId" --output text
   ```

   响应内容应该类似于以下内容。

   ```
   vpc-xxxxxxxx
   ```

1.  IDs 使用上一步中的 VPC ID 获取您的默认子网。

   ```
   aws ec2 describe-subnets \
       --filters Name=vpc-id,Values=<vpc-id> \
       --query "Subnets[*].SubnetId" --output json
   ```

   响应内容应该类似于以下内容。

   ```
   [
       "subnet-b55171dd",
       "subnet-8a5f99c6",
       "subnet-e88d1392"
   ]
   ```

1. 创建一个名为 `create-domain-input.json` 的配置文件。插入之前步骤中的 VPC ID IDs `ImageName`、子网和`AppImageConfigName`。由于未指定 `ImageVersionNumber`，因此将使用映像的最新版本，也是本例中唯一的版本。

   ```
   {
       "DomainName": "domain-with-custom-image",
       "VpcId": "<vpc-id>",
       "SubnetIds": [
           "<subnet-ids>"
       ],
       "DefaultUserSettings": {
           "ExecutionRole": "<execution-role>",
           "KernelGatewayAppSettings": {
               "CustomImages": [
                   {
                       "ImageName": "custom-image",
                       "AppImageConfigName": "custom-image-config"
                   }
               ]
           }
       },
       "AuthMode": "IAM"
   }
   ```

1. 使用所附的自定义 SageMaker 图片创建域名。

   ```
   aws sagemaker create-domain \
       --cli-input-json file://create-domain-input.json
   ```

   响应内容应该类似于以下内容。

   ```
   {
       "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx",
       "Url": "https://d-xxxxxxxxxxxx.studio.us-east-2.sagemaker.aws/..."
   }
   ```

#### 将 SageMaker 图片附加到您当前的域名
<a name="studio-byoi-sdk-attach-current-domain"></a>

如果您已加入 A SageMaker I 域，则可以将自定义图像附加到当前网域。有关加入 A SageMaker I 域的更多信息，请参阅[亚马逊 SageMaker AI 域名概述](gs-studio-onboard.md)。将自定义映像附加到当前域时，无需指定 VPC 信息和执行角色。附加版本后，必须删除域中的所有应用程序，然后重新打开 Studio Classic。有关删除应用程序的信息，请参阅 [删除亚马逊 A SageMaker I 域名](gs-studio-delete-domain.md)。

您可以执行以下步骤将 SageMaker 图片添加到您的当前域中。
+ `DomainID`从 A SageMaker I 控制面板中获取。
+ 使用 `DomainID` 获取域的 `DefaultUserSettings`。
+ 将 `ImageName` 和 `AppImageConfig` 作为 `CustomImage` 添加到 `DefaultUserSettings`。
+ 更新域以包含自定义映像。

**将自定义 SageMaker 图片添加到您的网域**

1. 打开 Amazon A SageMaker I 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**管理员配置**。

1. 在**管理员配置**下，选择**域**。

1. 在**域**页面上，选择要将映像附加到的域。

1. 在**域详细信息**页面上，选择**域设置**选项卡。

1. 在**域设置**选项卡的**常规设置**下，找到 `DomainId`。ID 的格式如下：`d-xxxxxxxxxxxx`。

1. 使用域 ID 获取域的描述。

   ```
   aws sagemaker describe-domain \
       --domain-id <d-xxxxxxxxxxxx>
   ```

   响应内容应该类似于以下内容。

   ```
   {
       "DomainId": "d-xxxxxxxxxxxx",
       "DefaultUserSettings": {
         "KernelGatewayAppSettings": {
           "CustomImages": [
           ],
           ...
         }
       }
   }
   ```

1. 将响应的默认用户设置部分保存到名为 `default-user-settings.json` 的文件中。

1. 插入前面步骤中的 `ImageName` 和 `AppImageConfigName` 作为自定义映像。由于未指定 `ImageVersionNumber`，因此将使用映像的最新版本，也是本例中唯一的版本。

   ```
   {
       "DefaultUserSettings": {
           "KernelGatewayAppSettings": { 
              "CustomImages": [ 
                 { 
                    "ImageName": "string",
                    "AppImageConfigName": "string"
                 }
              ],
              ...
           }
       }
   }
   ```

1. 使用域 ID 和默认用户设置文件更新域。

   ```
   aws sagemaker update-domain \
       --domain-id <d-xxxxxxxxxxxx> \
       --cli-input-json file://default-user-settings.json
   ```

   响应内容应该类似于以下内容。

   ```
   {
       "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx"
   }
   ```

## 将 SageMaker 图像附加到共享空间
<a name="studio-byoi-attach-shared-space"></a>

您只能使用将 SageMaker 图像附加到共享空间 AWS CLI。附加版本后，必须删除共享空间中的所有应用程序并重新打开 Studio Classic。有关删除应用程序的信息，请参阅 [删除亚马逊 A SageMaker I 域名](gs-studio-delete-domain.md)。

您可以执行以下步骤将 SageMaker 图像添加到共享空间。
+ `DomainID`从 A SageMaker I 控制面板中获取。
+ 使用 `DomainID` 获取域的 `DefaultSpaceSettings`。
+ 将 `ImageName` 和 `AppImageConfig` 作为 `CustomImage` 添加到 `DefaultSpaceSettings`。
+ 更新域以包含共享空间的自定义映像。

**将自定义 SageMaker 图像添加到您的共享空间**

1. 打开 Amazon A SageMaker I 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**管理员配置**。

1. 在**管理员配置**下，选择**域**。

1. 在**域**页面上，选择要将映像附加到的域。

1. 在**域详细信息**页面上，选择**域设置**选项卡。

1. 在**域设置**选项卡的**常规设置**下，找到 `DomainId`。ID 的格式如下：`d-xxxxxxxxxxxx`。

1. 使用域 ID 获取域的描述。

   ```
   aws sagemaker describe-domain \
       --domain-id <d-xxxxxxxxxxxx>
   ```

   响应内容应该类似于以下内容。

   ```
   {
       "DomainId": "d-xxxxxxxxxxxx",
       ...
       "DefaultSpaceSettings": {
         "KernelGatewayAppSettings": {
           "CustomImages": [
           ],
           ...
         }
       }
   }
   ```

1. 将响应的默认空间设置部分保存到名为 `default-space-settings.json` 的文件中。

1. 插入前面步骤中的 `ImageName` 和 `AppImageConfigName` 作为自定义映像。因为没有指定 `ImageVersionNumber`，所以使用映像的最新版本，这是本例中唯一的版本。

   ```
   {
       "DefaultSpaceSettings": {
           "KernelGatewayAppSettings": { 
              "CustomImages": [ 
                 { 
                    "ImageName": "string",
                    "AppImageConfigName": "string"
                 }
              ],
              ...
           }
       }
   }
   ```

1. 使用域 ID 和默认空间设置文件更新您的域。

   ```
   aws sagemaker update-domain \
       --domain-id <d-xxxxxxxxxxxx> \
       --cli-input-json file://default-space-settings.json
   ```

   响应内容应该类似于以下内容。

   ```
   {
       "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx"
   }
   ```

## 在 SageMaker AI 中查看所附图片
<a name="studio-byoi-sdk-view"></a>

创建自定义 SageMaker 映像并将其附加到您的域名后，该图像将出现在该域的**环境**选项卡中。您只能使用以下命令查看共享空间 AWS CLI 的附加图像。

```
aws sagemaker describe-domain \
    --domain-id <d-xxxxxxxxxxxx>
```