ОСТАНОВЛЕНО (CannotPullContainerError: ошибка API (500)?

Я получаю эту ошибку при запуске задачи в моем кластере Amazon Fargate. Кто-нибудь видел, сталкивался с этим раньше?

Ответы

Ответ 2

Пойдите в документы для ответа на этот.

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_cannot_pull_image.html

Поскольку вы сталкиваетесь с ошибкой 500, я бы прислушался к совету первого описания ошибки: "Превышено время ожидания соединения":

Когда запускается задача Fargate, ее эластичный сетевой интерфейс требует маршрута к Интернету для получения изображений контейнера. Если при запуске задачи вы получаете сообщение об ошибке, аналогичное приведенному ниже, это связано с тем, что маршрута к Интернету не существует:

CannotPullContainerError: API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection

Чтобы решить эту проблему, вы можете:

  • Для задач в общедоступных подсетях укажите ВКЛЮЧЕНО для автоматического назначения общего IP-адреса при запуске задачи...

  • Для задач в частных подсетях укажите ОТКЛЮЧЕНО для автоматического назначения общего IP-адреса при запуске задачи и настройте шлюз NAT в вашем VPC для маршрутизации запросов в Интернет...

Если вы столкнулись с какими-либо другими проблемами, связанными с тем, что задачи ECS не запускаются или проявляют странное поведение при запуске, проверьте полный список разделов по устранению неполадок ECS.

Я столкнулся с подобной ошибкой (404 вместо 500), однако, задание показало, что оно запущено, хотя в подробном состоянии указана ошибка.

Оказывается, что роль, связанная с задачей (в том же случае, что и экземпляр EC2, на котором она выполнялась), не может быть принята ecs-заданиями. Добавление следующего заявления о доверительных отношениях к роли решило проблему:

{
  "Effect": "Allow",
  "Principal": {
    "Service": "ecs-tasks.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}

Для получения дополнительной информации см. конкретную страницу в ролях выполнения задач.

Ответ 3

Эта ошибка возникает, когда контейнер не может вытащить контейнер из реестра.

  1. Убедитесь, что вы размещаете публичный IP-адрес в своих контейнерах. В настоящее время в реестре контейнеров AWS нет конечной точки внутри-в-vpn.
  2. Убедитесь, что в ваших контейнерах есть способ подключения к Интернету (например: экземпляр nat или аналогичный.
  3. Убедитесь, что группа безопасности, которую вы связали с контейнером, разрешает исходящий трафик. Если вы создали SG с terraform или аналогичным, вы можете обнаружить, что он по умолчанию не имеет правил исходящих сообщений.

Ответ 4

Вы должны назначить Public Ip своей службе, вы можете сделать это во время определения службы, но, насколько я знаю, вы не можете обновить службу из меню обновления.

Ответ 6

Убедитесь, что ваша подсеть имеет доступ к Интернету. В моем случае задача fargate была развернута в частной подсети. В то время как в этой подсети настроен шлюз nat, в общедоступной подсети не было маршрута к интернет-шлюзу.