deno.com
在当前页面

将 Deno 部署到 AWS Lambda

视频描述 Jump to heading

展示如何将 Deno 应用程序部署到 AWS Lambda(使用 Lambda 的社区运行时)。

文字稿和代码 Jump to heading

在 AWS Lambda 上运行 Deno Jump to heading

在 AWS Lambda 上运行 Deno?当然可以。使用 AWS Lambda,无服务器定价可能比 VPS 更便宜,并且由于它可以自动扩展,因此更容易维护。

为了实现这一点,我们将使用 aws-lambda-adapter 项目来确保我们的 Deno.serve 函数按预期运行。这是部署到 AWS Lambda 的流行方法,因为它提供了控制、灵活性和一致性。

如果你想了解更多关于这些考虑因素的内容,博客上有一篇不错的文章。

让我们看一下可以用来实现这一点的 Dockerfile:

# 设置基础镜像
FROM public.ecr.aws/awsguru/aws-lambda-adapter:0.8.4 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

# 复制函数代码
WORKDIR "/var/task"
COPY . /var/task

# 预热缓存
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 Jump to heading

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

现在我们需要创建一个函数来托管我们的应用:

使用 Lambda 函数时需要注意的一点是冷启动性能。当 AWS 需要初始化你的函数时,会发生冷启动,这可能会导致轻微的延迟。这里有一篇很酷的 博客文章,比较了 Deno 与其他工具

将 Deno 与 AWS Lambda 函数结合使用是在熟悉的环境中快速启动应用的好方法。

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

你找到需要的内容了吗?

隐私政策