如何解决AWS 事件驱动方法 - Cloud Watch 与 S3 事件通知
我正在构建一个事件驱动的系统,它会在新文件登陆 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 是实现此目的的旧方法吗?你对此有何经验?有没有没有经验不容易掌握的利弊?
解决方法
由于您的目标是“在新文件到达 S3 后立即”开始操作,因此 CT 可能无法满足您的要求。这是因为传送 API 事件可能需要 15 分钟。来自 AWS faq:
通常,CloudTrail 会在 API 调用的 15 分钟内提供一个事件。
相比之下,S3 事件应该更快。来自 AWS docs:
Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在 秒内发送,但有时可能需要一分钟或更长时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。