【问题标题】:Simple global state for lambda functionslambda 函数的简单全局状态
【发布时间】:2016-07-22 22:15:17
【问题描述】:

我使用 lambda 函数基本上每 5 分钟对设备 API 进行一次长时间轮询以收集数据。我还希望能够实时触发数据获取以进行测试。我可以在 API 调用中设置最后一个日期时间......类似于GET /data/?fromDate=$date

我希望能够以某种方式跟踪上次请求的时间,因此每次运行 lambda 函数时,我都会获取自上次请求以来收集的所有数据,无论它是在预定运行中完成的或手动完成。

通常我可以简单地为此使用一个变量:

// set initial date
let lastTime = moment().subtract("5 minutes").toDate();

// lambda function handler
export default async () => {
   const data = await gatherData();
   lastTime = new Date;
   return storeData(data);
}

但是,在 lambda 中,每次运行都可能是一个新进程,因此无法保证 lastTime 会保留在内存中。

我有什么方法可以跟踪 lambda 函数中的全局状态,以处理一些简单的事情,比如原语?

【问题讨论】:

    标签: javascript aws-lambda


    【解决方案1】:

    您必须将这类东西存储在 Lambda 之外的某个地方。我一直在使用 DynamoDB 表来存储 Lambda 函数的全局状态。

    【讨论】:

    • 太好了;您能否提供更多见解/具体示例?
    • 它基本上只是一个 DynamoDB 查询,因为该函数首先要获取当前状态,然后根据需要进行(可能有条件的)更新。需要进行的更新以及是否有条件的更新将完全取决于您的特定用例。
    猜你喜欢
    • 2011-09-26
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多