2016-11-04 8 views
0

Привет, мне нужна помощь в настройке прав доступа к объекту при загрузке на S3. Я хочу сделать его общедоступным для чтения/записи.Загрузить файл в AWS S3 с помощью Boto3 с полными правами доступа

У меня есть функция следующим образом.

def UploadFile(self, destFilePath, data): 
     self._bucket.put_object(Key=destFilePath, Body=data, ACL='public-read-write') 

Когда он запускается, у меня есть ошибка разрешений.

ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied 
+0

Оказывается, что приложение не имеет достаточных разрешений для загрузки файл.Как приложение получает учетные данные? Он работает на экземпляре Amazon EC2 с назначенной ролью или вы передаете учетные данные через файл? Какие разрешения были предоставлены Роли или учетным данным? Что такое политика ведра в целевом ковше? Вы можете проверить разрешения, выполнив команду 'aws s3 cp' с интерфейсом командной строки [AWS] (http://aws.amazon.com/cli/) в той же системе. –

+0

Привет, вы могли бы научить меня, как передавать учетные данные, используя файл? Я не знал, как это сделать, я привел к тому, что файл имел полный доступ – RStyle

+0

У меня есть мой доступ и секретный ключ со мной – RStyle

ответ

2

Важно понимать how your application can access AWS credentials.

При вызове API для AWS необходимо предоставить учетные данные для аутентификации человека или приложения, подающего запрос на AWS. Эти учетные данные можно определить:

  • A пользователя определены в AWS управления идентификацией и доступом (IAM), который имеет статические полномочия
  • Role определены в AWS IAM, который не имеет полномочий, но предполагается, пользователем или службы AWS
  • Временные разрешений созданной службы маркеров безопасности AWS

Этим объектам назначаются разрешения, которые предоставляют право делать определенные вызовы API для определенных ресурсов. Например, разрешения могут быть предоставлены для загрузки данных из ведра Amazon S3, запуска/остановки экземпляра Amazon EC2 или изменения настроек безопасности. Эти разрешения определены в политике .

Есть несколько способов, которыми Вы могли бы предоставить учетные данные для приложения Python:

  • , запустив приложения на Amazon EC2 экземпляра, который был назначен на роль при запуске: Приложение может retrieve credentials via the Instance Metadata service. (Лучший вариант)
  • Предоставляя учетные данные в файле конфигурации (всегда опасно, так как они могут быть случайны зарегистрированномом в хранилище исходного кода)
  • По проходящим учетным данным с помощью переменной среды (Хорошо для локальных компьютеров)

Таким образом, если вы получаете в AccessDenied ошибку, вы должны:

  • Определить, как приложение было RETR ieving полномочия
  • Посмотрите на политику, связанные с этими учетными данными
  • Обновление политики для предоставления необходимого доступа

См: Boto documentation: Configuring Credentials и IAM documentation

 Смежные вопросы

  • Нет связанных вопросов^_^