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

Serverless+TypeScript:Lambda无视过滤器处理所有DynamoDB流事件

问题:Serverless Framework中DynamoDB流过滤器不生效,Lambda处理所有事件

你的配置核心问题在于filterPatterns的逻辑关系错误:数组中的多个过滤对象默认是逻辑或(OR),只要事件满足任意一个条件就会被Lambda接收。而你需要的是逻辑与(AND),即同时满足所有三个条件才触发。

修正后的配置

将三个过滤条件合并到同一个对象中,这样AWS会按照AND逻辑校验所有条件:

{
  stream: {
      arn: "${self:provider.environment.SESSION_STREAM}",
      type: "dynamodb",
      filterPatterns: [
          {
              eventName: ["INSERT", "UPDATE"],
              dynamodb: {
                  NewImage: {
                      status: {
                          S: ["COMPLETED"]
                      },
                      order: {
                          M: {
                              amount: {
                                  N: [{ exists: true }]
                              }
                          }
                      }
                  }
              }
          }
      ],
      maximumRetryAttempts: 5,
      enabled: true,
      bisectBatchOnFunctionError: true
  }
}

额外说明

你提到找不到基于TypeScript的配置方案,其实这里的流过滤配置和TypeScript无关——TypeScript仅用于编写Lambda的业务逻辑,而Serverless Framework的流配置本质是对接AWS的原生过滤规则,语法完全遵循AWS的过滤模式规范,和开发语言没有关联。只要配置格式正确,不管用JS还是TS编写业务代码,过滤规则都会正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:03:15