Обновление таблицы DynamoDB с помощью Lambda
Я пытался реализовать лямбда-функцию, основанную на триггере MODIFYсобытия в таблице DynamoDB. Этот триггер должен был использоваться для дальнейшего изменения таблицы на основе вычислений, выполненных для новых записей. Но поскольку это также будет событие «ИЗМЕНИТЬ», оно снова вызовет лямбда-функцию, которая может запустить бесконечные триггеры лямбда-функций.
Как сделать так, чтобы лямбда не срабатывала бесконечно?
var AWS = require('aws-sdk');
// extra
const docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event , context , callback) => {
// TODO implement
event.Records.forEach((record) => {
console.log('Stream record: ', JSON.stringify(record, null, 2));
// logic to find insert type / modify type
if(record.eventName == 'MODIFY'){
// extract student id, and marks from event itself (save I/O)
console.log("Printing new image values",JSON.stringify(record.dynamodb.NewImage,null,2));
// modify the same record once new value is calculated
//############# method to modify /update dynamo db #################
//############# end code ###############
}
});
console.log(event);
const response = {
statusCode: 200,
body: JSON.stringify(event),
};
return response;
};
Вот код, который я использую в лямбде, который запускается событием Dynamodb
Ответы
Простое решение - указать лямбду, когда больше не нужно изменять запись.
Это решение зависит от вашего фактического варианта использования, и если вы можете сохранить определенное условие, что текущая запись больше не должна обрабатываться
Иногда это может быть простое свойство, например
- Обработано = true
- LastProcessTime = 1602232746
сохраняется прямо в записи
Также ознакомьтесь с другими обсуждениями этого вопроса
https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/
Потоки DynamoDB - запись данных обратно в таблицу