云计算与部署Serverless 与边缘
Serverless 与边缘
在 Lambda、Vercel、Cloud Run 与 Workers 上正确理解 Bun 的运行边界
最后更新于
平台矩阵
| 场景 | 可用方案 | 不要假设 |
|---|---|---|
| AWS Lambda | 官方 Bun 指南:容器镜像 + Lambda Web Adapter | 普通 Bun.serve 镜像无需适配就能接 Lambda 事件 |
| Google Cloud Run | 部署标准 Bun 容器并读取 PORT | 本地磁盘、单副本或常驻实例永远存在 |
| Vercel Functions | bunVersion 选择 Bun runtime,使用受支持框架 | Bun.serve、所有 Bun API 与 Node 原生包都已兼容 |
| Cloudflare Workers | Bun 安装依赖并运行 Wrangler | Worker 在线上由 Bun 执行;实际运行时是 workerd |
Vercel
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"bunVersion": "1.x"
}Vercel 的 Bun runtime 已于 2026 年中脱离 Beta(以 Vercel 官方文档为准)。Next.js 项目使用 ISR 时需把 dev/build 脚本改为 bun run --bun next ...,但应用仍由 Next.js 的构建链处理。不要在 Vercel Function 中启动 Bun.serve。完整步骤见 部署到 Vercel。
Cloudflare Workers
bun add -d wrangler
bunx wrangler dev
bunx wrangler deploy这些命令使用 Bun 管理和启动工具;部署后的 Worker 运行在 workerd。共享代码优先使用 Web 标准 API,并针对 Workers 单独测试兼容性。
AI 流式请求
Serverless AI 端点同时受模型、SDK、Bun HTTP 服务和平台四层超时约束:
- 将
AbortSignal从客户端传到模型 SDK,断连后停止上游生成。 - 给整次请求、每一步工具调用和外部检索分别设置预算。
- 若直接使用
Bun.serve,默认 10 秒空闲超时可能截断慢流;只对确需长流的请求调整,并保留总超时。 - 在目标平台验证首字节时间、最长执行时间、响应流、代理缓冲和客户端重连。
- POST 重试要有幂等键;工具调用与计费写入必须能去重。
冷启动不是唯一指标
同时测量冷启动、热请求、首 token、完整响应、内存峰值和错误率。单个 hello-world 启动时间不能代表 AI 工作负载的成本与吞吐。
官方参考:Bun on Lambda、Bun on Cloud Run、Bun on Vercel、Vercel Bun runtime、Cloudflare Wrangler。