2016-02-22 3 views
4

Есть ли способ получить уведомления, когда моя функция AWS Lambda истекает?Получать уведомления, когда AWS Lambda timesout

Я не могу найти никакой документации. Единственным способом на данный момент является поиск в журналах Cloudwatch для уведомлений о тайм-аутах всех функций Lambda, которые у меня есть. Есть ли способ лучше?

ответ

1

Вы можете заставить CloudWatch запускать тревогу, когда определенное сообщение появляется в журналах. Я не могу найти официальную документацию по этому вопросу, но вы создаете «метрический фильтр» в журналах CloudWatch, а затем вы можете создать будильник из этого. This blog post, похоже, хорошо описывает процесс.

0

Вы можете проверить внутри функции, сколько миллисекунд осталось, и если ваша функция находится в состоянии ожидания, отправьте уведомление оттуда.

Из документов:

context.getRemainingTimeInMillis()

Возвращает приблизительное оставшееся время выполнения (до наступления тайм-аута) функции Lambda, которая в текущий момент. Тайм-аут - одна из функций Lambda . Когда время ожидания достигнет, AWS Lambda прекратит вашу функцию Lambda.

Этот метод можно использовать для проверки оставшегося времени во время выполнения функции и принятия соответствующего корректирующего действия во время выполнения.

+4

Кажется, это очень ненадежный способ справиться с этим. Вы проверили бы время, оставшееся между каждой строкой кода? Откуда вы знаете, есть ли у вас достаточно времени, чтобы отправить уведомление до того, как ваша функция Lambda прекращена? Что делать, если ваша функция Lambda находится в середине долгого вызова API, когда происходит тайм-аут? –

0

Согласно the docs, таймаут должен быть в метрике ошибок. Я наблюдал странное поведение со счетом (например, с числом ошибок 0,5). Поэтому я сделал будильник CloudWatch для подсчета ошибок> 0 (не> = 1).

Вы также мог бы сделать что-то с REPORT сообщения или с

Task timed out after 25.00 seconds 

, который можно найти в журналах Cloudwatch.

Смежные вопросы