

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

# 基 RStudio 于 SageMaker AI 的自定义图像
<a name="rstudio-byoi"></a>

 SageMaker 图像是标识在 Amazon A SageMaker I RStudio 上运行所需的语言包和其他依赖项的文件。 SageMaker AI 使用这些图像来创建你跑步的环境 RStudio。Amazon SageMaker AI 提供了一个内置 RStudio 图像供您使用。如果您需要不同的功能，可以将自带自定义映像。本页提供了有关 RStudio 在 SageMaker AI 上使用自定义图像的关键概念的信息。在 SageMaker AI RStudio 上使用自己的图像的过程需要三个步骤：

1. 从 Dockerfile 构建自定义映像，并将其推送到 Amazon Elastic Container Registry (Amazon ECR) 的存储库中。

1. 在 Amazon ECR 中创建指向容器映像的映像，并将其附加到您的亚马逊 A SageMaker I 域中。 SageMaker 

1.  RStudio 使用您的自定义映像启动新会话。

您可以使用 SageMaker AI 控制面板、和 [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/) 创建图像和图像版本，并将图像版本附加到您的网域。[适用于 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)即使您尚未登录域名，也可以使用 SageMaker AI 控制台创建图像和图像版本。

以下主题展示了如何通过创建、附加和启动自定义图像将自己的图像带到 SageMaker AI RStudio 上。

## 关键术语
<a name="rstudio-byoi-basics"></a>

以下部分定义了在 SageMaker AI RStudio 上使用您自己的图像的关键术语。
+ **Dockerfile：**Dockerfile 是一个用于标识 Docker 映像的语言包和其他依赖项的文件。
+ **Docker 映像：**Docker 映像是一个内置的 Dockerfile。此图像已签入到 Amazon ECR 中，并作为 SageMaker AI 图像的基础。
+ **SageMaker image：** SageMaker 镜像是一组基于 Docker SageMaker 镜像的镜像版本的持有者。
+ **镜像版本：**镜像版本表示与 A SageMaker mazon ECR 存储库兼容 RStudio 并存储在 Amazon ECR 存储库中的 Docker 镜像。每个映像版本都是不可变的。这些图像版本可以附加到域并 RStudio 在 SageMaker AI 上使用。

# 满足先决条件
<a name="rstudio-byoi-prerequisites"></a>

