Cập nhật bảng DynamoDB bằng Lambda
Tôi đang cố gắng triển khai một hàm Lambda dựa trên làm trình kích hoạt cho một MODIFYsự kiện trên bảng DynamoDB. Trình kích hoạt này đã được sử dụng để sửa đổi thêm bảng dựa trên các tính toán được thực hiện trên các mục nhập mới. Nhưng vì đây cũng sẽ là sự kiện 'SỬA ĐỔI' nên nó sẽ kích hoạt lambda một lần nữa, điều này có thể bắt đầu kích hoạt vô hạn các hàm lambda.
Làm cách nào để ngăn lambda được kích hoạt vô hạn?
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;
};
Đây là mã tôi đang sử dụng trong lambda được kích hoạt bởi một sự kiện dynamicodb
Trả lời
Một giải pháp đơn giản là biểu thị Lambda khi không thay đổi bản ghi nữa
Giải pháp này phụ thuộc vào trường hợp sử dụng thực tế của bạn và nếu bạn có thể lưu một điều kiện nhất định thì bản ghi hiện tại sẽ không được xử lý nữa
Đôi khi nó có thể là một thuộc tính đơn giản như
- Đã xử lý = true
- LastProcessTime = 1602232746
được lưu trực tiếp vào hồ sơ
Kiểm tra các cuộc thảo luận khác xung quanh điều này cũng
https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/
Luồng DynamoDB - ghi dữ liệu trở lại bảng