Прежде всего поздравляю, что вы смогли успешно определить проблему. Однако есть много понятий, которые можно извлечь из возникшей проблемы. Давайте обсудим некоторые из них.
Лямбда, холодный старт, выпуск
Чтобы понять концепцию холодного старта в лямбде, неизбежно идти дальше, не понимая, как работает AWS Lambda. Пожалуйста, обратитесь к указанной ниже ссылке, которая объясняет общую работу лямбды в разделе AWS re: Invent 2018
AWS Lambda под капотом (Video Link): https://www.youtube.com/watch?v=QdzV04T_kec
Возвращаясь к вопросу холодного запуска, поскольку наши лямбда-функции выполняются в контейнере, после выполнения контейнер уничтожается, если в течение ~ 15 минут бездействия не будет никаких дальнейших вызовов функций. После того, как контейнер убит, любой будущий вызов для выполнения той же функции потребует установки нового контейнера, который может занять> 5 секунд (наиболее вероятная причина, по которой ваш вызов API прерывается через 6 секунд). Тем не менее, есть много доступных вариантов, которые могут сохранить вашу лямбду теплой. Пожалуйста, обратитесь по указанной ниже ссылке от сообщества Serverless.
Сохранение функций лямбды в тепле (ссылка на блог): https://serverless.com/blog/keep-your-lambdas-warm/
Увеличение времени ожидания лямбды
«Мне пришлось войти в консоль AWS и увеличить время ожидания до 20 секунд».
Хотя этот подход полностью приемлем, но, поскольку вы используете безсерверную технологию (явный файл serverless.yml), вы можете напрямую изменить период ожидания лямбда по умолчанию (который составляет 6 секунд). Пожалуйста, обратитесь к приведенному ниже фрагменту кода и ссылке для дальнейшего понимания.
provider:
name: was
runtime: nodejs6.10
memorySize: 512 # optional, in MB, default is 1024
timeout: 10 # optional, in seconds, default is 6
Руководство по использованию безсервисной лямбда-функции AWS (ссылка на блог): https://serverless.com/framework/docs/providers/aws/guide/functions/