如何在AWS EventBridge中按对象键后缀过滤S3数据事件触发SageMaker Pipeline
解决方案
方案1:直接更新EventBridge规则事件模式(无额外组件,最优选择)
AWS EventBridge 事件模式现已原生支持$suffix后缀匹配运算符,无需额外配置中间组件,直接修改你原有规则的事件模式中key字段的匹配规则即可,修改后的完整事件模式如下:
{ "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutObject", "CopyObject", "CompleteMultipartUpload"], "requestParameters": { "bucketName": ["my-bucket-name"], "key": [ {"prefix": "folder/inside/my/bucket/"}, {"$suffix": "_SUCCESS"} ] } } }
修改后规则会仅匹配同时满足指定前缀、后缀为_SUCCESS的对象上传事件,直接触发SageMaker Pipeline执行。
方案2:复用现有S3事件通知+SQS链路
如果你要保留已经配置完成的S3后缀过滤通知到SQS的链路,可以通过EventBridge Pipes实现SQS到SageMaker Pipeline的触发流转:
- 新建EventBridge Pipes,源选择你存储通知的SQS队列,批量大小配置为1即可
- 过滤步骤可直接跳过,S3侧已经完成了后缀过滤,仅符合条件的事件会进入SQS队列
- 目标选择SageMaker 启动管道执行(StartPipelineExecution),填写对应的SageMaker Pipeline ARN,配置执行角色权限即可
权限注意事项:需要给EventBridge Pipes的执行角色授予两类权限:一是SQS队列的
sqs:ReceiveMessage、sqs:DeleteMessage、sqs:GetQueueAttributes权限,二是SageMaker管道的sagemaker:StartPipelineExecution权限。
配置完成后,S3匹配到符合条件的对象上传事件会推送至SQS,EventBridge Pipes消费到消息后会自动触发SageMaker Pipeline执行。
内容的提问来源于stack exchange,提问作者thatayster
相关产品推荐
相关产品推荐

