ark*_*k0n 10 python ip-address amazon-web-services amazon-ecs flask
我正在尝试将一个超级简单的容器化烧瓶应用程序部署到 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
Run Code Online (Sandbox Code Playgroud)
此时我可能应该澄清该应用程序在本地运行,并且我已将主机指定app.run()为0.0.0.0.
此时我已经有了一个ECS集群
具有正在运行的任务和公共 IP
以及指示应用程序已启动的日志。
我还修改了安全组的入站端口以包括0.0.0.0,上的 5000 ::/0。
从理论上讲,这意味着您应该能够访问端口3.80.1.115,但您应该看到标准,您甚至从浏览器中输入了响应内容。
我只是不确定发生了什么,因为我看起来很接近...应用程序在 ECS 中运行没有错误,一切都很棒,除了应用程序无法访问。想法?
也许您应该检查ECS 任务定义的networkMode和设置。portMappings
在安全组中,您允许该端口的流量TCP/80,但我可以在您的应用程序日志 () 中读到Running on http://0.0.0.0:5000/您的应用程序正在不同的端口中运行TCP/5000。
以下是监听 por 的 Nginx 任务的示例TCP/80:
{
"requiresCompatibilities": [
"FARGATE"
],
"containerDefinitions": [
{
"name": "nginx",
"image": "nginx:latest",
"memory": 256,
"cpu": 256,
"essential": true,
"portMappings": [
{
"containerPort": 80,
"protocol": "tcp"
}
],
"logConfiguration":{
"logDriver":"awslogs",
"options":{
"awslogs-group":"awslogs-nginx-ecs",
"awslogs-region":"us-east-1",
"awslogs-stream-prefix":"ecs"
}
}
}
],
"volumes": [],
"networkMode": "awsvpc",
"placementConstraints": [],
"family": "nginx",
"memory": "512",
"cpu": "256"
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看其他示例