Я использую 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, также должна быть привязана к (в моем случае) роли сборки кода.
Надеюсь, это кому-то поможет.