Произошла ошибка (AccessDenied) при вызове операции PutObject: Доступ запрещен

Я получаю сообщение об ошибке при упаковке приложения в корзину s3, я выполняю эту строку с помощью codepipeline и сборки кода aws:

aws cloudformation package --template-file serverless.template --s3-bucket dev-btnext-1 
                               --output-template-file NewSamTemplate.yaml

Эта команда указана в buildspec.yml.


person Juan Zapata    schedule 01.02.2018    source источник
comment
Убедитесь, что вы указали разрешения "s3:GetBucket*", "s3:PutBucket*" and "s3:ListBucket*" для своей роли / пользователя IAM.   -  person krisnik    schedule 02.02.2018


Ответы (1)


Ваша корзина не принимает объекты, которые не зашифрованы, поэтому при упаковке используйте ключ шифрования для шифрования данных перед сохранением, например aws cloudformation package --template-file serverless.template --kms-key-id arn:aws:kms:us-east-1:***********:key/d91b925c-8a3b-400c-ae49-******** --s3-bucket dev-btnext-1 --output-template-file NewSamTemplate.yaml

используйте свой собственный ключ KMS, вы найдете ключи шифрования для S3 в разделе ключей шифрования IAM.

А также убедитесь, что ваш CodeBuild предоставил доступ к s3, если не выполните шаг ниже

1. Перейдите в консоль управления IAM.

2. Выберите роли.

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

4. На вкладке «Разрешения» выберите «Добавить встроенную политику».

5. В сервисе выберите Выбрать услугу.

6. В разделе «Выберите службу» выберите S3.

7. В «Действиях» выберите «Выбрать действия».

8. Разверните «Запись» в разделе «Группы уровней доступа», а затем выберите «Поместить объект».

9. Выберите Ресурсы, а затем установите флажок Любой.

10. Выберите «Проверить политику».

11. Введите Имя * и выберите «Создать политику». Затем вернитесь к конвейеру, который вы создали в предыдущем разделе.

Создание конвейера для бессерверного приложения

person Mayur    schedule 20.02.2018
comment
Я усомнился в этом, когда прочитал его, а затем проверил политику сегмента в контейнере CodePipeline по умолчанию. Это действительно требует шифрования. - person Adam Luchjenbroers; 26.05.2020