Dynamodb не запускается

Я создал таблицу Dynamodb и связал лямбда-функцию, которая будет запускаться при каждой записи

но тогда я написал 20 полей, но лямбда срабатывала только дважды

AWS Lambda не может обрабатывать 20 вызовов? Что здесь не так?


person Aditya Srinivas    schedule 24.10.2018    source источник
comment
Функция Lambda будет получать список событий при каждом вызове. Вы уверены, что функция не получила все 20 списков? Вы обновляете каждый раз разные записи? Похоже, вы обновили только 20 полей в одной записи?   -  person Mark B    schedule 24.10.2018
comment
Я уверен, у меня есть таблица пользователей, где идентификатор пользователя является первичным ключом, и каждая запись имеет некоторые детали и все такое. Каждый раз, когда детали меняются, она запускает лямбда-функцию, которая записывает определенные значения из измененной записи в другую таблицу. Я меняю 20 записей в таблице и получаю только 2 записи в новой таблице. Нет данных и в облачных часах.   -  person Aditya Srinivas    schedule 24.10.2018
comment
Наблюдение за 2 записями в новой таблице не гарантирует, что 20 событий не были сгенерированы. Покажите нам свой код лямбда-функции, по крайней мере, скелет, который обрабатывает события. Все 20 событий могли быть транслированы вам в 2-х лямбда-вызовах.   -  person jarmod    schedule 24.10.2018
comment
Мистер Джармод, вы были на месте !! Я не учел несколько событий, плохо, спасибо за указание Большое спасибо вам обоим   -  person Aditya Srinivas    schedule 24.10.2018


Ответы (1)


AWS Lambda опрашивает Dynamodbstream через фиксированный интервал времени и запускает вашу лямбда-функцию, передавая все записи в виде списка за один лямбда-вызов. Однако вы можете контролировать максимальный размер с помощью batchSize при создании лямбда-функции.

Вот пример вызова node.js для перебора списка записей

exports.lambda_handler = function(event, context, callback) {
    console.log(JSON.stringify(event, null, 2));
    event.Records.forEach(function(record) {
        console.log(record.eventID);
        console.log(record.eventName);
        console.log('DynamoDB Record: %j', record.dynamodb);
    });
    callback(null, "message"); 
};

См. https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-create-package.html для примера кода на других языках.

person avinash    schedule 25.10.2018