【发布时间】:2018-06-15 15:46:41
【问题描述】:
我有一个由 SNS 触发的“主要”Lambda 函数。它从数据库中提取收件人列表,并且需要根据模板向每个收件人发送消息,替换名字等内容。
我的设置方式是我创建了另一个名为“email-send”的 Lambda 函数,该函数订阅了“email-send”主题。然后,“主”Lambda 循环遍历收件人列表并将消息发布到带有适当有效负载(来自、到、主题、消息)的“电子邮件发送”。这最终可能需要在一个批次中处理 1000 封电子邮件。
这是满足我要求的好方法吗?也许 Lambda/SNS 不可行?如果是的话,你会推荐什么。
使用此设置,当我的“main”函数完成运行并且不知何故“sns.publish”没有在我的循环中被触发时,我遇到了问题。我假设是因为我不会让它完成。但是我不确定如何解决它,因为它是一个循环。
这是我的 Lambda 函数的 sn-p:
exports.handler = (event, context, callback) => {
// code is here to pull data into "data" array
// process records
for (var i = 0; i < data.length; i++) {
var sns = new aws.SNS();
sns.publish({
Message: JSON.stringify({ from: data[i].from, to: data[i].to, subject: subject, body: body }),
TopicArn: 'arn:aws:sns:us-west-2:XXXXXXXX:email-send'
}, function(err, data) {
if (err) {
console.log(err.stack);
} else {
console.log('SNS pushed!');
}
});
}
context.succeed("success");
};
感谢您的帮助。
【问题讨论】:
-
您不需要 SNS 来调用另一个 Lambda 函数。只需使用 AWS API 调用它。
-
调用“email-send”lambda 函数是我最初的方法。但是我在循环之后遇到了同样的问题。想法?
标签: amazon-web-services lambda amazon-sns amazon-ses