File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -3882,12 +3882,19 @@ def get_caller_identity_arn(self):
38823882 instance_name = metadata ["ResourceName" ]
38833883 domain_id = metadata .get ("DomainId" )
38843884 user_profile_name = metadata .get ("UserProfileName" )
3885+ space_name = metadata .get ("SpaceName" )
38853886 try :
38863887 if domain_id is None :
38873888 instance_desc = self .sagemaker_client .describe_notebook_instance (
38883889 NotebookInstanceName = instance_name
38893890 )
38903891 return instance_desc ["RoleArn" ]
3892+
3893+ # In Space app, find execution role from DefaultSpaceSettings on domain level
3894+ if space_name is not None :
3895+ domain_desc = self .sagemaker_client .describe_domain (DomainId = domain_id )
3896+ return domain_desc ["DefaultSpaceSettings" ]["ExecutionRole" ]
3897+
38913898 user_profile_desc = self .sagemaker_client .describe_user_profile (
38923899 DomainId = domain_id , UserProfileName = user_profile_name
38933900 )
Original file line number Diff line number Diff line change @@ -397,6 +397,28 @@ def test_fallback_to_domain_if_role_unavailable_in_user_settings(boto_session):
397397 sess .sagemaker_client .describe_domain .assert_called_once_with (DomainId = "d-kbnw5yk6tg8j" )
398398
399399
400+ @patch (
401+ "six.moves.builtins.open" ,
402+ mock_open (
403+ read_data = '{"ResourceName": "SageMakerInstance", '
404+ '"DomainId": "d-kbnw5yk6tg8j", '
405+ '"SpaceName": "space_name"}'
406+ ),
407+ )
408+ @patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
409+ def test_get_caller_identity_arn_from_describe_domain_for_space (boto_session ):
410+ sess = Session (boto_session )
411+ expected_role = "arn:aws:iam::369233609183:role/service-role/SageMakerRole-20171129T072388"
412+ sess .sagemaker_client .describe_domain .return_value = {
413+ "DefaultSpaceSettings" : {"ExecutionRole" : expected_role }
414+ }
415+
416+ actual = sess .get_caller_identity_arn ()
417+
418+ assert actual == expected_role
419+ sess .sagemaker_client .describe_domain .assert_called_once_with (DomainId = "d-kbnw5yk6tg8j" )
420+
421+
400422@patch ("six.moves.builtins.open" , mock_open (read_data = '{"ResourceName": "SageMakerInstance"}' ))
401423@patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
402424@patch ("sagemaker.session.sts_regional_endpoint" , return_value = STS_ENDPOINT )
You can’t perform that action at this time.
0 commit comments