Обновление таблицы DynamoDB с помощью Lambda

Oct 09 2020

Я пытался реализовать лямбда-функцию, основанную на триггере 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

Ответы

1 qkhanhpro Oct 09 2020 at 15:40

Простое решение - указать лямбду, когда больше не нужно изменять запись.

Это решение зависит от вашего фактического варианта использования, и если вы можете сохранить определенное условие, что текущая запись больше не должна обрабатываться

Иногда это может быть простое свойство, например

  • Обработано = true
  • LastProcessTime = 1602232746

сохраняется прямо в записи

Также ознакомьтесь с другими обсуждениями этого вопроса

https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/

Потоки DynamoDB - запись данных обратно в таблицу