Создайте zip-файл с файлами из пути AWS S3 - PullRequest
0 голосов
/ 28 августа 2018

Можно ли предоставить пользователю один URL-адрес для загрузки всего содержимого по пути S3?

Иначе, есть ли способ создать zip со всеми файлами, найденными по пути S3 рекурсивно?

есть. my-bucket/media/123/*

Каждый путь обычно содержит 1K + изображений и 10+ видео.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Вы не можете сделать ни одного звонка на s3, чтобы загрузить его в формате .zip. Вам нужно будет создать сервис, рекурсивно загрузить все объекты и сжать их. Важно иметь в виду ограничение размера ваших объектов S3. Ограничение составляет 5 ТБ на объект . Вы хотите добавить проверку, чтобы проверить размер .zip перед повторной загрузкой.

0 голосов
/ 28 августа 2018

Как упоминалось ранее, нет встроенного способа сделать это. Но с другой стороны, вам не нужно скачивать и загружать файлы обратно. Вы можете создать решение без сервера в том же регионе / местоположении AWS.

Вы можете реализовать это по-разному:

В этом случае вы будете запускать лямбда-функцию через API-шлюз. Лямбда-функция создаст архив из файлов вашего сегмента и загрузит результат обратно в S3. Лямбда-функция вернет URL этого архива ***. Недостатки этого способа : Lambda не может работать более 5 минут, и если у вас слишком много файлов, у них не будет достаточно времени для их обработки. Помните, что максимальный размер файла S3 составляет 5 терабайт. Самый большой объект, который может быть загружен в одном PUT, составляет 5 гигабайт. Для объектов размером более 100 мегабайт, вы должны рассмотреть возможность использования Multipart Upload. Пример: Полное руководство по разработке REST API с помощью AWS API Gateway и AWS Lambda

5 минут должно быть достаточно для создания архива, но если вы собираетесь выполнить некоторую предварительную обработку, я рекомендую вам использовать Step Function. SF имеет ограничение по максимальному количеству зарегистрированных действий / состояний и размеру запроса (вы не можете передать свой архив в запросе), но его легко избежать (если вы принимаете это во внимание при проектировании). Проверьте больше там .

Лично я использую оба способа для разных случаев.

*** Это плохая практика - указывайте пользователю путь к вашему реальному файлу на S3. Лучше использовать CloudFront CDN . CloudFront позволяет контролировать время жизни URL-адреса и предоставлять различные способы защиты и ограничения.

0 голосов
/ 28 августа 2018

Там нет встроенного способа. Вы должны загрузить все файлы, сжать их локально, повторно загрузить, и тогда у вас будет один URL для загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...