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

如何用EventBridge筛选DynamoDB流中特定状态的插入与变更事件?

用EventBridge过滤器筛选特定DynamoDB流事件的方案

问题描述

需要通过EventBridge规则筛选DynamoDB流事件,仅保留以下两种场景:

  • 插入新行,且state.column字段值为state1
  • 修改现有行时,state.column的值从非state1变为state1

尝试过的过滤器规则因INSERT事件无OldImage字段失效,且$or结合null的写法不被EventBridge认可,希望找到纯EventBridge过滤器的实现方案,无需借助Lambda。

解决方案

可以利用EventBridge的$or逻辑运算符,将两种场景拆分为独立条件组合实现,无需依赖Lambda。

正确的过滤器规则

{
  "eventName": ["INSERT", "MODIFY"],
  "dynamodb": {
    "NewImage": {
      "state": {
        "M": {
          "column": {
            "S": ["state1"]
          }
        }
      }
    },
    "$or": [
      {
        "eventName": ["INSERT"]
      },
      {
        "eventName": ["MODIFY"],
        "OldImage": {
          "state": {
            "M": {
              "column": {
                "S": [{"anything-but": ["state1"]}]
              }
            }
          }
        }
      }
    ]
  }
}

规则说明

  • 基础匹配条件:先统一限定eventName为INSERT或MODIFY,且NewImage中的state.column值必须是state1,这是两种场景的共同前提。
  • 场景拆分处理:
    • 第一个$or分支:单独匹配INSERT事件,不需要判断OldImage(INSERT事件本身不存在该字段)。
    • 第二个$or分支:仅匹配MODIFY事件,同时要求OldImage中的state.column值不等于state1。

这种写法避开了直接对OldImage做null判断的语法限制,通过拆分场景分别处理,完全符合EventBridge过滤规则的语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:40:24