如何实现AWS SageMaker Pipeline执行完成后自动触发另一个Pipeline
当然可以实现,目前有两种成熟的落地方案,你可以根据自己的业务场景选:
方案1:通过EventBridge实现(推荐,无额外代码维护成本)
- 首先利用SageMaker的默认事件上报能力:所有SageMaker Pipeline的执行状态变更事件,都会自动上报到EventBridge的默认事件总线,你不需要做额外的上报配置
- 在EventBridge中创建自定义事件规则,筛选条件设置为:事件源为
aws.sagemaker,事件类型为SageMaker Pipeline Execution State Change,且事件详情中的执行状态为Succeeded,同时指定要监听的第一个Pipeline的ARN,避免其他Pipeline的事件误触发 - 给该规则配置触发目标为第二个SageMaker Pipeline,你可以直接在规则中配置要传给第二个Pipeline的输入参数,比如第一个Pipeline输出的模型S3路径、评估得分等信息,权限侧只要给EventBridge的执行角色开通目标Pipeline的
sagemaker:StartPipelineExecution权限即可。
方案2:通过Pipeline内置Lambda Step实现(适合需要自定义判断逻辑的场景)
- 你可以直接在第一个Pipeline的末尾新增一个Lambda步骤,在Lambda代码中调用
start_pipeline_executionSDK接口启动第二个Pipeline - 这种方案的优势是可以加入自定义逻辑,比如先校验第一个Pipeline的输出是否符合业务要求,符合才启动下游Pipeline,还可以对传输参数做自定义加工,权限侧需要给Lambda的执行角色开通目标Pipeline的启动权限即可。
内容的提问来源于stack exchange,提问作者Roelant
相关产品推荐
相关产品推荐

