В настоящее время я работаю над проектом Angular, в котором наши пользователи загружают изображение на наш сервер через функции API Gateway и lambda. Наш сервер (например, экземпляр EC2) преобразует изображение и сохраняет его в контейнере S3, готовом для отображения пользователю. Эта операция может занять до 30 секунд.
Мне было интересно, каков «современный» безсерверный способ заставить внешний интерфейс ждать, пока внутренний сервер завершит операция и «немедленно» показать его конечному пользователю. По сути, как мне «подписаться» и ждать, пока сервер завершит операцию через API-шлюз и лямбда-функции?
Я подумал о следующих параметрах, но ни один из них, по-видимому, не используется в этом контексте:
1) Регулярно вызывайте интерфейсный вызов (например, каждую секунду), чтобы API проверял заданный c идентификатор изображения в сегменте S3 с помощью лямбда-функции (т. Е. GET / receive-picture / {id } и дождитесь получения 200 и проигнорируйте ответы 404.
2) Получите в фоновом режиме pu sh сообщение «завершено для id {id}» в очередь SQS. Затем клиентский интерфейс будет регулярно (например, каждую секунду) извлекать очередь SQS (с помощью лямбда-функции, которая будет извлекать только соответствующую информацию) и проверять, содержит ли полученное сообщение соответствующий идентификатор. Опять же, я не очень уверен в том, насколько масштабируемой это будет.
3) Используйте "pu sh -подобную" службу, такую как SNS, и дождитесь, пока сервер покажет pu sh сообщение, но Я не уверен, возможно ли это даже на основе очень небольшого количества найденных ресурсов.
4) Я читал об «асинхронных» лямбда-вызовах, но я не уверен, как это будет работать и как сервер может поставить Лямбда-функция "на удержании" означает, что я не буду платить за это. ЭТО будет решением?
Есть ли лучший способ заставить сайт "ждать", пока сервер не "уведомит" его, что он завершил свою обработку? В этом смысле я в основном думаю о веб-сайтах, на которые мы будем загружать изображение профиля (LinkedIn), и после загрузки (и, конечно, с большой обработкой) веб-сайт отображает отформатированное изображение профиля.
Любые соответствующие ресурсы или советы будут очень благодарны, даже если не очень подробно
Примечание: я знаю о возможности "подписаться" и ждать ответа сервера через Angular, но я не уверен, как " подписка "на лямбда-функцию (через API-шлюз) не позволяет ей работать слишком долго (я бы хотел избежать" неоптимизированного "биллинга).
Заранее большое спасибо и извинения за этот вопрос дубликат.