如何在AWS SageMaker注册新模型版本时触发Lambda并启动SageMaker Pipeline?
实现SageMaker模型注册表触发Lambda并启动流水线的步骤
1. 创建并配置Lambda函数
1.1 创建Lambda执行角色
创建IAM角色,为其附加以下权限策略:
AmazonSageMakerFullAccess(或最小权限:sagemaker:StartPipelineExecution)CloudWatchLogsFullAccess(用于日志记录)
1.2 编写Lambda函数代码
使用Python编写函数,从EventBridge事件中提取模型版本信息,触发指定SageMaker流水线:
import boto3 sagemaker = boto3.client('sagemaker') def lambda_handler(event, context): # 从事件中提取模型版本ARN model_version_arn = event['detail']['ModelVersionArn'] # 启动SageMaker流水线 response = sagemaker.start_pipeline_execution( PipelineName='你的流水线名称', PipelineParameters=[ { 'Name': 'ModelVersionArn', 'Value': model_version_arn } # 可添加其他流水线所需参数 ] ) return { 'statusCode': 200, 'body': f"流水线已启动,执行ARN: {response['PipelineExecutionArn']}" }
2. 创建EventBridge规则触发Lambda
2.1 配置事件模式
在EventBridge控制台创建规则,设置事件模式匹配SageMaker模型版本注册完成的事件:
{ "source": ["aws.sagemaker"], "detail-type": ["SageMaker Model Version State Change"], "detail": { "ModelVersionStatus": ["Completed"], "ModelGroupName": ["你的模型组名称"] // 可选,指定特定模型组触发 } }
2.2 设置目标为Lambda函数
在规则的目标配置中,选择之前创建的Lambda函数,完成规则创建。
3. 为Lambda添加EventBridge调用权限
通过AWS CLI执行以下命令,允许EventBridge调用Lambda:
aws lambda add-permission \ --function-name 你的Lambda函数名称 \ --statement-id EventBridgeInvokeLambda \ --action "lambda:InvokeFunction" \ --principal events.amazonaws.com \ --source-arn EventBridge规则的ARN
也可在Lambda控制台的「配置」->「权限」中手动添加此权限。
4. 测试流程
- 在SageMaker模型注册表中注册一个新的模型版本
- 查看Lambda控制台的日志,确认函数已被触发
- 进入SageMaker流水线控制台,检查是否有新的执行任务启动
内容的提问来源于stack exchange,提问作者Wajahat Lateef
相关产品推荐
相关产品推荐

