Boto3 Copy_Object的大小> 5GB失败

时间:2018-10-18 17:18:46

标签: python amazon-s3 boto3

我具有以下功能

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')

如果文件小于5gb,则效果很好,但如果对象大于5gb,则失败。

我收到以下错误:

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 :(得分:2)

您需要使用boto3 copy方法而不是copy_object。复制大于5GB的对象时,它将执行分段上传。它还将为您处理线程。

答案 1 :(得分:0)

您应该考虑使用分段上传。在一次操作中,最大允许大小为5GB

Multi-part upload