Atualizando a tabela do DynamoDB usando um Lambda
Eu estava tentando implementar uma função Lambda baseada em como um gatilho para um MODIFYevento em uma tabela do DynamoDB. Esse gatilho deveria ser usado para modificar ainda mais a tabela com base nos cálculos realizados nas novas entradas. Mas como este também seria um evento 'MODIFY', ele acionaria o lambda novamente, o que poderia iniciar acionadores infinitos de funções lambda.
Como impedir que o lambda seja acionado infinitamente?
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;
};
Aqui, o código que estou usando em lambda, que é acionado por um evento dynamodb
Respostas
Uma solução simples é indicar ao Lambda quando não deve mais alterar o registro
Esta solução depende do seu caso de uso real e se você pode salvar uma determinada condição de que o registro atual não seja mais processado
Às vezes, pode ser uma propriedade simples, como
- Processado = verdadeiro
- LastProcessTime = 1602232746
salvo diretamente no registro
Verifique outras discussões sobre isso também
https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/
Streams do DynamoDB - escrever dados de volta na tabela