У меня есть сценарий, который извлекает имя входа для ECR, аутентифицирует экземпляр DockerClient с учетными данными для входа в систему (значение по умолчанию - True), а затем пытается получить изображение назначенного контейнера.
Код, кажется, отлично работает при работе на моем локальном компьютере, взаимодействующем с демоном docker в экземпляре 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'
Спасибо