Lambda对DynamoDB的事件过滤-事件名称INSERT不起作用

0

【以下的问题经过翻译处理】 我将DynamoDB设置为我的Lambda函数的触发器,并使用以下过滤条件,但不起作用。

{"event_name": ["INSERT"]}

我阅读了一些正确编写过滤器的示例,但它仍未触发Lambda。此外,我的Lambda fn的详细信息如下所示。

“key”来自哪里,它代表我传递给处理程序的“Event”中的什么?

下面是我的“Event”样式;

Event {
    records:[
        EventRecord {
            change:StreamRecord {
                approximate_creation_date_time:___
                keys:{“id”:String(“___”)},
                new_image:{
                    ....
                    “valid”:Boolean(true),
                },
               ...
            },
            ...
            event_name:“INSERT”,
            event_source:Some(“aws:dynamodb”),
            table_name:None
        }
    ]
}

其他令我困扰的问题,例如看到“table_name”为空,因为触发器特别在更改特定的现有表中的数据时调用。

profile picture
专家
已提问 8 个月前17 查看次数
1 回答
0

【以下的回答经过翻译处理】 如您所见此处,Lambda 接收到的事件如下:

{
  "eventID": "c9fbe7d0261a5163fcb6940593e41797",
  "eventName": "INSERT",
  "eventVersion": "1.1",
  "eventSource": "aws:dynamodb",
  "awsRegion": "us-east-2",
  "dynamodb": {
    "ApproximateCreationDateTime": 1664559083.0,
    "Keys": {
      "SK": { "S": "PRODUCT#CHOCOLATE#DARK#1000" },
      "PK": { "S": "COMPANY#1000" }
    },
    "NewImage": {
      "quantity": { "N": "50" },
      "company_id": { "S": "1000" },
      "fabric": { "S": "Florida Chocolates" },
      "price": { "N": "15" },
      "stores": { "N": "5" },
      "product_id": { "S": "1000" },
      "SK": { "S": "PRODUCT#CHOCOLATE#DARK#1000" },
      "PK": { "S": "COMPANY#1000" },
      "state": { "S": "FL" },
      "type": { "S": "" }
    },
    "SequenceNumber": "700000000000888747038",
    "SizeBytes": 174,
    "StreamViewType": "NEW_AND_OLD_IMAGES"
  },
  "eventSourceARN": "arn:aws:dynamodb:us-east-2:111122223333:table/chocolate-table-StreamsSampleDDBTable-LUOI6UXQY7J1/stream/2022-09-30T17:05:53.209"
}

由于您只需要插入操作,您的筛选模式应如下所示:

{ "eventName": ["INSERT"]}

在您的情况下,您指定了event_name

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则