Skip to content

Commit 4c06ae1

Browse files
author
svia3
committed
fix: add warning message for job-prefixed pipeline steps when no job name is provided
1 parent d083396 commit 4c06ae1

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/sagemaker/workflow/utilities.py

+9
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@
4141
"if desired."
4242
)
4343

44+
JOB_KEY_NONE_WARN_MSG_TEMPLATE = (
45+
"The provided job field [{}] has not been specified. Please refer to the AWS Docs to "
46+
"identify which field should be set to enable the custom-prefixing feature for jobs "
47+
"created via a pipeline execution. "
48+
"https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-access.html#build-and-manage-step-permissions-prefix"
49+
)
50+
4451
if TYPE_CHECKING:
4552
from sagemaker.workflow.step_collections import StepCollection
4653

@@ -458,6 +465,8 @@ def trim_request_dict(request_dict, job_key, config):
458465
request_dict.pop(job_key, None) # safely return null in case of KeyError
459466
else:
460467
if job_key in request_dict:
468+
if request_dict[job_key] is None:
469+
raise ValueError(JOB_KEY_NONE_WARN_MSG_TEMPLATE.format(job_key))
461470
request_dict[job_key] = base_from_name(request_dict[job_key]) # trim timestamp
462471

463472
return request_dict

tests/unit/sagemaker/workflow/test_model_step.py

+26
Original file line numberDiff line numberDiff line change
@@ -1171,3 +1171,29 @@ def test_create_model_step_using_custom_model_name(pipeline_session):
11711171
steps = json.loads(pipeline.definition())["Steps"]
11721172
assert len(steps) == 1
11731173
assert "ModelName" not in steps[0]["Arguments"]
1174+
1175+
1176+
def test_create_model_step_using_custom_model_name_set_to_none(pipeline_session):
1177+
1178+
# Name of the model not specified, will resolve to None.
1179+
model = Model(
1180+
image_uri="my-image",
1181+
sagemaker_session=pipeline_session,
1182+
model_data="s3://",
1183+
role=ROLE,
1184+
)
1185+
step_create_model = ModelStep(name="MyModelStep", step_args=model.create())
1186+
1187+
# 1. Toggle on custom-prefixing model package name popped
1188+
config = PipelineDefinitionConfig(use_custom_job_prefix=True)
1189+
1190+
with pytest.raises(ValueError) as error:
1191+
pipeline = Pipeline(
1192+
name="MyPipeline",
1193+
steps=[step_create_model],
1194+
sagemaker_session=pipeline_session,
1195+
pipeline_definition_config=config,
1196+
)
1197+
pipeline.definition()
1198+
1199+
assert "The provided job field [ModelName] has not been specified" in str(error.value)

0 commit comments

Comments
 (0)