使用 Lambda 函数在 AWS Amplify 上部署 React Frontend+ Express 后端
Deploying React Frontend+ Express Backend on AWS Amplify with Lambda Functions
免责声明:我不是母语人士,如果我的语言不流利或者我在解释时犯了一些错误,请提前道歉:)
您好,我有很多关于将全栈应用程序部署到 Web 的问题。
简介
我开发了一个全栈应用程序,包括一个 React 前端 和一个 Express 后端 (+ MongoDB 用于存储数据)。所有这些都在 Typescript.
中编码
我开始寻找托管此应用程序的方法,我发现最受推荐的方法是 AWS Amplify(我知道我可以启动 EC2 实例,但据我了解,成本差异非常大)。无论如何,我想继续使用 AWS,因为我要托管应用程序的域是在 AWS 上配置的,这会节省我很多时间。
我试过的
我尝试通过 Amplify CLI 设置 Amplify 应用程序。
一切都很顺利(除了 AWS 函数的 typescript 类型,可能不得不问另一个问题),但是当我想添加我的后端时问题来了。
当我 运行 amplify add api
时,CLI 在我的目录中添加了一个模板 api 文件夹。此外,这些模板文件在 JS 中,如果我尝试将它们更改为 Typescript,一切都会崩溃。
我的问题
我有很多关于后端的 AWS Amplify 和 Lambda 的问题:
后端通过 AWS Lambda
- 我无法完全理解无服务器函数。如何在 AWS Lambda 上推送我现有的 Express Backend 而不必完全重写它? 有可能吗?
- 我不能有一个 github 存储库,其中只存储我的后端代码,并让它与 aws lambda 同步吗?
前端使用 Amplify
- 我的前端目前通过 Axios 请求与后端通信:我有一个 api 路由 (/api/...) post 请求和数据发回。如果我开始使用 AWS Lambda,是否必须更改此设置?
- 鉴于我设法在两个不同的存储库中拥有前端和后端,我该如何连接这两者?我应该查看 API 网关吗?
提前感谢谁愿意花时间回答所有这些问题,抱歉,我对 AWS 是个菜鸟:(
后端通过 AWS Lambda
serverless-express NPM 包将帮助您将现有的基于 express 的后端迁移到 AWS Lambda。如果您使用的是 Amplify,则可以创建单独的后端项目并在 front-end 项目中使用 amplify 生成的 'aws-export.js' 配置文件。
参考:
https://docs.amplify.aws/cli/restapi/restapi/#create-a-rest-api
https://docs.amplify.aws/cli/project/monorepo/
前端使用 Amplify
您可以继续使用 Axios 库或者您可以使用 aws-amplify packge。如果您正确配置 AWS API 资源和暂存
,则无需更改后端代码的路由
参考:
https://docs.amplify.aws/cli/restapi/restapi/#create-a-rest-api
免责声明:我不是母语人士,如果我的语言不流利或者我在解释时犯了一些错误,请提前道歉:)
您好,我有很多关于将全栈应用程序部署到 Web 的问题。
简介
我开发了一个全栈应用程序,包括一个 React 前端 和一个 Express 后端 (+ MongoDB 用于存储数据)。所有这些都在 Typescript.
中编码我开始寻找托管此应用程序的方法,我发现最受推荐的方法是 AWS Amplify(我知道我可以启动 EC2 实例,但据我了解,成本差异非常大)。无论如何,我想继续使用 AWS,因为我要托管应用程序的域是在 AWS 上配置的,这会节省我很多时间。
我试过的
我尝试通过 Amplify CLI 设置 Amplify 应用程序。
一切都很顺利(除了 AWS 函数的 typescript 类型,可能不得不问另一个问题),但是当我想添加我的后端时问题来了。
当我 运行 amplify add api
时,CLI 在我的目录中添加了一个模板 api 文件夹。此外,这些模板文件在 JS 中,如果我尝试将它们更改为 Typescript,一切都会崩溃。
我的问题
我有很多关于后端的 AWS Amplify 和 Lambda 的问题:
后端通过 AWS Lambda
- 我无法完全理解无服务器函数。如何在 AWS Lambda 上推送我现有的 Express Backend 而不必完全重写它? 有可能吗?
- 我不能有一个 github 存储库,其中只存储我的后端代码,并让它与 aws lambda 同步吗?
前端使用 Amplify
- 我的前端目前通过 Axios 请求与后端通信:我有一个 api 路由 (/api/...) post 请求和数据发回。如果我开始使用 AWS Lambda,是否必须更改此设置?
- 鉴于我设法在两个不同的存储库中拥有前端和后端,我该如何连接这两者?我应该查看 API 网关吗?
提前感谢谁愿意花时间回答所有这些问题,抱歉,我对 AWS 是个菜鸟:(
后端通过 AWS Lambda
serverless-express NPM 包将帮助您将现有的基于 express 的后端迁移到 AWS Lambda。如果您使用的是 Amplify,则可以创建单独的后端项目并在 front-end 项目中使用 amplify 生成的 'aws-export.js' 配置文件。
参考:
https://docs.amplify.aws/cli/restapi/restapi/#create-a-rest-api
https://docs.amplify.aws/cli/project/monorepo/
前端使用 Amplify
您可以继续使用 Axios 库或者您可以使用 aws-amplify packge。如果您正确配置 AWS API 资源和暂存
,则无需更改后端代码的路由参考:
https://docs.amplify.aws/cli/restapi/restapi/#create-a-rest-api