You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon SageMaker Pipeline中ModelPackage调用Lambda输出ARN报错排查

问题解决:SageMaker Pipeline中LambdaStep输出传入ModelPackage报错AttributeError: 'Properties' object has no attribute 'split'

问题原因

LambdaStep的properties.Outputs["ModelPackageArn"]返回的是动态Pipeline变量对象(Properties类型),而非直接的字符串。ModelPackage的create方法会对model_package_arn参数执行字符串操作(如split),但该对象不具备字符串方法,因此触发报错。

解决方案

方案1:使用get_output获取字符串类型的输出引用

将model_package_arn的赋值移到model1.create()方法中,通过LambdaStep的get_output方法获取正确的字符串变量引用:

# 初始化ModelPackage时不指定model_package_arn
model1 = ModelPackage(
    sagemaker_session=pipeline_session,
    role=role,
)

model1_step_create_model = ModelStep(
    name="model1_CreateModel",
    depends_on=[model1_step_latest_model_fetch],
    step_args=model1.create(
        instance_type='ml.m5.large', 
        accelerator_type='ml.eia1.medium',
        # 通过get_output获取字符串类型的ARN变量
        model_package_arn=model1_step_latest_model_fetch.get_output("ModelPackageArn")
    )
)

方案2:使用Join构造字符串变量(适用于需要格式拼接的场景)

如果需要对输出做简单格式处理,可通过Join函数将Properties对象转换为Pipeline可解析的字符串类型:

from sagemaker.workflow.functions import Join

model1 = ModelPackage(
    sagemaker_session=pipeline_session,
    role=role,
)

model1_step_create_model = ModelStep(
    name="model1_CreateModel",
    depends_on=[model1_step_latest_model_fetch],
    step_args=model1.create(
        instance_type='ml.m5.large', 
        accelerator_type='ml.eia1.medium',
        model_package_arn=Join(on="", values=[model1_step_latest_model_fetch.properties.Outputs["ModelPackageArn"]])
    )
)

额外检查项

确保你的Lambda函数返回的JSON格式正确,必须包含ModelPackageArn字段且值为合法的ARN字符串,示例返回格式:

{
  "ModelPackageArn": "arn:aws:sagemaker:us-east-1:123456789012:model-package/my-model-group/1"
}

内容的提问来源于stack exchange,提问作者María Fernanda Coria Buendía

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:52:37