我已经通过web接口以JSON格式向DynamoDB触发器添加了筛选条件:第一个:
{"eventName": [ "MODIFY" ]}
第二个
{"dynamodb":{"NewImage":{"answer":{"S":["Example"]}}}}
我还试着检查答案是否存在(作为答案的替代测试==示例(
{"dynamodb":{"NewImage":{"answer":[{"exists":true}]}}}
我在日志中看到lambda是为json执行的,其中answer不是"Example"或根本不存在
过滤器不工作的可能原因是什么?
活动部分:
{
"Records": [
{
"eventID": "....",
"eventName": "MODIFY",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "eu-central-1",
"dynamodb": {
"ApproximateCreationDateTime": 1661168370,
"Keys": {
"id": {
"S": "...."
}
},
"NewImage": {
"createdAt": {
"S": "2022-08-22T09:52:39.891Z"
},
"answer": {
"S": "AUT"
},
....
这可能会让您失望,不幸的是,这不是您的错,而是Lambda触发器的异步行为问题。为触发器注册过滤器的底层微服务,在第一次注册事件过滤器时,似乎会删除事件过滤器。
我希望aws-lambda团队能够赶上积压的工作并修复这个错误。
现在是解决方案
遵循以下步骤:
- 删除当前触发器。(将其从lambda函数控制台中删除(
- 从同一个表中添加新的触发器,并为筛选器添加其他设置。(我尝试了如下的属性过滤(
{"dynamodb": {"NewImage": {"answer": {"S": ["Example"]}}}}
- 部署和测试