代码之家  ›  专栏  ›  技术社区  ›  Sashi

从s3下载工件时拒绝代码生成访问

  •  0
  • Sashi  · 技术社区  · 6 年前

    我的代码生成配置了代码管道。S3是我的神器商店。尽管已附加具有足够访问权限的IAM角色,但仍会收到拒绝访问消息。

    错误信息截图

    Code Build Error message

    我已经检查了与代码生成关联的服务角色。它附加了以下策略。

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Build",
                "arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Build:*"
            ],
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::codepipeline-ap-southeast-1-*"
            ],
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ]
        }
    ]
    

    }

    但是,当我使用iam策略验证器测试它时,会收到以下错误消息。

    enter image description here

    基于对这个问题的公认回答,我目前拥有的策略应该允许我从s3获得工件,而不存在任何问题- AWS Codebuild fails while downloading source. Message: Access Denied

    如何清除拒绝访问的消息?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Yash Bindlish    6 年前

    当您已经有了一个codebuild项目并将其集成到codepipline管道时,通常会发生这种情况。当您将代码构建项目与代码管道集成时,该项目将从代码管道源输出中检索其源代码。源输出将存储在工件存储位置,即一个s3存储桶,可以是由codepipline创建的默认存储桶,也可以是在创建管道时指定的存储桶。

    因此,您需要为codebuild服务角色提供访问s3中codepipline bucket的权限。角色需要权限才能将s3对象放入bucket中,并获取对象。

    我尝试过的政策也在起作用:

    {
      "Version": "2012-10-17",
      "Statement": [
    {
      "Sid": "CodeBuildDefaultPolicy",
      "Effect": "Allow",
      "Action": [
        "codebuild:*",
        "iam:PassRole"
      ],
      "Resource": "*"      
    },
    {
      "Sid": "CloudWatchLogsAccessPolicy",
      "Effect": "Allow",
      "Action": [
        "logs:FilterLogEvents",
        "logs:GetLogEvents"
      ],
      "Resource": "*"
    },
    {
      "Sid": "S3AccessPolicy",
      "Effect": "Allow",
      "Action": [
        "s3:CreateBucket",
        "s3:GetObject",
        "s3:List*",
        "s3:PutObject"
      ],
      "Resource": "*"
      }
     ]
    }
    

    策略模拟器

    enter image description here

    AWS Reference