将 Deno 部署到 AWS Lambda
视频说明 跳转到标题
演示如何将 Deno 应用程序部署到 AWS Lambda(使用 Lambda 的社区运行时)。
文本和代码 跳转到标题
在 AWS Lambda 上运行 Deno 跳转到标题
在 AWS Lambda 上运行 Deno?当然可以。使用 AWS Lambda,无服务器定价可能比 VPS 更便宜,并且由于它可以在后台自动扩展,因此更易于维护。
为了实现这一点,我们将使用 `aws-lambda-adapter` 项目来确保我们的 Deno.serve
函数按预期运行。由于控制性、灵活性和一致性,这是将应用程序部署到 AWS Lambda 的常用方法。
如果您想了解更多关于这些注意事项的信息,博客上有一篇不错的文章。
让我们看看可以用于实现此目的的 Dockerfile
# Set up the base image
FROM public.ecr.aws/awsguru/aws-lambda-adapter:0.9.0 AS aws-lambda-adapter
FROM denoland/deno:bin-2.0.2 AS deno_bin
FROM debian:bookworm-20230703-slim AS deno_runtime
COPY --from=aws-lambda-adapter /lambda-adapter /opt/extensions/lambda-adapter
COPY --from=deno_bin /deno /usr/local/bin/deno
ENV PORT=8000
EXPOSE 8000
RUN mkdir /var/deno_dir
ENV DENO_DIR=/var/deno_dir
# Copy the function code
WORKDIR "/var/task"
COPY . /var/task
# Warmup caches
RUN timeout 10s deno -A main.ts || [ $? -eq 124 ] || exit 1
CMD ["deno", "-A", "main.ts"]
然后我们将构建 Docker 镜像。
docker build -t my-deno-project .
现在我们需要开始与 AWS 交互。如果这是您第一次使用 AWS,您可以创建一个账户:https://aws.amazon.com
如果您尚未安装 AWS CLI,也可以进行安装。您可以通过在终端或命令提示符中键入 aws
来判断是否已安装。如果返回错误,您可以使用 homebrew 安装,或者按照网站上的说明进行操作:https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
brew install awscli
然后您需要确保已通过 aws configure
进行设置。它所需的所有信息都可以在 AWS 控制台的安全凭证部分中找到。
使用 CLI 创建 ECR 跳转到标题
ECR 是一个注册服务,我们可以在其中推送 Docker 容器。
aws ecr create-repository --repository-name my-deno-project --region us-east-1 | grep repositoryUri
这将输出仓库的 URI:`"repositoryUri": "<<myuserid>>.dkr.ecr.us-west-1.amazonaws.com/my-deno-project",`
然后使用返回的 URI 登录
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <username>.dkr.ecr.us-east-1.amazonaws.com/my-deno-project
标记镜像
docker tag my-deno-project:latest <myProject>.dkr.ecr.us-east-1.amazonaws.com/my-deno-project:latest
然后将镜像推送到 ECR
docker push <myproject>.dkr.ecr.us-west-1.amazonaws.com/my-deno-project:latest
现在我们需要创建一个函数来托管我们的应用程序。
- https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/begin
- 将函数视为应用程序运行的地方
- 选择创建函数
- 选择容器镜像单选按钮
- 将函数命名为
tree-app
- 从“浏览容器”按钮中选择应用程序
- 在页面中部选择“配置”
- 选择
函数 URL
- 创建 URL
- 选择“无”使端点公开
- 选择“保存”
- 在浏览器中检查应用程序
关于 Lambda 函数,需要记住的一点是冷启动性能。冷启动发生在 AWS 需要初始化您的函数时,可能会导致轻微延迟。这里有一篇很酷的博客文章,介绍了 Deno 与其他工具的对比。
在熟悉的开发环境中,使用 Deno 结合 AWS Lambda 函数是快速启动应用程序的好方法。