Невозможно использовать команду Docker push с ECR

Я не могу использовать задачу «Docker» в Bamboo для передачи образа Docker в репозиторий AWS Elastic Container Repository (ECR) из-за проблемы со входом в ECR. Мой вывод выглядит так:

build   18-Oct-2016 12:11:54    9007f5987db3: Preparing
build   18-Oct-2016 12:11:54    b718b2f27b6c: Waiting
build   18-Oct-2016 12:11:54    c986610bcfe6: Waiting
build   18-Oct-2016 12:11:54    ee16ea28e998: Waiting
build   18-Oct-2016 12:11:54    a709d74a4732: Waiting
build   18-Oct-2016 12:11:54    c672d981aff9: Waiting
build   18-Oct-2016 12:11:54    17287d14d5b6: Waiting
build   18-Oct-2016 12:11:54    4505f2891620: Waiting
build   18-Oct-2016 12:11:54    94102dff0575: Waiting
build   18-Oct-2016 12:11:54    e83e87cb73c3: Waiting
build   18-Oct-2016 12:11:54    740e5e49ea89: Waiting
build   18-Oct-2016 12:11:54    092e6cb28bdb: Waiting
build   18-Oct-2016 12:11:54    9007f5987db3: Waiting
build   18-Oct-2016 12:11:54    8d94959a46f4: Waiting
build   18-Oct-2016 12:11:54    d2ccc68b6943: Waiting
build   18-Oct-2016 12:11:54    3dc6be5926c6: Waiting
build   18-Oct-2016 12:11:54    0afc75223403: Waiting
build   18-Oct-2016 12:11:54    71caa5138f3c: Waiting
build   18-Oct-2016 12:11:54    1be454502782: Waiting
build   18-Oct-2016 12:11:54    4a2173830433: Waiting
error   18-Oct-2016 12:11:54    error parsing HTTP 403 response body: invalid character 'Y' looking for beginning of value: "Your Authorization Token has expired. Please run 'aws ecr get-login' to fetch a new one."
simple  18-Oct-2016 12:11:54    Failing task since return code of [/bin/sh /tmp/WEB-SYNAPICI-JOB1-11-ScriptBuildTask-245668070788779382.sh] was 1 while expected 0

person Dawngerpony    schedule 18.10.2016    source источник


Ответы (2)


Я обнаружил, что команда aws ecr get-login генерирует URL-адрес с префиксом https://. Для того, чтобы Bamboo загружался в мой репозиторий, мне пришлось переключиться с использования задачи Bamboo на использование пользовательского сценария bash, который удаляет «https://» в начале команды docker login, чтобы репозиторий, который регистрируется into имеет точно такой же URL-адрес, что и репозиторий, в который выполняется отправка.

Я чувствую, что это, вероятно, ошибка клиента AWS, но вот мой скрипт на случай, если кому-то еще он покажется полезным:

#!/usr/bin/env bash
docker_login_command=$(aws ecr get-login)
$(echo $docker_login_command | sed 's|https://||' | sed 's|-e none ||')
container_id=$(docker images | grep foo | awk '{print $3;}' | uniq)
echo $container_id
url="output-of-the-ecr-create-repository-command.dkr.ecr.eu-west-1.amazonaws.com/bar/foo"
docker tag $container_id $url
docker push $url
person Dawngerpony    schedule 18.10.2016
comment
Мне было бы интересно узнать, есть ли у кого-нибудь более элегантное решение, чем вернуться к сценарию bash. Я также чувствую, что выходные данные команды aws ecr get-login должны на самом деле записывать вас в тот же репозиторий, который вам нужен для успешного запуска docker push. - person Dawngerpony; 18.10.2016
comment
На самом деле это также было решением проблемы, когда docker ответил, что "no such repository" существует. - person Christoph Möbius; 26.02.2017

Мне было бы интересно узнать, есть ли у кого-нибудь более элегантное решение, чем вернуться к сценарию bash.

Если вы ищете решение, не основанное на сценариях, вас может заинтересовать Utoolity Identity Federation for AWS (Bamboo) (коммерческий, см. заявление об отказе от ответственности), который предоставляет выделенный Переменные учетных данных Amazon ECR для внедрения временных данных Amazon Учетные данные для аутентификации реестра контейнеров EC2 (Amazon ECR) для других инструментов и задач, не связанных с AWS, таких как задача Bamboo Docker.

В частности, он создает следующие переменные, на которые вы можете ссылаться везде, где вам нужны учетные данные ECR в последующих задачах (при условии, что они должным образом поддерживают переменные Bamboo):

${bamboo.custom.aws.ecr.proxyEndpointDomain}
${bamboo.custom.aws.ecr.username}
${bamboo.custom.aws.ecr.password}

См. Как отправить образ Docker в репозиторий в реестре Amazon ECR с помощью задачи Bamboo Docker, чтобы получить пошаговое руководство .

Отказ от ответственности: я являюсь соучредителем поставщика этого дополнения, Utoolity.

person Steffen Opel    schedule 11.11.2016