在 AWS Lambda 上部署 Bun 应用
AWS Lambda 是一项无服务器计算服务,允许您无需配置或管理服务器即可运行代码。
本指南使用 Dockerfile 将 Bun HTTP 服务器部署到 AWS Lambda。
- 创建新的 Dockerfile
在项目根目录中创建一个新的
Dockerfile。此文件包含初始化容器、将本地项目文件复制到容器中、安装依赖项以及启动应用的指令。Dockerfile# Use the official AWS Lambda adapter image to handle the Lambda runtime FROM public.ecr.aws/awsguru/aws-lambda-adapter:1.0.1 AS aws-lambda-adapter # 使用官方 Bun 镜像来运行应用 FROM oven/bun:debian AS bun_latest # 将 Lambda 适配器复制到容器中 COPY --from=aws-lambda-adapter /lambda-adapter /opt/extensions/lambda-adapter # 设置端口为 8080,AWS Lambda 适配器需要此端口 ENV PORT=8080 # 设置工作目录为 `/var/task`,这是 Lambda 的默认工作目录 WORKDIR "/var/task" # 复制 package.json 和 bun.lock 到容器中 COPY package.json bun.lock ./ # 安装依赖 RUN bun install --production --frozen-lockfile # 复制其余应用文件到容器中 COPY . /var/task # 运行应用 CMD ["bun", "index.ts"]在项目根目录中创建一个新的
.dockerignore文件。此文件列出要从容器映像中_排除_的文件和目录,例如node_modules。排除这些文件和目录可以加快构建速度并减小映像体积:.dockerignorenode_modules Dockerfile* .dockerignore .git .gitignore README.md LICENSE .vscode .env # 任何其他想排除的文件或目录 - 构建 Docker 镜像
确保您位于包含
Dockerfile的目录中,然后构建 Docker 镜像。本示例将镜像命名为bun-lambda-demo,并将标签设置为latest。terminal# cd /path/to/your/app docker build --provenance=false --platform linux/amd64 -t bun-lambda-demo:latest . - 创建 ECR 仓库
推送镜像之前,请创建一个用于存放镜像的 ECR 仓库。
以下命令:
- 在
us-east-1区域中创建名为bun-lambda-demo的 ECR 仓库 - 将仓库 URI 导出为环境变量。导出是可选的,但可以让后续步骤更加简单。
terminalexport ECR_URI=$(aws ecr create-repository --repository-name bun-lambda-demo --region us-east-1 --query 'repository.repositoryUri' --output text) echo $ECR_URIText[id].dkr.ecr.us-east-1.amazonaws.com/bun-lambda-demo - 在
- 认证登录 ECR 仓库
登录到 ECR 仓库:
terminalaws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ECR_URITextLogin Succeeded - 标记 Docker 镜像并将其推送到 ECR 仓库
确保您位于包含
Dockerfile的目录中,然后使用 ECR 仓库 URI 为 Docker 镜像添加标签。terminaldocker tag bun-lambda-demo:latest ${ECR_URI}:latest接着,将镜像推送到 ECR 仓库。
terminaldocker push ${ECR_URI}:latest - 创建 AWS Lambda 函数
- 选择容器映像
前往 容器映像 URI 部分,然后点击 浏览映像。选择您推送到 ECR 仓库的镜像。

然后选择
latest镜像并点击 选择映像。
- 配置函数
要获取函数的公共 URL,请前往 其他配置 > 网络 > 函数 URL。
将其设置为 启用,认证类型选择 NONE。

- 创建函数
点击页面底部的 创建函数。

- 获取函数 URL
函数创建完成后,您会被重定向到其页面。函数 URL 位于 “函数 URL” 部分。

- 测试函数
您的应用现在已经上线。要测试该函数,可以前往 测试 选项卡,或直接调用函数 URL。
terminalcurl -X GET https://[your-function-id].lambda-url.us-east-1.on.aws/TextHello from Bun on Lambda!
