如何将事件发送到 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",没有计算发生。
最接近的选择是 让处理程序在某处检查(参数存储?)每当函数被调用时,看它是否应该重新加载。
我有一个 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",没有计算发生。
最接近的选择是 让处理程序在某处检查(参数存储?)每当函数被调用时,看它是否应该重新加载。