Как получить объекты S3 из спецификации сборки кода? (В доступе отказано)

У меня есть CodePipeline Pipeline со стадией CodeBuild

Вот моя спецификация сборки:

{
  "version": "0.2",
  "phases": {
    "build": {
      "commands": [
        "echo \"Hello, CodeBuild!\"",
        "echo \"ca marche\" > test.txt",
        "mkdir site-content",
        "aws s3 sync s3://my-super-bucket-name site-content",
        "ls - al"
      ]
    }
  },
  "artifacts": {
    "files": [
      "test.txt"
    ]
  }
}

Роль службы проекта сборки определяется с помощью политики, созданной cdk по умолчанию, а также этой политики:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-super-bucket-name",
                "arn:aws:s3:::my-super-bucket-name/* "
            ],
            "Effect": "Allow"
        }
    ]
}

И codebuild.amazonaws.com является доверенным лицом для Роли

Что касается ведра, у меня есть такая политика ведра:

{
    "Version": "2012-10-17",
    "Id": "PolicyXXXXXXXXXXXXX",
    "Statement": [
        {
            "Sid": "StmtYYYYYYYYYYYYY",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::12345678910:user/a-user-for-another-process"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-super-bucket-name"
        }
    ]
}

Но проект сборки терпит неудачу:

[Container] 2021/02/03 09:57:43 Running command aws s3 sync s3://my-super-bucket-name site-content
download failed: s3://my-super-bucket-name/test.txt to site-content/test.txt An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
Completed 4 Bytes/13.7 KiB (0 Bytes/s) with 4 file(s) remaining

Помощь !

РЕДАКТИРОВАТЬ: я просто добавляю это утверждение в политику ведра:

        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXXXXXXXXX:role/my-role"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-super-bucket-name"
        }

Но у меня такая же ошибка :(

РЕДАКТИРОВАТЬ 2: Глупый я! Это было :

"Resource": "arn:aws:s3:::my-super-bucket-name*"

Теперь это работает!


person David Vergison    schedule 03.02.2021    source источник


Ответы (1)


Вы должны изменить политику корзины, чтобы предоставить явный доступ к вашей роли сборки кода, поскольку привилегии сначала проверяются на основе политики корзины, если к корзине не было привязано политики корзины, тогда они работали бы так, как вы пытаетесь.

person A. Vishnoi    schedule 03.02.2021
comment
Спасибо за идею, но это то же самое (см. РЕДАКТИРОВАНИЕ в первом посте) - person David Vergison; 03.02.2021
comment
Ну с * работает! Спасибо ! - person David Vergison; 03.02.2021