Mise à jour de la table DynamoDB à l'aide d'un Lambda

Oct 09 2020

J'essayais d'implémenter une fonction Lambda basée sur comme déclencheur d'un MODIFYévénement sur une table DynamoDB. Ce déclencheur devait être utilisé pour modifier davantage le tableau en fonction des calculs effectués sur les nouvelles entrées. Mais comme ce serait également un événement 'MODIFY', cela déclencherait à nouveau le lambda, ce qui pourrait démarrer des déclencheurs infinis de fonctions lambda.

Comment empêcher le lambda de se déclencher indéfiniment?

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

Voici le code que j'utilise dans lambda qui est déclenché par un événement dynamodb

Réponses

1 qkhanhpro Oct 09 2020 at 15:40

Une solution simple est de signifier Lambda quand il ne faut plus modifier l'enregistrement

Cette solution dépend de votre cas d'utilisation réel et de la possibilité de sauvegarder une certaine condition selon laquelle l'enregistrement actuel ne doit plus être traité

Parfois, il peut s'agir d'une propriété simple telle que

  • Traité = vrai
  • LastProcessTime = 1602232746

enregistré directement dans le dossier

Consultez également d'autres discussions à ce sujet

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

Flux DynamoDB - réécriture des données dans la table