Aws lambda 三个lambda函数定义的差异(handler.js)

Aws lambda 三个lambda函数定义的差异(handler.js),aws-lambda,serverless-framework,Aws Lambda,Serverless Framework,我在handler.js中看到了不同的骨架函数定义示例。在handler.js中 版本1:module.exports.handler=async(事件、上下文)=>{…} 版本2:module.exports.store=async event=>{…} 版本3:module.exports.store=(事件、上下文、回调)=>{…} 版本1和版本2的相似之处在于它们都被定义为异步函数,唯一的区别是参数的数量,但是为什么版本2可以完全忽略上下文?我假设API网关无论如何都会将上下文参数传递给

我在handler.js中看到了不同的骨架函数定义示例。在
handler.js中

  • 版本1:
    module.exports.handler=async(事件、上下文)=>{…}
  • 版本2:
    module.exports.store=async event=>{…}
  • 版本3:
    module.exports.store=(事件、上下文、回调)=>{…}
  • 版本1和版本2的相似之处在于它们都被定义为异步函数,唯一的区别是参数的数量,但是为什么版本2可以完全忽略上下文?我假设API网关无论如何都会将上下文参数传递给lambda函数,lambda函数怎么能不定义参数呢?(这不会在lambda调用期间导致运行时错误吗?)

    版本3是在一个完全不同的范例中定义的,即不是一个异步函数,我认为这是一个旧版本的无服务器框架生成的框架函数


    有人能给我一些指导吗?

    版本1/2和版本3的主要区别在于JS语法。版本1/2使用更现代的
    async/await
    语法。版本3较旧,并且使用回调。您可以在此处了解更多差异:

    正如您所指出的,版本1和版本2之间的唯一区别是
    上下文
    对象。这是由AWS提供的,包括有用的lambda特定属性和方法,如
    getRemainingTimeInMillis()
    ,它告诉您函数可以执行多长时间

    您可以在此处阅读更多有关内容:

    我得说,现在大多数人都在使用版本1