当我尝试推送 docker 容器时出现此错误 被拒绝:您的授权令牌已过期。
我有 aws ecr get-login --no-include-email --region us-east-1,我尝试了有人在这里发布的黑客攻击,您取出了 https,但没有任何效果。
当我运行 aws ecr get-login ...我得到复制并粘贴的代码并收到一条成功消息,但当我尝试推送我的 docker 容器时,我收到拒绝:您的授权令牌已过期。 我使用的是 docker 版本 Docker 版本 17.03.1-ce。 有什么想法我能做什么吗?
谢谢!
请使用以下命令组合:
aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_NO>.dkr.ecr.<AWS_REGION_NAME>.amazonaws.com
引用文档:
“此命令使用 GetAuthorizationToken API 检索并显示身份验证令牌,您可以使用该 API 对 Amazon ECR 注册表进行身份验证。您可以将授权令牌传递到您首选的容器客户端(例如 Docker CLI)的登录命令。 ”
参考:https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html
@Robert 的评论(请参阅对问题本身的评论)对我来说已经足够了。错误在于
aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_NO>.dkr.ecr.<AWS_REGION_NAME>.amazonaws.com
不在 sudo 上,但实际的 docker 推送是。
原因之一可能是 aws-cli 版本。这个CLI工具的版本似乎是一个Python包,可以在
aws --version
中看到。我在 aws-cli/2.1.29
版本中遇到了此错误,但在旧版本 aws-cli/1.18.40
中没有遇到此错误。
“aws ecr get-login”命令已已弃用,亚马逊建议改用“aws ecr get-login-password”。
扩展@Amit Meena 的答案,因为我陷入了这个错误:
您不能在网址中包含存储库名称。
不好
aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_NO>.dkr.ecr.<AWS_REGION_NAME>.amazonaws.com/<REPO_NAME>
好
aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_NO>.dkr.ecr.<AWS_REGION_NAME>.amazonaws.com