AWS:使用 api 网关来代理 EC2 实例中服务的前端和后端 api 端点是否是一种好的做法?

AWS: Is it good practice to use api gateway to proxy both frontend and backend api endpoints served in EC2 instances?

我正在 AWS 中构建我的应用程序。

我已经在 EC2 实例中部署了我的 Reactjs 前端项目:172.0.0.1:80

我还在另一个 EC2 实例中部署了我的 Typescript/Express JS 后端服务 运行 许多 api 端点:172.0.0.2:3000.

172.0.0.1172.0.0.2 是 EC2 实例的 VPC 私有 IP 地址。

我正在尝试将 AWS API 网关用于反向代理目的,但我不确定这是否是一种好的做法,或者是一般使用 AWS 云工具的好方法。详情如下:

现在,以这种方式使用 api 网关是一种好习惯吗?

这是在 AWS 云上托管应用程序的正确方法吗?

这似乎是一种合理的方法。这是一个有点自以为是的问题,因为“良好做法”和“正确方式”是主观的。API 网关很灵活,允许许多使用模式,这些使用模式可能是“良好做法”并且可以以“正确方式”完成但仍然完全不同。

话虽如此,该方法似乎很合理,但您可以以不同方式托管前端项目以提高效率。考虑 Building server-side rendering for React in AWS Lambda 中显示的方法:

在该方法中,前端是静态的并呈现在客户端上,因此使用 S3 存储静态文件并使用 CloudFront 分发这些文件是一个很好的方法。它显示了一个由 Lambda 处理的动态后端,它具有无服务器优势,但它也可以是 EC2。如果您的前端代码不是静态的,或者您希望来自 EC2 实例,则可以改为使用 API 网关,如您所述。

与此图片相比,我喜欢您的方法的一件事是客户端有一个应用程序域,并且 API 网关将路由到正确的端点。这对最终用户隐藏了一些实施细节。