如何配置Event Bridge规则,在S3指定子文件夹上传CSV后触发Lambda
修正S3上传CSV触发Event Bridge规则的问题
你的S3存储桶路径为s3://bucket_name/data/,每天会在data目录下创建以当日日期命名的子文件夹(例如040423),并将CSV文件上传至该子文件夹中。你想配置Event Bridge规则,仅在CSV文件上传到这类日期子文件夹时触发,但当前的事件模式没生效,以下是两种修正方案:
方案一:过滤子文件夹层级
这种方式能确保CSV文件在data/下的任意子文件夹中,而非直接放在data/根目录:
{ "detail-type": ["AWS API Call via CloudTrail"], "source": ["aws.s3"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutObject"], "requestParameters": { "bucketName": ["bucket_name"], "key": [ { "prefix": "data/" }, { "suffix": ".csv" }, { "contains": "/" } ] } } }
方案二:精确匹配日期子文件夹格式
如果日期子文件夹是固定6位数字格式(比如示例中的040423),可以用正则表达式精确匹配路径,避免非日期子文件夹触发:
{ "detail-type": ["AWS API Call via CloudTrail"], "source": ["aws.s3"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutObject"], "requestParameters": { "bucketName": ["bucket_name"], "key": { "regex": "^data/\\d{6}/.*\\.csv$" } } } }
关键注意事项
- 必须确保你的S3存储桶已经开启CloudTrail日志记录,且CloudTrail包含
PutObject事件——因为这条Event Bridge规则依赖CloudTrail捕获的API调用事件。 - 测试时可以上传一个CSV到日期子文件夹,然后在Event Bridge的规则页面查看匹配情况,或者去CloudTrail确认对应的事件是否被正常记录。
内容的提问来源于stack exchange,提问作者Villa
相关产品推荐
相关产品推荐

