У меня огромный файл 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
.Это быстро, но, похоже, нет способа загрузить только части файла.