如何在 AWS 上部署带有 express 后端的 nuxt 前端?

How to deploy nuxt frontend with express backend on AWS?

None 这些类似的问题是基于 Nuxt

How to deploy a React + NodeJS Express application to AWS?

How to deploy backend and frontend projects if they are separate?

您可以通过多种方式在 AWS 中部署堆栈。我可以给你一些选择,但如果你想节省一些成本,最好的办法是使用 Lambda 函数作为你的后端,S3 作为你的 front-end 和批处理 Lambda 作业作为你的 python 脚本.

执行所有这些并不太简单,但通过以下链接,您可能会了解如何实施您的解决方案。

根据您的工作量和预算,有几种方法。让我们介绍一下选项是什么以及哪些选项适用于手头的工作。

具有 Server-side 渲染的无服务器方法 (SSR)

Tutorial

通过创建在 Lambda 中调用 NuxtRenderer 的 API 网关路由。结果生成的 HTML/JS/CSS 将被推送到 S3 存储桶。 S3 存储桶充当 Cloudfront 来源。使用 CDN 缓存最少更新的项目,并在需要时使用 API 调用来更新缓存。这是最便宜的部署方式,但如果您没有流量,一些客户可能会在缓存更新命中时遇到短暂的延迟。 Calculator

通过静态生成的无服务器方法

这是开始的最简单方法。所有没有动态模板生成的路由都可以简单地存在于 S3 存储桶中。最简单的方法是 运行 nuxt generate 然后将 dist 的结果内容上传到桶中。这里没有节点后端,这不是问题的要求,但值得一提。

很好 documented NuxtJS.org 和免费套餐。

带有 Elastic Beanstalk 的无服务器

IMO 这种方法是不必要的,而且对于 AWS 在 2022 年提供的产品来说有点过时了。它当然仍然有效,但收益成本并不吸引人。

为此,您需要使用 eb 命令行工具并设置 NPM_CONFIG_UNSAFE_PERM=true。 AFAIK 没有什么特别的事情需要发生才能让 eb 知道从那里做什么。 Calculator

Server-ish 方法

另一种选择是使用 Lightsail 和 NodeJS 服务器。 Lightsail 为全职 NodeJS 服务器提供低(但不低于无服务器)成本。在这种情况下,您可能希望将项目克隆到服务器,然后 setup systemd 脚本以保持 nodejs 运行ning.

另一种实现此目的并具有一定可扩展性的方法是使用 ECS 和 Docker。在这种情况下,您将创建一个 Docker 文件来构建容器,执行 npm start,并将端口 Nuxt 运行s 暴露给主机。这个example shows how to run it using Fargate, which is essentially a serverless version of EC2 machine. Calculator