amazon-web-services - AWS 事件驱动方法 - Cloud Watch 与 S3 事件通知
问题描述
我正在构建一个事件驱动的系统,它会在新文件到达 S3 时立即启动。我正在评估实现这一目标的不同方法,并且可以选择使用 Cloud Watch Rule + API Trail。这就是 Cloud Watch Event 模式:
{
"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 对象中的有效字符。 另一种方法是直接在 Trail 级别过滤:
但我不认为这是一个不错的选择,因为 API Trail 通常不受开发人员的控制。 另一种选择是使用内容过滤:(不错的新功能,但您必须通过 EventBridge 创建规则)
{
"source": [
"aws.s3"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"s3.amazonaws.com"
],
"eventName": [
"PutObject"
],
"requestParameters": {
"bucketName": [
"mysupertest88"
],
"key": [
{
"prefix": "a/c"
}
]
}
}
}
最后的 S3 事件通知是完成此任务的旧方法吗?你对此有何经验?有没有没有经验不容易掌握的利弊?
解决方案
推荐阅读
- installshield - InstallShield 在取消删除后部分删除程序
- mongodb - 比较MongoDB中的日期
- python - ImportError:无法从“模块”导入名称“变量”
- android - APK:与版本号(SO.XY)相关的本机库名称问题
- java - 在 Java 包上使用“ls”命令时出现不支持的方案错误
- firebase - GCM 到 FCM 迁移:客户订阅问题
- c# - 扩展 AspNetCore.Identity.EntityFrameworkCore.UserStore (V2.1.3)
- html - 填充改变图像的大小
- mainframe - CICS 区域在关闭后自动重启
- android - 预先询问时在后台更新语言