что произойдет, если, например, истечет время ожидания соединения между одними лямбда-вызовами к другому? как среда выполнения AWS «знает», нет ли для повторного использования
это соединение?
что будет, если соединение буферизовано? что означает, что есть остатки от предыдущих вызовов?
Среда выполнения AWS вообще не «знает», как с этим справиться. Ваша лямбда-функция должна знать об этом, проверяя, является ли соединение все еще действительным, и обрабатывая ситуацию, если она больше не действительна.
- действительно ли этот совет (повторное использование соединений через вызовы) действительно применим в реальной жизни? это кажется мне очень неприятным.
Учитывая реалии среды выполнения AWS Lambda, этот совет абсолютно действителен, если вы хотите уменьшить время холодного запуска для вызовов функций Lambda. Однако это, безусловно, может привести к проблемам с такими вещами, как подключение к реляционным базам данных, поэтому Amazon выпустила AWS Aurora Data API .
Обычно я стараюсь следовать этому совету для кэширования данных в лямбда-функциях, например, для инициализации структуры данных путем чтения таблицы базы данных или загрузки объекта S3 в память, например, но я обнаружил проблемы с глобальными областями соединения с базой данных в лямбда-функциях больше проблем, чем стоит, но если ваша лямбда-функция имеет очень частые вызовы, это может стоить вам.