Разрешение пользователям загружать файлы в виде пакета из AWS s3 или Cloudfront - PullRequest
3 голосов
/ 18 сентября 2011

У меня есть веб-сайт, который позволяет пользователям искать музыкальные треки и загружать те, которые они выбирают в формате mp3.

У меня есть сайт на моем сервере и все mp3-файлы на s3, которые затем распространяются через облачный фронт.Пока все хорошо.

Теперь клиент желает, чтобы пользователи могли выбирать несколько музыкальных треков, а затем загружать их все оптом или в пакетном режиме вместо 1 за раз.

Обычно я помещаю все файлы в zip-файл и затем предоставляю пользователю ссылку на этот новый zip-файл для загрузки.В этом случае, поскольку файлы находятся на s3, что потребовало бы, чтобы я сначала скопировал все файлы с s3 на мой веб-сервер, обработал их в zip-архив и затем загрузил с моего сервера.

В любом случае я могу создатьzip на s3 или CF или есть какой-то способ пакетировать / группировать файлы в zip?

Может быть, я мог бы настроить экземпляр EC2 для обработки этого?

Я был бы очень признателен за некоторые указания.

Лучший

Джо

Ответы [ 3 ]

1 голос
/ 03 июня 2015

Я сталкиваюсь с точной той же проблемой. Пока единственное, что мне удалось найти, это инструмент Amazon s3sync:

https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

В моем случае я использую Rails + его аддон Paperclip, что означает, что у меня нет способа легко загрузить все изображения пользователя за один раз, потому что файлы разбросаны по множеству подкаталогов.

Однако, если вы можете сгруппировать файлы вашего пользователя лучше, скажите так:

/users/<ID>/images/...
/users/<ID>/songs/...

... и т. Д., Тогда вы можете решить свою проблему сразу же:

aws s3 sync s3://<your_bucket_name>/users/<user_id>/songs /cache/<user_id>

Имейте в виду, что вам нужно будет предоставить серверу правильные учетные данные, чтобы инструменты S3 CLI могли работать без запроса имени пользователя / пароля.

И это должно вас отсортировать.

Дополнительное обсуждение здесь: Загрузка всей корзины S3?

1 голос
/ 19 сентября 2011

Боюсь, вы не сможете создавать партии без дополнительной обработки. запуск экземпляра EC2 может быть вариантом для создания пакета для пользователя

0 голосов
/ 01 июня 2016

s3 основывается на одном HTTP-запросе.

Таким образом, ответ - темы, чтобы достичь того же самого

Java API - использует TransferManager

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html

Вы можете добиться высокой производительности благодаря многопоточности.

Нет массовой загрузки извините.

...