AWS EventBridge规则忽略前缀与后缀匹配问题排查
解决AWS EventBridge规则触发条件不符合预期的问题
我来帮你搞定这个问题!你现在的EventBridge规则之所以会触发所有文件,核心原因是事件模式里的数组结构代表逻辑或(OR)——你把prefix和suffix放在了object.key的数组里,这意味着只要文件路径满足prefix: "files/" 或者 suffix: ".csv"其中一个条件,规则就会触发,这就导致了非CSV的文件(比如.pdf)只要在files/目录下也会触发,甚至不在files/目录下的CSV文件也会触发。
要实现同时满足两个条件(逻辑与AND),你需要把prefix和suffix放在同一个object.key的对象里,而不是数组中。EventBridge的事件模式规则里,同一个字段下的多个条件默认是逻辑与的关系。
下面是修正后的规则配置JSON:
{ "detail-type": ["Object Created"], "source": ["aws.s3"], "detail": { "bucket": { "name": ["my-files-bucket"] }, "object": { "key": { "prefix": "files/", "suffix": ".csv" } } } }
简单解释下这个配置的逻辑:
- 仅监听S3的
Object Created事件 - 仅针对
my-files-bucket存储桶 - 仅当被创建的对象同时满足:路径以
files/开头,且以.csv结尾时,才触发规则
这样配置后,只有上传到files/目录下的CSV文件才会触发你的Step Function,其他类型的文件或者不在指定目录的文件都不会触发啦。
内容的提问来源于stack exchange,提问作者bananabreadbob
相关产品推荐
相关产品推荐

