我在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的文档,它似乎只支持以下模式:
比较 | 示例 | 规则语法 | 空 | 标识为空 | "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]}] | |
Exists | ProductName Exists | "ProductName": [{"exists": true}] | |
不存在 | ProductName不存在 | "ProductName": [{"exists": false}] | |
以 | 地区在美国 | "Region": [{"前缀"; " US -"]}] |