2016-07-22 69 views
1

我正在使用lambda函数来每隔5分钟对设备API进行一次长查询来收集数据。我也希望能够实时触发数据提取以用于测试目的。我可以在API调用中设置上次日期时间...类似GET /data/?fromDate=$datelambda函数的简单全局状态

我想要做的是以某种方式跟踪上次请求的时间,以便每次运行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); 
} 

然而在拉姆达每次运行可能是一个新的进程所以没有保证lastTime将被保存在内存中。

有没有什么办法让我跟踪lambda函数中的全局状态?

回答

4

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

+0

太棒了;你能否提供更多的见解/具体例子? –

+0

它基本上只是一个DynamoDB查询,作为函数的第一件事,获取当前状态,然后根据需要更新(可能是有条件的)。需要进行的更新以及是否有条件的更新完全基于您的特定用例。 –