繁体   English   中英

AWS CodeBuild 中的 GetAuthorizationToken 权限错误

[英]GetAuthorizationToken permission error in AWS CodeBuild

我正在尝试使用 AWS CodeBuild 设置我的 Node 项目。

version: 0.2
phases:

  pre_build:
    commands:
      - $(aws ecr get-login)
      - TAG="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"

  build:
    commands:
      - docker build -t "${REPOSITORY}:${TAG}" .

  post_build:
    commands:
      - docker push "${REPOSITORY}:${TAG}"

当我触发构建时,命令$(aws ecr get-login)失败:

调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException):用户无权执行:ecr:GetAuthorizationToken on resource: * [Container] 2018/10/26 10:04:12 Command did not exit successfully $(aws ecr get-登录)退出状态255

在 IAM 控制台中,用户附加了这些策略:

  • AmazonEC2ContainerRegistryFullAccess
  • AmazonEC2ContainerRegistryPowerUser

并且都包含ecr:GetAuthorizationToken权限。

我错过了什么?

解决了。 我需要为角色而不是用户授予ecr:GetAuthorizationToken权限。

有类似的问题,但将AmazonEC2ContainerRegistryReadOnlyAmazonEC2ContainerRegistryPowerUserAmazonEC2ContainerRegistryFullAccess策略附加到代码构建角色没有任何作用

通过创建我自己的策略并将其附加到代码构建角色来解决:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:PutImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload"
            ],
            "Resource": "%YOUR_REPOSITORY_ARN"
        }
    ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM