

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

# 搭配 RStudio on SageMaker AI 的自訂映像
<a name="rstudio-byoi"></a>

SageMaker 映像是一個檔案，可識別執行 RStudio on Amazon SageMaker AI 所需的語言套件和其他相依項。SageMaker AI 會使用這些映像來建立您執行 RStudio 的環境。Amazon SageMaker AI 提供內建的 RStudio 映像供您使用。如果您需要不同的功能，則可以攜帶您自己的自訂映像。此頁面提供有關搭配 RStudio on SageMaker AI 使用自訂映像的關鍵概念資訊。自帶映像以與 RStudio on SageMaker AI 搭配使用的程序需要三個步驟：

1. 從 Dockerfile 建置自訂映像，然後將其推送至 Amazon Elastic Container Registry (Amazon ECR) 中的儲存庫。

1. 建立一個指向 Amazon ECR 中容器映像的 SageMaker 映像，並將其連接到您的 Amazon SageMaker AI 網域。

1. 使用您的自訂映像在 RStudio 中啟動新工作階段。

您可以使用 SageMaker AI 控制面板、[適用於 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html) 和 [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/) 建立映像和映像版本，並將映像版本連接至您的網域。即使您尚未加入網域，也可以使用 SageMaker AI 主控台建立映像和映像版本。

下列主題示範如何透過建立、連接和啟動自訂映像，以自帶映像至 RStudio on SageMaker AI。

## 重要術語
<a name="rstudio-byoi-basics"></a>

下節定義自帶映像以與 RStudio on SageMaker AI 搭配使用的重要術語。
+ **Dockerfile：**一個 Dockerfile 是一個文件，標識語言包和 Docker 映像的其他依賴關係。
+ **Docker 映像：**Docker 映像是一個內建的 Dockerfile。此映像已簽入至 Amazon ECR，並做為 SageMaker AI 映像的基礎。
+ **SageMaker 映像：**SageMaker 映像是基於 Docker 映像的一組 SageMaker 映像版本的持有人。
+ **映像版本：**SageMaker 映像的映像版本代表與 RStudio 相容並儲存於 Amazon ECR 儲存庫中的 Docker 映像。每個映像版本都不可變。這些映像版本可以連接至網域，並與 RStudio on SageMaker AI 搭配使用。

# 完成事前準備
<a name="rstudio-byoi-prerequisites"></a>

