我计划将我的 lambda 函数配置从环境变量移动到 DynamoDb,因为我的 lambda 函数共享配置,而且我不想在每次配置更改时重新部署我的 lambda 函数(我的配置经常更改,一旦他们这样做我必须重新部署这么多 lambda 函数)。
但是为了提高我的 lambda 函数的性能并降低成本,我不会在每次执行时加载配置。相反,我会将配置加载到全局变量中,并且由于全局变量在执行过程中持续存在(只要 lambda 函数已预热),我可以在不访问 DynamoDb 的情况下重用相同的配置。这是一个示例代码:
let config = null;
function getConfig() {
if (config)
return Promise.resolve(config);
else {
//Load config from DynamoDb and return it in form of a promise
}
}
exports.handler = function(event, context, callback) {
getConfig()
.then(config => {
//Your code that makes use of config
})
}
到目前为止一切都很好。现在,考虑使用新配置更新 DynamoDb 的时间。在被 AWS 关闭并面临冷启动之前,预热的 lambda 函数将继续使用旧配置。
我想要做的是向 lambda 函数发出信号并强制它们刷新其预热的 lambda 函数并在每次配置更改时重新开始。我知道我可以重新部署它们,这正是我想要的。但这正是我一开始要逃避的地方。那么,我有哪些选择?