Amazon web services 无法使用awsvpc网络类型与ECS Fargate上同一任务内的另一个容器对话

Amazon web services 无法使用awsvpc网络类型与ECS Fargate上同一任务内的另一个容器对话,amazon-web-services,amazon-ecs,amazon-vpc,aws-fargate,Amazon Web Services,Amazon Ecs,Amazon Vpc,Aws Fargate,我在同一个ECS任务中运行标准SPA前端应用程序和节点服务器 当同一任务中的两个容器相互连接时,我读到的关于awsvpc的所有内容都可以使用localhost 但是,通过这种设置,我似乎无法将数据从节点服务器返回到UI。我所有的请求都立即失败。我断言它实际上是在我的实际计算机上尝试点击localhost 浏览器故障: 出于测试目的,我公开了端口8080,以查看我是否可以直接与节点服务器进行交互,并按照预期工作。我只是无法让用户界面与之对话 任何帮助都将不胜感激 编辑: 我的任务定义如下所示:

我在同一个ECS任务中运行标准SPA前端应用程序和节点服务器

当同一任务中的两个容器相互连接时,我读到的关于
awsvpc
的所有内容都可以使用
localhost

但是,通过这种设置,我似乎无法将数据从节点服务器返回到UI。我所有的请求都立即失败。我断言它实际上是在我的实际计算机上尝试点击
localhost

浏览器故障:

出于测试目的,我公开了端口
8080
,以查看我是否可以直接与节点服务器进行交互,并按照预期工作。我只是无法让用户界面与之对话

任何帮助都将不胜感激

编辑:

我的任务定义如下所示:

  "containerDefinitions": [
    {
      "essential": true,
      "image": "[my-account-id].dkr.ecr.eu-west-1.amazonaws.com/[my-account]/app-ui:latest",
      "name": "app-ui",
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/app-ui",
          "awslogs-region": "eu-west-1",
          "awslogs-stream-prefix": "ecs",
          "awslogs-create-group": "true"
        }
      },
      "portMappings": [
        {
          "containerPort": 3000,
          "hostPort": 3000,
          "protocol": "tcp"
        }
      ]
    },
    {
      "essential": true,
      "image": "[my-account-id].dkr.ecr.eu-west-1.amazonaws.com/[my-account]/app-api:latest",
      "name": "app-api",
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/app-api",
          "awslogs-region": "eu-west-1",
          "awslogs-stream-prefix": "ecs",
          "awslogs-create-group": "true"
        }
      },
      "portMappings": [
        {
          "containerPort": 8080,
          "hostPort": 8080,
          "protocol": "tcp"
        }
      ]
    }
  ],
  "cpu": "256",
  "executionRoleArn": "arn:aws:iam::[my-account-id]:role/AWSServiceRoleECS",
  "family": "app",
  "memory": "512",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"]
}


  [1]: https://i.stack.imgur.com/S7zl3.png
根据评论

该问题是由于在浏览器的客户端上调用
localhost
api端点引起的。这将解析为客户端机器上的
localhost
,而不是在ECS任务中。当从ECS任务内部而不是从任务外部调用API时,
localhost
将起作用


要从客户端调用API端点,需要常规的公共IP或公共DNS,而不是
localhost

您的任务定义是什么样子的?@dpwrussell我已将我的任务定义添加到帖子中^?您有显示浏览器调用localhost:8080的屏幕截图吗?那么你是在容器内部运行浏览器吗?啊,我明白了。对不起,我完全是哑巴。我必须将公共dns打包为UI的环境变量。我明白你的意思。这是一个漫长的夜晚:’)没问题。如果你不介意的话,我会提供一个答案供将来参考。如果你能看看我的其他问题,我将不胜感激-