使用 rStudio 创建亚马逊 SageMaker 域名 AWS CLI - Amazon SageMaker

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

使用 rStudio 创建亚马逊 SageMaker 域名 AWS CLI

重要

允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供为资源添加标签 SageMaker的权限

AWS Amazon 托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

以下主题介绍如何在启用 RStudio 的情况下使用登录亚马逊 SageMaker 域名。 AWS CLI要使用登录 AWS Management Console,请参阅Amazon SageMaker 域名概述

先决条件

创建 DomainExecution 角色

要启动 RStudio 应用程序,您必须提供 DomainExecution 角色。此角色用于确定是否需要在创建亚马逊 SageMaker 域名时启动 RStudio。亚马逊还使用此角色 SageMaker 来访问 RStudio 许可证和推送 rStudio 日志。 

注意

DomainExecution角色应至少 AWS License Manager 具有访问 RStudio 许可证的 CloudWatch 权限,以及向您的账户推送日志的权限。

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

  1. 使用以下内容创建名为 assume-role-policy.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 的文件。该政策允许 R StudioServerPro 应用程序访问必要的资源,并 SageMaker 允许亚马逊在现有 R StudioServerPro StudioServerPro 应用程序处于DeletedFailed状态时自动启动 R 应用程序。

    { "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 应用程序创建亚马逊 SageMaker 域名

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

Amazon SageMaker 域的创建因身份验证方法和网络类型而异。这些选项必须一起使用,即选择一种身份验证方法并选择一种网络连接类型。有关创建新域的要求的更多信息,请参阅CreateDomain

支持以下身份验证类型:

  • IAM Auth

  • SSO Auth

支持以下网络连接类型:

  • PublicInternet

  • VPCOnly

身份验证方法

IAM 身份验证模式

以下内容显示了如何在启用 RStudio 和IAM Auth网络类型的情况下创建亚马逊 SageMaker 域名。有关的更多信息 AWS Identity and Access Management,请参阅什么是 IAM?

  • DomainExecutionRoleArn 应该是上一步中创建的角色的 ARN。

  • ExecutionRole是指授给 Ama SageMaker zon 域中用户的角色的 ARN。

  • vpc-id 应该是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 应该是以空格分隔的子网 ID 列表。有关 vpc-idsubnet-ids 的信息,请参阅 VPC 和子网

  • RStudioPackageManagerUrlRStudioConnectUrl 均可选,应分别设置为 RStudio Package Manager 和 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网络类型的情况下创建亚马逊 SageMaker 域名。 AWS IAM Identity Center 必须为启动域名的区域启用。有关 IAM 身份中心的更多信息,请参阅什么是 AWS IAM Identity Center?

  • DomainExecutionRoleArn 应该是上一步中创建的角色的 ARN。

  • ExecutionRole是指授给 Ama SageMaker zon 域中用户的角色的 ARN。

  • vpc-id 应该是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 应该是以空格分隔的子网 ID 列表。有关 vpc-idsubnet-ids 的信息,请参阅 VPC 和子网

  • RStudioPackageManagerUrlRStudioConnectUrl 均可选,应分别设置为 RStudio Package Manager 和 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网络类型的情况下创建亚马逊 SageMaker 域名。

  • DomainExecutionRoleArn 应该是上一步中创建的角色的 ARN。

  • ExecutionRole是指授给 Ama SageMaker zon 域中用户的角色的 ARN。

  • vpc-id 应该是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 应该是以空格分隔的子网 ID 列表。有关 vpc-idsubnet-ids 的信息,请参阅 VPC 和子网

  • RStudioPackageManagerUrlRStudioConnectUrl 均可选,应分别设置为 RStudio Package Manager 和 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网络类型的情况下启动亚马逊 SageMaker 域名。有关使用 VPCOnly 网络访问类型的更多信息,请参阅将 VPC 中的 Studio 笔记本电脑连接到外部资源

  • DomainExecutionRoleArn 应该是上一步中创建的角色的 ARN。

  • ExecutionRole是指授给 Ama SageMaker zon 域中用户的角色的 ARN。

  • vpc-id 应该是您的 Amazon Virtual Private Cloud 的 ID。subnet-ids 应该是以空格分隔的子网 ID 列表。您的私有子网必须能够访问互联网才能拨打亚马逊, AWS License Manager 或者同时具有适用于亚马逊 SageMaker和 Amazon 的 Amazon VPC 终端节点 AWS License Manager。 SageMaker 有关 Amazon VPC 端点的信息,请参阅接口 Amazon VPC 端点。有关 vpc-idsubnet-ids 的信息,请参阅 VPC 和子网

  • SecurityGroups必须允许出站访问 Amazon SageMaker 和 AWS License Manager 终端节点。

  • auth-mode 应该是 SSOIAM

注意

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

借助 RStudio,亚马逊 SageMaker 可以为您管理安全组。这意味着,Amazon SageMaker 管理安全组规则以确保 rSessions 可以访问 R StudioServerPro 应用程序。Amazon SageMaker 为每个用户个人资料创建一个安全组规则。

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

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

您可能需要增加账户中的 Amazon VPC 配额,才能增加用户数量。有关更多信息,请参阅 Amazon VPC 配额

验证域名创建

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

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