Как я могу скачать с S3 большими частями? - PullRequest
0 голосов
/ 22 мая 2019

У меня огромный файл S3 (3,5 ТБ), который мне нужно обработать в экземпляре EC2.Прямо сейчас экземпляр имеет 500 ГБ дискового пространства.Я бы предпочел не увеличивать это.

Файл может быть обработан по частям.Поэтому я думал о загрузке 7 фрагментов по 500 ГБ и обработке каждой части в последовательности.

Как я могу загрузить большие части файла S3 (быстро)?

Используя boto3, я могу загрузитьвесь файл, используя s3.download_file().Есть ли способ, которым я могу получить это только для загрузки частей файла?

Я также могу прочитать части файла:

s3 = boto3.resource('s3')
obj = s3.Object(bucket, key)
f = obj.get()['Body']
f.read(N) 

Проблема этого подхода заключается в том, что N = 500Так что это не вписывается в память.Я мог бы написать некоторый код, который читает меньшие порции и записывает в файл.Однако я полагаю, что код от Amazon лучше справится с оптимизацией, чем то, что я сам пишу?

Я также пытался aws s3 cp.Это быстро, но, похоже, нет способа загрузить только части файла.

...