Boto3 Copy_Object не удается на размер> 5 ГБ - PullRequest
0 голосов
/ 18 октября 2018

У меня есть следующая функция

async def _s3_copy_object(self, s3_source, s3_destination):
    source_bucket, source_key = get_s3_bucket_and_key(s3_source)
    destination_bucket, destination_key = get_s3_bucket_and_key(s3_destination)

    print("copying object: {} to {}".format(s3_source, s3_destination))
    source = {'Bucket': source_bucket, 'Key': source_key}
    await self._async_s3.copy_object(CopySource=source,
                                     Bucket=destination_bucket, Key=destination_key,
                                     ServerSideEncryption='AES256',
                                     MetadataDirective='COPY',
                                     TaggingDirective='COPY')

Это прекрасно работает, если файл меньше 5 ГБ, но не работает, если объект превышает 5 ГБ.

Я получаю следующую ошибку:

An error occurred (InvalidRequest) when calling the CopyObject operation: The specified copy source is larger than the maximum allowable size for a copy source: 5368709120: 1313

Есть ли обходной путь для этого?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вам нужно использовать метод boto3 copy вместо copy_object.Он выполнит загрузку из нескольких частей, которая требуется при копировании объектов размером более 5 ГБ.Он также будет обрабатывать потоки для вас.

0 голосов
/ 18 октября 2018

Вы должны рассмотреть возможность использования многочастной загрузки. В одной операции максимально допустимый размер составляет 5 ГБ

Загрузка нескольких частей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...