Выполнение лямбда-выражения AWS завершается сбоем только в первый раз, когда я запускаю его с «ошибкой функции клиента»

Я запускаю лямбда-функцию через API-шлюз, и все работает отлично, за одним исключением: в самый первый раз, когда я запускаю ее в определенный день, она не работает.

Как ни странно, журналы лямбда-функций не показывают никаких ошибок. Я получаю свой обычный оператор журнала START, а затем запрос и контекст триггера, а затем через 5 секунд он неожиданно заканчивается.

Когда я просматриваю журналы шлюза API, это ошибка, которую он возвращает:

Сбой выполнения Lambda со статусом 200 из-за ошибки функции клиента: 2018-12-10T11:00:31.208Z cc233168-fc9n-11fc-a05a-577bb4sd2b2ccc Время ожидания задачи истекло через 5,01 секунды.

Кто-нибудь сталкивался с подобной проблемой? Что такое ошибка функции клиента и как ее решить?


person Ludo    schedule 10.12.2018    source источник


Ответы (1)


не зная большей части фонового кода, который вы используете, я бы назвал это холодным стартом. Холодный старт происходит для первого запроса, когда ваша функция не вызывалась очень долгое время. Если вы заметили сообщение об ошибке «Тайм-аут через 5,01 секунды», который установлен по умолчанию, вы можете увеличить время ожидания.

В качестве альтернативы вы можете уменьшить влияние холодных запусков, уменьшив их продолжительность ссылка :

  1. создавая свои функции Lambda на языке, который не требует большого времени холодного запуска , т. е. Node.js, Python или Go
  2. выбрать более высокий параметр памяти для функций на критическом пути обработки пользовательских запросов (т. е. всего, от чего пользователю придется ждать ответа, включая промежуточные API)
  3. оптимизация зависимостей вашей функции и размер пакета

Вы также можете исследовать, запуская задание cron через Cloud Watch после каждого определенного интервала для вызова вашего API через PING.

person Yash Bindlish    schedule 10.12.2018
comment
Любые другие причины? Я вижу это во время нагрузочного тестирования и только через несколько минут, поэтому я серьезно сомневаюсь, что это связано с холодным запуском (если только это не холодный запуск недавно масштабированных лямбда-выражений). - person tschumann; 23.10.2019
comment
Примечание: если вы используете бессерверную платформу для развертывания Lambdas, время ожидания по умолчанию составляет 6 секунд, поэтому вы увидите, что время ожидания задачи истекло через 6,01 секунды. в журналах шлюза API. - person jarmod; 10.04.2020