Приветы. Вопрос есть для знатоков AWS.
Есть задача, хочу спросить как лучше организовать её решение.
1. Юзер заливает видео файлы (от несокльких мин до нескольких часов). Заливает сразу в S3.
2. Мне надо как можно быстрей но не критично быстро обработать все файлы и результат сложить туда же в S3.
3. Есть Docker образ в котором может быть выполнена задача, нужно исползовать его. В образе сидит celery-worker который подключается к брокеру очереди и получает задания. Инстанс работает пока не закончатся задания по файлам. То есть это не запуск инстанса под одну команду а воркер на всё время выполнения задач.
4. Всё происходит автоматически без ручного вмешательства.
Любой бекэнд по управлению через API я могу написать, нужен совет именно о том как организовать это на стороне AWS.
Я не так давно начал разбираться в имеющихся сервисах. На данный момент я нашел несколько вариантов.
Самый удобный это через CloudFormation создать кластер и масштабировать его от 1 до N в зависимости от нагрузки. Либо под каждую задачу запускать свой кластер (если нет каких-либо ограничений по их количеству). Но тут узнал что CloudFormation уже не актуален.
Lambda и Batch не подходит так как нужен именно воркер а не выполнение одного задания.
Как бы вы организовали данный процесс?
Спасибо.
Если хочется и есть возможность все переписать по lambda возможна вполне:
1. S3 объект генерирует CloudWatch событие
2. Lambda функция выполняется по событию из п.1. если в процессе выполнения произошла ошибка, то событие может быть отправлено в SQS dead letter queue.
Все вполне хорошо описывается в CloudFormation - он далеко не мертв. Более свежая технология - CDK, но он тоже в конечном счёте генерирует CloudFormation шаблоны.
Если переписывать не хочется, то возможно самый простой способ это одна EC2 машина, которая масштабируется вертикально (мощность машины).