You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向AWS推送Docker容器执行ECR登录命令时遇未授权错误求助

解决AWS ECR Public登录提示"denied: Not Authorized"的问题

环境信息

  • Docker版本:24.0.6
  • AWS CLI版本:aws-cli/2.13.17 Python/3.11.5 Linux/5.15.0-83-generic exe/x86_64.ubuntu.20 prompt/off

触发错误的命令

aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/m5c0a2h3

错误提示

Error response from daemon: Get "https://public.ecr.aws/v2/": denied: Not Authorized

解决步骤

1. 确认当前AWS身份及权限

  • 执行以下命令查看当前AWS CLI使用的身份:
    aws sts get-caller-identity
    
  • 登录AWS控制台,找到该身份对应的IAM用户/角色,检查是否附加了包含ecr-public:GetAuthorizationToken的权限政策;若要推送镜像,还需添加ecr-public:BatchCheckLayerAvailability、ecr-public:BatchGetImage、ecr-public:CompleteLayerUpload、ecr-public:GetDownloadUrlForLayer、ecr-public:InitiateLayerUpload、ecr-public:PutImage、ecr-public:UploadLayerPart这些权限。

2. 检查ECR Public仓库状态

  • 确认public.ecr.aws/m5c0a2h3这个公有仓库已经在AWS ECR Public控制台手动创建完成(公有仓库无法自动生成)。
  • 检查仓库的权限设置,确保当前AWS身份对该仓库有读写权限。

3. 验证AWS CLI配置有效性

  • 执行以下命令检查当前CLI配置:
    aws configure list
    
  • 确认region是us-east-1(ECR Public仅支持该区域),access_key和secret_key有效且未过期。如果配置有误,执行aws configure重新设置,或检查环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY是否覆盖了配置文件内容。

4. 排查Docker登录命令问题

  • 先单独获取登录密码,确认能正常返回:
    aws ecr-public get-login-password --region us-east-1
    
  • 若密码能正常获取,手动执行Docker登录命令测试:
    docker login --username AWS --password <刚才获取的密码> public.ecr.aws/m5c0a2h3
    
  • 确认仓库URI是否正确,public.ecr.aws后的前缀必须是你创建的公有仓库的注册表别名,不能随意填写。

5. 清理Docker缓存凭证

  • 先登出当前ECR Public的登录状态:
    docker logout public.ecr.aws
    
  • 然后重新执行最初的登录命令,避免缓存的无效凭证导致失败。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:43:25