Lambda kullanarak DynamoDB tablosunu güncelleme

Oct 09 2020

MODIFYDynamoDB tablosundaki bir olaya tetikleyici olarak dayalı bir Lambda işlevi uygulamaya çalışıyordum . Bu tetikleyici, yeni girişler üzerinde gerçekleştirilen hesaplamalara dayalı olarak tabloyu daha fazla değiştirmek için kullanılacaktı. Ancak bu aynı zamanda bir 'DEĞİŞTİR' olayı olacağından, lambda'yı tekrar tetikleyecektir, bu da lambda işlevlerinin sonsuz tetikleyicilerini başlatabilir.

Lambda'nın sonsuz tetiklenmesini nasıl durdururuz?

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

Burada lambda'da bir dinamodb olayı tarafından tetiklenen kullandığım kod

Yanıtlar

1 qkhanhpro Oct 09 2020 at 15:40

Basit bir çözüm, artık kaydı değiştirmediğinizde Lambda'yı belirtmektir.

Bu çözüm, gerçek kullanım durumunuza bağlıdır ve mevcut kaydın artık işlenmemesi için belirli bir koşulu kaydedebilirseniz

Bazen aşağıdaki gibi basit bir özellik olabilir

  • İşlendi = doğru
  • LastProcessTime = 1602232746

doğrudan kayda kaydedildi

Bununla ilgili diğer tartışmalara da göz atın

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

DynamoDB akışları - verileri tabloya geri yazın