

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

# RStudio 使用创建 Amazon SageMaker AI 域名 AWS CLI
<a name="rstudio-create-cli"></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 启用后登录 SageMaker Amazon AI 域 AWS CLI。要使用登录 AWS 管理控制台，请参阅[亚马逊 SageMaker AI 域名概述](gs-studio-onboard.md)。

## 先决条件
<a name="rstudio-create-cli-prerequisites"></a>
+  安装和配置 [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) 

## 创建 `DomainExecution` 角色
<a name="rstudio-create-cli-domainexecution"></a>

要启动 RStudio 应用程序，您必须提供一个`DomainExecution`角色。此角色用于确定是否 RStudio 需要在创建 Amazon A SageMaker I 域时启动。Amazon A SageMaker I 还使用此角色来访问 RStudio 许可证和推送 RStudio 日志。  

**注意**  
该`DomainExecution`角色应至少具有访问 RStudio 许可证的 AWS License Manager 权限，以及将日志推送到您的账户的 CloudWatch 权限。

以下过程说明如何使用 AWS CLI创建 `DomainExecution` 角色。

1.  使用以下内容创建名为 `assume-role-policy.json` 的文件。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "sts:AssumeRole",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com"
                   ]
               }
           }
       ]
   }
   ```

------

1.  创建 `DomainExecution` 角色。`<REGION>` 应该是启动您的域的 AWS 区域。

   ```
   aws iam create-role --region <REGION> --role-name DomainExecution --assume-role-policy-document file://assume-role-policy.json
   ```

1. 使用以下内容创建名为 `domain-setting-policy.json` 的文件。该政策允许 RStudioServerPro 应用程序访问必要的资源，并允许 Amazon SageMaker AI 在现有 RStudioServerPro RStudioServerPro 应用程序处于`Deleted`或`Failed`状态时自动启动应用程序。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "license-manager:ExtendLicenseConsumption",
                   "license-manager:ListReceivedLicenses",
                   "license-manager:GetLicense",
                   "license-manager:CheckoutLicense",
                   "license-manager:CheckInLicense",
                   "logs:CreateLogDelivery",
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DeleteLogDelivery",
                   "logs:Describe*",
                   "logs:GetLogDelivery",
                   "logs:GetLogEvents",
                   "logs:ListLogDeliveries",
                   "logs:PutLogEvents",
                   "logs:PutResourcePolicy",
                   "logs:UpdateLogDelivery",
                   "sagemaker:CreateApp"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1.  创建附加到 `DomainExecution` 角色的域设置策略。请注意响应中的 `PolicyArn`，您需要在以下步骤中输入该 ARN。

   ```
   aws iam create-policy --region <REGION> --policy-name domain-setting-policy --policy-document file://domain-setting-policy.json
   ```

1.  将 `domain-setting-policy` 附加到 `DomainExecution` 角色。使用上一步返回的 `PolicyArn`。

   ```
   aws iam attach-role-policy --role-name DomainExecution --policy-arn <POLICY_ARN>
   ```

## 使用 RStudio 应用程序创建亚马逊 SageMaker AI 域名
<a name="rstudio-create-cli-domain"></a>

当您使用带有指定`RStudioServerProDomainSettings`参数的 `create-domain` CLI 命令创建 Amazon SageMaker AI 域时，该 RStudioServerPro 应用程序会自动启动。启动 RStudioServerPro 应用程序时，Amazon SageMaker AI 会检查账户中是否有有效的 RStudio 许可证，如果找不到许可证，则域创建失败。

Amazon A SageMaker I 域的创建因身份验证方法和网络类型而异。这些选项必须一起使用，即选择一种身份验证方法并选择一种网络连接类型。有关创建新域的要求的更多信息，请参阅[CreateDomain](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDomain.html)。

支持以下身份验证类型：
+  `IAM Auth` 
+  `SSO Auth` 

支持以下网络连接类型：
+  `PublicInternet` 
+  `VPCOnly` 

### 身份验证方法
<a name="rstudio-create-cli-domain-auth"></a>

 **IAM 身份验证模式** 

以下内容显示了如何在 RStudio 启用和`IAM Auth`网络类型的情况下创建 SageMaker Amazon AI 域。有关的更多信息 AWS Identity and Access Management，请参阅[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 。
+ `DomainExecutionRoleArn` 应该是上一步中创建的角色的 ARN。
+ `ExecutionRole`是授予亚马逊 A SageMaker I 域中用户的角色的 ARN。
+ `vpc-id`应该是您的亚马逊 Virtual Private Cloud 的 ID。 `subnet-ids`应该是以空格分隔的子网 IDs列表。有关`vpc-id`和的信息`subnet-ids`，请参阅[VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl`和`RStudioConnectUrl`是可选的，应分别设置为 Pack URLs age Man RStudio ager 和 RStudio Connect 服务器的。
+ `app-network-access-type` 应该是 `PublicInternetOnly` 或 `VPCOnly`。

