2016-12-29 3 views
13

Я пытаюсь нажать Docker изображение в хранилище AWS ECR с помощью АМС-кли.`Авторизация лексема expired` вопрос AWS-CLI на MacOS Sierra

  • Я просто запустить get-login команду
  • выполнить вывод (который возвращает login succeeded)
  • попробуйте нажать Docker изображение, а затем я получаю сообщение:
    denied: Your Authorization Token has expired. Please run 'aws ecr get-login' to fetch a new one.

I не знаю, что происходит не так, я подталкиваю к правильному репо, время на моем mac правильное. Это работало раньше, но так как я переустановил мой макинтош и повышен до MacOS Sierra это больше не работает, так что, вероятно, связано с этим.

Мой aws --version выход:

aws-cli/1.11.34 Python/2.7.10 Darwin/16.3.0 botocore/1.4.91

Полный вывод команд, я бегу:

$ aws ecr get-login --region eu-west-1 
docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com 
$ docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com 
Flag --email has been deprecated, will be removed in 1.13. 
Login Succeeded 
$ docker push 1234567890.dkr.ecr.eu-west-1.amazonaws.com/service-web:latest 
The push refers to a repository [1234567890.dkr.ecr.eu-west-1.amazonaws.com/service-web] 
c1f87971dfa9: Preparing 
2eb644aea3de: Preparing 
9c8843ffe48e: Preparing 
39bb58d049d4: Preparing 
f053bc969599: Preparing 
7169084246b8: Waiting 
bb134a1936fd: Waiting 
184e76848a1c: Waiting 
75c8fcf65748: Waiting 
eb9b9ee1ea58: Waiting 
f4bf35723edd: Waiting 
ddffe1a64b3c: Waiting 
fd1a1154db16: Waiting 
b542e946067a: Waiting 
d49ed2a5e1ed: Waiting 
bb39b980367a: Waiting 
25b8358d062f: Waiting 
997eee521fc7: Waiting 
50b5447183a8: Waiting 
4339b5cb0e1d: Waiting 
3dbd4a53b21b: Waiting 
2bec16216500: Waiting 
b9fd8e264df6: Waiting 
b6ca02dfe5e6: Waiting 
denied: Your Authorization Token has expired. Please run 'aws ecr get-login' to fetch a new one. 
+0

Это также может произойти, когда ваш идентификатор доступа и ключ были удалены, и вам нужно создать новый, например, в консоли IAM. – tex

ответ

10

Последние версии Докер использовать новую функцию учетных данных для хранения, которые has a bug где делает docker login с URL-адрес, который указывает протокол, приведет к ошибкам вывода токена. Эта проблема будет исправлена ​​в Docker 1.13.

на некоторое время, обходной путь, чтобы выполнить ваши команды входа в систему без указания протокола.

Таким образом, в командном сгустке возвращенного aws ecr get-login:

docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com 

Должен быть заменен следующим образом:

docker login -u AWS -p AQECAHh....b6Wk -e none 1234567890.dkr.ecr.eu-west-1.amazonaws.com 

Опуская https:// должен сделать Docker работу на некоторое время.

+0

Удаление схемы не сработало. Когда я удалил его, он вообще не заходил, он просто зависает. Я также попытался добавить http: // вместо https: //, но также не работал, и попытался добавить: 443 вместо схемы https: //, но не повезло. –

+1

Это не работает для меня, с Docker 1.13 на Ubuntu Yakkety. Удаление «https: //» не имеет значения, он говорит, что это удалось, но вызывает ту же ошибку при нажатии. :( – Serandel

+1

Это фиксированные вещи для меня с докер-машиной на OS X, клиент и версия сервера 1.12.6. Спасибо! – mdjnewman

1

Я использовал стабильную версию докер для макинтош Version 1.12

Я просто повышен до бета-версии Version 1.13.0-rc4-beta34.1 (14853) и теперь все работает как задумано.

Так что, если есть люди с той же проблемой, убедитесь, что вы используете докер для Mac версии 1.13 или выше, если 1,13 еще не выпущен, переключатель в бета-версии.

13

Ни одно из решений выше работал для моего, но я обнаружил, что, когда я установил область в команде ECR логин он работал.

aws ecr get-login --region us-west-2

+0

Это сработало для меня, спасибо. –

+0

Это работало и на меня. – pditommaso

+0

Это решило это для меня тоже. Я думаю, причина в моем случае заключалась в том, что ECR, к которому я пытался нажать, был в другом регионе, чем мой дефолт был в '~/.aws/config'. – Malvineous

