

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

# 为现有域添加 RStudio 支持
<a name="rstudio-add-existing"></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 资源的权限已经包括在创建这些资源时添加标签的权限。

 如果您通过添加了 RStudio 许可 AWS License Manager，则可以在 AI 上创建一个支持 A SageMaker I 的新 Amaz RStudio on SageMaker AI 域。如果现有域名不支持 RStudio，则无需删除和重新创建该域即可为该域添加 RStudio 支持。  

 以下主题概述了如何添加此支持。

## 先决条件
<a name="rstudio-add-existing-prerequisites"></a>

 在更新当前域名以添加对 SageMaker AI 的支持之前，您必须完成以下步骤。 RStudio   
+  安装和配置 [AWS CLI 版本 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) 
+  使用 IAM 凭证配置 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) 
+  按照创建 A [ SageMaker I 域中的步骤 RStudio 使用创建域](https://docs.aws.amazon.com/sagemaker/latest/dg/rstudio-create-cli.html#rstudio-create-cli-domainexecution)执行角色 AWS CLI。此域级 IAM 角色是应用程序所必需的。 RStudio ServerPro 该角色需要访问权限才能 AWS License Manager 验证有效的 Posit Workbench 许可证，还需要访问亚马逊 CloudWatch 日志才能发布服务器日志。  
+  带上您的 RStudio 许可证， AWS License Manager 按照[RStudio许可证](https://docs.aws.amazon.com/sagemaker/latest/dg/rstudio-license.html)中的步骤进行操作。
+  （可选）如果要 RStudio 在`VPCOnly`模式下使用，请仅在 [VPC 中完成RStudio 中的](https://docs.aws.amazon.com/sagemaker/latest/dg/rstudio-network.html)步骤。
+  确保您为域[UserProfile](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateUserProfile.html)中的每个安全组配置的安全组符合账户级别的配额。 在创建网域期间配置默认用户配置文件时，您可以使用 [CreateDomain](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDomain.html)API 的`DefaultUserSettings`参数添加`SecurityGroups`由网域中创建的所有用户配置文件继承的用户配置文件。作为 [CreateUserProfile](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateUserProfile.html)API `UserSettings` 参数的一部分，您还可以为特定用户提供其他安全组。如果您以这种方式添加安全组，那么必须确保每个用户配置文件的安全组总数不超过最大限额，`VPCOnly` 模式下为 2 个，`PublicInternetOnly` 模式下为 4 个。如果任何用户配置文件生成的安全组总数超过限额，您可以将多个安全组规则合并到一个安全组中。  

## 为现有域添加 RStudio 支持
<a name="rstudio-add-existing-enable"></a>

完成先决条件后，您可以为现有域添加 RStudio 支持。以下步骤概述了如何更新现有域名以添加对的支持 RStudio。

### 步骤 1：删除域中的所有应用程序
<a name="rstudio-add-existing-enable-step1"></a>

要 RStudio 在您的域中添加对的支持， SageMaker AI 必须更新所有现有用户配置文件的底层安全组。要完成此操作，您必须在域中删除并重新创建所有现有应用程序。以下步骤演示了如何删除所有应用程序。

1.  列出域中的所有应用程序。

   ```
   aws sagemaker \
      list-apps \
      --domain-id-equals <DOMAIN_ID>
   ```

1.  删除域中每个用户配置文件的每个应用程序。

   ```
   // JupyterServer apps 
   aws sagemaker \
       delete-app \
       --domain-id <DOMAIN_ID> \
       --user-profile-name <USER_PROFILE> \
       --app-type JupyterServer \
       --app-name <APP_NAME>
   
   // KernelGateway apps
   aws sagemaker \
       delete-app \
       --domain-id <DOMAIN_ID> \
       --user-profile-name <USER_PROFILE> \
       --app-type KernelGateway \
       --app-name <APP_NAME>
   ```

### 步骤 2 – 使用新的安全组列表更新所有用户配置文件
<a name="rstudio-add-existing-enable-step2"></a>

 这是一个一次性操作，在重构现有安全组后，您必须为域中的所有现有用户配置文件完成此操作。这可以防止您达到安全组最大数量限额。如果用户有任何处于[InService](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeApp.html#sagemaker-DescribeApp-response-Status)状态的应用程序，`UpdateUserProfile`API 调用就会失败。删除所有应用程序，然后调用 `UpdateUserProfile` API 来更新安全组。

**注意**  
添加 RStudio 支持时，不再需要将 [VPC 中的 Amazon SageMaker Studio 经典笔记本连接到外部资源中](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#studio-notebooks-and-internet-access-vpc-only)概述的以下`VPCOnly`模式要求，因为`AppSecurityGroupManagement`该要求由 SageMaker AI 服务管理：  
“[安全组内的 TCP 流量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-other-instances)。这是 JupyterServer 应用程序和应用程序之间连接所必需的 KernelGateway 。您必须允许至少访问范围 `8192-65535` 内的端口。” 

```
aws sagemaker \
    update-user-profile \
    --domain-id <DOMAIN_ID>\
    --user-profile-name <USER_PROFILE> \
    --user-settings "{\"SecurityGroups\": [\"<SECURITY_GROUP>\", \"<SECURITY_GROUP>\"]}"
```

### 第 3 步- RStudio 通过调用 UpdateDomain API 进行激活
<a name="rstudio-add-existing-enable-step3"></a>

1.  调用 [UpdateDomain](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateDomain.html)API 以添加对 SageMaker AI RStudio 的支持。仅当您为用户配置文件重构了默认安全组时，才需要 `defaultusersettings` 参数。
   +  对于 `VPCOnly` 模式：

     ```
     aws sagemaker \
         update-domain \
         --domain-id <DOMAIN_ID> \
         --app-security-group-management Service \
         --domain-settings-for-update RStudioServerProDomainSettingsForUpdate={DomainExecutionRoleArn=<DOMAIN_EXECUTION_ROLE_ARN>} \
         --default-user-settings "{\"SecurityGroups\": [\"<SECURITY_GROUP>\", \"<SECURITY_GROUP>\"]}"
     ```
   +  对于 `PublicInternetOnly` 模式：

     ```
     aws sagemaker \
         update-domain \
         --domain-id <DOMAIN_ID> \
         --domain-settings-for-update RStudioServerProDomainSettingsForUpdate={DomainExecutionRoleArn=<DOMAIN_EXECUTION_ROLE_ARN>} \
         --default-user-settings "{\"SecurityGroups\": [\"<SECURITY_GROUP>\", \"<SECURITY_GROUP>\"]}"
     ```

1. 验证域状态是否为 `InService`。在域状态变为之后`InService`，将添加 RStudio 对 SageMaker AI 上的支持。

   ```
   aws sagemaker \
       describe-domain \
       --domain-id <DOMAIN_ID>
   ```

1. `InService`使用以下命令验证 RStudioServerPro 应用程序的状态是否为。

   ```
   aws sagemaker list-apps --user-profile-name domain-shared
   ```

### 步骤 4-为现有用户添加 RStudio 访问权限
<a name="rstudio-add-existing-enable-step4"></a>

 作为步骤 3 更新的一部分， SageMaker AI 会将 RStudio [AccessStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RStudioServerProAppSettings.html#sagemaker-Type-RStudioServerProAppSettings-AccessStatus)网域中所有现有用户配置文件标记为`DISABLED`默认值。这样可防止超出您当前许可证允许的用户数量。要为现有用户添加访问权限，可执行一次性的可选步骤。使用以下[RStudioServerProAppSettings](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UserSettings.html#sagemaker-Type-UserSettings-RStudioServerProAppSettings)命令调用 [UpdateUserProfile](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateUserProfile.html)API 来执行选择加入：
+  `AccessStatus` = `ENABLED` 
+  *可选* – `UserGroup` = `R_STUDIO_USER` 或 `R_STUDIO_ADMIN` 

```
aws sagemaker \
    update-user-profile \
    --domain-id <DOMAIN_ID>\
    --user-profile-name <USER_PROFILE> \
    --user-settings "{\"RStudioServerProAppSettings\": {\"AccessStatus\": \"ENABLED\"}}"
```

**注意**  
默认情况下，可以访问的用户数 RStudio 为 60。

### 步骤 5-停用新 RStudio 用户的访问权限
<a name="rstudio-add-existing-enable-step5"></a>

 除非在呼叫时另行指定`UpdateDomain`，否则默认情况下，系统会为 RStudio 在 SageMaker AI 上添加 RStudio 支持后创建的所有新用户配置文件添加支持。要停用新用户配置文件的访问权限，必须在 `CreateUserProfile` API 调用中将 `AccessStatus` 参数明确设置为 `DISABLED`。如果 `AccessStatus` 参数未指定为 `CreateUserProfile` API 的一部分，则默认访问状态为 `ENABLED`。

```
aws sagemaker \
    create-user-profile \
    --domain-id <DOMAIN_ID>\
    --user-profile-name <USER_PROFILE> \
    --user-settings "{\"RStudioServerProAppSettings\": {\"AccessStatus\": \"DISABLED\"}}"
```