deno.com
本页内容

将 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 函数是快速启动应用程序的好方法。

示例页面和我们的 YouTube 频道上查找更多视频。

您找到所需内容了吗?

隐私政策