Create an Amazon SageMaker AI domain with RStudio using the Amazon CLI
Important
Custom IAM policies that allow Amazon SageMaker Studio or Amazon SageMaker Studio Classic to create Amazon SageMaker resources must also grant permissions to add tags to those resources. The permission to add tags to resources is required because Studio and Studio Classic automatically tag any resources they create. If an IAM policy allows Studio and Studio Classic to create resources but does not allow tagging, "AccessDenied" errors can occur when trying to create resources. For more information, see Provide permissions for tagging SageMaker AI resources.
Amazon managed policies for Amazon SageMaker AI that give permissions to create SageMaker resources already include permissions to add tags while creating those resources.
The following topic shows how to onboard to Amazon SageMaker AI domain with RStudio enabled using the Amazon CLI. To onboard using the Amazon Web Services Management Console, see Amazon SageMaker AI domain overview.
Prerequisites
-
Install and configure Amazon CLI version 2
-
Configure the Amazon CLI
with IAM credentials
Create DomainExecution
role
To launch the RStudio App, you must provide a DomainExecution role. This role is
used to determine whether RStudio needs to be launched as part of Amazon SageMaker AI domain creation.
This role is also used by Amazon SageMaker AI to access the RStudio License and push RStudio logs.
Note
The DomainExecution role should have at least
Amazon License Manager permissions to access RStudio License, and CloudWatch permissions to
push logs in your account.
The following procedure shows how to create the DomainExecution role with the
Amazon CLI.
-
Create a file named
assume-role-policy.jsonwith the following content. -
Create the
DomainExecutionrole.<REGION>should be the Amazon Region to launch your domain in.aws iam create-role --region<REGION>--role-name DomainExecution --assume-role-policy-document file://assume-role-policy.json -
Create a file named
domain-setting-policy.jsonwith the following content. This policy allows the RStudioServerPro app to access necessary resources and allows Amazon SageMaker AI to automatically launch an RStudioServerPro app when the existing RStudioServerPro app is in aDeletedorFailedstatus. -
Create the domain setting policy that is attached to the
DomainExecutionrole. Be aware of thePolicyArnfrom the response, you will need to enter that ARN in the following steps.aws iam create-policy --region<REGION>--policy-name domain-setting-policy --policy-document file://domain-setting-policy.json -
Attach
domain-setting-policyto theDomainExecutionrole. Use thePolicyArnreturned in the previous step.aws iam attach-role-policy --role-name DomainExecution --policy-arn<POLICY_ARN>
Create Amazon SageMaker AI domain with RStudio App
The RStudioServerPro app is launched automatically when you create a Amazon SageMaker AI domain using the
create-domain CLI command with the RStudioServerProDomainSettings
parameter specified. When launching the RStudioServerPro App, Amazon SageMaker AI checks for a valid
RStudio license in the account and fails domain creation if the license is not found.
The creation of a Amazon SageMaker AI domain differs based on the authentication method and the network type. These options must be used together, with one authentication method and one network connection type selected. For more information about the requirements to create a new domain, see CreateDomain.
The following authentication methods are supported.
-
IAM Auth -
SSO Auth
The following network connection types are supported:
-
PublicInternet -
VPCOnly
Authentication methods
IAM Auth Mode
The following shows how to create a Amazon SageMaker AI domain with RStudio enabled and an IAM
Auth Network Type. For more information about Amazon Identity and Access Management, see What is IAM?.
-
DomainExecutionRoleArnshould be the ARN for the role created in the previous step. -
ExecutionRoleis the ARN of the role given to users in the Amazon SageMaker AI domain. -
vpc-idshould be the ID of your Amazon Virtual Private Cloud.subnet-idsshould be a space-separated list of subnet IDs. For information aboutvpc-idandsubnet-ids, see VPCs and subnets. -
RStudioPackageManagerUrlandRStudioConnectUrlare optional and should be set to the URLs of your RStudio Package Manager and RStudio Connect server, respectively. -
app-network-access-typeshould be eitherPublicInternetOnlyorVPCOnly.
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>
Authentication using IAM Identity Center
The following shows how to create a Amazon SageMaker AI domain with RStudio enabled and an SSO
Auth Network Type. Amazon IAM Identity Center must be enabled for the region that the domain is launched
on. For more information about IAM Identity Center, see What is Amazon IAM Identity Center?.
-
DomainExecutionRoleArnshould be the ARN for the role created in the previous step. -
ExecutionRoleis the ARN of the role given to users in the Amazon SageMaker AI domain. -
vpc-idshould be the ID of your Amazon Virtual Private Cloud.subnet-idsshould be a space-separated list of subnet IDs. For information aboutvpc-idandsubnet-ids, see VPCs and subnets. -
RStudioPackageManagerUrlandRStudioConnectUrlare optional and should be set to the URLs of your RStudio Package Manager and RStudio Connect server, respectively. -
app-network-access-typeshould be eitherPublicInternetOnlyorVPCOnly.
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>
Connection types
PublicInternet/Direct Internet network type
The following shows how to create a Amazon SageMaker AI domain with RStudio enabled and a
PublicInternet Network Type.
-
DomainExecutionRoleArnshould be the ARN for the role created in the previous step. -
ExecutionRoleis the ARN of the role given to users in the Amazon SageMaker AI domain. -
vpc-idshould be the ID of your Amazon Virtual Private Cloud.subnet-idsshould be a space-separated list of subnet IDs. For information aboutvpc-idandsubnet-ids, see VPCs and subnets. -
RStudioPackageManagerUrlandRStudioConnectUrlare optional and should be set to the URLs of your RStudio Package Manager and RStudio Connect server, respectively. -
auth-modeshould be eitherSSOorIAM.
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
The following shows how to launch a Amazon SageMaker AI domain with RStudio enabled and
a VPCOnly Network Type. For more information about using the
VPCOnly network access type, see Connect Studio notebooks in
a VPC to external resources.
-
DomainExecutionRoleArnshould be the ARN for the role created in the previous step. -
ExecutionRoleis the ARN of the role given to users in the Amazon SageMaker AI domain. -
vpc-idshould be the ID of your Amazon Virtual Private Cloud.subnet-idsshould be a space-separated list of subnet IDs. Your private subnet must be able to either access the internet to make a call to Amazon SageMaker AI, and Amazon License Manager or have Amazon VPC endpoints for both Amazon SageMaker AI and Amazon License Manager. For information about Amazon VPC endpoints, see Interface Amazon VPC endpoints For information aboutvpc-idandsubnet-ids, see VPCs and subnets. -
SecurityGroupsmust allow outbound access to the Amazon SageMaker AI and Amazon License Manager endpoints. -
auth-modeshould be eitherSSOorIAM.
Note
When using Amazon Virtual Private Cloud endpoints, the security group attached to your Amazon Virtual Private Cloud
endpoints must allow inbound traffic from the security group you pass as part of the
domain-setting parameter of the create-domain CLI call.
With RStudio, Amazon SageMaker AI manages security groups for you. This means that Amazon SageMaker AI manages security group rules to ensure RSessions can access RStudioServerPro Apps. Amazon SageMaker AI creates one security group rule per user profile.
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
Note: The RStudioServerPro app is launched by a special user profile named
domain-shared. As a result, this app is not returned as part
of list-app API calls by any other user profiles.
You may have to increase the Amazon VPC quota in your account to increase the number of users. For more information, see Amazon VPC quotas.
Verify domain creation
Use the following command to verify that your domain has been created with a
Status of InService. Your domain-id is appended to
the domains ARN. For example,
arn:aws:sagemaker:.<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>
aws sagemaker describe-domain --domain-id<DOMAIN_ID>--region<REGION>