Рейтинг:0

Как скачать миллионы файлов s3 и сжать их на лету?

флаг eg

У меня есть корзина S3 с миллионами файлов, и я хочу загрузить их все. Поскольку у меня не хватает памяти, я хотел бы скачать их, сжать на лету и только потом сохранить. Как мне это сделать?

Чтобы проиллюстрировать, что я имею в виду: aws s3 cp --recursive s3://bucket | gzip > файл

Hennes avatar
флаг za
Вместо >file вы, вероятно, можете использовать netcat (канал через nc).
Tim avatar
флаг gp
Tim
Пара идей 1) Смонтировать S3 как диск (погуглите) и заархивировать оттуда 2) Получить спотовый экземпляр, скачать и заархивировать. Убедитесь, что вы используете конечную точку шлюза S3 в своем VPC, чтобы сократить расходы.
флаг cn
Вы также можете написать лямбду, которая берет путь от S3 и сжимает содержимое, а затем возвращает сжатый файл. Затем вы можете использовать интерфейс командной строки aws для просмотра списка файлов и отправки запросов в лямбду.
John Rotenstein avatar
флаг in
"Скачать" куда? На инстанс Amazon EC2 или на собственный компьютер?
Рейтинг:0
флаг af

Неясно, хотите ли вы сохранить несжатые объекты в S3 или содержимое корзины все еще меняется.

Один из вариантов, который у вас есть, - использовать Инвентарь S3. Это не мгновенно, но он автоматически сгенерирует список объектов в ведре и запишет его в ведро S3 (такое же ведро или другое). Вы можете прочитать этот список в небольшом скрипте (в зависимости от того, что вам удобно) и заставить его работать с одним объектом за раз. Используйте интерфейс командной строки S3, чтобы извлечь объект, а затем сжать его с помощью инструментов ОС/скрипта.

Я настоятельно рекомендую встроить что-то, что проверяет, существует ли уже сжатый объект, чтобы вы могли перезапустить процесс в случае сбоя или добавления новых объектов без необходимости повторной обработки всего.

Если вы записываете сжатые объекты обратно в S3, рассмотрите возможность использования экземпляра EC2 или Lambda. С Lambda вам может понадобиться использовать файловый поток для сжатия файла на лету, а не для его извлечения. Вы должны быть в состоянии найти примеры этого, по крайней мере, для Python, если не для других поддерживаемых языков.

-- Одно слово предостережения, сделать грубый расчет того, сколько это будет стоить. Запросы на получение довольно дешевы, но передача данных вне может быть дорого. Кроме того, если вы используете любой класс хранилища, кроме Standard, с ним, вероятно, будут связаны затраты на извлечение.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.