【问题标题】:AWS 3-Tier Architecture Query [closed]AWS 3 层架构查询 [关闭]
【发布时间】:2020-11-08 11:26:11
【问题描述】:

在这里需要一些认真的帮助,提前非常感谢!

前几天我提出了一个类似的问题,但没有得到我想要的答案。所以重构了整个问题

我需要在 AWS 上部署一个可扩展的 3 层 Web 应用程序,我对设计架构的最佳实践有一些疑问/困难。

注意:据我了解,所有后端请求都是在前端服务器向用户提供 html/css/js 之后通过浏览器请求的。

这是我在网上找到的解决方案:

问题

  • 它不会扼杀“所有对后端 api 的请求都是通过客户端的 Web 浏览器发出的(因为前端服务器向用户的浏览器提供 html/js 代码)”的所有逻辑吗?这意味着,请求应该来自浏览器 --> externalLoadbalancer --> 后端 API
  • 考虑到这一点,这个路由将如何工作?因为,我们不能使用前端进行路由,可以吗?

IMO 正确的解决方案(但它不提供对来自外部世界的后端 API 的限制):

这绝对不会破坏任何逻辑/概念,但可以访问世界以访问后端 api,例如

我被这种设计困扰了好几天,我需要将网络应用程序投入生产。非常感谢您的帮助。

【问题讨论】:

  • 应用服务器在运行什么?前端使用了哪些技术?这只是暴露了一个 api 网关,还是整个 web 应用程序?
  • 前端:反应和后端:节点。后端公开 API 端点。我不希望客户端使用 /api 访问
  • "我们不能使用前端进行路由" ...如果您的前端是 apache 服务器,它可以。如果您的前端仅托管静态文件,请使用 Rodrigo M 提出的 AWS S3

标签: amazon-web-services rest architecture amazon-elastic-beanstalk devops


【解决方案1】:

我认为您应该考虑使用 AWS API Gateway 访问私有 EC2 端点,并从 S3 和 CloudFront 运行 react。我没有看到您的架构中调用了这些服务。

这里描述了 API Gateway 如何支持私有 EC2 后端。

在 re:Invent 2017 上,我们宣布在私有 VPC 内进行端点集成。借助此功能,您现在可以让在 EC2 上运行的后端在您的 VPC 中保持私有,而无需公开访问的 IP 地址或负载均衡器。

https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/

另见https://aws.amazon.com/api-gateway/

除非您需要在服务器上进行 React 渲染,否则您可以将其作为静态网站从 S3 运行,并从 API 网关调用您的所有应用程序函数。这是在 AWS 上构建 React 应用程序的常用方法。

【讨论】: