AWS Lambda 托管实例:无服务器的灵活性与 EC2 成本模型的完美结合

来源: InfoQ - 架构

原文

AWS Lambda托管实例(Lambda Managed Instances)是一项全新功能,允许客户在自己的Amazon EC2(Amazon Elastic Compute Cloud)实例上运行AWS Lambda函数。

据亚马逊云科技介绍,该功能使用户能够访问专用的计算选项,并为稳态工作负载实现成本优化,同时不牺牲无服务器(serverless)的开发体验。

亚马逊云科技的高级解决方案架构师Micah Walter解释说:

你可以使用Lambda托管实例来定义Lambda函数如何在EC2实例上运行。Amazon Web Services(AWS)会在你的账户中负责这些实例的设置与管理。你将能使用最新一代的Amazon EC2实例,而AWS则承担所有运维复杂性,包括实例生命周期管理、操作系统补丁、负载均衡和自动扩缩容。

在底层,AWS Lambda托管实例通过容量提供者(Capacity Providers)对EC2实例进行组织,这些提供者基于特定的计算特性(如实例类型和扩缩容参数)进行配置,可通过Lambda控制台或基础设施即代码(IaC)工具完成设置。

在此架构下,请求会被路由至预先配置好的执行环境,从而确保高效的资源利用率,显著减少冷启动,并支持多并发(multiconcurrency)。当流量激增时,AWS会自动启动新实例进行扩展;同时,内置的保护机制可防止资源过载,在无需手动配置或管理实例的前提下,维持无服务器的运维模型。

(图片来源:AWS新闻博客

通过Lambda托管实例,每个执行环境可同时处理多个请求,通过资源共享降低计算资源消耗。此外,用户还能利用Amazon EC2的定价模型,例如Savings Plans(节省计划)Reserved Instances(预留实例),相比按需(On-Demand)定价最高可节省72%的成本。

AWS无服务器领域专家(Serverless Hero)Luc van Donkersgoed在LinkedIn上评论说:

这是Lambda与EC2的一次疯狂融合!你现在可以选择EC2实例来托管Lambda函数,从而获得特定CPU型号和成本节省计划的支持。但请注意:这仅适用于稳态工作负载!

然而,一位Reddit用户在讨论中指出成本计算的复杂性:

AWS收取按需(on-demand)价格15%的费用用于管理你的实例,但如果你重写代码以支持多并发,并且不再按执行时长计费,就有可能节省成本。因此,运行时间较长的Lambda函数ROI更高。但要判断是否比直接在自有EC2上部署更省钱,感觉得请NASA来算这笔账。

在竞争格局方面,其他云厂商也提供函数即服务(FaaS)产品,如Azure Functions和Google Cloud Functions,均支持多种计算选项。Jelmer Cormont在LinkedIn上评论说:

我很好奇为什么微软Azure的营销这么差,以至于没人意识到:等等,这不就是自2016年起Azure Functions在专用App Service Pla上就已支持的功能吗?(确实如此!)

最后,用户可通过Lambda控制台、AWS CLI或AWS SDK(支持最新版Node.js、Java、.NET和Python运行时)使用Lambda托管实例。该功能目前已在以下区域上线:美国东部(北弗吉尼亚)、美国东部(俄亥俄)、美国西部(俄勒冈)、亚太地区(东京)和欧洲(爱尔兰)。

原文链接:

AWS Lambda Managed Instances: Serverless Flexibility Meets EC2 Cost Models