Обходной путь aws apigateway timeout с лямбда - асинхронная обработка - PullRequest
0 голосов
/ 31 мая 2018

У меня есть серверный сервер, работающий на лямбде.Время выполнения обычно варьируется от 40 до 250 с, что превышает максимально допустимое время прохождения apigateway (29 с).Поэтому я думаю, что мой единственный вариант - прибегнуть к асинхронной обработке.У меня есть идея, но помощь в Интернете кажется скудной, и я хотел бы знать, есть ли какие-либо лучшие практики там?Или какой самый простой способ мне обойти эту проблему - использовать асинхронную обработку или другие?

1 Ответ

0 голосов
/ 31 мая 2018

Это действительно зависит от вашего варианта использования.Но, вероятно, асинхронный подход лучше всего подходит для этого сценария, учитывая, что с вызывающей стороны вашего API обычно не стоит ждать 250 секунд, чтобы получить ответ (вероятно, поэтому ограничение API-интерфейса 29 Gateway ограничено 29 с).

Асинхронный просто означает, что вы будете отвечать от Lambda, сообщая, что вы получили запрос и собираетесь работать над ним, но он будет доступен только позже.

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

В зависимости от того, какую работу необходимо выполнить, вы можете создать корзину S3 на летуи ответьте клиенту с предварительно заданным URL-адресом S3 .Затем ваш работник будет загружать свои результаты в корзину S3, а клиент будет опрашивать эту корзину до тех пор, пока они не появятся.

...