У меня есть сценарий, который извлекает логин для ECR, аутентифицирует экземпляр DockerClient с учетными данными для входа (reauth имеет значение True), а затем пытается извлечь назначенный образ контейнера.
Код, кажется, отлично работает при работе на моей локальной машине, взаимодействующей с демоном докеров в экземпляре EC2, но при запуске из экземпляра EC2 я постоянно получаю
404 Client Error: Not Found ("repository XXXXXXXX.dkr.ecr.eu-west-2.amazonaws.com/autohld-runner not found: does not exist or no pull access")
Один и тот же репозиторий используется как для локального, так и для удаленного выполнения кода на экземпляре EC2. Я попытался настроить доступ к изображению в ECR, чтобы разрешить получение как для всех, так и для моего идентификатора AWS. Я также предоставил роль, назначенную для экземпляра EC2, с полным доступом администратора. Все без радости.
Если я выполняю те же задачи в экземпляре EC2 через командную строку с точно таким же URI репо (скопированным из ошибки), он работает без проблем.
Есть ли что-то, что мне не хватает в docker-py?
url = "tcp://127.0.0.1:2375"
dockerd = docker.DockerClient(base_url=url, version='auto')
dockerd.login(username=ecr.username, password=ecr.password, email='none', registry=ecr.registry, reauth=True)
dockerd.images.pull(ecr.get_repo(instance.tags['Container']), tag='latest')
get_repo
возвращает полный URI, указанный в сообщении об ошибке, элемент Container имеет имя autohld-runner.
Спасибо