初始加载后 AWS Fargate 502 Bad Gateway

AWS Fargate 502 Bad Gateway after initial load

我一直在关注 Fargate/docker 教程:https://medium.com/containers-on-aws/building-a-socket-io-chat-app-and-deploying-it-using-aws-fargate-86fd7cbce13f

这是我的 Dockerfile

FROM mhart/alpine-node:15 AS build
WORKDIR /srv
ADD package.json .
RUN yarn
ADD . .

FROM mhart/alpine-node:base-9
COPY --from=build /srv .
EXPOSE 3000
CMD ["node", "index.js"]

我有两个 Fargate 堆栈

production 是从 AWS CloudFormation public-service template

创建的

chat 是从 AWS CloudFormation public-vpc template 创建的,其中一些参数替换来自教程:

生产堆栈公开了一个有效的 ExternalUrl 输出参数

当我打开 URL 时,我可以看到索引的初始加载成功

但资源以 502(错误网关)响应

如果我刷新 URL,索引也会抛出错误

我是 AWS 和 Fargate 的新手。是否有我应该检查的服务器日志?这可能是我用于设置的模板(public-vpc.ymlpublic-service.yml)的问题吗?感谢您的帮助 - 谢谢。

您的健康检查似乎失败了,因此正在停止该实例。您可以通过导航到 ECS -> Clusters -> (Cluster) -> (Service) -> Tasks -> Stopped 来验证这一点 - 这将显示最近停止的容器列表以及原因。

我没有深入了解 CloudFormation,但我敢打赌健康检查到容器端口的映射是错误的。

谜底揭晓!感谢@Marcin 和@cynicaljoy 的帮助。 @cynicaljoy,我检查了 ECS 集群状态,但没有任何异常 - 聊天任务是 运行.

@Marcin,我跟着你重新创建了堆栈和应用程序。现在可以了!我的问题是第一次忽略了在我的所有 AWS 命令​​中匹配正确的区域。有些是 运行 和 us-west-1,有些是 us-west-2。一旦我匹配了这些,网关问题就消失了。