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):
3882
3882
instance_name = metadata ["ResourceName" ]
3883
3883
domain_id = metadata .get ("DomainId" )
3884
3884
user_profile_name = metadata .get ("UserProfileName" )
3885
+ space_name = metadata .get ("SpaceName" )
3885
3886
try :
3886
3887
if domain_id is None :
3887
3888
instance_desc = self .sagemaker_client .describe_notebook_instance (
3888
3889
NotebookInstanceName = instance_name
3889
3890
)
3890
3891
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
+
3891
3898
user_profile_desc = self .sagemaker_client .describe_user_profile (
3892
3899
DomainId = domain_id , UserProfileName = user_profile_name
3893
3900
)
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):
397
397
sess .sagemaker_client .describe_domain .assert_called_once_with (DomainId = "d-kbnw5yk6tg8j" )
398
398
399
399
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
+
400
422
@patch ("six.moves.builtins.open" , mock_open (read_data = '{"ResourceName": "SageMakerInstance"}' ))
401
423
@patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
402
424
@patch ("sagemaker.session.sts_regional_endpoint" , return_value = STS_ENDPOINT )
You can’t perform that action at this time.
0 commit comments