如何将事件发送到 AWS Lambda 函数的所有 运行 个实例

How to send an event to all running instances of a AWS Lambda function

我有一个 Lambda 函数,其配置位于外部源(比如 S3)。

为了节省一些计算时间,该函数在第一次执行时加载并保存在内存中的配置。

我希望能够告诉此 Lambda 函数的 所有 运行 个实例 按需重新加载配置。

在下面的代码片段中,Lambda 函数在事件具有属性 'reload' 时重新加载配置。但显然只有 运行 个实例之一获得事件。

// Function to process events
var processEvent = function(event,callback) {
  // process event
}

// Function to update configuration
var config; // global object representing configuration
var updateConfiguration = function(callback) {
  // ... load asynchronously from S3
}

// Handle events
exports.handler = function(event, context, callback) {
  if (event.reload) {
    updateConfiguration(callback);   // load configuration
  } else if (!config) {
    updateConfiguration(function() { // load configuration
      processEvent(event,callback);  // ... then process event
    });
  } else {
    processEvent(event,callback);    // process event directly
  }
}

也许您可以订阅一个 SNS 主题并通过该主题发送事件。然后,订阅该主题的 lambda 函数可以更新 config 变量。

请记住,lambda 函数对全局变量有一些特殊的缓存行为。您可以在此处阅读有关此主题的更多信息:https://medium.com/tensult/aws-lambda-function-issues-with-global-variables-eb5785d4b876

没有能力向 AWS Lambda 容器发送消息。当它们不是 运行 时,它们实际上是 "frozen",没有计算发生。

最接近的选择是 让处理程序在某处检查(参数存储?)每当函数被调用时,看它是否应该重新加载。