Как установить время ожидания шлюза AWS API выше 30 секунд? - PullRequest
0 голосов
/ 22 января 2019

Я прочитал здесь, что могу установить тайм-аут своей лямбда-функции на 15 минут (https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/)

Однако, когда я пытаюсь установить API-шлюз в настройках запроса на интеграцию, он не позволяет мне его установитьвыше 29 секунд:

Timeout max is 29 seconds

Как получить функцию, которая длится 15 минут, но шлюз, который истекает через 30 секунд?

Ответы [ 2 ]

0 голосов
/ 28 июля 2019

API Gateway теперь поддерживает API WebSocket. Просто:

  1. Создать веб-сокет,
  2. вызывает лямбда-функцию через этот сокет, передавая ему connectionid. эта лямбда затем поместит сообщение в очередь SQS, передающее connectionid
  3. последняя лямбда, вызываемая sqs для обработки очереди в асинхронном событии, будет выполнять свои обязанности (до 15 минут обработки), а затем будет использовать connectionid для передачи клиенту (браузеру) результатов обработки (просто как обычная лямбда будет делать через шлюз API).

Вы можете проверить событие, если соединение еще живо, чтобы прервать обработку (или отправить сообщение о ходе выполнения обратно клиенту).

0 голосов
/ 22 января 2019

К сожалению, нет способа увеличить время ожидания шлюза API до более 29 секунд.Это ограничение шлюза.Причина, по которой вы можете установить лямбда-функцию дольше, заключается в том, что ее можно подключить к другим ресурсам AWS, которые обеспечивают более высокий порог для обработки тайм-аута.

Вот некоторые варианты, которые вы могли бы изучить, чтобы обойти это и / или работать сограничение:

  1. Разделите вашу функцию на более мелкие функции и объедините их в цепочку, чтобы увидеть, если вы получите повышение производительности.Перед этим вы можете использовать AWS X-Ray для отладки функции и посмотреть, какая часть занимает больше времени для нацеливания того, что нужно разделить.

  2. Увеличьте объем памяти, используемойфункция.Более высокое распределение памяти может привести к более быстрому выполнению.Я использовал эту опцию раньше и смог обойти ограничения тайм-аута.

  3. Вместо использования API Gateway вы можете просто использовать AWS SDK для вызова invoke (), которая будет вызывать вашу лямбдуфункция.Это позволит обойти порог тайм-аута.

Надеемся, что один или их комбинация поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...