如何解决使用Lambda更新DynamoDB表
我正在尝试实现Lambda函数,以作为DynamoDB表上MODIFY
事件的触发器。该触发器将用于基于对新条目执行的计算来进一步修改表。但是由于这也是'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,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;
};
这是我在lamda中使用的由dynamodb事件触发的代码
解决方法
一个简单的解决方案是在不再更改记录时表示Lambda
此解决方案取决于您的实际用例,并且如果您可以保存某些条件,那就是不应再处理当前记录
有时它可以是一个简单的属性,例如
- 已处理=真
- LastProcessTime = 1602232746
直接保存到记录中
还请查看与此相关的其他讨论
https://www.reddit.com/r/aws/comments/7cvqsy/is_it_an_antipattern_to_write_to_dynamodb_from_a/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。