问题描述
我正在构建一个事件驱动的系统,它会在新文件登陆 S3 时立即启动。 我正在评估实现这一目标的不同方法,使用 Cloud Watch Rule + API Trail 是一种选择。 这是 Cloud Watch 事件模式,因为它是:
{
"source": [
"aws.s3"
],"detail-type": [
"AWS API Call via CloudTrail"
],"detail": {
"eventSource": [
"s3.amazonaws.com"
],"eventName": [
"PutObject"
],"requestParameters": {
"bucketName": [
"mysupertest88"
]
}
}
}
像这样,它为每个登陆到存储桶的文件触发规则,但尝试按键和通配符过滤不起作用:
"requestParameters": {
"bucketName": [
"mysupertest88"
],"key": ["myprefix/mysecondprefix/*"]
}
它只在我指定一个没有通配符的匹配项时才有效,我认为是因为符号“*”是 S3 对象中的有效字符。
另一种选择是直接在跟踪级别进行过滤:
但我不认为这是一个不错的选择,因为 API Trail 通常不受开发人员的控制。 另一种替代方法是使用内容过滤:(不错的新功能,但您必须通过 EventBridge 创建规则)
{
"source": [
"aws.s3"
],"requestParameters": {
"bucketName": [
"mysupertest88"
],"key": [
{
"prefix": "a/c"
}
]
}
}
}
上次 S3 事件 notification 是实现此目的的旧方法吗?你对此有何经验?有没有没有经验不容易掌握的利弊?