我已在AWS事件总线上创建了一条规则,触发Sagemaker管道的执行。为此,我拥有以下事件模式:
或者
{
"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/"
}]
}
}
}
我已启用 CloudTrail 来记录 S3 数据事件,并且规则正在正确触发我的 Sagemaker 流水线执行。
问题在于:每次将任何对象放置/复制到我的前缀中都会触发流水线执行。因此,我希望仅在上传特定对象时触发流水线执行,但我不知道其完整名称。
例如,我可能会拥有下面这种动态生成日期的对象名称:
my-bucket-name/folder/inside/my/bucket/2021-07-28/_SUCESS
我想用类似以下方式编写事件模式:
"prefix": "folder/inside/my/bucket/{current_date}/_SUCCESS"
或者
"key": [{
"prefix": "folder/inside/my/bucket/"
}, {
"suffix": "_SUCCESS"
}]
我认为AWS的事件模式不支持后缀过滤。在文档中,该行为并不清晰。 我已经配置了一个S3事件通知,并使用后缀发送筛选通知到SQS队列,但现在我不知道如何处理此队列,以便调用我的EventBridge规则来触发Sagemaker Pipeline执行。