我目前有一个AWS Lambda函数正在更新DynamoDB表,并且我需要另一个Lambda函数,该函数需要在数据更新后运行。在这种情况下,使用DynamoDB触发器而不是使用第一个Lambda调用第二个Lambda有什么好处?
看起来,编程调用可以让我更好地控制Lambda的调用时间(即,在调用之前我可以等待多个更新发生),并且从DynamoDB Stream进行读取会花费金钱,而仅调用Lambda不会。
那么,在这里使用触发器有好处吗?还是我最好自己调用Lambda?
答案 0 :(得分:2)
数据更新后,您可以发布SQS消息,然后添加触发器以配置另一个功能以在Lambda控制台中从Amazon SQS读取,创建一个SQS触发器。
创建触发器
打开Lambda控制台的“功能”页面。
选择一个功能。
在Designer下,选择“添加触发器”。
选择触发器类型。
配置必需的选项,然后选择“添加”。
Lambda支持以下Amazon SQS事件源选项。
事件源选项
答案 1 :(得分:2)
DynamoDB Stream似乎是更好的做法,因为:
P.S。您当然可以通过简单的设置从DynamoDB流中直接进行批处理。您没有义务为每个写操作调用后处理器。
答案 2 :(得分:0)
var QUEUE_URL = 'https://sqs.us-east-1.amazonaws.com/{AWS_ACCUOUNT_}/matsuoy-lambda';
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'us-east-1'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
请不要忘记将另一个函数的触发器添加到此SQS主题。该功能将接收自动处理的SQS消息。