在 ECS fargate 中运行前端和后端服务

时间:2021-02-11 11:51:05

标签: python reactjs amazon-web-services amazon-ecs

我有一个小的 reactjs 前端应用程序和一个 python 后端应用程序。

我想在 ECS fargate 中运行这两个服务。所以我创建了一个 task definition 并将两个容器包含在同一个任务定义中。

通过 reactjs 应用程序正在使用 pythonaxios 后端交谈(点击),如下所示:

axio.get("http://127.0.0.1:8083/monitors").then(res => {
      this.setState({
        status: res.data
      });
    });

此设置在本地环境中运行良好。但是现在我把它移到了fargate,当我使用域访问前端服务时,出现以下错误:

<块引用>

无法加载资源:net::ERR_CONNECTION_REFUSED 127.0.0.1:8083/monitors:1

那么,我该怎么做,如何访问后端容器?

1 个答案:

答案 0 :(得分:0)

如果这两个都是后端应用程序,您的设置就会正常工作。然而,ReactJS 应用程序实际上运行在用户的 Web 浏览器中。 Axios 需要在运行 Web 浏览器的本地计算机与运行在 Fargate 上的后端服务之间建立网络连接。目前,由于您将其指向 127.0.0.1,因此它会尝试在您的本地计算机上查找运行在不存在的端口 8083 上的服务。

您需要将 Axios 应用程序配置为通过其公共 IP 地址或域来访问后端服务。在这种情况下通常使用负载均衡器,然后您将 Axios 指向负载均衡器的域名。