Lambda 托管实例
Lambda 托管实例让您能够在当前代的 Amazon EC2 实例(包括 Graviton4、网络优化型实例以及其他专用计算选项)上运行 Lambda 函数,而无需管理实例生命周期、操作系统和语言运行时补丁修复、路由、负载均衡或扩展策略。使用 Lambda 托管实例,您可以受益于 EC2 的定价优势,包括 EC2 节省计划和预留实例。
要查看支持的实例类型列表,请前往 Amazon Lambda 定价
关键功能
Lambda 托管实例提供以下功能:
-
选择合适的实例:根据性能和成本要求(包括对最新 CPU(如 Graviton4)的访问权限、可配置的内存 CPU 比和高带宽网络)选择合适的实例
。 -
自动预置:Amazon 自动预置合适的实例并启动函数执行环境。
-
动态扩展:实例根据您的函数流量模式动态扩展。
-
完全托管的体验:Amazon 负责处理基础设施管理、扩展、补丁修复和路由,同时具备您熟悉的广泛事件源集成功能。
何时使用 Lambda 托管实例
对于以下使用案例,可以考虑使用 Lambda 托管实例:
-
高容量可预测工作负载:最适合没有意外流量峰值的稳定状态工作负载。默认情况下,Lambda 托管实例可扩展以处理五分钟内流量翻倍的情况。
-
性能关键型应用程序:可以访问最新的 CPU、不同的内存 CPU 比和高网络吞吐量
-
监管要求:精细治理需求,以及对 VPC 和实例置放的控制
-
各种应用程序:事件驱动型应用程序、媒体/数据处理、Web 应用程序以及迁移到无服务器架构的遗留工作负载
工作原理
Lambda 托管实例使用容量提供程序作为运行函数的基础:
-
创建容量提供程序:通过指定 VPC 配置以及可选的实例要求和扩展配置来定义函数的运行位置
-
创建您的函数:照常创建 Lambda 函数并将其附加到容量提供程序
-
发布函数版本:一旦发布,函数版本就会在容量提供程序实例上处于活动状态
当您使用容量提供程序发布函数版本时,Lambda 会在您的账户中启动托管实例。默认情况下,它会启动三个实例以实现可用区的容错功能,并在将您的函数版本标记为 ACTIVE 之前启动三个执行环境。如果您将一个函数附加到一个已运行其他函数的现有容量提供程序上,而此时可用的实例已经具备容纳新函数执行环境所需的容量,则 Lambda 可能不会启动新的实例。
并发模式
Lambda 托管实例支持多并发调用,即一个执行环境能够同时处理多个调用请求。这与 Lambda(默认)计算类型不同,后者采用的是单一并发模型,即一个执行环境每次最多只能运行一个调用。多并发操作能够更有效地利用您的底层 EC2 实例,对于像 Web 服务或批处理作业这类 I/O 密集型应用程序尤其有益。这种执行模式的更改意味着,必须根据运行时的不同对线程安全性、状态管理以及上下文隔离进行不同的处理。
租赁和隔离
Lambda(默认)计算类型为多租户类型,它利用 Firecracker microVM 技术来实现运行在共享 Lambda 实例集上的执行环境之间的隔离。Lambda 托管实例在您的账户中运行,以提供最新的 EC2 硬件和定价选项。托管实例使用运行在 EC2 Nitro 实例上的容器来提供隔离,而不是 Firecracker。容量提供程序充当 Lambda 函数的安全边界。函数在实例内的容器中执行。
了解托管实例
Lambda 托管实例函数在您的账户中的 EC2 托管型实例上运行。这些实例由 Lambda 完全托管,这意味着与标准 EC2 实例相比,您对它们的权限有限。您可以通过以下方式识别账户中的 Lambda 托管实例:
-
EC2
DescribeInstances输出中存在Operator字段 -
实例上的
aws:lambda:capacity-provider标签
您不能直接在这些实例上执行标准的 EC2 操作,例如手动终止它们。要销毁托管实例,请删除关联的容量提供程序。然后,作为容量提供程序删除过程的一部分,Lambda 将终止实例。
定价
Lambda 托管实例采用基于 EC2 的定价模式,除了 EC2 实例成本外,还将收取 15% 的管理费用。此定价模式支持 EC2 节省计划、预留实例以及适用于您的 EC2 使用量的任何其他定价折扣。有关更多详情,请参阅定价页面:https://aws.amazon.com/lambda/pricing/
重要提示:EC2 定价折扣仅适用于底层 EC2 计算费用,不适用于管理费。
Lambda 托管实例与 Lambda(默认)计算类型有何不同
与 Lambda(默认)相比,Lambda 托管实例改变了 Lambda 处理请求的方式。
主要区别:
| Lambda(默认) | Lambda 托管实例 | |
|---|---|---|
| 并发模式 | 单并发模型,其中一个执行环境一次最多能支持一个调用。 | 多并发调用,其中一个执行环境可以同时处理多个调用,这样尤其能够提高 IO 密集型应用程序的吞吐量 |
| 租赁和隔离 | 多租户类型利用 Firecracker microVM 技术实现运行在共享 Lambda 实例集上的执行环境之间的隔离 | 在您的账户中运行,以使用 EC2 Nitro 提供隔离。容量提供程序充当安全边界,且函数在实例内的容器中执行 |
| 定价模式 | 按请求持续时间定价 | 基于实例的定价,采用 EC2 定价模型,包括按需型实例和预留实例,以及计算类节省计划等节省选项 |
| 扩展行为 | 当没有可用的执行环境来处理传入的调用时(冷启动)进行扩展。在没有流量的情况下可扩缩至零 | 仅基于 CPU 资源利用率进行异步扩展,无需冷启动。在没有流量的情况下扩缩至配置的最小执行环境数 |
| 最适合 | 具有突发流量且能够承受一定冷启动时间的函数,或者负载不持续且能从扩缩至零中获益的应用程序。 | 当您想获得 EC2 的灵活性、定价计划和硬件选项时,适用于高容量可预测流量的函数 |