如何在AWS EventBridge上按对象关键字后缀过滤s3数据事件



我在AWS EventBridge上创建了一个触发Sagemaker Pipeline执行的规则。为此,我使用了以下事件模式:

{
"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上的Event Pattern不支持后缀过滤。在文档中,不清楚的行为。我已经配置了一个使用后缀的S3事件通知,并将过滤后的通知发送到SQS队列,但现在我不知道如何处理这个队列,以便调用我的EventBridge规则来触发Sagemaker Pipeline执行。

我正在寻找一个类似的功能。

不幸的是,根据AWS的文档,它似乎只支持以下模式:

tbody> <<tr>空
比较 示例 规则语法
标识为空"UserID": (Null)
LastName是空"LastName":["]
=Name is "Alice">Name"; ["Alice")
位置为"New York"and Day is "Monday">Location"; ["New York"]),"Day"["Monday"
PaymentType is "Credit"or "Debit">&;PaymentType"; ["Credit", "Debit"]
天气不是"下雨";天气不是"下雨";[["下雨]]
数字(=)价格是100"Price":[{"numeric"["=",100]}]
数字(范围)价格大于10且小于或等于20"Price" [{"numeric": [">", 10, "<=", 20]}]
ExistsProductName Exists"ProductName": [{"exists": true}]
不存在ProductName不存在"ProductName": [{"exists": false}]
地区在美国"Region": [{"前缀"; " US -"]}]

相关内容

  • 没有找到相关文章