我使用带有 TypeScript 的无服务器框架来处理 DynamoDB 流事件,然后将它们发布到 SNS 主题。我已将 Lambda 函数配置为使用过滤器仅处理流中的特定事件。但是,Lambda 函数正在处理流中的每个事件,包括那些应被过滤器排除的事件。
这是我当前的配置:
{
stream: {
arn: "${self:provider.environment.SESSION_STREAM}",
type: "dynamodb",
filterPatterns: [
{ eventName: ["INSERT", "UPDATE"] },
{
dynamodb: {
NewImage: {
status: {
S: ["COMPLETED"],
},
},
},
},
{
dynamodb: {
NewImage: {
order: {
M: {
amount: {
N: [{ exists: true }],
},
},
},
},
},
},
],
maximumRetryAttempts: 5,
enabled: true,
bisectBatchOnFunctionError: true
}
},
我已经尝试了大部分链接,但找不到任何基于 TypeScript 的配置或解决方案。
我认为,您期望应用所有模式 - 事实并非如此。
来自文档:
您的过滤器在逻辑上“或”在一起。如果您的活动记录 源满足您的一个或多个过滤器,Lambda 包括 记录在它发送到您的函数的下一个事件中。如果你的都没有 过滤器满足,Lambda 丢弃记录。
您的第一个模式 (
eventName
) 将满足流中的所有事件,因此其他模式没有效果。