Я считаю, что суть вашей проблемы в том, что некоторые переменные (канал) находятся вне вашей функции-обработчика.
AWS Lambda - это просто контейнер Docker.Контейнер иногда перезагружается ... но обычно, когда он запускается и инициализируется, единственное, что происходит, когда вы вызываете "теплую" лямбду, - это то, что ваша функция-обработчик вызывается (какой-то внешней вещью AWS) внутри вашего существующего и работающегоcontainer ...
Следовательно, все, что находится за пределами вашей функции-обработчика и вызывается только тогда, когда код инициализируется в первый раз и будет сохранять свое начальное значение в последующих вызовах.
Trythis out (пример Python):
from datetime import datetime
now = str(datetime.now())
def lambda_handler(event, context):
return now
Этот фрагмент кода будет находиться в модуле с именем lambda_function.py
.Когда вы впервые вызываете лямбду, будет запущен контейнер Docker с интерпретатором Python, который загрузит ваш модуль lambda_function
и вызовет функцию lambda_handler()
.
Однако при вызове функции secondвремя, модуль уже был загружен.Таким образом, переменная now
уже инициализирована и имеет предыдущее значение.Последующие вызовы lambda_handler()
(или, если хотите, «вызовов лямбда-функций») будут просто передавать то же значение, которое было создано при первой инициализации модуля.