AWS CodeBuild无法同步到S3存储桶ListObject被拒绝的权限

问题描述 投票:0回答:1

在CodeBuild中,我有2个项目。一个用于暂存站点,另一个用于生产站点。当我编译我的网站,并通过暂存项目运行它,它工作正常。它成功同步到我的s3存储桶用于暂存站点。但是,当尝试编译并在生产项目中运行它时,在运行sync命令时,它会返回错误:

致命错误:调用ListObjects操作时发生错误(AccessDenied):拒绝访问

[Container] 2018/09/11 08:40:33命令没有成功退出aws s3 sync public / s3:// $ S3_BUCKET退出状态1

我做了一些挖掘,我认为问题在于我的存储桶策略。我在我的S3存储桶上使用CloudFront作为CDN。我不想修改生产桶的存储桶策略,直到我完全确定我必须这样做。我担心它可能会对现场网站产生一些影响。以下是生产存储桶的存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[bucket_name]/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity [access_code]"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[bucket_name]/*"
        }
    ]
}
amazon-web-services amazon-s3 amazon-cloudfront aws-codebuild
1个回答
3
投票

根据错误描述,缺少列表权限。

在您的存储分区政策中添加以下权限:

  "Action": [
          "s3:Get*",
          "s3:List*"
]

这应该可以解决您的问题。还要检查在IAM上创建的codebuild服务角色,以访问S3存储桶。 S3存储桶策略和IAM角色都控制在这种设置中访问S3存储桶。

您的服务角色应具有S3的列表权限。

 {
  "Sid": "S3ObjectPolicy",
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:List*"
  ],
  "Resource": ["arn:aws:s3:::my_bucket",
             "arn:aws:s3:::my_bucket/*"]
 }
© www.soinside.com 2019 - 2024. All rights reserved.