You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过EventBridge配置S3事件触发器?嵌套目录PNG触发问题

解决S3子文件夹上传.png文件触发EventBridge规则的问题

我的文件夹结构如下:

root
  - folder A
     - folder B
          a.png
     - folder C
          b.png

需要配置EventBridge规则,当内部子文件夹中上传.png文件时触发Lambda函数,针对以下疑问给出解答和方案:

疑问解答

1. EventBridge是否支持通配符?

EventBridge的事件模式支持有限的通配符,但不是传统文件路径的*/*.png写法。它基于JSON模式匹配,支持*(匹配任意不含分隔符的字符序列)、?(匹配单个字符),还有前缀、后缀匹配,但必须遵循EventBridge的语法规则,不能直接用文件路径式的通配符。

2. 为什么*/*.png模式无法生效?

因为这个写法是文件路径的通配符逻辑,不符合EventBridge的事件模式语法。EventBridge是针对S3事件中的detail.object.key字段(值为类似folder A/folder B/a.png的字符串)做匹配,你需要用EventBridge支持的匹配语法来操作这个字段,而不是直接写路径通配符。

3. 使用后缀是否能解决此问题?

可以,结合后缀匹配和其他条件(比如前缀、排除根目录文件),就能精准实现需求。

具体配置方案

针对S3事件的detail.object.key字段,设置正确的EventBridge事件模式即可:

方案1:匹配所有子文件夹下的.png文件(任意嵌套层级)

如果要匹配root下所有子文件夹(不管嵌套几层)的.png文件,同时排除根目录直接上传的.png,事件模式如下:

{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["你的Bucket名称"]
    },
    "object": {
      "key": [{
        "suffix": ".png",
        "not": [{
          "equals": "a.png"
        }]
      }]
    }
  }
}

这里通过suffix: ".png"匹配所有png后缀的文件,再用not.equals排除根目录下的直接上传文件,确保只有子文件夹中的文件触发规则。

方案2:匹配指定父文件夹下的子文件夹(比如folder A下的所有层级)

如果只需要匹配folder A下所有子文件夹里的.png文件,用前缀+后缀组合匹配:

{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["你的Bucket名称"]
    },
    "object": {
      "key": [{
        "prefix": "folder A/",
        "suffix": ".png"
      }]
    }
  }
}

这个模式会匹配所有以folder A/开头且以.png结尾的对象key,也就是folder A下所有子文件夹中的png文件。

关键注意事项

  • 必须确保你的S3 Bucket已经开启了EventBridge事件通知(不是旧版的S3事件通知),只有开启后,S3才会将事件发送到EventBridge。
  • 配置完成后,可以用EventBridge的“测试事件”功能,模拟S3上传事件来验证规则是否能正确匹配。

内容的提问来源于stack exchange,提问作者karthik subramanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:06:28