如何修改EventBridge规则排除特定S3文件触发Lambda函数
修改EventBridge规则排除特定前缀文件的方法
要实现排除以"abc"开头的.txt/.csv文件,你需要在原事件模式的requestParameters.key字段中添加否定匹配规则,利用EventBridge的anything-but操作符来排除符合特定模式的对象键。
修改后的完整事件模式
{ "detail": { "eventName": [ "PutObject", "CopyObject", "CompleteMultipartUpload" ], "eventSource": [ "s3.amazonaws.com" ], "requestParameters": { "bucketName": [ "<bucket_name>" ], "key": [ { "wildcard": "folder_name/*/*.csv" }, { "wildcard": "folder_name/*/*.txt" }, { "anything-but": { "wildcard": "folder_name/*/abc*.csv" } }, { "anything-but": { "wildcard": "folder_name/*/abc*.txt" } } ] } }, "detail-type": [ "AWS API Call via CloudTrail" ], "source": [ "aws.s3" ] }
关键修改说明
- 保留原有的
wildcard规则,确保匹配目标路径下的.csv/.txt文件 - 添加两个
anything-but规则:分别排除folder_name/*/abc*.csv和folder_name/*/abc*.txt模式的文件,其中abc*表示所有以"abc"开头的文件名 - EventBridge会同时满足所有匹配条件:文件必须符合原wildcard规则,且不匹配任何
anything-but中的排除模式
注意事项
- 确保你的S3存储桶已经启用了CloudTrail日志记录,因为该EventBridge规则依赖CloudTrail生成的S3 API调用事件
- 验证wildcard语法:
*匹配任意长度的字符(包括空字符),如果需要更精确的匹配(比如仅排除以abc开头且后面有字符的文件),可以调整为abc?.csv(?匹配单个字符)
内容的提问来源于stack exchange,提问作者Aakash Dev
相关产品推荐
相关产品推荐

