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

SageMaker模型手动审批通过后自动触发Lambda Function的方法

配置步骤(基于AWS原生事件链路,无额外自定义组件)

整个链路不需要写额外的轮询逻辑,靠AWS原生事件驱动即可实现,具体配置如下:

  • 首先统一审批入口:把训练完成的模型统一注册到SageMaker Model Registry的对应模型包组下,将模型版本初始状态设为Pending Approval,你核验指标后的手动审批操作,直接在Model Registry控制台将对应模型版本的审批状态修改为Approved即可,这个状态变更操作会自动生成可被捕获的标准化事件。

如果你当前的手动审批是跑在Step Functions工作流里的人工审批节点,也可以直接复用Step Functions的审批通过事件,不需要强行迁移到Model Registry的审批能力。

  • 配置EventBridge事件规则捕获审批通过信号:
    在EventBridge控制台创建新规则,事件源选择AWS默认事件源,事件模式匹配以下配置,替换成你自己的模型包组名即可:

    {
      "source": ["aws.sagemaker"],
      "detail-type": ["SageMaker Model Package State Change"],
      "detail": {
        "ModelPackageGroupName": ["你的模型包组名称"],
        "ModelApprovalStatus": ["Approved"]
      }
    }
    

    如果用Step Functions做审批,就把事件源改成aws.states,detail-type选Step Functions Execution Status Change,额外过滤执行状态为SUCCEEDED、且对应工作流为你的模型审批工作流即可。

  • 绑定Lambda为事件规则的目标:
    规则创建到目标配置步骤时,直接选择你已经部署好的跨账号复制Artifact的Lambda函数作为目标。这里要配齐两类权限避免触发失败:

    1. 给EventBridge规则自动生成的执行角色添加lambda:InvokeFunction权限,可调用资源限定为你的复制Lambda的ARN,避免权限过大。
    2. 确认Lambda的执行角色已经配齐两类访问权限:一是有读取SageMaker模型元数据、读取源S3桶中模型artifact的权限;二是有跨账号写入目标AWS账号S3桶的权限,同时目标账号的S3桶策略要给该Lambda执行角色开放s3:PutObject、s3:ListBucket权限,不然复制流程会报403错误。
  • 调整Lambda的入参解析逻辑:
    EventBridge触发Lambda时,会把完整的事件详情作为入参传给Lambda,你只需要在Lambda代码里从event.detail.ModelPackageArn字段拿到审批通过的模型版本ARN,调用SageMaker的DescribeModelPackage接口就能拿到模型artifact对应的S3路径,直接复用你现有的跨账号复制逻辑即可,不需要额外维护参数传递链路。

常见避坑点

  • 不要配置S3对象创建事件作为Lambda触发源:训练完成后模型artifact就已经写入S3了,这时候还没走审批流程,会导致提前触发复制逻辑。
  • 建议给EventBridge规则配置死信队列:如果Lambda调用失败,事件会被写入死信队列,不会丢消息,方便后续排查重试。
  • 可以在Lambda逻辑开头加一层状态校验:拿到模型版本ARN后先重新调用接口查询当前审批状态,确认是Approved再执行复制,避免事件乱序导致的误操作。

内容的提问来源于stack exchange,提问作者Qinjie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:06:34