Отладка задач AWS Fargate, что означает недопустимый формат ссылки CannotPullContainerError?

У меня есть контейнер докеров, хранящийся на AWS ECR, с помощью этого контейнера я создал Task. Когда я запускаю Task через Fargate, служба переходит из состояния PROVISIONING> PENDING (красный цвет)> STOPPED.

Нет журнала ни в Service Event, ни в CloudWatch. Абсолютно невозможно узнать, в чем настоящая проблема.

Никакие идеи, в какую сторону двигаться, документ AWS не помогли.


person RajDev    schedule 16.12.2017    source источник
comment
Я выполнил эти [инструкции] (docs.aws.amazon .com / AmazonECS / latest / developerguide /). И теперь я вижу, что для подготовки задачи отображается ошибка Причина состояния CannotPullContainerError: ошибка API (500): недопустимый формат ссылки. Опять же, это все равно не помогает. Любой указатель на это приветствуется.   -  person RajDev    schedule 16.12.2017


Ответы (4)


Я тоже видел эту ошибку. В моем случае проблема заключалась в том, что у меня было недопустимое значение image в определении моего контейнера. Изображение обычно представляет собой адрес репозитория и тег изображения в соответствии с image инструкциями по адресу https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html

person Marc    schedule 24.02.2018
comment
Вот это да. Просто столкнулся с этим, работая над вторым сервисом в Fargate с настроенным полусложным файлом. Полностью испортил изображение, указывающее на тот, что в репо. Хотел бы что-нибудь сказать мне об этом (кроме вашего ответа)! - person Adam Link; 02.03.2018

В AWS Fargate отсутствует простая, но непонятная информация. Это то, что привело вас к вашей проблеме. Позвольте мне объяснить шаг за шагом.

Первый шаг - создать определение задачи, когда вы это сделаете, вы можете определить

 Entry point ["/bin/ls"]
Command     [">","/list.txt","|","echo","/list.txt"]

Это эквивалентно / bin / ls> /list.txt | echo /list.txt.

Обратите внимание, что пробелы между ними необходимо заменить запятой. Команда AWS Farget забыла о том, что в разделе TaskDefinition> Add Container мастера этот разделитель запятых echo, helloworld предоставляется в текстовом поле [! [Введите здесь описание изображения] [1]] [1]. Но в форме Задачи такой информации нет. Это очень сбивает с толку.

И последнее: у AWS Fargate очень ограниченная информация для отладки. Вот мои советы

  • Вы можете получить только возможную ошибку в разделе Кластер> Задача> {Имя задачи}> {контейнер}. По причине ошибки.
  • Если ошибка очень мала, я всегда получал Error Code0, без пробелов между Code0. В Cloud тоже ничего не смотрите.
  • Если текст ошибки большой (может быть около 20 знаков или>), вы получите его как в №1, так и в журнале CloudWatch.

Надеюсь, это поможет

person rajesk    schedule 18.12.2017
comment
Вау, это помогло :) - person RajDev; 18.12.2017
comment
Есть ли способ узнать больше о причине: Error Code0? - person hkutluay; 17.02.2019

Как упоминает Марк, обычно это неправильное имя образа DockerHub / репо.

В моем случае это произошло потому, что имя изображения было вычислено переменной среды в моем файле Docker Compose:

services:
  web:
    image: scipilot/my-web-app:$MY_VERSION_TAG

И я пропустил установку переменной окружения при использовании ecs-cli compose service up. Итак, Фаргейт, вероятно, пытался вытащить «scipilot / my-web-app:» из Docker Hub, следовательно, возникла ошибка недопустимого формата.

person scipilot    schedule 14.12.2018

По моему опыту, вам нужно добавить разрешения в свой ECR. В вашем репозитории есть вкладка, которую они называют разрешениями. Добавьте те разрешения, которые, по вашему мнению, вам нужны.

person Cliff Richard Anfone    schedule 13.07.2018