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
相关产品推荐
相关产品推荐

