跨AWS账号拉取ECR镜像失败:403 Forbidden错误解决求助
跨AWS账号ECS拉取ECR镜像的403错误解决方法
出现403 Forbidden错误的核心原因是权限配置缺失,以下是分步解决步骤:
1. 配置源ECR账号(存储镜像的账号)
在源ECR仓库的权限策略中,添加允许目标账号拉取镜像的规则:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowCrossAccountPull", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::目标账号ID:role/ECS任务执行角色名称" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] }
- 替换
目标账号ID为需要拉取镜像的ECS所在账号ID - 替换
ECS任务执行角色名称:Fargate集群用任务执行角色,EC2集群用ECS实例的IAM角色
2. 配置目标ECS账号
确保ECS任务使用的角色(任务执行角色/EC2实例角色)拥有获取ECR授权令牌的权限,添加以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }
3. 验证任务定义中的镜像地址
确认任务定义里的镜像地址是源ECR仓库的完整正确地址,例如:189426755769.dkr.ecr.eu-west-2.amazonaws.com/ecr-dev-apps:1.0.0
避免账号ID、仓库名、标签或区域写错。
4. 检查AWS组织SCP(若启用)
如果AWS组织开启了服务控制策略(SCP),需确保:
- 目标账号的SCP未禁止访问外部ECR资源
- 源账号的SCP未禁止对外共享ECR镜像
内容的提问来源于stack exchange,提问作者Karikalan
相关产品推荐
相关产品推荐

