Почему моя задача ECS publi c IP не загружается, если в журналах указано, что служба запущена? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь развернуть в ECS супер простое контейнерное приложение flask. Я знаю, что это docker-compose -подходящее и нормально строится, потому что оно есть у меня в составе 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

enter image description here

с запущенной задачей и публикацией c IP

enter image description here

и журналами, указывающими, что приложение запущено.

enter image description here

Я также изменил входящие порты группы безопасности, чтобы включить 5000 на 0.0.0.0, ::/0.

enter image description here

Теоретически это означает, что вы должны иметь возможность посетить порт 3.80.1.115 , но вместо этого вы должны видеть стандарт, что вы только что набрали в ответ из вашего браузера.

enter image description here

Я просто не уверен, что происходит, потому что я выгляжу так близко. .. приложение работает без ошибок в ECS, и все замечательно, за исключением того, что приложение недоступно. Мысли?

1 Ответ

0 голосов
/ 16 февраля 2020

Возможно, вам следует проверить параметры networkMode и portMappings для определения задачи ECS.

В группе безопасности вы разрешаете трафик c для порта TCP/80, но что Я могу прочитать в журналах вашего приложения (Running on http://0.0.0.0:5000/), что ваше приложение работает в другом порту TCP/5000.

Вот пример для 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"
}

Вы можете увидеть другие примеры здесь

...