

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

# 連接自訂 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
   ```