如果日志显示服务已启动,为什么我的 ECS 任务公共 IP 未加载?

问题描述 投票:0回答:2

我正在尝试将一个超级简单的容器化烧瓶应用程序部署到ECS。我知道该镜像能够

docker-compose
并且构建得很好,因为我将它作为 CodePipeline 的一部分,该 CodePipeline 正在构建、标记并将最终的 docker 镜像推送到 ECR。

Build completed on Sat Feb 15 21:48:44 UTC 2020

[Container] 2020/02/15 21:48:44 Running command echo Pushing the Docker images...
Pushing the Docker images...

[Container] 2020/02/15 21:48:44 Running command docker push $REPOSITORY_URI:latest
...
025f20c0831b: Pushed
98e916abdf11: Pushed

此时我可能应该澄清该应用程序在本地运行,并且我已将

app.run()
主机指定为
0.0.0.0

此时我已经有了一个ECS集群

具有正在运行的任务和公共IP

以及指示应用程序已启动的日志。

我还修改了安全组的入站端口,以包括

0.0.0.0
::/0
上的 5000。

理论上,这意味着您应该能够访问端口3.80.1.115,但您应该看到标准,您刚刚从浏览器中输入了什么响应。

我只是不确定发生了什么,因为我看起来很接近......应用程序在 ECS 中运行没有错误,一切都很棒,除了应用程序无法访问。想法?

python amazon-web-services flask ip-address amazon-ecs
2个回答
2
投票

也许您应该检查 ECS 任务定义的

networkMode
portMappings
设置。

在安全组中,您允许端口

TCP/80
的流量,但我可以在您的应用程序日志 (
Running on http://0.0.0.0:5000/
) 中读到您的应用程序正在不同的端口
TCP/5000
中运行。

这里是一个 Nginx 任务监听 por 的示例:


TCP/80

您可以在
此处查看其他示例


0
投票

打开安全组设置
  1. 按“编辑入站规则”
  2. 添加类型为“所有流量”(或“自定义 TCP”,如果您想将特定端口列入白名单)和来源“Anywhere-IPv4”的规则
  3. 按“保存规则”即可完成
© www.soinside.com 2019 - 2024. All rights reserved.