Skip to content

Commit 4fb0bd3

Browse files
committed
Sniping fix for S3 bucket
1 parent 9e7f666 commit 4fb0bd3

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/sagemaker/session.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -630,13 +630,13 @@ def _create_s3_bucket_if_it_does_not_exist(self, bucket_name, region):
630630
s3 = self.s3_resource
631631

632632
bucket = s3.Bucket(name=bucket_name)
633+
expected_bucket_owner_id = self.account_id()
634+
633635
if bucket.creation_date is None:
634636
self.general_bucket_check_if_user_has_permission(bucket_name, s3, bucket, region, True)
635-
637+
self.expected_bucket_owner_id_bucket_check(bucket_name, s3, expected_bucket_owner_id)
636638
elif self._default_bucket_set_by_sdk:
637639
self.general_bucket_check_if_user_has_permission(bucket_name, s3, bucket, region, False)
638-
639-
expected_bucket_owner_id = self.account_id()
640640
self.expected_bucket_owner_id_bucket_check(bucket_name, s3, expected_bucket_owner_id)
641641

642642
def expected_bucket_owner_id_bucket_check(self, bucket_name, s3, expected_bucket_owner_id):

tests/unit/test_default_bucket.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from __future__ import absolute_import
1414

1515
import datetime
16+
import unittest
1617
from unittest.mock import Mock
1718

1819
import pytest
@@ -173,3 +174,31 @@ def test_bucket_creation_other_error(sagemaker_session):
173174

174175
sagemaker_session.default_bucket()
175176
assert sagemaker_session._default_bucket is None
177+
178+
179+
def test_default_bucket_s3_create_call_creation_date(sagemaker_session):
180+
error = ClientError(
181+
error_response={"Error": {"Code": "403", "Message": "Forbidden"}},
182+
operation_name="foo",
183+
)
184+
sagemaker_session.boto_session.resource("s3").meta.client.head_bucket.side_effect = Mock(
185+
side_effect=error
186+
)
187+
188+
with pytest.raises(ClientError):
189+
sagemaker_session.default_bucket()
190+
191+
192+
def test_default_bucket_s3_create_call_default_bucket_set_by_sdk(sagemaker_session):
193+
sagemaker_session._default_bucket_set_by_sdk = True
194+
sagemaker_session.boto_session.resource("s3").Bucket().creation_date = 1733509801
195+
error = ClientError(
196+
error_response={"Error": {"Code": "403", "Message": "Forbidden"}},
197+
operation_name="foo",
198+
)
199+
sagemaker_session.boto_session.resource("s3").meta.client.head_bucket.side_effect = Mock(
200+
side_effect=error
201+
)
202+
203+
with pytest.raises(ClientError):
204+
sagemaker_session.default_bucket()

0 commit comments

Comments
 (0)