лучше организовать её решение.
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 машина, которая масштабируется вертикально (мощность машины).
Lambda может быть запущена на моём Docker контейнере? Я так понял что это вызов функции, или на python или может на чем-то еще.
Обсуждают сегодня