Копирование объектов S3 с помощью Python и Boto 3 в одну корзину

#python-3.x #amazon-s3 #boto3

#python-3.x #amazon-s3 #boto3

Вопрос:

Я пытаюсь скопировать объекты из одного каталога одного каталога в другой подкаталог.

Способ 1:

  s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 'MY BUCKET NAME',
    'Key': str(source)
}
extra_args = {
    'ACL': 'public-read'
}
s3.meta.client.copy(copy_source, 'MY BUCKET NAME', str(destination), extra_args)
  

Приведенный выше код вызывает ошибку отказа в доступе.

Способ 2:

 """
S3 delete objects
"""
s3_client = boto3.client('s3')
BUCKET = 'MY BUCKET NAME'
PREFIX = str(object)
response = s3_client.list_objects_v2(Bucket=BUCKET, Prefix=PREFIX)
for object in response['Contents']:
    print('Deleting', object['Key'])
    s3_client.delete_object(Bucket=BUCKET, Key=object['Key'])
  

Этот был использован для удаления объектов s3. Я решил сначала реализовать функцию копирования, а затем второй успешный метод удаления. Как я могу скопировать объекты в одну корзину S3?

Комментарии:

1. Если вы получите Access denied , возможно, у вас нет разрешений на это.

2. если у меня нет разрешений, вышеуказанные методы также должны работать неправильно? Но удаление и создание работают нормально.

3. Для копирования требуются GetObject разрешения, я думаю. Можете ли вы загрузить данный объект или ему также отказано?

4. Загрузка работает нормально @Marcin. Позвольте мне проверить разрешение GetObject.