我使用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时,代码执行大约需要2-3秒。一旦它以这种方式执行,Lambda实际上会升温并在400ms之后开始响应。它会保持一段时间的温暖。
我在这里缺少什么?
答案 0 :(得分:1)
注意强>
编写Lambda函数代码时,请不要假设AWS Lambda始终重用容器,因为AWS Lambda可能选择不重用容器。根据各种其他因素,AWS Lambda可能只是创建一个新容器,而不是重用现有容器。
尝试保持一个Lambda容器似乎是一个“糟糕的架构设计”,但是,显然这是一个正常的情况,当另一个事件源触发一个新容器时,你的温暖容器没有被使用。