我有一个react前端和flask后端,我想将它们部署在ECS中。我想让react应用程序面向公众,让flask服务器隐藏起来,不让外界访问。
根据我所读到的,方法应该如下:
- 在flask服务器的公用子网上创建带有NAT网关的公用和专用子网
- 在公共潜艇上部署react应用程序,在私人潜艇上部署服务器
现在我感到困惑的地方是:
- 如何向外界公开react应用程序?我应该使用互联网网关还是ELB/ALB?有什么不同
- 当服务器只有私人IP时,我如何让react应用程序与服务器对话?服务发现?如果是,我应该如何使用docker将服务器的服务名称注入react应用程序
- 如何向外界公开react应用程序?我应该使用互联网网关还是ELB/ALB?有什么不同
如果react前端是静态网站,那么最好使用S3+CloudFront来托管它。但如果你想使用ECS,那么是的,通常是使用面向互联网的负载均衡器。
ELB是第一代负载平衡器。现在,您应该将ALB与第二代平衡器一起使用,后者提供了比ELB更多的功能,例如从http重定向到https。
互联网网关适用于您的专有网络,只有当您使用自定义的专有网络时才需要它。如果您使用默认VPC,则无需担心。
- 当服务器只有私有IP时,我如何使react应用程序与服务器对话?服务发现?如果是,我应该如何使用docker将服务器的服务名称注入react应用程序
您既不能使用私有IP,也不能使用服务发现。你的前端将在你的客户端浏览器中执行,因此它必须使用互联网与你的后端对话。这意味着您需要使用公共IP而不是私有IP来公开Flask API。
这同样可以使用公共ALB来完成。您可以使用与前端相同的ALB。所以你会有以下设置:
|---> Target Group 1 ---> ECS Services for React frontend (private subnet)
Client ---> ALB (public subnet) ---|
|---> Target Group 2 ---> ECS Service for Flask (private subnet)