2016-10-18 7 views
2

Я не могу использовать задачу «Докер» в Bamboo, чтобы вытащить изображение Docker в репозиторий эластичных контейнеров AWS (ECR) из-за проблемы входа в ECR. Мой результат выглядит следующим образом:Невозможно использовать команду «Docker push» с 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 

ответ

2

Я обнаружил, что команда aws ecr get-login была генерации URL с префиксом https://. Чтобы заставить Bamboo нажимать на мой репозиторий, мне пришлось переключиться с использования задачи Bamboo, чтобы использовать собственный сценарий bash, который удаляет «https: //» с передней части команды docker login, так что репозиторий, который регистрируется в имеет точно такой же 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 
+0

Мне было бы интересно узнать, есть ли у кого-то более элегантное решение, чем возврат к сценарию bash. Я также чувствую, что вывод команды 'aws ecr get-login' должен фактически записывать вас в тот же самый репозиторий, который вам нужно успешно запустить' docker push'. – DuffJ

+0

Это было также решение проблемы, когда 'docker' ответил, что' 'такой репозиторий не существует. –

0

мне было бы интересно знать, если кто имеет более элегантный чем возврат к сценарию bash.

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

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

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

Пожалуйста, обратитесь к How to push a Docker image to a repository in your Amazon ECR registry with the Bamboo Docker task на шаг за шагом руководство.

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