AWS Lambda:在Node运行时使用异步处理程序函数有好处吗



我正在使用Node.js Lambda函数创建一个AWS SAM应用程序。默认模板有一个异步处理程序函数:

exports.lambdaHandler = async (event, context) => {
// ...
return {
statusCode: 200,
body: JSON.stringify({ hello: "world" })
};
};

将这个处理程序函数设为asyncsync有什么好处吗?因为我的理解是,每次调用Lambda函数时,它都会与其他实例分开运行?

AWS Lambda还处理同步函数和异步函数。async意味着两件事:

  • 函数返回一个Promise
  • 你可以在里面使用await

AWS Lambda恰好将Promises理解为返回值,这就是为什么async函数也能正常工作的原因。因此,如果您需要await,请选择async

您也不能将函数声明为asyncreturnPromise(或Promises链(

如果要使用return和throw分别从函数处理程序发送响应或错误,请使用异步处理程序函数。

您可以使用非异步处理程序,但它仅在事件循环为空或函数超时时终止函数执行。

参考:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html

最新更新