Aggiornamento della tabella DynamoDB utilizzando un Lambda

Oct 09 2020

Stavo cercando di implementare una funzione Lambda basata su come trigger per un MODIFYevento su una tabella DynamoDB. Questo trigger doveva essere utilizzato per modificare ulteriormente la tabella in base ai calcoli eseguiti sulle nuove voci. Ma poiché questo sarebbe anche un evento "MODIFICA", attiverebbe di nuovo il lambda, che potrebbe avviare innescamenti infiniti di funzioni lambda.

Come impedire che lambda venga attivato all'infinito?

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;
};

Qui il codice che sto usando in lambda che viene attivato da un evento dynamodb

Risposte

1 qkhanhpro Oct 09 2020 at 15:40

Una soluzione semplice è indicare a Lambda quando non modificare più il record

Questa soluzione dipende dal tuo caso d'uso effettivo e se puoi salvare una certa condizione, il record corrente non deve essere più elaborato

A volte può essere una proprietà semplice come

  • Elaborato = vero
  • LastProcessTime = 1602232746

salvati direttamente nel record

Controlla anche altre discussioni su questo

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

Flussi DynamoDB: riscrivi i dati nella tabella