我的负载均衡器无法与我的 Fargate 实例通信

My load balancer cannot communicate with my fargate instances

我正在学习有关 VPC、子网、ECS(使用 Fargate)等的一些基础知识。我正在尝试使用以下 Dockerfile 部署一个非常基本的 docker 容器:

FROM node:14

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "node", "index.js" ]

此图像在本地和使用 Fargate 部署时工作正常(我可以在 CloudWatch 中看到日志)。当负载平衡器尝试联系我的容器时,问题就来了。它没有通过健康检查,所以实例被销毁,然后又一次又一次地创建。

映像已部署到 ECR,ECS 可以访问它(因为我可以看到服务 运行 几秒钟)。

这就是问题所在,现在我将描述我做了什么以及我设置了哪些配置和资源:

VPC

与以下路线table关联:

互联网网关连接到 VPC。我还创建了一个附加到 subnet-09fec2674273e56f2 / public-sn.

的 NAT

这些是我在该 VPC 中创建的子网(我只使用选定的子网):

我想这就是我为建立网络所做的一切。我还创建了一个 ECS 集群 而没有 创建一个新的 VPC。我创建了一个任务定义,配置如下:

我知道任务数是 0,我更改它以避免一直重新创建实例,直到我解决问题。

这是负载均衡器的配置:

以及目标群体:

知道请求超时的原因吗?需要更多信息吗?

更新 1

任务定义的安全组:

您需要在您的安全组中允许端口 8080。您可以在您的安全组中使用您的 sg-id。