我正在使用Node.js Lambda函数创建一个AWS SAM应用程序。默认模板有一个异步处理程序函数:
exports.lambdaHandler = async (event, context) => {
// ...
return {
statusCode: 200,
body: JSON.stringify({ hello: "world" })
};
};
将这个处理程序函数设为async
和sync
有什么好处吗?因为我的理解是,每次调用Lambda函数时,它都会与其他实例分开运行?
AWS Lambda还处理同步函数和异步函数。async
意味着两件事:
- 函数返回一个
Promise
- 你可以在里面使用
await
AWS Lambda恰好将Promises理解为返回值,这就是为什么async
函数也能正常工作的原因。因此,如果您需要await
,请选择async
。
您也不能将函数声明为async
和return
为Promise
(或Promises链(
您可以使用非异步处理程序,但它仅在事件循环为空或函数超时时终止函数执行。
参考:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html