Lambda事件过滤DDB触发器:如何同时匹配OldImage和NewImage的DriftResult条件?
解决DynamoDB事件过滤的逻辑与匹配问题
你当前的过滤规则未明确指定**逻辑与(AND)**关系,导致EventBridge仅匹配NewImage的条件,忽略了OldImage的约束。要实现同时满足两个条件的过滤,必须使用$and操作符将两个子条件包裹,明确要求事件同时符合所有规则。
正确的过滤规则
{ "$and": [ { "dynamodb": { "NewImage": { "DriftResult": { "BOOL": [true] } } } }, { "dynamodb": { "OldImage": { "DriftResult": { "BOOL": [false] } } } } ] }
规则说明
这个配置会严格筛选同时满足以下两个条件的DynamoDB事件:
NewImage中的DriftResult字段值为trueOldImage中的DriftResult字段值为false
额外优化(可选)
由于只有**更新操作(MODIFY)**才会包含OldImage,插入(INSERT)或删除(REMOVE)事件不会携带该字段。如果你的场景仅关注更新操作,可以添加eventName过滤,让规则更严谨:
{ "$and": [ { "eventName": ["MODIFY"] }, { "dynamodb": { "NewImage": { "DriftResult": { "BOOL": [true] } } } }, { "dynamodb": { "OldImage": { "DriftResult": { "BOOL": [false] } } } } ] }
内容的提问来源于stack exchange,提问作者Yash Jain
相关产品推荐
相关产品推荐

