使用 Lambda 更新 DynamoDB table

Updating DynamoDB table using a Lambda

我试图在 DynamoDB table 上实现一个基于作为 MODIFY 事件触发器的 Lambda 函数。此触发器用于根据对新条目执行的计算进一步修改 table。但由于这也是一个 'MODIFY' 事件,它会再次触发 lambda,这可能会开始无限触发 lambda 函数。

如何阻止 lambda 被无限触发?

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

这是我在 lambda 中使用的代码,由 dynamodb 事件触发

一个简单的解决方案是在不再更改记录时指示 Lambda

此解决方案取决于您的实际用例,如果您可以保存某个条件,则不应再处理当前记录

有时可以是简单的属性比如

  • 已处理 = 真
  • 上次处理时间 = 1602232746

直接保存到记录中

还可以查看有关此问题的其他讨论

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