如何创建自定义事件以在无服务器上触发函数



我有一个函数,每 5 分钟发出一个请求并获得一个结果数组。我想让这个数组中的每个项目调用另一个 lambda 单独处理。

如何创建自定义触发器以在接收此数组时调用函数?我正在使用带有无服务器框架的 Nodejs。

PS:如果我只是简单地为数组中的每个项目调用http,我如何动态获取另一个函数的url?

谢谢!

您应该能够使用 AWS 开发工具包通过调用方法调用 Lambda:

var params = {
FunctionName: "my-function", 
Payload: <Binary String>, 
Qualifier: "1"
};
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else     console.log(data);           // successful response
/*
data = {
Payload: <Binary String>, 
StatusCode: 200
}
*/
});

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property

这使您可以根据需要从当前函数中调用任意数量的 Lambda 函数。但是,我建议使用不同的技术,因为这不能很好地处理错误,并且假设您将始终使用唯一的 Lambnda 来处理小数组中的少量项目。更好的方法可以帮助更好地处理错误,因为我们可以更好地处理体积的增加。

在您的 serverless.yml 文件中,有一个处理列表中项目的函数由 SNS 触发(请在您的情况下正确命名(:

functions:
receiveItem:
handler: fileName.receiveItem
events:
- sns: recieveItem

然后在具有数组的 Lambda 中,将项目作为消息逐个添加到 SNS 主题中,然后您将让 Lambda 函数启动并处理它们。

相关内容

  • 没有找到相关文章

最新更新