Назад | Перейти на главную страницу

Скрипт AWS CodeBuild не выполняет синхронизацию s3 с AccessDenied

Я использую CodeBuild с

В моей спецификации сборки выполняется следующая команда

aws s3 sync ./webroot s3://s3-us-west-2.amazonaws.com/some-amazing-s3-bucket/test

Это политика корзины:

{
    "Version": "2012-10-17",
    "Id": "Policy1502332584348",
    "Statement": [
        {
            "Sid": "Stmt1502332580996",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789:role/service-role/code-buid-some-service-role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::some-amazing-s3-bucket/*",
                "arn:aws:s3:::some-amazing-s3-bucket"
            ]
        }
    ]
}

Сборка кода не работает с этим:

[Container] 2017/08/10 02:41:16 Running command aws s3 sync ./webroot s3://s3-us-west-2.amazonaws.com/some-amazing-s3-bucket/test
fatal error: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

Что мне не хватает? Во время тестирования у меня широко открыта политика корзины, и она все еще не работает.

У меня сработало добавление следующего к роли, созданной CodeBuild:

{
    "Effect": "Allow",
    "Resource": [
        "arn:aws:s3:::mytestbucket",
        "arn:aws:s3:::mytestbucket/*"
    ],
    "Action": [
        "s3:PutObject",
        "s3:Get*",
        "s3:List*"
    ]
}

У меня была такая же ошибка, и я перепробовал все в этой теме. Я пытался сделать

aws s3 sync ./build s3://s3-us-east-1.amazonaws.com/some-amazing-s3-bucket

из действия Codebuild, но ответ S3 всегда

fatal error: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

даже когда я делал это из aws-cli на моем ноутбуке (с ключами доступа администратора).

Мне потребовалось несколько часов, чтобы понять, что фактический URL-адрес s3 должен быть написан следующим образом:

s3://some-amazing-s3-bucket

вместо того

s3://s3-us-east-1.amazonaws.com/some-amazing-s3-bucket

При этом такая политика, как tedsmitt, также должна быть привязана к (в моем случае) роли сборки кода.

Надеюсь, это кому-то поможет.