自帶映像以與 RStudio on Amazon SageMaker AI 搭配使用之前，您必須完成下列先決條件。
+ 如果您的現有網域擁有在 2022 年 4 月 7 日之前建立的 RStudio，您必須刪除您的 RStudioServerPro 應用程式並重新建立。如需有關如何刪除應用程式的資訊，請參閱[關閉並更新 Amazon SageMaker Studio Classic](studio-tasks-update-studio.md)。
+ 安裝 Docker 應用程式。如需設定 Docker 的相關資訊，請參閱[方向與設定](https://docs.docker.com/get-started/)。
+ 建立與 SageMaker AI 搭配使用的 RSTUDIO 相容 Dockerfile 的本機副本。如需建立範例 RStudio dockerfile 的詳細資訊，請參閱[使用自訂映像將您自己的開發環境帶到 RStudio on Amazon SageMaker 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 映像規格。您必須滿足兩組要求，您的自訂 RStudio 映像才能與 Amazon SageMaker AI 搭配使用。這些要求是由 RStudio PBC 和 Amazon SageMaker Studio Classic 平台所施加。如果未符合這兩組要求的其中之一，則您的自訂映像將無法正常運作。

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

RStudio PBC 要求已配置在 [使用 Docker 映像搭配 RStudio Workbench/RStudio Server Pro、啟動器](https://support.rstudio.com/hc/en-us/articles/360019253393-Using-Docker-images-with-RStudio-Server-Pro-Launcher-and-Kubernetes)和 Kubernetes 文章中。請遵循本文中的指示建立自訂 RStudio 映像的基礎。

如需如何在自訂映像中安裝多個 R 版本的相關指示，請參閱[在 Linux 上安裝多個 R 版本](https://support.rstudio.com/hc/en-us/articles/215488098)。

## Amazon SageMaker Studio Classic 要求
<a name="rstudio-byoi-specs-studio"></a>

Amazon SageMaker Studio Classic 對您的 RStudio 映像施加下一組安裝要求。
+ 您必須使用至少 `2025.05.1+513.pro3` 的 RStudio 基礎映像。如需詳細資訊，請參閱[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 程序中的日誌會傳送至客戶帳戶中的 Amazon 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 建立 Amazon SageMaker 資源的自訂 IAM 政策也必須授與許可，才能將標籤新增至這些資源。需要將標籤新增至資源的許可，因為 Studio 和 Studio Classic 會自動標記它們建立的任何資源。如果 IAM 政策允許 Studio 和 Studio Classic 建立資源，但不允許標記，則在嘗試建立資源時可能會發生 "AccessDenied" 錯誤。如需詳細資訊，請參閱[提供標記 SageMaker AI 資源的許可](security_iam_id-based-policy-examples.md#grant-tagging-permissions)。  
提供許可來建立 SageMaker 資源的 [AWS Amazon SageMaker AI 的 受管政策](security-iam-awsmanpol.md) 已包含建立這些資源時新增標籤的許可。

此主題說明如何使用 SageMaker AI 主控台和 AWS CLI建立自訂 RStudio 映像。如果您使用 AWS CLI，則必須從本機電腦執行這些步驟。下列步驟無法從 Amazon SageMaker Studio Classic 內運作。

當您建立映像時，SageMaker AI 也會建立一個初始映像版本。每個映像版本代表存放在 [Amazon Elastic 容器登錄檔 (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**
+ [將 SageMaker AI 相容 RStudio Docker 容器映像新增至 Amazon ECR](#rstudio-byoi-sdk-add-container-image)
+ [從主控台建立 SageMaker 映像](#rstudio-byoi-create-console)
+ [從 建立映像 AWS CLI](#rstudio-byoi-create-cli)

## 將 SageMaker AI 相容 RStudio Docker 容器映像新增至 Amazon ECR
<a name="rstudio-byoi-sdk-add-container-image"></a>

請使用下列步驟，將 Docker 容器映像新增至 Amazon ECR：
+ 建立 Amazon ECR 儲存庫。
+ 向 Amazon ECR 進行身分驗證。
+ 建立 SageMaker AI 相容 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 SageMaker AI 主控台，網址為 [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 Resource Name (ARN)。
     + 使用現有角色 — 從清單中選擇一個現有角色。
   + (選用) 映像標籤 — 選擇**新增標籤**。您最多可以新增 50 個標籤。可以使用 SageMaker AI 主控台或 SageMaker AI `Search` API 來搜尋標籤。

1. 在**映像類型**下，選取 RStudio 映像。

1. 選擇**提交**。

新映像會顯示在**自訂映像**清單中並以重點標示。已成功建立映像後，您可以選擇映像名稱來檢視其屬性，或選擇**建立版本**建立其他版本。

**若要建立其他映像版本**

1. 在與映像相同的行上選擇**建立版本**。

1. 對於**映像來源**，請輸入 Amazon ECR 映像的登錄檔路徑。該映像不應與先前版本的 SageMaker AI 映像中使用的映像相同。

若要在 RStudio 中使用自訂映像，您必須將其連接至您的網域。如需詳細資訊，請參閱[連接自訂 SageMaker 映像。](rstudio-byoi-attach.md)。

## 從 建立映像 AWS CLI
<a name="rstudio-byoi-create-cli"></a>

本節將示範如何使用 AWS CLI建立自訂 Amazon SageMaker 映像。

使用下列步驟建立 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 Logs。日誌群組的名稱為 `/aws/sagemaker/studio`。日誌串流的名稱為 `$domainID/$userProfileName/KernelGateway/$appName`。

1. 建立名為 `app-image-config-input.json` 的組態檔案。應用程式映像組態用於配置做為核心閘道應用程式執行 SageMaker 映像。

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

1. 使用建立於上一步的檔案來建立 AppImaage 組態。

   ```
   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 建立 Amazon SageMaker 資源的自訂 IAM 政策也必須授予許可，才能將標籤新增至這些資源。需要將標籤新增至資源的許可，因為 Studio 和 Studio Classic 會自動標記它們建立的任何資源。如果 IAM 政策允許 Studio 和 Studio Classic 建立資源，但不允許標記，則在嘗試建立資源時可能會發生 "AccessDenied" 錯誤。如需詳細資訊，請參閱[提供標記 SageMaker AI 資源的許可](security_iam_id-based-policy-examples.md#grant-tagging-permissions)。  
提供許可來建立 SageMaker 資源的 [AWS Amazon SageMaker AI 的 受管政策](security-iam-awsmanpol.md) 已包含建立這些資源時新增標籤的許可。

本指南說明如何使用 SageMaker AI 主控台或 AWS Command Line Interface () 將自訂 RStudio 映像連接至 Amazon SageMaker AI 網域AWS CLI。 Amazon SageMaker 

若要使用自訂 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 SageMaker AI 主控台，網址為 [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) 政策的執行角色。

使用下列步驟建立網域並連接至自訂 SageMaker AI 映像：
+ 取得您的預設 VPC ID 和子網路 ID。
+ 建立指定映像檔的網域的組態檔。
+ 用組態檔案建立網域。

**若要將自訂 SageMaker 映像新增至您的網域**

1. 取得您的預設 VPC ID。

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

   回應：

   ```
   vpc-xxxxxxxx
   ```

1. 使用上一步的 VPC ID 取得您的預設子網路 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、子網路 ID、`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>

此方法假設您已加入網域。如需詳細資訊，請參閱[Amazon SageMaker AI 網域概觀](gs-studio-onboard.md)。

**注意**  
您必須刪除網域中的所有應用程式，才能使用新的映像版本更新網域。如需刪除應用程式的詳細資訊，請參閱[刪除 Amazon SageMaker AI 網域](gs-studio-delete-domain.md)。

請使用下列步驟將 SageMaker 映像新增至您目前的網域。
+ 從 SageMaker AI 主控台取得 `DomainID`。
+ 使用 `DomainID` 取得網域的 `DefaultUserSettings`。
+ 將 `ImageName` 和 `AppImageConfig` 新增為 `CustomImage` 至 `DefaultUserSettings`。
+ 更新您的網域以包含自訂映像檔。

**若要將自訂 SageMaker 映像新增至您的網域**

1. 開啟 Amazon SageMaker AI 主控台，網址為 [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` 應用程式。您必須重新啟動 RStudio 啟動器使用者介面的 `RStudioServerPro` 網域共用應用程式，才能套用最新的變更。

   ```
   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
   ```

# 在 RStudio 中啟動自訂 SageMaker 影像
<a name="rstudio-byoi-launch"></a>

從主控台啟動 RStudio 應用程式時，您可以使用自訂影像。建立自訂 SageMaker 影像並將其附加至您的網域後，影像會顯示在 RStudio Launcher 的影像選取器對話方塊中。若要啟動新的 RStudio 應用程式，請依照[從 RStudio 啟動器啟動 RSessions](rstudio-launcher.md)中的步驟操作，並選取您的自訂影像，如下列影像所示。

![\[帶有影像下拉清單的 RStudio 啟動器的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/rstudio-launcher-custom.png)


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

本指南說明如何清理您在上一節中建立的 RStudio 映像資源。若要刪除映像，請使用 SageMaker AI 主控台或 完成下列步驟 AWS CLI，如本指南所示。
+ 從您的 Amazon SageMaker AI 網域中分離映像和映像版本。
+ 刪除映像，映像版本和應用程式映像組態。

完成這些步驟後，您可以從 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 SageMaker AI 主控台，網址為 [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
   ```