Лямбда-тайм-аут через 29 секунд, не удается найти идентификатор запроса в журналах CloudWatch

#amazon-web-services #aws-lambda #aws-api-gateway #amazon-cloudwatch #serverless

#amazon-web-services #aws-lambda #aws-api-gateway #amazon-cloudwatch #без сервера

Вопрос:

Я новичок в AWS и Node, поэтому я действительно ценю все предложения по этому вопросу. Недавно в моей системе произошло что-то странное. Иногда (~ 20 раз в месяц) лямбда-запрос получал тайм-аут. Это всего лишь простой запрос в промежуточном программном обеспечении для аутентификации (я использую node.JS без сервера). Проблема в том, что я не могу отследить этот запрос от API gateway. Извините, я не умею объяснять вещи, поэтому я изложу это так:

Поток моей системы: CloudFront -> API Gateway -> Lambda -> RDS

Обычно, если я хочу отследить запрос: я получаю идентификатор запроса из журнала Lambda

введите описание изображения здесь

И выполните поиск в журнале API Gateway:

введите описание изображения здесь

Но для этих запросов тайм-аута:

введите описание изображения здесь

Я вообще ничего не могу найти в журнале API Gateway:

введите описание изображения здесь

Как будто это появилось из ниоткуда… Пожалуйста, помогите и спасибо за предложение.

Комментарии:

1. попробуйте использовать aws x-ray service для отслеживания сквозного потока вариантов использования с участием нескольких сервисов

2. При запросе в CloudWatch вместо сообщения следует использовать идентификатор запроса, поскольку вы ищете идентификатор запроса, а не какое-либо сообщение регистратора.

Ответ №1:

Возможно, вы уже знаете, но API Gateway имеет жесткий максимальный тайм-аут в 29 секунд и перестает ждать ответа интеграции по истечении этого времени.

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

Для этого вызова все еще должны быть некоторые журналы API Gateway, но они не будут содержать ни одной из обычных строк журнала ответов интеграции, поскольку он никогда не получал ответа от интеграции lambda.

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

Или, как рекомендует AADProgramming, служба X Ray была разработана, чтобы помочь пользователям отслеживать запросы во многих службах, поэтому включение этого было бы полезно здесь.