Aktualisieren der DynamoDB-Tabelle mit einem Lambda
Ich habe versucht, eine Lambda-Funktion zu implementieren, die als Auslöser für ein MODIFYEreignis in einer DynamoDB-Tabelle basiert . Dieser Trigger sollte verwendet werden, um die Tabelle basierend auf Berechnungen, die für die neuen Einträge durchgeführt wurden, weiter zu ändern. Da dies jedoch auch ein 'MODIFY'-Ereignis wäre, würde es das Lambda erneut auslösen, was zu unendlichen Auslösern von Lambda-Funktionen führen könnte.
Wie kann verhindert werden, dass das Lambda unendlich ausgelöst wird?
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;
};
Hier der Code, den ich in Lambda verwende, der durch ein Dynamodb-Ereignis ausgelöst wird
Antworten
Eine einfache Lösung besteht darin, Lambda zu kennzeichnen, wenn der Datensatz nicht mehr geändert werden soll
Diese Lösung hängt von Ihrem tatsächlichen Anwendungsfall ab und davon, ob Sie eine bestimmte Bedingung speichern können, dass der aktuelle Datensatz nicht mehr verarbeitet werden soll
Manchmal kann es eine einfache Eigenschaft sein, wie z
- Verarbeitet = wahr
- LastProcessTime = 1602232746
direkt in den Datensatz gespeichert
Schauen Sie sich auch andere Diskussionen dazu an
https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/
DynamoDB-Streams - Schreiben Sie Daten zurück in die Tabelle