AWS - как передать данные таблицы DynamoDb в функцию Lambda - PullRequest
1 голос
/ 25 апреля 2019

Ниже указан мой клиент table в DynamoDb

name: string

Я связал триггер, который будет вызывать функцию Lambda, которая, в свою очередь, вызывает конечную точку моего приложения, которая будет выполнять преобразование данных и сохранять их в БД SQL

Всякий раз, когда я добавляю какую-либо запись или обновляю запись в приведенной выше таблице, я вижу, что вызывается лямбда-функция.но не уверен, как мне получить данные таблицы.

Мне нужно захватить значение name таблицы DynamoDb customer через функцию Lambda, которую я могу передать своей конечной точке.

Новичок в этом.Так что извините, если это слишком просто.Но я не смог найти информацию, которая могла бы мне помочь.

Спасибо!

1 Ответ

2 голосов
/ 25 апреля 2019

Ваша лямбда-функция получит Событие записи потоков DynamoDB (см. Использование AWS Lambda с Amazon DynamoDB для примера события).

Вы собираетесь отобразить/ Зацикливайтесь на клавише Records, где вы найдете объекты с eventName: INSERT.Внутри клавиши dynamodb вы найдете данные таблицы, которые вы должны обработать, в коде вашей функции Lamdba.

{
  "Records": [
    {
      "eventID": "1",
      "eventVersion": "1.0",
      "dynamodb": {
        "Keys": {
          "Id": {
            "N": "101"
          }
        },
        "NewImage": {
          "Message": {
            "S": "New item!"
          },
          "Id": {
            "N": "101"
          }
        },
        "StreamViewType": "NEW_AND_OLD_IMAGES",
        "SequenceNumber": "111",
        "SizeBytes": 26
      },
      "awsRegion": "us-west-2",
      "eventName": "INSERT",
      "eventSourceARN": eventsourcearn,
      "eventSource": "aws:dynamodb"
    }
  ]
}

В вашем случае данные должны быть расположены по адресу Records[0].dynamodb.NewImage.name.S

Если вы работаете с Node.js и смешанными типами в вашей таблице, я предлагаю использовать AWS.DynamoDB.Converter.unmarshall, которая преобразует запись DynamoDB в объект JavaScript.Это позволяет вам сделать что-то вроде этого:

const newImage = DynamoDB.Converter.unmarshall(event.Records[0].dynamodb.NewImage);
...