AWS CodeBuild не может синхронизироваться с корзиной S3. ListObject отказано в разрешении - PullRequest
0 голосов
/ 12 сентября 2018

В CodeBuild у меня есть 2 проекта. Один для промежуточного сайта, а другой для производственного участка. Когда я компилирую свой сайт и запускаю его через промежуточный проект, он работает нормально. Он успешно синхронизирован с моим S3 Bucket для промежуточной площадки. Однако при попытке скомпилировать и запустить его через производственный проект при выполнении команды sync возвращается ошибка:

фатальная ошибка: произошла ошибка (AccessDenied) при вызове операции ListObjects: доступ запрещен

[Контейнер] 2018/09/11 08:40:33 Команда не была успешно завершена. Aws s3 sync public / s3: // $ S3_BUCKET статус выхода 1

Я немного покопался и думаю, что проблема в моей политике ведра. Я использую CloudFront в качестве CDN поверх моей корзины S3. Я не хочу изменять политику производства рабочих контейнеров, пока не буду абсолютно уверена, что должна. Я беспокоюсь, что это может оказать какое-то влияние на живой сайт. Вот моя политика для производственного сегмента:

{
    "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]/*"
        }
    ]
}

1 Ответ

0 голосов
/ 12 сентября 2018

Согласно описанию ошибки, разрешение на список отсутствует.

Добавьте приведенное ниже разрешение в правилах ведения корзины:

  "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/*"]
 }
...