【发布时间】:2022-11-17 13:37:44
【问题描述】:
我对 DynamoDB 表的特定(数字)字段/列(比如“计数”)的值变化很感兴趣。
我知道我可以编写一个 Lambda,一旦触发,它就会将新图像与旧图像进行比较,然后决定是否实际执行某些操作。但是,由于我的表收集了某种状态更新,并且其中只有少数对我的触发器具有重要意义,因此在这种情况下,大多数时候 Lambda 会被毫无意义地调用(而且,我会被收取费用调用了 Lambda)。
所以我想过滤 DynamoDB Stream 事件,根据the docs,这应该是可能的(即使没有给出类似案例的例子)。
我的问题是我找不到如何在过滤器模式中编写 OldImage['count'] != NewImage['count'] 的等价物。
这是我的 SAM 模板的这一部分应该如何显示的示例。
CountChangeDetector:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: src/
Handler: trigger.lambda_handler
Runtime: python3.8
FunctionName: "CountChangeDetector"
AutoPublishAlias: live
Events:
Stream:
Type: DynamoDB
Properties:
Stream: !GetAtt MyTable.StreamArn
BatchSize: 10
StartingPosition: TRIM_HORIZON
FilterCriteria:
Filters:
- Pattern: '{"OldImage": {"count": [ { "anything-but": [ {"NewImage": {"count"}} ] } ]}}'
当然,我定义模式的方式不正确,我得到了一个错误。
那么,模式应该如何定义呢?
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-dynamodb amazon-dynamodb-streams