

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

# 使用 使用 RStudio 建立 Amazon SageMaker AI 網域 AWS CLI
<a name="rstudio-create-cli"></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) 已包含建立這些資源時新增標籤的許可。

下列主題說明如何使用 AWS CLI加入已啟用 RStudio 的 Amazon SageMaker AI 網域。若要使用 加入 AWS 管理主控台，請參閱 [Amazon 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` 角色。此角色用來決定是否需要在建立 Amazon SageMaker AI 網域時啟動 RStudio。Amazon SageMaker AI 也會使用此角色存取 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 應用程式處於 `Deleted`或 `Failed` 狀態時自動啟動 RStudioServerPro 應用程式。

------
#### [ 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 應用程式建立 Amazon SageMaker AI 網域
<a name="rstudio-create-cli-domain"></a>

當您使用已指定 `RStudioServerProDomainSettings` 參數的 `create-domain` CLI 命令建立 Amazon SageMaker AI 網域時，RStudioServerPro 應用程式會自動啟動。啟動 RStudioServerPro 應用程式時，Amazon SageMaker AI 會檢查帳戶中是否具備有效的 RStudio 授權，如果找不到授權，則無法建立網域。

Amazon SageMaker AI 網域的建立會根據驗證方法和網路類型而有所不同。這些選項必須一起使用，搭配所選取的一種驗證方法和一種網路連線類型。如需建立新網域之要求的詳細資訊，請參閱 [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` 的 Amazon SageMaker AI 網域。如需詳細資訊 AWS Identity and Access Management，請參閱[什麼是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。
+ `DomainExecutionRoleArn` 應該是在上一步中建立之角色的 ARN。
+ `ExecutionRole` 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。
+ `vpc-id` 應該是您的 Amazon Virtual Private Cloud 的 ID。`subnet-ids` 應該是由空格分隔的的子網路 ID 清單。如需 `vpc-id` 和 `subnet-ids` 的更多相關資訊，請參閱 [VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl` 和 `RStudioConnectUrl` 是選用的，應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。
+ `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` Network Type 的 Amazon SageMaker AI 網域。 AWS IAM Identity Center 必須針對啟動網域的區域啟用 。如需 IAM Identity Center 的詳細資訊，請參閱[什麼是 AWS IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。
+ `DomainExecutionRoleArn` 應該是在上一步中建立之角色的 ARN。
+ `ExecutionRole` 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。
+ `vpc-id` 應該是您的 Amazon Virtual Private Cloud 的 ID。`subnet-ids` 應該是由空格分隔的的子網路 ID 清單。如需 `vpc-id` 和 `subnet-ids` 的更多相關資訊，請參閱 [VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl` 和 `RStudioConnectUrl` 是選用的，應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。
+ `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` 的 Amazon SageMaker AI 網域。
+ `DomainExecutionRoleArn` 應該是在上一步中建立之角色的 ARN。
+ `ExecutionRole` 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。
+ `vpc-id` 應該是您的 Amazon Virtual Private Cloud 的 ID。`subnet-ids` 應該是由空格分隔的的子網路 ID 清單。如需 `vpc-id` 和 `subnet-ids` 的更多相關資訊，請參閱 [VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `RStudioPackageManagerUrl` 和 `RStudioConnectUrl` 是選用的，應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。
+ `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 模式** 

以下說明如何啟動已啟用 RStudio 且網路類型為 `VPCOnly` 的 Amazon SageMaker AI 網域。如需使用 `VPCOnly` 網路存取類型的更多相關資訊，請參閱[將 VPC 中的 Studio 筆記本連線至外部資源](studio-notebooks-and-internet-access.md)。
+ `DomainExecutionRoleArn` 應該是在上一步中建立之角色的 ARN。
+ `ExecutionRole` 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。
+ `vpc-id` 應該是您的 Amazon Virtual Private Cloud 的 ID。`subnet-ids` 應該是由空格分隔的的子網路 ID 清單。您的私有子網路必須能夠存取網際網路以呼叫 Amazon SageMaker AI 和 AWS License Manager ，或具有適用於 Amazon SageMaker AI 和 AWS License Manager的 Amazon VPC 端點。如需 Amazon VPC 端點的相關資訊，請參閱介面 [Amazon VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)。如需 `vpc-id` 和 `subnet-ids` 的更多相關資訊，請參閱 [VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ `SecurityGroups` 必須允許對 Amazon SageMaker AI 和 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>
```