返回

文章详情

AWS Lambda Web 函数

Hacker News2026年10月13日 10:07

今天,我们宣布了 AWS Lambda Web 函数,一种新型的功能形式,让您可以在 Lambda 上运行标准的 HTTP Web 应用,而无需将代码重写为事件处理程序。您可以使用 Express、Hono、Fastify、Next.js 或任何 Node.js 框架构建的标准端口监听服务器,使用单个命令进行部署,而 Lambda 会自动处理扩展、多区域分发和活跃的 CPU 计费。没有适配器,没有基础设施需要管理,也没有框架锁定。通过这个发布,AWS Lambda 现在提供三种不同的功能形式,每种形式都是基于相同的 Firecracker 隔离技术,并为不同的编程模型设计。 Lambda 事件函数是您已经知道的 Lambda 函数。它们使用事件驱动的单并发处理程序模型,并基于墙钟计费。我们引入了“事件函数”这个名称,以突出这种编程模型:您的函数接收一个事件,处理它并返回响应。事件驱动的编程模型非常适合事件处理、队列消费者和由其他 AWS 服务触发的调用。 Lambda Web 函数使用具有多并发执行和活跃 CPU 计费的 HTTP 原生编程模型。您的代码监听一个端口并处理标准的 HTTP 请求。这个编程模型非常适合 Web 应用程序、API 后端以及多个并发请求和 I/O 密集处理为常态的互动 HTTP 工作负载。 Lambda MicroVM 提供了隔离的、有状态的沙箱环境,具有客户管理的生命周期,用于运行不受信任或用户生成的代码。这三者是相辅相成的。一个应用程序可能使用事件函数进行异步后端处理,Web 函数作为面向用户的 API 和服务器端渲染层,而 MicroVM 用于交互式代码执行功能,所有这些都在同一 AWS 账户内,并共享相同的操作模型。 为什么选择 Web 函数 现代 Web 应用需要以快速、一致的响应时间为全球受众服务,同时给予开发人员使用标准框架和快速迭代的自由。今天构建这一点通常需要组装多个基础设施组件,配置多区域部署,设置基于延迟的路由,并调整计费模型以避免支付 I/O 等待的费用。开发人员通常发现自己在调整应用程序代码以适应特定的计算模型,而不是部署他们已经拥有的 HTTP 服务器。 Lambda Web 函数消除了这种复杂性。每个执行环境可以同时处理多个请求(每个环境最多 128 个并发请求),这意味着一波进来的流量可以共享温暖的环境,而不是将每个请求映射到一个新环境。Web 函数衡量您的代码使用的 CPU 时间,因此在数据库查询或 API 调用上等待的时间消耗的 CPU 很少。内存在执行环境存在期间被计量。对于像服务器端渲染、API 后端和 AI 推理端点流式传递令牌响应等 I/O 密集型 Web 工作负载,这可以降低计算成本。 让我们试试 为了开始,我编写了一个简单的 Express.js 服务器。这是我在本地使用 node index.js 运行的相同代码,无需任何特定于 Lambda 的适配器或包装器。import express from 'express'; const app = express(); const [host, port] = process.env.AWS_LAMBDA_HTTP_ENDPOINT.split(':'); app.get('/', (req, res) => { res.json({ message: 'Hello from Lambda Web Functions!' }); }); app.listen(port, host, () => { console.log(`Server running on port ${port}`); }); 本地运行的唯一不同之处在于 AWS_LAMBDA_HTTP_ENDPOINT 环境变量,它是 Lambda 设置的,指向您的服务器必须侦听的主机和端口。要在本地运行,您可以自己设置,例如 AWS_LAMBDA_HTTP_ENDPOINT=127.0.0.1:3000 node index.js 。准备好我的代码后,我使用 AWS 命令行界面(AWS CLI)进行了部署:aws lambda-web deploy --name my-web-app --code ./my-app 只需一条命令。无需提前设置资源。CLI 打包了我的源代码,创建了 Web 函数,发布了其第一个修订版本,附加了 Web 函数端点,并在不到一分钟的时间内返回一个实时 HTTPS URL。修订版本是我部署的代码的不可变快照。端点是路由流量到修订版本的 HTTPS URL,或在多个修订版本之间分配流量。这些是我用来迭代和控制流量如何迁移到新代码的资源。我立即进行了测试:$ curl https://<domain-id>.<shard-id>.lambda-web.us-east-1.on.aws/ {"message":"Hello from Lambda Web Functions!"} 接下来,我希望我的应用能够在欧洲和亚洲的用户中提供更低的延迟。所以我进行了多区域的重新部署:aws lambda-web deploy --name my-web-app --code ./my-app \ --regions us-east-1,eu-west-1,ap-northeast-1 Lambda Web 函数自动将我的代码复制到这三个区域,并自动配置基于延迟的路由。每个请求现在会根据调用者的最低延迟情况路由到相应的区域,尽力而为,通过

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