我对 DynamoDB 表的特定(数字)字段/列(例如“计数”)的值变化感兴趣。
我知道我可以编写一个 Lambda,一旦触发,就会将新图像与旧图像进行比较,然后决定是否实际执行某项操作。但是,由于我的表收集了某种状态更新,并且其中只有少数对我的触发器实际上很重要,因此在这种设置中,大多数情况下都会毫无意义地调用 Lambda(而且,我会因以下原因而被收取费用)调用了 Lambda)。
所以我想过滤 DynamoDB Stream 事件,根据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"}} ] } ]}}'
Run Code Online (Sandbox Code Playgroud)
当然,我定义模式的方式不正确,并且出现错误。
那么,该模式该如何定义呢?
amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams