Проблема под рукой
- У меня есть приложение для рельсов.
- Пользователи будут загружать файлы. От 1 до 3000 файлов. Иногда это zip-файлы, а иногда нет. Я не хочу задерживать сервер загрузкой этих файлов, поэтому ищу решение этой проблемы.
- Заархивированные файлы необходимо разархивировать.
- Затем я хочу проверить, загружал ли пользователь ранее те же файлы? то есть, если пользователь уже загрузил тот же файл (2) неделю назад, то это проблема: (i) либо мы не разрешаем загрузку этого конкретного файла, либо мы спрашиваем пользователя: вы уверены, что хотите загрузить тот же файл еще раз?
- Затем я хочу сохранить ключи / ссылки на файлы в соответствующих моделях / записях на задней панели.
Было интересно, какой может быть лучший рабочий процесс для решения вышеупомянутого: то есть очень общий обзор: другими словами, могут ли облачные вычисления AWS Lambda / Google и т. Д. И т. Д. Лучше всего использовать для решения вышеуказанной проблемы? Как нам лучше всего справиться с этой ситуацией с помощью драгоценного камня Святыни? Имеет ли смысл использовать AWS Lambda вместо фоновых заданий?
Я предпочитаю использовать для загрузки драгоценный камень Shrine.
Мои идеи:
- На стороне клиента пользователь перетаскивает файлы, которые пользователь хочет загрузить.
- Затем все файлы загружаются (заархивированные или иным образом) во временное хранилище через гем Shrine.
- ЕСЛИ zip-файлы загружены, возможно, необходимо запустить лямбда-функцию AWS для распаковки файлов. Если это так, то в конце дня ключи для этих файлов должны каким-то образом быть возвращены клиенту для решения проблем с проверкой - но тогда как лямбда-функция AWS сможет вернуть этот запрос исходной стороне клиента? откуда поступил запрос? Или, скорее, следует ли генерировать лямбда-функцию AWS на стороне клиента, передавая идентификаторы распакованных больших двоичных объектов?
- Затем нам нужно выполнить некоторые проверки: мы хотим справиться с ситуацией, когда есть повторяющиеся файлы. Нам нужно будет проверить с помощью наших рельсов, были ли эти файлы уже загружены.
- После того, как эти проблемы проверки будут обработаны, пользователь отправляет форму, и все ключи сохраняются в соответствующих записях.
Эти идеи ни в коем случае не носят предписывающий характер.
Я ищу несколько очень общих советов о том, как лучше всего сделать все это. Я ни в коем случае не ограничен AWS: с таким же успехом я мог бы использовать Google или Azure. Будем очень признательны за любые рекомендации по вышеизложенному.
Конкретные вопросы:
- Как будет срабатывать лямбда-функция AWS?
- Как можно будет вернуть клиенту ключи загруженных файлов?
Что я имею в виду под общим обзором?
Вот несколько примеров общих обзоров:
(1) Загрузка и распаковка файлов в S3 через Rails, размещенный на Heroku?
(2) https://www.quora.com/How-do-I-extract-large-zip-files-in-AWS-Lambda
Будем очень признательны за любые указатели в правильном направлении.
Ваше здоровье!