我试图在S3上以编程方式上传一个大到1GB的非常大的文件。我发现AWS S3支持大型文件的多部分上传,我发现了一些Python代码。 (link)
我的观点:上传速度太慢(差不多1分钟)。
有没有办法提高分段上传的效果。或任何好的库支持S3上传
非常感谢任何建议。
答案 0 :(得分:1)
1 GB的1分钟对于互联网上的大量数据而言非常快。您应该考虑此用例的S3传输加速。 https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html
答案 1 :(得分:1)
将我的答案留在这里以获取参考,使用此代码将性能提高两倍:
import boto3
from boto3.s3.transfer import TransferConfig
s3_client = boto3.client('s3')
S3_BUCKET = 'mybucket'
FILE_PATH = '/path/to/file/'
KEY_PATH = "/path/to/s3key/"
def uploadFileS3(filename):
config = TransferConfig(multipart_threshold=1024*25, max_concurrency=10,
multipart_chunksize=1024*25, use_threads=True)
file = FILE_PATH + filename
key = KEY_PATH + filename
s3_client.upload_file(file, S3_BUCKET, key,
ExtraArgs={ 'ACL': 'public-read', 'ContentType': 'video/mp4'},
Config = config,
Callback=ProgressPercentage(file)
)
uploadFileS3('upload.mp4')
特别感谢@BryceH的建议。虽然解决方案确实提高了S3上传的性能,但我仍然愿意接受任何更好的解决方案。感谢