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

AWS EC2实例登录ECR时出现No basic auth credentials错误排查

ECR私有镜像拉取报错“No basic auth credentials”的排查方案

一、Docker配置与登录状态问题

  • 检查Docker认证信息是否写入成功:执行登录命令后,查看~/.docker/config.json文件,确认是否存在对应ECR仓库的auth条目。若没有,说明登录命令执行过程中可能因输出截断、环境变量异常导致认证信息未正确写入。
  • 验证登录命令准确性:手动替换命令中的账号ID和区域(比如直接写123456789012.dkr.ecr.us-east-1.amazonaws.com),避免aws sts get-caller-identity返回异常或区域不匹配导致仓库地址错误。
  • 重启Docker daemon:执行sudo systemctl restart docker,确保daemon加载最新的认证配置。

二、AWS权限的细粒度差异

GitHub Actions能推送成功,不代表EC2实例的IAM实体拥有拉取权限,两者所需权限范围不同:

  • 推送镜像仅需ecr:GetAuthorizationToken、ecr:InitiateLayerUpload、ecr:UploadLayerPart、ecr:CompleteLayerUpload、ecr:PutImage权限;
  • 拉取镜像需要ecr:GetAuthorizationToken、ecr:BatchCheckLayerAvailability、ecr:GetDownloadUrlForLayer、ecr:BatchGetImage权限。
  • 检查EC2关联的IAM角色/用户权限策略,确认是否包含拉取所需权限,示例策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
  • 若ECR仓库设置了资源级权限,需确保策略中明确指定目标仓库的ARN,而非泛用的*。

三、环境变量与AWS CLI配置冲突

  • 检查是否存在DOCKER_CONFIG环境变量:该变量会覆盖Docker默认配置文件路径,导致登录生成的认证信息无法被读取。执行echo $DOCKER_CONFIG确认。
  • 验证AWS CLI生效配置:执行aws configure list查看当前使用的profile、区域等信息,避免因AWS_PROFILE环境变量指定了未授权的profile,或多配置文件冲突导致身份验证异常。

四、网络与区域问题

  • 确认EC2所在VPC的网络连通性:若实例在私有子网,需配置ECR接口端点和S3网关端点(ECR镜像实际存储在S3),否则实例无法访问ECR服务。
  • 核对ECR仓库区域与CLI默认区域:若仓库在us-east-1但实例CLI默认区域为其他值,会导致登录的仓库地址与实际仓库不匹配,拉取时无法找到对应认证信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:37:11