解冻 Lambda 函数不会减少延迟



我正在使用serverless-warmup-plugin来运行一个每 10 分钟调用一次 Lambda 函数的 cron。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
}
}

这在纸面上是有效的,但实际上,即使每 10 分钟成功调用一次 Lambda 函数,cron 也不会保持 Lambda 函数温暖。

当通过其他事件源(cron 除外(调用 Lambda 时,代码执行大约需要 2-3 秒。一旦以这种方式执行,Lambda 实际上会预热并在 400 毫秒内开始响应。它保持温暖了一段时间。

我在这里错过了什么?

正如官方文档所述:

注意

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

尝试保持 Lambda 容器正常运行似乎是一种"糟糕的架构设计",但是,显然,当不同的事件源触发新容器时,您的预热容器未被使用是一种正常情况。

最新更新