Я получаю эту ошибку при запуске задачи в моем кластере Amazon Fargate. Кто-нибудь видел, сталкивался с этим раньше?
ОСТАНОВЛЕНО (CannotPullContainerError: ошибка API (500)?
Ответ 1
Публичный IP является обязательным для Farget. Для получения дополнительной информации https://github.com/aws/amazon-ecs-agent/issues/1128
Ответ 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
Эта ошибка возникает, когда контейнер не может вытащить контейнер из реестра.
- Убедитесь, что вы размещаете публичный IP-адрес в своих контейнерах. В настоящее время в реестре контейнеров AWS нет конечной точки внутри-в-vpn.
- Убедитесь, что в ваших контейнерах есть способ подключения к Интернету (например: экземпляр nat или аналогичный.
- Убедитесь, что группа безопасности, которую вы связали с контейнером, разрешает исходящий трафик. Если вы создали SG с terraform или аналогичным, вы можете обнаружить, что он по умолчанию не имеет правил исходящих сообщений.
Ответ 4
Вы должны назначить Public Ip своей службе, вы можете сделать это во время определения службы, но, насколько я знаю, вы не можете обновить службу из меню обновления.
Ответ 5
Если вы используете ECS в частном VPC без доступа к Интернету, сначала установите конечную точку VPC для ECR и S3.
Ответ 6
Убедитесь, что ваша подсеть имеет доступ к Интернету. В моем случае задача fargate была развернута в частной подсети. В то время как в этой подсети настроен шлюз nat, в общедоступной подсети не было маршрута к интернет-шлюзу.