Skip to content

Commit 341ea36

Browse files
mvsuspyangaws
authored andcommitted
Raise more descriptive exception (#662)
1 parent b1df490 commit 341ea36

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/sagemaker/transformer.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
# language governing permissions and limitations under the License.
1313
from __future__ import absolute_import
1414

15+
from botocore import exceptions
16+
1517
from sagemaker.job import _Job
1618
from sagemaker.session import Session
1719
from sagemaker.utils import base_name_from_image, name_from_base
@@ -119,8 +121,14 @@ def delete_model(self):
119121
self.sagemaker_session.delete_model(self.model_name)
120122

121123
def _retrieve_image_name(self):
122-
model_desc = self.sagemaker_session.sagemaker_client.describe_model(ModelName=self.model_name)
123-
return model_desc['PrimaryContainer']['Image']
124+
try:
125+
model_desc = self.sagemaker_session.sagemaker_client.describe_model(ModelName=self.model_name)
126+
return model_desc['PrimaryContainer']['Image']
127+
except exceptions.ClientError:
128+
raise ValueError('Failed to fetch model information for %s. '
129+
'Please ensure that the model exists. '
130+
'Local instance types require locally created models.'
131+
% self.model_name)
124132

125133
def wait(self):
126134
self._ensure_last_transform_job()

tests/unit/test_transformer.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from mock import MagicMock, Mock, patch
1717

1818
from sagemaker.transformer import Transformer, _TransformJob
19+
from tests.integ import test_local_mode
1920

2021
MODEL_NAME = 'model'
2122
IMAGE_NAME = 'image-for-model'
@@ -65,6 +66,21 @@ def test_delete_model(sagemaker_session):
6566
sagemaker_session.delete_model.assert_called_with(MODEL_NAME)
6667

6768

69+
def test_transformer_fails_without_model():
70+
transformer = Transformer(model_name='remote-model',
71+
sagemaker_session=test_local_mode.LocalNoS3Session(),
72+
instance_type='local',
73+
instance_count=1)
74+
75+
with pytest.raises(ValueError) as error:
76+
77+
transformer.transform('empty-data')
78+
79+
assert str(error.value) == 'Failed to fetch model information for remote-model. ' \
80+
'Please ensure that the model exists. ' \
81+
'Local instance types require locally created models.'
82+
83+
6884
@patch('sagemaker.transformer._TransformJob.start_new')
6985
def test_transform_with_all_params(start_new_job, transformer):
7086
content_type = 'text/csv'

0 commit comments

Comments
 (0)