Как пользователь AWS Lambda + API Gateway (с Serverless Framework), мне тоже приходилось сталкиваться с этим.
Проблема, с которой я столкнулся:
- Несколько запросов в день на лямбду (недостаточно, чтобы держать лямбды в тепле)
- Приложение, критичное ко времени (пользователь разговаривает по телефону, ожидая ответа из текста в речь)
Как я обошёл это:
Идея состояла в том, чтобы найти способ вызывать критические лямбды достаточно часто, чтобы они не простужались.
Если вы используете Serverless Framework, вы можете использовать плагин serverless-plugin-warmup , который делает именно это.
Если нет, вы можете скопировать его поведение, создав работника, который будет вызывать лямбды каждые несколько минут, чтобы они оставались теплыми. Для этого создайте лямбду, которая будет вызывать другие лямбды, и запланируйте запуск CloudWatch каждые 5 минут или около того. Обязательно вызывайте свои лямбды для хранения с пользовательским значением event.source
, чтобы вы могли выйти из них раньше, не запуская никакого реального бизнес-кода, поместив следующий код в самом начале функции:
if (event.source === 'just-keeping-warm) {
console.log('WarmUP - Lambda is warm!');
return callback(null, 'Lambda is warm!');
}
В зависимости от количества ламд, с которыми вам нужно согреться, это может быть много «согревающих» звонков. AWS предлагает 1.000.000 бесплатных лямбда-звонков каждый месяц, хотя.