Memperbarui tabel DynamoDB menggunakan Lambda

Oct 09 2020

Saya mencoba untuk mengimplementasikan fungsi Lambda berdasarkan sebagai pemicu MODIFYperistiwa di tabel DynamoDB. Pemicu ini akan digunakan untuk memodifikasi tabel lebih lanjut berdasarkan kalkulasi yang dilakukan pada entri baru. Tetapi karena ini juga akan menjadi peristiwa 'MODIFY', ini akan memicu lambda lagi, yang mungkin memulai pemicu tak terbatas dari fungsi lambda.

Bagaimana cara menghentikan lambda agar tidak terpicu tanpa batas?

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

Di sini kode yang saya gunakan di lambda yang dipicu oleh acara dynamodb

Jawaban

1 qkhanhpro Oct 09 2020 at 15:40

Solusi sederhana adalah memberi tahu Lambda kapan tidak akan mengubah catatan lagi

Solusi ini bergantung pada kasus penggunaan Anda yang sebenarnya dan jika Anda dapat menyimpan kondisi tertentu, rekaman saat ini tidak akan diproses lagi

Terkadang itu bisa menjadi properti sederhana seperti

  • Diproses = benar
  • LastProcessTime = 1602232746

disimpan langsung ke dalam catatan

Lihat juga diskusi lain seputar ini

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

Aliran DynamoDB - tulis data kembali ke dalam tabel