AWS CodeBuild部署报错:角色无法执行ecr:DescribeRepositories操作
根据错误提示,核心问题是ECR仓库的资源策略未授权该角色执行ecr:DescribeRepositories操作——即使IAM角色本身配置了相关权限,资源策略的优先级会在此场景下生效。以下是具体排查点:
检查ECR仓库的资源策略
登录AWS控制台找到目标ECR仓库app-main,查看其资源策略配置。确认是否存在允许foo-staging-application-deploy角色执行ecr:DescribeRepositories的语句。如果没有,需要添加类似策略:{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::XXXXXXXXXXX:role/foo-staging-application-deploy" }, "Action": "ecr:DescribeRepositories", "Resource": "arn:aws:ecr:eu-west-1:XXXXXXXXXXX:repository/app-main" } ] }注意:资源策略中的Principal必须使用角色的主ARN(即
arn:aws:iam::XXX:role/foo-staging-application-deploy),而非错误信息中显示的STS临时会话ARN。检查角色的权限边界
查看foo-staging-application-deploy角色是否设置了权限边界。如果边界策略未包含ecr:DescribeRepositories权限,会直接覆盖IAM策略的允许规则,导致访问被拒绝。检查服务控制策略(SCP)
如果你的AWS账号属于组织单元(OU),需要确认该OU的SCP是否允许账户内角色访问ECR资源。若SCP限制了ecr:DescribeRepositories操作,即使IAM和资源策略都授权,也会被拦截。验证CodeBuild角色关联
确认CodeBuild项目是否正确绑定了foo-staging-application-deploy角色,避免因配置错误导致使用了其他无权限的身份执行操作。
内容的提问来源于stack exchange,提问作者Ricardo Linares

