AWS CodeBuild 获取授权令牌失败。

12
我试图构建我的测试项目,但每次都在pre_build中失败。我检查了错误日志,上面写着:

[Container] 2017/03/26 19:28:21 调用GetAuthorizationToken操作时发生错误(AccessDeniedException):User:arn:aws:sts::074181202020:assumed-role/codebuild-Testing-project-service-role/AWSCodeBuild未被授权在资源*上执行ecr:GetAuthorizationToken。

我已经尝试附加以下策略:

  • IAMSelfManageServiceSpecificCredentials
  • IAMFullAccess
  • AmazonS3ReadOnlyAccess
  • CodeBuildPolicy-Testing-project-1490555003058
  • IAMReadOnlyAccess
  • AWSCodeBuildAdminAccess
  • IAMUserSSHKeys
  • AWSCodeCommitFullAccess
  • IAMFullAccess
  • AmazonS3FullAccess
  • AdministratorAccess
  • AWSElasticBeanstalkFullAccess
  • AWSCodePipelineFullAccess
  • WSCodeBuildAdminAccess

但它仍然给我同样的错误。

任何帮助将不胜感激!谢谢!


你解决了这个问题吗? - Glenn Bech
5个回答

23

实际上,getAuthorizationToken错误无法在ECR内解决(因为你甚至看不到ecr:getAuthorizationToken)。

您需要前往IAM面板=>角色=>CodeBuild Role=>授予权限=>AmazonEC2ContainerRegistryReadOnly

这可以使其获取令牌


9

4
这与什么有关?那份文件中没有提到ecr:GetAuthorizationToken,而且在按照那些步骤后才出现错误。 - shredding

6

这个提示在我经历了一整天的错误信息后让我微笑了。谢谢! - harley81

1
这是我管理 ECR 的策略,然后将其附加到我想要允许访问的用户上:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:PutImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:DescribeRepositories",
                "ecr:GetRepositoryPolicy",
                "ecr:ListImages",
                "ecr:DeleteRepository",
                "ecr:BatchDeleteImage",
                "ecr:SetRepositoryPolicy",
                "ecr:DeleteRepositoryPolicy",
                "ecr:GetAuthorizationToken"
                "ecr:BatchCheckLayerAvailability",
                "ecr:BatchGetImage"
            ]
        }
    ]
}

0

我遵循这个指南https://www.stacksimplify.com/aws-eks/aws-devops-eks/learn-to-master-devops-on-aws-eks-using-aws-codecommit-codebuild-codepipeline/#step-08-review-the-buildspecyml-for-codebuild-environment-variables

同时注意到,AWS将创建两个角色(Code Pipelines角色和Code Build角色)。您需要向代码构建角色添加AmazonEC2ContainerRegistryFullAccess策略。 代码构建角色的名称将是:codebuild-<codebuild_project>-service-role, 不要将上述策略添加到AWSCodePipelineServiceRole--。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接