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

使用AWS根用户推送Docker镜像至ECR时GetAuthorizationToken报错

解决AWS ECR推送镜像时的AccessDeniedException错误

问题描述

尝试将Docker镜像推送至AWS ECR,使用不推荐的根用户在本地创建了访问密钥/密钥对,执行ECR提供的登录命令:

sudo aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxx.xxxxxx.ecr.us-east-1.amazonaws.com

持续收到错误:

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::5555555555555:assumed-role/AmazonEC2RunCommandRoleForManagedInstances/mi-08d61ab572732fec4 is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

已关闭2FA,但问题仍未解决。

解决方案

  • 确认当前使用的AWS身份:错误信息显示当前生效的是AmazonEC2RunCommandRoleForManagedInstances角色,并非你创建的根用户访问密钥。执行aws configure list查看当前配置的Access Key;如果用了sudo,可能加载的是root用户的AWS配置(/root/.aws/credentials),而非个人用户配置(~/.aws/credentials)。
  • 为对应身份添加ECR权限:
    • 若坚持使用根用户:给根用户附加AmazonEC2ContainerRegistryFullAccess托管策略,或自定义包含以下权限的策略:ecr:GetAuthorizationToken、ecr:BatchCheckLayerAvailability、ecr:GetDownloadUrlForLayer、ecr:BatchGetImage、ecr:InitiateLayerUpload、ecr:UploadLayerPart、ecr:CompleteLayerUpload、ecr:PutImage。
    • 推荐方案:放弃使用根用户,创建IAM用户并附加上述ECR相关权限策略,用该IAM用户的访问密钥配置AWS CLI。
  • 修正登录命令执行方式:
    • 若无需sudo即可操作Docker,直接去掉sudo执行命令。
    • 若必须用sudo,确保加载正确的AWS凭证,可执行:
      sudo AWS_SHARED_CREDENTIALS_FILE=~/.aws/credentials aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxx.xxxxxx.ecr.us-east-1.amazonaws.com
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:20:10