【发布时间】:2021-03-30 04:34:42
【问题描述】:
我在同一个 ECS 任务中运行标准 SPA 前端应用和节点服务器。
当同一任务中的 2 个容器相互连接时,我所读到的关于 awsvpc 的所有内容都可以使用 localhost。
但是,通过这种设置,我似乎无法将数据从我的节点服务器返回到我的 UI。我所有的请求都会立即失败。我已经断言它实际上是在尝试在我的实际计算机上点击 localhost。
浏览器故障: https://pasteboard.co/JFJLnLO.png
出于测试目的,我公开了端口8080 以查看我是否可以直接与节点服务器交互并且可以按预期工作。我只是无法让 UI 与之对话。
任何帮助将不胜感激
编辑:
我的任务定义如下所示:
"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
【问题讨论】:
-
你的任务定义是什么样的?
-
@dpwrussell 我已将我的任务定义添加到帖子中^^
-
你能解释一下你如何调用8080端口的api吗?您有显示浏览器调用 localhost:8080 的屏幕截图吗?所以你以某种方式在容器内运行浏览器?
-
啊,我明白了。我完全傻了,对不起。我必须将公共 dns 打包为 UI 的 env var。我明白你在说什么。这是一个漫长的夜晚:')
-
没问题。如果您不介意,我会提供答案以供将来参考。
标签: amazon-web-services amazon-ecs amazon-vpc aws-fargate