Lambda容器可以一次托管多个功能吗?

时间:2018-11-14 13:04:13

标签: amazon-web-services aws-lambda

是否可以将多个Lambda函数定义部署到同一容器实例?

我了解到,给定的Lambda容器一次最多只能执行一个功能,但是想了解功能与宿主容器之间的组成关系。

例如,在具有AWS Toolkit扩展的Visual Studio的无服务器应用程序项目类型中,可以在单个项目中定义多个功能,但是这些功能是否通过CloudFormation部署到了单独的容器或代表项目的单个容器中?

4 个答案:

答案 0 :(得分:1)

我认为分离出该过程可能会有所帮助:

  • lambda 部署是代码的zip文件和匹配的配置。对于无服务器应用程序项目类型,当一个项目具有多个lambda函数时,您将创建多个部署。
  • lambda 实例容器内部托管的部署的运行版本。容器中仅允许一个lambda实例,这是AWS保证。这意味着您永远无法在当前正在运行的实例(您的实例或其他任何实例的实例)之外访问代码/内存/文件

作为优化,AWS 确实通过冻结和解冻容器来重新使用实例。这是因为启动一个全新的容器,复制部署以及执行部署的初始化代码(称为冷启动)是很昂贵的。

答案 1 :(得分:0)

没有关于此事的正式文件,但我将分享我过去几年从Docs / Posts / Conferences中收集的信息:

Lambda函数是容器化服务之上的“框架”(或类似的东西,只是我能想到的那个词,也是我从AWS代表那里听到的唯一词)。

您可以假设容器实例(使用实例,如在ECS中使用的实例,是一台主机)是相同的,请记住有一些数据库连接池的解决方法以及喜欢,但没人能保证。

答案 2 :(得分:0)

CloudFormation会将功能部署到相同的AWS账户。这是在AWS用户帐户级别发生的。它没有运行功能。

Lambda由事件驱动,仅在被触发时运行。就用户体验而言,每个Lambda实例都是独立的,并在触发时“部署在其自己的容器中”。

也许在抽象层之下正在发生更深层次的事情,但这就是您将经历的方式。

答案 3 :(得分:0)

我通过使用ExpressJS + NodeJS做到了这一点。每个函数都是不同的ExpressJS路由。但是,到目前为止,我还无法使用Spring Cloud Function做到这一点。