SageMaker Pipeline参数化预处理脚本文件名遇TypeError求助
解决SageMaker Pipeline参数化预处理脚本路径的问题
问题原因
os.path.join是本地Python路径拼接函数,仅支持字符串/路径类对象,但ParameterString是SageMaker Pipeline的参数对象(属于PipelineVariable类型),并非普通字符串,因此在本地构建流水线时会触发类型错误。
解决方案
使用SageMaker Pipeline原生的Join函数(从sagemaker.workflow.functions导入)完成路径拼接,它支持解析Pipeline参数,会在流水线执行阶段动态处理参数值,而非本地构建时执行。
具体修改步骤
- 导入
Join函数:
from sagemaker.workflow.functions import Join
- 替换原有的
os.path.join代码,用Join拼接路径:
step_args = sklearn_processor.run( code=Join(on="/", values=[BASE_DIR, data_preprocessing_script]), inputs=[ ProcessingInput(input_name="raw_input_data", # 补充剩余的inputs参数... ] )
补充说明
Join的on参数为拼接分隔符,这里用"/"适配SageMaker环境的路径规则,效果与os.path.join一致。- 若
BASE_DIR也是Pipeline参数(如ParameterString类型),可直接放入values列表中,无需额外转换。 - 建议给
data_preprocessing_script设置有效的默认值(如'preprocessing/xxx_preprocessing.py'),避免空值导致路径无效。
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

