在 AWS Lambda 函数之间共享通用数据

Nic*_*ick 5 amazon-web-services aws-lambda

如果我有一组通用配置,例如多个 Lambda 函数使用的一组常量。有什么方法可以在一个地方共享它们之间的数据,以便我可以轻松修改值,而无需在每个 lambda 函数内部进行一一更新?

我可以将数据放入数据库,但会导致每个 lambda 请求产生一个额外的查询,并且运行速度变慢。

Rya*_*yan 5

如果配置不会经常更改,我会将其放入 S3 中并让每个 lambda 在启动时加载它。

如果它确实改变了很多,或者你想构建某种 UI 来更新设置,那么你可以走数据库路线。如果您在 lambda 启动时加载配置 - 即在处理程序函数之外,只要 lambda 不返回睡眠状态,您只需加载配置一次,因此惩罚可能不会那么严重。

// this will only be loaded when the Lambda starts up
// keep in mind if you are loading from an external resource
// it will probably be async so your function should return a Promise
var config = someFunctionThatLoadsConfigFromS3();

// entry point for Lambda will be called for every event(api gateway request)
module.exports.handler = function(event, context) {
  config.then(function(config) {
    // do some stuff with config
    context.done(null, 'return a value');
  }).catch(....); 
};
Run Code Online (Sandbox Code Playgroud)