Node.js 解冻Lambda函数不会';t减少延迟

Node.js 解冻Lambda函数不会';t减少延迟,node.js,aws-lambda,serverless-framework,Node.js,Aws Lambda,Serverless Framework,我正在使用serverless warmup plugin运行一个cron,它每10分钟调用一个Lambda函数。Lambda函数的代码如下所示: exports.lambda = (event, context, callback) => { if (event.source === 'serverless-plugin-warmup') { console.log('Thawing lambda...') callback(null, 'Lamb

我正在使用
serverless warmup plugin
运行一个cron,它每10分钟调用一个Lambda函数。Lambda函数的代码如下所示:

exports.lambda = (event, context, callback) => {
    if (event.source === 'serverless-plugin-warmup') {
        console.log('Thawing lambda...')
        callback(null, 'Lambda is warm!')
    } else {
        // ... logic for the lambda function
    }
}
这在纸面上是可行的,但实际上cron并不能使Lambda函数保持温暖,即使它每10分钟成功调用一次

当通过不同的事件源(cron除外)调用Lambda时,执行代码大约需要2-3秒。一旦以这种方式执行,Lambda实际上会升温,并在400ms以下开始响应。它会温暖一段时间

我在这里遗漏了什么?

如下所述:

注意

编写Lambda函数代码时,不要假设AWS Lambda始终重用容器,因为AWS Lambda可能会选择不重用容器。根据各种其他因素,AWS Lambda可能只是创建一个新容器,而不是重用现有容器


试图保持Lambda容器正常运行似乎是一种“糟糕的体系结构设计”,但显然,当不同的事件源触发新容器时,不使用加热的容器是正常情况。

10分钟?我想在10分钟内没有任何活动足以让lambda容器冷却。例如,您是否尝试减少到5或3分钟?您是否也检查了cloudwatch事件?(就像要执行的cron)。正如汤姆所说,10分钟可能就足够让兰博达冷静下来了。刚才读到这篇文章时,我不认为问题与cron的频率有关,因为即使在cron调用函数10秒后调用它,它仍然会经历一个冷启动(3s响应时间),并且下面的调用响应不到400ms。这就好像来自cron的调用并没有影响到它所有的功能一样。您可能没有添加允许它连接到其他lambda的权限。插件创建的lambda的日志看起来不错,它具有所有必要的IAM权限,并成功调用了它应该调用的lambda。这些成功的调用也出现在目标lambda的日志中。