调用Invoke_endpoint是否会触发Lambda函数超时及异步处理方案咨询
方案总览
你描述的长耗时推理场景完全可以通过SageMaker原生的**异步端点(Asynchronous Endpoint)**能力实现,不需要自己搭建跨Lambda的回调链路,你的两个需求都可以直接满足:
- 提交推理请求后Lambda可立刻终止,无需等待推理结果
- 推理完成后可自动触发指定Lambda(可以是你原来的同一个Lambda,也可以是独立的处理Lambda)拿到结果写入DynamoDB
核心逻辑说明
你现在用的invoke_endpoint是同步调用接口,会一直阻塞Lambda直到推理返回,天然不适合超过15分钟的场景,替换为异步调用接口即可解决:
- 调用
invoke_endpoint_async接口提交推理请求,接口仅校验请求合法性,校验通过后立刻返回,你的Lambda调用完成后可直接退出,全程耗时不会超过几秒,完全不会触达Lambda运行时长上限 - SageMaker后台会自行管理推理请求的排队、执行,推理完成后会自动按照你提前配置的规则推送结果通知,也会自动把推理结果写入你指定的S3路径
具体实现步骤
创建SageMaker异步端点
你不需要修改现有的模型推理代码,只需要在创建端点时额外添加异步推理配置:指定结果存储的S3桶,同时配置推理成功/失败的回调SNS主题即可,和同步端点的创建流程差异极小。修改请求端Lambda逻辑
把原来的同步调用逻辑替换为异步逻辑:
- 先把你要传入的JSON推理数据写入到指定S3桶,拿到对应S3 URI
- 调用
invoke_endpoint_async接口,传入该S3 URI作为输入地址,接口返回后Lambda可直接终止运行,不需要做任何等待
- 配置结果处理链路
两种常用方案按需选择即可:
- 方案一:将结果处理Lambda绑定到你之前配置的SNS回调主题,推理完成后SNS会自动推送推理结果的S3地址到Lambda,Lambda拉取结果后写入DynamoDB即可
- 方案二:为存储推理结果的S3路径配置对象创建事件触发规则,当SageMaker把结果写入S3时自动触发Lambda处理,不需要额外配置SNS,链路更简洁
其他可选方案
如果你不需要准实时的推理响应,也可以选择SageMaker批量转换(Batch Transform)任务处理批量推理请求,也支持完成后自动回调通知,适合非实时的大批量推理场景。
内容的提问来源于stack exchange,提问作者Hedge
相关产品推荐
相关产品推荐