您必须先完成以下先决条件，然后才能 RStudio 在 Amazon A SageMaker I 上使用自己的图片。
+ 如果您的现有域名 RStudio 是在 2022 年 4 月 7 日之前创建的，则必须删除您的 RStudioServerPro 应用程序并重新创建。有关如何删除应用程序的信息，请参阅[关闭并更新 Amazon SageMaker Studio 经典版](studio-tasks-update-studio.md)。
+ 安装 Docker 应用程序。有关设置 Docker 的信息，请参阅[定向和设置](https://docs.docker.com/get-started/)。
+ 创建与 AI RStudio 兼容的 DockerFile 的本地副本。 SageMaker 有关创建示例 RStudio dockerfile 的信息，请参阅[使用自定义映像在 RStudio Ama SageMaker zon AI 上引入您自己的开发环境](https://aws.amazon.com/blogs/machine-learning/use-a-custom-image-to-bring-your-own-development-environment-to-rstudio-on-amazon-sagemaker/)。
+ 使用附加了[AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)策略的 AWS Identity and Access Management 执行角色。如果您已加入域名，则可以从 SageMaker AI 控制面板的**域摘要**部分获取该角色。

  向执行角色添加访问 Amazon Elastic Container Registry (Amazon ECR) 服务的以下权限。

------
#### [ JSON ]

****  

  ```
  { 
      "Version":"2012-10-17",		 	 	  
      "Statement":[ 
          {
              "Sid": "VisualEditor0",
              "Effect":"Allow", 
              "Action":[ 
                  "ecr:CreateRepository", 
                  "ecr:BatchGetImage", 
                  "ecr:CompleteLayerUpload", 
                  "ecr:DescribeImages", 
                  "ecr:DescribeRepositories", 
                  "ecr:UploadLayerPart", 
                  "ecr:ListImages", 
                  "ecr:InitiateLayerUpload", 
                  "ecr:BatchCheckLayerAvailability", 
                  "ecr:PutImage" 
              ], 
              "Resource": "*" 
          }
      ]
  }
  ```

------
+  AWS CLI 使用以下（或更高）版本进行安装和配置。有关安装的信息 AWS CLI，请参阅[安装或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

  ```
  AWS CLI v1 >= 1.23.6
  AWS CLI v2 >= 2.6.2
  ```

# 自定义 RStudio 图像规格
<a name="rstudio-byoi-specs"></a>

在本指南中，您将学习自带 RStudio 图片时要使用的自定义图片规范。要在 Amazon A SageMaker I 中使用自定义 RStudio 图片，您必须满足两组要求。这些要求是由 RStudio PBC和Amazon SageMaker Studio Classic平台强加的。如果这两组要求中的任何一组未得到满足，您的自定义映像将无法正常运行。

## RStudio PBC 要求
<a name="rstudio-byoi-specs-rstudio"></a>

RStudio PBC 的要求在 [ RStudio Workbench/ RStudio Server Pro、Launcher 和 Kubernetes 中使用 Docker](https://support.rstudio.com/hc/en-us/articles/360019253393-Using-Docker-images-with-RStudio-Server-Pro-Launcher-and-Kubernetes) 镜像一文中列出。按照本文中的说明创建自定义 RStudio 图像的基础。

有关如何在自定义映像中安装多个 R 版本的说明，请参阅[在 Linux 上安装多个 R 版本](https://support.rstudio.com/hc/en-us/articles/215488098)。

## 亚马逊 SageMaker Studio 经典版要求
<a name="rstudio-byoi-specs-studio"></a>

Amazon SageMaker Studio Classic 会对您的 RStudio图片施加以下安装要求。
+ 您必须至少使用 RStudio 基础映像`2025.05.1+513.pro3`。有关更多信息，请参阅 [RStudio 版本控制](rstudio-version.md)。
+ 必须安装以下软件包：

  ```
  yum install -y sudo \
  openjdk-11-jdk \
  libpng-dev \
  && yum clean all \
  && /opt/R/${R_VERSION}/bin/R -e "install.packages('reticulate', repos='https://packagemanager.rstudio.com/cran/__linux__/centos7/latest')" \
  && /opt/python/${PYTHON_VERSION}/bin/pip install --upgrade \
      'boto3>1.0<2.0' \
      'awscli>1.0<2.0' \
      'sagemaker[local]<3'
  ```
+ 必须为 `RSTUDIO_CONNECT_URL` 和 `RSTUDIO_PACKAGE_MANAGER_URL` 环境变量提供默认值。

  ```
  ENV RSTUDIO_CONNECT_URL "YOUR_CONNECT_URL"
  ENV RSTUDIO_PACKAGE_MANAGER_URL "YOUR_PACKAGE_MANAGER_URL"
  ENV RSTUDIO_FORCE_NON_ZERO_EXIT_CODE 1
  ```

以下一般规范适用于由图像版本表示的 RStudio图像。

**运行映像**  
`ENTRYPOINT`并且`CMD`指令会被覆盖，以便图像作为 RSession 应用程序运行。

**停止映像**  
`DeleteApp` API 发出等同于 `docker stop` 命令的指令。容器中的其他进程无法获得信 SIGKILL/SIGTERM 号。

**文件系统**  
`/opt/.sagemakerinternal` 和 `/opt/ml` 目录是保留的目录。这些目录中的任何数据在运行时可能不可见。

**用户数据**  
 SageMaker AI 域中的每位用户都会在图像中共享的 Amazon Elastic File System 卷上获得一个用户目录。当前用户的目录在 Amazon Elastic File System 卷上的位置为 `/home/sagemaker-user`。

**元数据**  
元数据文件位于 `/opt/ml/metadata/resource-metadata.json` 中。除了映像中定义的变量，不会添加额外的环境变量。有关更多信息，请参阅 [获取应用程序元数据](notebooks-run-and-manage-metadata.md#notebooks-run-and-manage-metadata-app)。

**GPU**  
在 GPU 实例上，使用 `--gpus` 选项运行映像。CUDA 工具包应当仅包含在映像中，而不是 NVIDIA 驱动程序中。有关更多信息，请参阅[《NVIDIA 用户指南》](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html)。

**指标和日志记录**  
该 RSession 流程的日志将通过客户的账户发送到亚马逊 CloudWatch 。日志组的名称为 `/aws/sagemaker/studio`。日志流的名称为 `$domainID/$userProfileName/RSession/$appName`。

**映像大小**  
映像大小限制在 25 GB 以内。要查看映像的大小，请运行 `docker image ls`。

# 创建自定义 RStudio 镜像
<a name="rstudio-byoi-create"></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 资源的权限已经包括在创建这些资源时添加标签的权限。

本主题介绍如何使用 SageMaker AI 控制台和创建自定义 RStudio 映像 AWS CLI。如果使用 AWS CLI，则必须从本地计算机上运行这些步骤。在 Amazon SageMaker Studio Classic 中，以下步骤不起作用。

创建图像时， SageMaker AI 还会创建初始图像版本。映像版本代表 [Amazon Elastic Container Registry (ECR)](https://console.aws.amazon.com/ecr/) 中的容器映像。容器镜像必须满足要求才能在中使用 RStudio。有关更多信息，请参阅 [自定义 RStudio 图像规格](rstudio-byoi-specs.md)。

有关在本地测试图像和解决常见问题的信息，请参阅 [SageMaker Studio 自定义图像样本存储库](https://github.com/aws-samples/sagemaker-studio-custom-image-samples/blob/main/DEVELOPMENT.md)。

**Topics**
+ [向亚马逊 ECR 添加与 A SageMaker I 兼容的 RStudio Docker 容器镜像](#rstudio-byoi-sdk-add-container-image)
+ [从控制台创建 SageMaker 镜像](#rstudio-byoi-create-console)
+ [从中创建图像 AWS CLI](#rstudio-byoi-create-cli)

## 向亚马逊 ECR 添加与 A SageMaker I 兼容的 RStudio Docker 容器镜像
<a name="rstudio-byoi-sdk-add-container-image"></a>

可使用以下步骤将 Docker 容器映像添加到 Amazon ECR：
+ 创建 Amazon ECR 存储库。
+ 向 Amazon ECR 进行身份验证。
+ 生成与 A SageMaker I 兼容的 RStudio Docker 镜像。
+ 将映像推送到 Amazon ECR 存储库。

**注意**  
Amazon ECR 存储库必须与您的域名位于同一个 AWS 区域 存储库中。

**构建 Docker 映像并将其添加到 Amazon ECR**

1. 使用 AWS CLI创建一个 Amazon ECR 存储库。要使用 Amazon ECR 控制台创建存储库，请参阅[创建存储库](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)。

   ```
   aws ecr create-repository \
       --repository-name rstudio-custom \
       --image-scanning-configuration scanOnPush=true
   ```

   响应：

   ```
   {
       "repository": {
           "repositoryArn": "arn:aws:ecr:us-east-2:acct-id:repository/rstudio-custom",
           "registryId": "acct-id",
           "repositoryName": "rstudio-custom",
           "repositoryUri": "acct-id.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom",
           ...
       }
   }
   ```

1. 使用 `create-repository` 命令作为响应返回的存储库 URI，向 Amazon ECR 进行身份验证。确保 Docker 应用程序正在运行。有关更多信息，请参阅[注册表身份验证](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)。

   ```
   aws ecr get-login-password | \
       docker login --username AWS --password-stdin <repository-uri>
   ```

   响应：

   ```
   Login Succeeded
   ```

1. 构建 Docker 映像。从包含 Dockerfile 的目录中运行以下命令。

   ```
   docker build .
   ```

1. 使用唯一的标签标记构建的映像。

   ```
   docker tag <image-id> "<repository-uri>:<tag>"
   ```

1. 将容器映像推送到 Amazon ECR 存储库。有关更多信息，请参阅[ImagePush](https://docs.docker.com/engine/api/v1.40/#operation/ImagePush)和[推送图片](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)。

   ```
   docker push <repository-uri>:<tag>
   ```

   响应：

   ```
   The push refers to repository [<account-id>.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom]
   r: digest: <digest> size: 3066
   ```

## 从控制台创建 SageMaker 镜像
<a name="rstudio-byoi-create-console"></a>

**创建镜像**

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

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

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

1. 在**自定义映像**页面上，选择**创建映像**。

1. 对于**映像源**，请输入 Amazon ECR 中容器映像的注册表路径。路径格式如下：

   ` acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest] `

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

1. 在**映像属性**下，输入以下内容：
   + 映像名称 - 该名称必须是您的账户在当前 AWS 区域中的唯一名称。
   + （可选）映像显示名称 – 域用户界面中显示的名称。如果未提供，则显示 `Image name`。
   + （可选）描述 – 对映像的描述。
   + IAM 角色-该角色必须附加[AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)策略。可使用下拉菜单选择以下选项之一：
     + 创建新角色 – 指定您希望笔记本用户访问的任何其他 Amazon Simple Storage Service (Amazon S3) 存储桶。如果您不希望允许访问其他存储桶，请选择**无**。

       SageMaker AI 将`AmazonSageMakerFullAccess`策略附加到该角色上。该角色允许笔记本用户访问复选标记旁边列出的 Amazon S3 存储桶。
     + 输入自定义 IAM 角色 ARN – 输入 IAM 角色的 Amazon 资源名称 (ARN)。
     + 使用现有角色 – 从列表中选择一个现有角色。
   + （可选）映像标签 – 选择**添加新标签**。最多可以添加 50 个标签。可以使用 SageMaker AI 控制台或 AI `Search` AP SageMaker I 搜索标签。

1. 在 “**图像类型**” 下，选择 RStudio 图像。

1. 选择**提交**。

新映像将显示在**自定义映像**列表中，并短暂高亮显示。成功创建映像后，您可以选择映像名称查看其属性，或选择**创建版本**创建另一个版本。

**创建另一个映像版本**

1. 在映像所在行中选择**创建版本**。

1. 对于**映像源**，请输入 Amazon ECR 映像的注册表路径。该图像不应与之前版本的 SageMaker AI 图像中使用的图像相同。

要在中使用自定义图片 RStudio，必须将其附加到您的域中。有关更多信息，请参阅 [附上自定义 SageMaker 图片](rstudio-byoi-attach.md)。

## 从中创建图像 AWS CLI
<a name="rstudio-byoi-create-cli"></a>

本节介绍如何使用创建自定义 Amazon SageMaker 图片 AWS CLI。

使用以下步骤创建 SageMaker 镜像：
+ 创建`Image`。
+ 创建`ImageVersion`。
+ 创建配置文件。
+ 创建`AppImageConfig`。

**创建 SageMaker 图像实体**

1. 创建 SageMaker 镜像。角色 ARN 必须至少附加 `AmazonSageMakerFullAccessPolicy` 策略。

   ```
   aws sagemaker create-image \
       --image-name rstudio-custom-image \
       --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>
   ```

   响应：

   ```
   {
       "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/rstudio-custom-image"
   }
   ```

1. 根据 SageMaker 镜像创建镜像版本。传递您在将映像推送到 Amazon ECR 时所选择的唯一标签值。

   ```
   aws sagemaker create-image-version \
       --image-name rstudio-custom-image \
       --base-image <repository-uri>:<tag>
   ```

   响应：

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-image/1"
   }
   ```

1. 检查映像版本是否创建成功。

   ```
   aws sagemaker describe-image-version \
       --image-name rstudio-custom-image \
       --version 1
   ```

   响应：

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-custom-image/1",
       "ImageVersionStatus": "CREATED"
   }
   ```
**注意**  
如果响应为 `"ImageVersionStatus": "CREATED_FAILED"`，则响应还包括失败原因。权限问题是导致失败的常见原因。您也可以查看您的 Amazon CloudWatch 日志。日志组的名称为 `/aws/sagemaker/studio`。日志流的名称为 `$domainID/$userProfileName/KernelGateway/$appName`。

1. 创建一个名为 `app-image-config-input.json` 的配置文件。应用程序映像配置用于配置将映像作为 Kernel SageMaker Gateway 应用程序运行。

   ```
   {
       "AppImageConfigName": "rstudio-custom-config"
   }
   ```

1.  AppImageConfig 使用您在上一步中创建的文件创建。

   ```
   aws sagemaker create-app-image-config \
       --cli-input-json file://app-image-config-input.json
   ```

   响应：

   ```
   {
       "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/r-image-config"
   }
   ```

# 附上自定义 SageMaker 图片
<a name="rstudio-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 资源的权限已经包括在创建这些资源时添加标签的权限。

本指南介绍如何使用 A SageMaker I 控制台或 AWS Command Line Interface (AWS CLI) 将自定义 RStudio 图像附加到您的 SageMaker Amazon AI 域。

要使用自定义 SageMaker 映像，您必须将自定义 RStudio 图像附加到您的网域。当您附加图像版本时，它会出现在 RStudio 启动器中，并显示在 **“选择图像”** 下拉列表中。您可以使用下拉列表来更改使用的图片 RStudio。

可以附加的映像版本数量是有限的。达到限制后，必须先分离一个版本才能附加映像的另一个版本。

**Topics**
+ [使用管理控制台将映像版本附加到域](#rstudio-byoi-attach-console)
+ [使用将现有图像版本附加到您的网域 AWS CLI](#rstudio-byoi-attach-cli)

## 使用管理控制台将映像版本附加到域
<a name="rstudio-byoi-attach-console"></a>

您可以使用 SageMaker AI 控制台的控制面板将自定义 SageMaker 图像版本附加到您的网域。您也可以创建自定义 SageMaker 映像和图像版本，然后将该版本附加到您的域中。

**附加现有映像**

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. 对于**映像源**，选择**现有映像**或**新映像**。

   如果您选择 “**现有图片**”，请从 Amazon SageMaker 图片库中选择一张图片。

   如果选择**新映像**，请提供 Docker 映像的 Amazon ECR 注册表路径。路径必须与域位于相同 AWS 区域 中。Amazon ECR 存储库必须与您的域名位于同一个账户中，或者必须启用 SageMaker AI 的跨账户权限。

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

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

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

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

1. 选择 IAM 角色。有关更多信息，请参阅 [创建自定义 RStudio 镜像](rstudio-byoi-create.md)。

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

1. （可选）选择**添加新标签**，然后添加配置标签。

1. 在 “**图像类型**” 中，选择 “**RStudio图像**”。

1. 选择**提交**。

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

## 使用将现有图像版本附加到您的网域 AWS CLI
<a name="rstudio-byoi-attach-cli"></a>

可使用 AWS CLI，通过两种方法将映像版本附加到域。第一种方法是，使用附加的版本创建一个新域。此方法更简单，但是必须指定创建域所需的 Amazon Virtual Private Cloud (Amazon VPC) 信息和执行角色。

如果您已经加入域，则可以使用第二种方法将映像版本附加到当前域。在这种情况下，您无需指定 Amazon VPC 信息和执行角色。附加版本后，删除您域中的所有应用程序并重新启动 RStudio。

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

要使用此方法，必须指定附加了[AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)策略的执行角色。

使用以下步骤创建域并附加自定义 A SageMaker I 镜像：
+ 获取您的默认 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`，因此将使用映像的最新版本，也是本例中唯一的版本。执行角色必须满足[满足先决条件](rstudio-byoi-prerequisites.md)中的要求。

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

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

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

   响应：

   ```
   {
       "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id",
       "Url": "https://domain-id.studio.region.sagemaker.aws/..."
   }
   ```

### 将 SageMaker 图像附加到现有网域
<a name="rstudio-byoi-cli-attach-current-domain"></a>

此方法假定您已加入域。有关更多信息，请参阅 [亚马逊 SageMaker AI 域名概述](gs-studio-onboard.md)。

**注意**  
您必须删除域中的所有应用程序，才能使用新的映像版本更新该域。有关删除应用程序的信息，请参阅[删除亚马逊 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. 在**常规设置**下，找到**域 ID**。ID 的格式如下：`d-xxxxxxxxxxxx`。

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

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

   响应：

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

1. 将响应的 `DefaultUserSettings` 部分保存到名为 `update-domain-input.json` 的文件中。

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

   ```
   {
       "DefaultUserSettings": {
           "RSessionAppSettings": { 
              "CustomImages": [ 
                 { 
                    "ImageName": "rstudio-custom-image",
                    "AppImageConfigName": "rstudio-custom-config"
                 }
              ]
           }
       }
   }
   ```

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

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

   响应：

   ```
   {
       "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id"
   }
   ```

1. 删除 `RStudioServerPro` 应用程序。您必须重新启动`RStudioServerPro`域共享应用程序，La RStudio uncher UI 才能获得最新的更改。

   ```
   aws sagemaker delete-app \
       --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \
       --app-type RStudioServerPro --app-name default
   ```

1. 创建新的 `RStudioServerPro` 应用程序。必须使用 AWS CLI创建此应用程序。

   ```
   aws sagemaker create-app \
       --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \
       --app-type RStudioServerPro --app-name default
   ```

# 在中启动自定义 SageMaker 镜像 RStudio
<a name="rstudio-byoi-launch"></a>

从控制台启动 RStudio 应用程序时，您可以使用您的自定义镜像。创建自定义 SageMaker 图像并将其附加到您的域名后，该图像将出现在 RStudio 启动器的图像选择器对话框中。要启动新 RStudio 应用程序，请按照中的步骤操作[RSessions 从启动 RStudio 器启动](rstudio-launcher.md)并选择您的自定义图像，如下图所示。

![\[带有图像下拉列表的 RStudio 启动器屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/rstudio-launcher-custom.png)


# 清理映像资源
<a name="rstudio-byoi-sdk-cleanup"></a>

本指南介绍如何清理您在前几节中创建的 RStudio 图像资源。要删除图像，请使用 SageMaker AI 控制台或本指南中所示完成以下步骤。 AWS CLI
+ 将图像和图像版本与您的 Amazon A SageMaker I 域分离。
+ 删除映像、映像版本和应用程序映像配置。

完成这些步骤后，您可以从 Amazon ECR 中删除容器映像和存储库。有关如何删除容器映像和存储库的更多信息，请参阅[删除存储库](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-delete.html)。

## 从 SageMaker AI 控制台清理资源
<a name="rstudio-byoi-sdk-cleanup-console"></a>

从域中分离映像时，将分离该映像的所有版本。分离映像后，域的所有用户都将失去对映像版本的访问权限。

**分离映像**

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

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

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

1. 选择所需的域。

1. 选择**环境**。

1. 在**附加到域的自定义映像**下，选择映像，然后选择**分离**。

1. （可选）要从 SageMaker AI 中删除图像和所有版本，请选择**同时删除所选图像...** 。这不会从 Amazon ECR 中删除关联的映像。

1. 选择**分离**。

## 清理来自的资源 AWS CLI
<a name="rstudio-byoi-sdk-cleanup-cli"></a>

**清理资源**

1. 通过向域传递一个空的自定义映像列表，将映像和映像版本从域中分离。打开在 [将 SageMaker 图片附加到您当前的域名](studio-byoi-attach.md#studio-byoi-sdk-attach-current-domain) 中创建的 `update-domain-input.json` 文件。

1. 删除 `RSessionAppSettings` 自定义映像，然后保存文件。请勿修改 `KernelGatewayAppSettings` 自定义映像。

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

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

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

   响应：

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

1. 删除应用程序映像配置。

   ```
   aws sagemaker delete-app-image-config \
       --app-image-config-name rstudio-image-config
   ```

1. 删除 SageMaker 图像，这也会删除所有图像版本。Amazon ECR 中由映像版本表示的容器映像不会被删除。

   ```
   aws sagemaker delete-image \
       --image-name rstudio-image
   ```