การอัปเดตตาราง DynamoDB โดยใช้ Lambda

Oct 09 2020

ฉันพยายามใช้ฟังก์ชัน Lambda โดยใช้เป็นทริกเกอร์ของMODIFYเหตุการณ์บนตาราง DynamoDB ทริกเกอร์นี้จะถูกใช้เพื่อแก้ไขตารางเพิ่มเติมตามการคำนวณที่ดำเนินการในรายการใหม่ แต่เนื่องจากนี่จะเป็นเหตุการณ์ 'MODIFY' มันจะทำให้แลมด้าอีกครั้งซึ่งอาจเริ่มต้นของทริกเกอร์ฟังก์ชันแลมด้าที่ไม่มีที่สิ้นสุด

จะหยุดแลมด้าไม่ให้ถูกทริกเกอร์ได้อย่างไร?

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

นี่คือรหัสที่ฉันใช้ในแลมบ์ดาซึ่งถูกเรียกโดยเหตุการณ์ dynamodb

คำตอบ

1 qkhanhpro Oct 09 2020 at 15:40

วิธีแก้ไขง่ายๆคือแสดงว่า Lambda ไม่ต้องแก้ไขบันทึกอีกต่อไป

โซลูชันนี้ขึ้นอยู่กับกรณีการใช้งานจริงของคุณและหากคุณสามารถบันทึกเงื่อนไขบางประการที่ไม่ควรประมวลผลบันทึกปัจจุบันอีกต่อไป

บางครั้งอาจเป็นคุณสมบัติง่ายๆเช่น

  • ประมวลผล = จริง
  • LastProcessTime = 1602232746

บันทึกลงในบันทึกโดยตรง

ชำระเงินการสนทนาอื่น ๆ เกี่ยวกับเรื่องนี้ด้วย

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

สตรีม DynamoDB - เขียนข้อมูลกลับลงในตาราง