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

AWS公有ECR仓库推送镜像时docker login报错400 Bad Request问题求助

公有ECR登录400错误解决方案

核心错误原因

你当前使用的是私有ECR的认证命令,公有ECR与私有ECR的认证接口完全独立,且公有ECR的认证请求必须发往固定区域us-east-1,与你的仓库所在区域无关,这是私有ECR正常但公有ECR登录失败的核心原因。

修复步骤

  • 替换为公有ECR专属登录命令,直接复制执行即可:
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

该写法同时解决了原命令中--password参数不安全的警告。

权限校验

如果执行上述命令后仍然报错,需要为你的IAM用户/角色添加公有ECR专属权限,最小可用权限策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr-public:GetAuthorizationToken",
                "sts:GetServiceBearerToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr-public:BatchCheckLayerAvailability",
                "ecr-public:GetRepositoryPolicy",
                "ecr-public:DescribeRepositories",
                "ecr-public:DescribeImages",
                "ecr-public:InitiateLayerUpload",
                "ecr-public:UploadLayerPart",
                "ecr-public:CompleteLayerUpload",
                "ecr-public:PutImage"
            ],
            "Resource": "arn:aws:ecr-public::${你的AWS账号ID}:repository/${你的公有ECR仓库名}"
        }
    ]
}

额外踩坑排查

  • 确认AWS CLI版本高于1.18.96或者2.x版本,旧版本CLI不支持ecr-public相关命令
  • 执行登录前可运行aws sts get-caller-identity校验本地AWS凭证是否有效、是否为预期调用身份
  • 后续推送镜像前打标签需要符合公有ECR格式:public.ecr.aws/${你的仓库别名}/${镜像名}:${标签},你提供的仓库别名为m8r0s3o9,示例标签命令为docker tag 本地镜像名:标签 public.ecr.aws/m8r0s3o9/本地镜像名:标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:01