多个Lambda函数定义是否可以部署到同一个容器实例中?
我了解给定的Lambda容器一次只能执行最多一个函数,但想要了解函数和主机容器之间的组合关系。
例如,在使用AWS Toolkit扩展的Visual Studio的无服务器应用项目类型中,可以在单个项目中定义多个函数,但是这些函数通过CloudFormation部署到单独的容器还是代表项目的单个容器中?
多个Lambda函数定义是否可以部署到同一个容器实例中?
我了解给定的Lambda容器一次只能执行最多一个函数,但想要了解函数和主机容器之间的组合关系。
例如,在使用AWS Toolkit扩展的Visual Studio的无服务器应用项目类型中,可以在单个项目中定义多个函数,但是这些函数通过CloudFormation部署到单独的容器还是代表项目的单个容器中?
我认为将过程分开可能会有所帮助:
作为优化,AWS通过冻结和解冻容器来重复使用实例。这是因为启动新容器、复制部署并执行部署的init代码(称为冷启动)非常昂贵。
我使用ExpressJS+NodeJS完成了这个功能。每个函数都是一个不同的ExpressJS路由。然而,到目前为止我还没有能够用Spring Cloud Function实现它。
关于这个问题没有官方文件,但我会分享我过去几年从文档/帖子/会议中收集到的信息:
Lambda函数是建立在容器化服务之上的“框架”(或类似的东西,只是这个词是我能想到的最接近的词,并且是我从AWS代表那里听到的唯一一个)。每次调用Lambda函数时都会运行一个容器(它可以是现有的一个,被搁置 - 增加性能提升,或者是一个全新的容器,你永远不知道它是哪一个。)
你可以假设容器实例(使用ECS中使用的实例作为主机机器)是相同的,考虑到有一些针对DB连接池等问题的解决方法,但没有人保证这一点。
CloudFormation将把函数部署到同一AWS账户中。这是在AWS用户帐户级别上发生的。它不会运行函数。
Lambda是事件驱动的,只有在触发时才运行。每个Lambda实例都是独立的,就用户体验而言,当触发时会“在自己的容器中部署”。
也许在抽象层下面会发生更深入的事情,但这就是您的体验方式。