Lud*_*ord 33 amazon-web-services docker aws-cli macos-sierra
我正在尝试使用aws-cli将docker镜像推送到AWS ECR存储库.
get-login命令login succeeded)denied: Your Authorization Token has expired. Please run
'aws ecr get-login' to fetch a new one.我不知道什么是错的,我正在向正确的仓库推进,我的Mac上的时间是正确的.这是以前工作,但自从我重新安装我的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.
Run Code Online (Sandbox Code Playgroud)
小智 34
上面的解决方案都没有为我工作但我发现当我在ecr login命令中设置区域时它起作用了.
aws ecr get-login --region us-west-2
小智 33
您可能只是在运行命令,而不是将从该命令回显的命令粘贴回终端.容易犯错误.运行后:
aws ecr get-login --no-include-email --region us-east-1
它将打印出另一个要运行的命令,您需要复制该命令并在终端中运行它以完全进行身份验证.
或者一个很酷的捷径就是将echo'd命令传回shell中:
aws ecr get-login --no-include-email --region us-east-1 | sh
wkl*_*wkl 23
最新版本的Docker使用新的凭据存储功能,该功能存在一个错误,docker login即使用指定协议的URL 执行会导致令牌过期错误.这个问题将在Docker 1.13中修复.
目前,解决方法是在不指定协议的情况下执行登录命令.
所以在返回的命令blob中aws ecr get-login:
docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
应该替换为:
docker login -u AWS -p AQECAHh....b6Wk -e none 1234567890.dkr.ecr.eu-west-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
省略https://应该让docker暂时工作.
Jos*_*lff 11
这个答案使用 AWS CLI v2.0.26 对我有用
https://github.com/aws/aws-cli/issues/4962#issuecomment-592064025
aws --region us-west-2 ecr get-login-password | docker login --username AWS --password-stdin xxxxxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
其中 us-west-2 是您所在的地区,xxxxxxxxxxxxxx 是您的帐户 ID,位于此处“存储库名称”下方的行首:https : //us-west-2.console.aws.amazon.com/ecr/ create-repository?region=us-west-2
您需要每12小时刷新一次授权令牌,请尝试:
$(aws ecr get-login --no-include-email --region us-east-1) -根据您的配置更改区域
简单命令:
password=$(aws ecr get-login-password --region us-east-1)
echo $password | docker login --username AWS --password-stdin 787566098823.dkr.ecr.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您在〜/ .aws / credentials(路径取决于您的操作系统)中有多个凭据,并且忘记添加--p标志,则还会收到消息“您的授权令牌已过期”。
使用以下命令进行登录:
aws ecr get-login --region eu-west-1 -p <yourprofilename>
Run Code Online (Sandbox Code Playgroud)
小智 6
我很幸运使用 eval。例如,
$ aws ecr get-login --region us-east-1 --no-include-email --profile username_env
Run Code Online (Sandbox Code Playgroud)
没用。
$ eval $(aws ecr get-login --region us-east-1 --no-include-email --profile username_env)
Run Code Online (Sandbox Code Playgroud)
工作了。
我只是想发布官方迁移链接,因为我相信如果情况发生变化,它将是最新的:
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-ecr-get-login
它指出
$(aws ecr get-login --no-include-email)
Run Code Online (Sandbox Code Playgroud)
应替换为
aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL
Run Code Online (Sandbox Code Playgroud)
这是由于 CLI 中潜在的密码泄露造成的。值得一提的是,您可以从 CLI 版本 1.17.10 迁移到新方法,以便顺利迁移到 2.X
刚刚在带有AWS ECR的Linux Mint 18.1(Ubuntu 16.04)和通过最新的Python Docker客户端 2.5.1 使用的最新Docker 17.06.1-ce上出现了相同的问题。登录成功,推送失败。
去除~/.docker/config.json帮助。它仅包含(可能是过时的)授权令牌。
我认为这与底层操作系统无关。就我而言,它以前曾奏效,我唯一能记得的变化是从Ubuntu repo升级docker.io 1.12到Docker repo docker-ce 17.06。
就我而言,问题是 ~/.aws/credentails 中的多个凭证,因此我使用了 --profile
aws ecr get-login --no-include-email --region us-east-2 --profile xxxx
Run Code Online (Sandbox Code Playgroud)
这对我有用。
小智 5
以下步骤对我有用。第一次运行
aws ecr get-login --region us-west-2Run Code Online (Sandbox Code Playgroud)
你会得到一个输出,它返回:
docker login -u AWS -p AQECAHh....b6Wk -e none 1234567890.dkr.ecr.eu-west-1.amazonaws.comRun Code Online (Sandbox Code Playgroud)
现在,从上面的结果中删除“ -e none ”并再次运行命令。
您将能够成功登录。
现在,尝试推送您的 docker 映像,它会起作用!
| 归档时间: |
|
| 查看次数: |
18264 次 |
| 最近记录: |