```
aws sagemaker create-domain --region <REGION> --domain-name <DOMAIN_NAME> \
    --auth-mode IAM \
    --default-user-settings ExecutionRole=<DEFAULT_USER_EXECUTIONROLE> \
    --domain-settings RStudioServerProDomainSettings={RStudioPackageManagerUrl=<<PACKAGE_MANAGER_URL>,RStudioConnectUrl=<<CONNECT_URL>,DomainExecutionRoleArn=<DOMAINEXECUTION_ROLE_ARN>} \
    --vpc-id <VPC_ID> \
    --subnet-ids <SUBNET_IDS> \
    --app-network-access-type <NETWORK_ACCESS_TYPE>
```

 **使用 IAM Identity Center 进行身份验证** 

以下内容显示了如何在 RStudio 启用和`SSO Auth`网络类型的情况下创建 SageMaker Amazon AI 域。 AWS IAM Identity Center 必须为启动域名的区域启用。有关 IAM 身份中心的更多信息，请参阅[什么是 AWS IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) 。
+ `DomainExecutionRoleArn` 应该是上一步中创建的角色的 ARN。
+ `ExecutionRole`是授予亚马逊 A SageMaker I 域中用户的角色的 ARN。
+ `vpc-id`应该是您的亚马逊 Virtual Private Cloud 的 ID。 `subnet-ids`应该是以空格分隔的子网 IDs列表。有关`vpc-id`和的信息`subnet-ids`，请参阅[VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl`和`RStudioConnectUrl`是可选的，应分别设置为 Pack URLs age Man RStudio ager 和 RStudio Connect 服务器的。
+ `app-network-access-type` 应该是 `PublicInternetOnly` 或 `VPCOnly`。

```
aws sagemaker create-domain --region <REGION> --domain-name <DOMAIN_NAME> \
    --auth-mode SSO \
    --default-user-settings ExecutionRole=<DEFAULT_USER_EXECUTIONROLE> \
    --domain-settings RStudioServerProDomainSettings={RStudioPackageManagerUrl=<<PACKAGE_MANAGER_URL>,RStudioConnectUrl=<<CONNECT_URL>,DomainExecutionRoleArn=<DOMAINEXECUTION_ROLE_ARN>} \
    --vpc-id <VPC_ID> \
    --subnet-ids <SUBNET_IDS> \
    --app-network-access-type <NETWORK_ACCESS_TYPE>
```

### 连接类型
<a name="rstudio-create-cli-domain-connection"></a>

 **PublicInternet/直接互联网网络类型** 

以下内容显示了如何在 RStudio 启用和`PublicInternet`网络类型的情况下创建 SageMaker Amazon AI 域。
+ `DomainExecutionRoleArn` 应该是上一步中创建的角色的 ARN。
+ `ExecutionRole`是授予亚马逊 A SageMaker I 域中用户的角色的 ARN。
+ `vpc-id`应该是您的亚马逊 Virtual Private Cloud 的 ID。 `subnet-ids`应该是以空格分隔的子网 IDs列表。有关`vpc-id`和的信息`subnet-ids`，请参阅[VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl`和`RStudioConnectUrl`是可选的，应分别设置为 Pack URLs age Man RStudio ager 和 RStudio Connect 服务器的。
+ `auth-mode` 应该是 `SSO` 或 `IAM`。

```
aws sagemaker create-domain --region <REGION> --domain-name <DOMAIN_NAME> \
    --auth-mode <AUTH_MODE> \
    --default-user-settings ExecutionRole=<DEFAULT_USER_EXECUTIONROLE> \
    --domain-settings RStudioServerProDomainSettings={RStudioPackageManagerUrl=<<PACKAGE_MANAGER_URL>,RStudioConnectUrl=<<CONNECT_URL>,DomainExecutionRoleArn=<DOMAINEXECUTION_ROLE_ARN>} \
    --vpc-id <VPC_ID> \
    --subnet-ids <SUBNET_IDS> \
    --app-network-access-type PublicInternetOnly
```

 **VPCOnly mode** 

以下内容显示了如何在 RStudio 启用和`VPCOnly`网络类型的情况下启动 SageMaker Amazon AI 域。有关使用 `VPCOnly` 网络访问类型的更多信息，请参阅[将 VPC 中的 Studio 笔记本连接到外部资源](studio-notebooks-and-internet-access.md)。
+ `DomainExecutionRoleArn` 应该是上一步中创建的角色的 ARN。
+ `ExecutionRole`是授予亚马逊 A SageMaker I 域中用户的角色的 ARN。
+ `vpc-id`应该是您的亚马逊 Virtual Private Cloud 的 ID。 `subnet-ids`应该是以空格分隔的子网 IDs列表。您的私有子网必须能够访问互联网才能拨打 Amazon A SageMaker I， AWS License Manager 或者拥有同时支持 Amazon AI 和 Amazon VPC 的终端节点 AWS License Manager。 SageMaker 有关 Amazon VPC 终端节点的信息，请参阅[接口 Amazon VPC 终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)。有关`vpc-id`和的信息`subnet-ids`，请参阅[VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `SecurityGroups`必须允许出站访问 Amazon A SageMaker I 和 AWS License Manager 终端节点。
+ `auth-mode` 应该是 `SSO` 或 `IAM`。

**注意**  
使用 Amazon Virtual Private Cloud 端点时，附加到您的 Amazon Virtual Private Cloud 端点的安全组，必须允许来自您在 `create-domain` CLI 调用 `domain-setting` 参数中传递的安全组的入站流量。

借助 RStudio，Amazon SageMaker AI 为您管理安全组。这意味着 Amazon SageMaker AI 管理安全组规则以确保 RSessions 可以访问 RStudioServerPro 应用程序。Amazon SageMaker AI 为每个用户个人资料创建一个安全组规则。

```
aws sagemaker create-domain --region <REGION> --domain-name <DOMAIN_NAME> \
    --auth-mode <AUTH_MODE> \
    --default-user-settings SecurityGroups=<USER_SECURITY_GROUP>,ExecutionRole=<DEFAULT_USER_EXECUTIONROLE> \
    --domain-settings SecurityGroupIds=<DOMAIN_SECURITY_GROUP>,RStudioServerProDomainSettings={DomainExecutionRoleArn=<DOMAINEXECUTION_ROLE_ARN>} \
    --vpc-id <VPC_ID> \
    --subnet-ids "<SUBNET_IDS>" \
    --app-network-access-type VPCOnly --app-security-group-management Service
```

注意：该 RStudioServerPro 应用程序由名为的特殊用户个人资料启动`domain-shared`。因此，此应用程序不会作为 `list-app` API 调用的一部分由任何其他用户配置文件返回。

您可能需要增加账户中的 Amazon VPC 配额，才能增加用户数量。有关更多信息，请参阅 [Amazon VPC 配额](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-security-groups)。

## 验证域的创建
<a name="rstudio-create-cli-domain-verify"></a>

使用以下命令验证您的域是否已创建且 `Status` 为 `InService`。您的 `domain-id` 已附加到域 ARN 中。例如 `arn:aws:sagemaker:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>`。

```
aws sagemaker describe-domain --domain-id <DOMAIN_ID> --region <REGION>
```