AWS lambda无服务器是否像支持一次性功能一样支持应用程序的安装?

问题描述

我了解使用 AWS Lambda 允许我们将单个函数提交到运行时并在需要时让它们执行。但是这些功能所依赖的软件呢?这些在哪里安装?每次 lambda 实例启动时都会进行安装和配置吗?对于较大的应用程序/详细配置,这会不会花费一些时间?

或者安装的软件是否位于服务器上(比如在 EC2 实例上),然后根据 lambda 函数的需要简单地调用

解决方法

基本上有两种方法可以管理 Lambda 函数的依赖项。

  1. 使用 lambda 层:Lambda 层是包含附加代码(例如库、依赖项甚至自定义运行时)的存档。当您在函数中包含一个层时,其内容将被提取到执行环境中的 /opt 目录中。每个函数最多可以包含五个层,这计入标准 Lambda 部署大小限制。查看at this article了解更多详情。

  2. 使用容器镜像:您可以使用 Docker 命令行界面 (CLI) 等工具将代码和依赖项打包为容器镜像。然后,您可以将映像上传到您在 Amazon Elastic Container Registry (Amazon ECR) 上托管的容器注册表。请参阅官方文档 here

因为 Lambda 可以缩放到零,所以它受到所谓的 cold star issues 的影响。这意味着除非有一个热的、正在运行的容器实例可用,否则 Lambda 必须“冷启动”一个新容器,这会导致一些延迟,尤其是对于占用空间大的应用程序堆栈,例如基于 JVM 的。

最好的,斯蒂芬