3

Просто была такая же проблема на Linux Mint 18.1 (Ubuntu 16.04) с АМС ККМ и последняя Docker 17.06.1-се используется через последний Python Docker client 2.5.1. Вход работал, нажатие не удалось.

Удаление ~/.docker/config.json помогло. Он содержал, возможно, устаревший токен авторизации.

Я не думаю, что это имеет какое-то отношение к базовой ОС. В моем случае это работало ранее, и единственным изменением, которое я могу вспомнить, было обновление от Ubuntu до Docker repo's docker-ce 17.06.

+0

Это сработало. У меня была двойная запись для того же региона. что, вероятно, заставило Докера запутаться. – johnsam

2

Вы также получаете сообщение «Ваш токен авторизации истек», если у вас есть несколько учетных данных в ~/.aws/credentials (путь зависит от ваших os) и забудьте добавить флаг -p.

Используйте эту команду, чтобы получить логин:

aws ecr get-login --region eu-west-1 --p <yourprofilename> 
+0

Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (https://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (https://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/17260115) – the4kman

+0

Спасибо за отзыв. Обновлен мой ответ. Надеюсь, теперь все ясно. – Nik

+0

Хотя это дает вам токен, токен действует только в течение 12 часов. Что плохо для CI. Есть ли способ увеличить срок действия токена? – MarzSocks

0

Я знаю, что пост связан с MacOS Sierra, но и для тех, у кого есть проблемы в Windows, я выполнил следующие действия:

1) AWS ECR Get-Логин, эта команда будет выводить длинная строка

докер Войти -u -p AWS eyJwYXlsb2FkIjoiUXBnQ2FTV1B6Q1JqZGlH ..... . (Пропущено всю линию для лучшего понимания) -e нет https://xxxxxxx.dkr.ecr.us-east-1.amazonaws.com.

2) Скопируйте и вставьте эту строку (возможно -e никто не будет работать, так что удалить его тоже). На выходе появится предупреждение, за которым следует успех: ВНИМАНИЕ! Использование -password через CLI небезопасно. Используйте --password-STDIN Войти Преемник

Если вам нужно использовать безопасный способ, использовать --password-STDIN

3) Теперь вы смело можете нажать на изображение -docker нажимной XXXXXXX. dkr.ecr.us-east-1.amazonaws.com/ecfs-test

0429f33dd264: Pushed 
48accfb13167: Pushed 
f3bb6dd29c05: Pushed 
e58ae65fa4eb: Pushed 
3c6037fae296: Pushed 
3efd1f7c01f6: Pushed 
73b4683e66e8: Pushed 
ee60293db08f: Pushed 
9dc188d975fd: Pushed 
58bcc73dcf40: Pushed 
latest: digest: sha256:4354d137733c98a1bc8609d2d2f8e97316373904e size: 2404 

Может быть, это решение будет работать на Mac тоже.

0

Вам необходимо обновить токен авторизации через каждые 12 часов попробовать:

$(aws ecr get-login --no-include-email --region us-east-1) - область изменения в соответствии с конфигурацией

+0

это первая команда, которую я запускаю каждый раз. –

0

Предупреждение: aws ecr get-login не появляется при подключении к серверам АМС и, кажется, работает, даже если у вас есть плохой доступ/секретные ключи AWS или даже если вы забыли ввести свой доступ/секретные ключи AWS в качестве переменных окружения.

Он по-прежнему с радостью предоставит вам длинный пароль без возникновения ошибки. Сообщение, которое вы получаете от AWS, - это ошибка срока действия, а не более правильная и полезная «авторизация неверная».

Примечание: Использование версии aws-cli 1.11.112.

1

Я также получаю ту же ошибку, ниже решение, которое я попробовал и это работает: команда 1. Run: AWS ECR Get-Войти --no-включать-электронный --region ар-юго-восток -1 (изменить регион согласно вашему репозиторию) 2.вы получите на выходе что-то вроде: Docker логин -u -p AWS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == https://youraccountid.dkr.ecr.ap-southeast-1.amazonaws.com

Удалить "https: //", а затем выполнить команду, как Docker логин -u -p AWS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == youraccountid.dkr .ecr.ap-southeast-1.amazonaws.com

И он будет работать, и вы сможете нажать изображение.

0

В моем случае проблема была несколько полномочия в ~/.aws/credentails поэтому я использовал --profile

aws ecr get-login --no-include-email --region us-east-2 --profile xxxx 

Это работает для меня.

Смежные вопросы