AWS 推出了 Lambda Web Functions,开发者可以把用 Express、Hono 这类框架写的 Node.js Web 应用直接部署到 Lambda 上,不需要适配层。AWS 高级解决方案架构师 Micah Walter 给出的说法是:拿一个标准的监听端口服务器,用一条命令部署,Lambda 自动处理扩缩容、多区域分发和活跃 CPU 计费。

打开网易新闻 查看精彩图片

这套能力的几个关键点:

  • 支持并发 HTTP 请求和响应流式输出
  • 计费按活跃 CPU 时间和内存,等待下游服务时的 CPU 时间不计入
  • 多区域路由把请求导向最近的区域
  • 单个热执行环境可处理多个并发请求,明显减少冷启动

原有的 Lambda 函数现在被称为 Lambda Event Functions,不需要做任何改动。端点默认使用 Lambda 提供的域名;要用自定义域名、边缘缓存或 AWS WAF,可以在前面挂 Amazon CloudFront,把 Lambda Web Functions 作为源站。

目标负载是 HTTP 类工作,包括全栈 Web 应用、REST 和 GraphQL API,以及独立扩缩容的微服务。服务端渲染和流式响应也在支持范围内,比如大语言模型的增量输出,不需要再单独搭一层托管。

目前只支持 Node.js。Python、Java、.NET 等其他语言仍然走传统 Lambda 函数。今年早些时候 AWS 还推出过 Lambda MicroVMs,为运行不可信或用户生成的代码提供隔离、有状态的沙箱环境,生命周期由客户管理。

Julian Wood、Kim Wendt 和 Samrat Karak 在《Exploring AWS Lambda Web Functions for Building Web Applications》一文中搭了一个示例应用,演示一个执行环境如何同时处理大量请求,以及应用如何面向全球用户提供服务。他们的总结是:写一个标准的 Node.js HTTP 服务器,用一条命令或 CloudFormation 部署,就得到一个可扩缩、按用量付费、自带全球路由的 HTTPS 端点。

Reddit 和 Hacker News 上的社区反应总体正面,集中在更简单的编程模型和对并发请求的支持上。讨论中也提出了 Python 支持的问题,以及这项服务与现有替代方案的区别。用户 magnetik79 的评论是:很多负载现在可以完全跳过 API Gateway,这改变了当前 Lambda 的 HTTP 编程模型——不再是一个调用对应一个请求,可能需要考虑同步和互斥。

AWS 首席开发者倡导者 Eric Johnson 在《Why I'm Excited About AWS Lambda Web Functions》中强调,Lambda Web Functions 无需修改就能运行标准 HTTP 服务器和框架,通过单一托管端点支持 REST、服务器发送事件、流式响应、RPC、Webhook 和 IAM 认证。

AWS 不是唯一提供这种模式的云厂商。Google Cloud Run 和 Azure Container Apps 同样支持无需适配层的 Web 应用、缩容到零和可配置并发,适合间歇性或突发流量的负载。

计费基于活跃 CPU 时间和内存使用,对花时间等待数据库或 API 的负载可能降低成本;内存按执行环境的整个生命周期计费。这种模式可能对 I/O 密集型负载有利,例如服务端渲染、API 后端和流式 AI 推理。服务目前在美国弗吉尼亚北部、俄亥俄、俄勒冈、东京和爱尔兰五个区域可用。