Повторяется в aws лямбда для тайм-аута внешнего API - PullRequest
0 голосов
/ 14 января 2020

У меня есть aws лямбда-функция, которая вызывается API Gateway. Функция Lambda вызывает внешние конечные точки API и иногда получает сетевое время ожидания при вызове внешнего API. Каков наилучший способ реализации механизма повторных попыток в aws лямбда для обработки времени ожидания сети или других ошибок на стороне сервера? Также хорошо ли использовать повторную попытку внутри лямбда-функции, которая стоит за время выполнения? Любая рекомендация высоко ценится. Привет

Ответы [ 2 ]

1 голос
/ 14 января 2020

Каков наилучший способ реализации механизма повтора в aws лямбда для обработки тайм-аута сети или других ошибок на стороне сервера?

Вы можете выбросить ошибку тайм-аута дальше и не не обрабатывать это в вашей функции Lambda, в этом случае ваша Lambda будет вызвана снова. Обратите внимание, что это зависит от конфигурации вашей лямбды (т. Е. От количества заданных попыток).
Вы можете найти больше теоретических и практических примеров здесь .

Также это хорошо использовать повторную попытку внутри лямбда-функции, стоимость которой зависит от времени выполнения?

Лямбда-повторы бесплатны для вас (вы платите только за лямбда-выполнение, а не за повторные логи c). Реализация вашего собственного подхода повторения внутри Lambda не является бесплатной для вас, потому что вы платите за его выполнение.

0 голосов
/ 14 января 2020
  1. Вы можете увеличить ограничение времени выполнения лямбды.

  2. Вы можете отслеживать время выполнения лямбды, а когда оно приблизится к пределу, повторите вызов ваша лямбда с той же полезной нагрузкой. Я имею в виду, что лямбда самопроизвольно запускается до тех пор, пока внешний API не отреагирует успешно.

  3. Вы можете внедрить в свою систему SQS (Simple Queue System), где будут храниться сообщения для внешнего API. , А некоторые из потребителей будут отправлять сообщения на внешний API. Это может быть другая лямбда или другая работающая служба, которая отвечает только за вызов внешнего API.

...