2016-12-07 17 views
2

Я написал этот фрагмент кода, который должен сделать копию на S3.Невозможно выполнить копию s3 с помощью boto3

import boto3  
s3client = boto3.client('s3', config['AWS']['Region']) 
source = {'Bucket': bucket_name, 'Key': source_key} 
metadata = {'a':'b'} 
s3client.copy_object(Bucket=bucket_name, CopySource=source, Key=target_key, Metadata=metadata) 

Но ошибка, что я получаю

ClientError: An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied

Хотя у меня есть доступ к s3. Если я выполняю операции загрузки или списка, он работает. Только copy_object выдает эту ошибку. У меня заканчиваются идеи о том, почему это не работает.

+1

Выполняется ли роль IAM, с которой вы можете скопировать объект исходного объекта и разрешить запись в целевое ведро? – jarmod

+0

Можете ли вы попробовать его с помощью AWS CLI - то есть 'aws s3 cp s3: // source-bucket-name/key s3 // target-bucket-name/key'? Это позволит вам исправить любые проблемы с аутентификацией без boto в миксе. – stdunbar

+0

Да, я могу скопировать его с помощью cli –

ответ

0

Так что проблема была в том, что я пытался получить доступ к неправильному ведру. И, следовательно, ошибка. Поэтому ошибка была фактически правильной.