Lambda kullanarak DynamoDB tablosunu güncelleme
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
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