使用 AWS CLI搭配 RStudio 建立 Amazon SageMaker AI 網域 - Amazon SageMaker AI

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

使用 AWS CLI搭配 RStudio 建立 Amazon SageMaker AI 網域

重要

允許 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 建立 Amazon SageMaker 資源的自訂 IAM 政策也必須授予許可,才能將標籤新增至這些資源。需要將標籤新增至資源的許可,因為 Studio 和 Studio Classic 會自動標記它們建立的任何資源。如果 IAM 政策允許 Studio 和 Studio Classic 建立資源,但不允許標記,則在嘗試建立資源時可能會發生 "AccessDenied" 錯誤。如需詳細資訊,請參閱提供標記 SageMaker AI 資源的許可

提供許可來建立 SageMaker 資源的 AWS Amazon SageMaker AI 的 受管政策 已包含建立這些資源時新增標籤的許可。

下列主題說明如何使用 AWS CLI加入已啟用 RStudio 的 Amazon SageMaker AI 網域。若要使用 加入 AWS 管理主控台,請參閱 Amazon SageMaker AI 網域概觀

先決條件

建立 DomainExecution 角色

若要啟動 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" ] } } ] }
  2. 建立 DomainExecution 角色。<REGION> 應是要在其中啟動您網域的 AWS 區域。

    aws iam create-role --region <REGION> --role-name DomainExecution --assume-role-policy-document file://assume-role-policy.json
  3. 建立名為 domain-setting-policy.json 且具有下列內容的檔案。此政策允許 RStudioServerPro 應用程式存取必要的資源,並允許 Amazon SageMaker AI 在現有 RStudioServerPro 應用程式處於 DeletedFailed 狀態時自動啟動 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": "*" } ] }
  4. 建立已連接至 DomainExecution 角色的網域設定政策。請注意回應中的 PolicyArn,您將需要在以下步驟中輸入該 ARN。

    aws iam create-policy --region <REGION> --policy-name domain-setting-policy --policy-document file://domain-setting-policy.json
  5. domain-setting-policy 附加至 DomainExecution 角色。使用在上一步中傳回的 PolicyArn

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

使用 RStudio 應用程式建立 Amazon SageMaker AI 網域

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

Amazon SageMaker AI 網域的建立會根據驗證方法和網路類型而有所不同。這些選項必須一起使用,搭配所選取的一種驗證方法和一種網路連線類型。如需建立新網域之要求的詳細資訊,請參閱 CreateDomain

支援下列身分驗證方法:

  • IAM Auth

  • SSO Auth

支援下列網路連線類型:

  • PublicInternet

  • VPCOnly

身分驗證方法

IAM 身分驗證模式

以下說明如何建立已啟用 RStudio 且網路類型為 IAM Auth 的 Amazon SageMaker AI 網域。如需詳細資訊 AWS Identity and Access Management,請參閱什麼是 IAM?

  • DomainExecutionRoleArn 應該是在上一步中建立之角色的 ARN。

  • ExecutionRole 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。

  • vpc-id 應該是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 應該是由空格分隔的的子網路 ID 清單。如需 vpc-idsubnet-ids 的更多相關資訊,請參閱 VPC 和子網路

  • RStudioPackageManagerUrlRStudioConnectUrl 是選用的,應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。

  • app-network-access-type 應該是 PublicInternetOnlyVPCOnly

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?

  • DomainExecutionRoleArn 應該是在上一步中建立之角色的 ARN。

  • ExecutionRole 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。

  • vpc-id 應該是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 應該是由空格分隔的的子網路 ID 清單。如需 vpc-idsubnet-ids 的更多相關資訊,請參閱 VPC 和子網路

  • RStudioPackageManagerUrlRStudioConnectUrl 是選用的,應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。

  • app-network-access-type 應該是 PublicInternetOnlyVPCOnly

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>

連線類型

PublicInternet/直接網際網路網路類型

以下說明如何建立已啟用 RStudio 且網路類型為 PublicInternet 的 Amazon SageMaker AI 網域。

  • DomainExecutionRoleArn 應該是在上一步中建立之角色的 ARN。

  • ExecutionRole 是提供給 Amazon SageMaker AI 網域中使用者的角色 ARN。

  • vpc-id 應該是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 應該是由空格分隔的的子網路 ID 清單。如需 vpc-idsubnet-ids 的更多相關資訊,請參閱 VPC 和子網路

  • RStudioPackageManagerUrlRStudioConnectUrl 是選用的,應分別設為 RStudio 套件管理員和 RStudio Connect 伺服器的 URL。

  • auth-mode 應該是 SSOIAM

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 筆記本連線至外部資源

  • 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 端點。如需 vpc-idsubnet-ids 的更多相關資訊,請參閱 VPC 和子網路

  • SecurityGroups 必須允許對 Amazon SageMaker AI 和 AWS License Manager 端點的傳出存取。

  • auth-mode 應該是 SSOIAM

注意

使用 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 配額

驗證網域建立

使用下列命令來驗證是否已建立您的網域,StatusInService。您的 domain-id 會附加至網域 ARN。例如 arn:aws:sagemaker:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>

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