2016-07-22 102 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查詢,作爲函數的第一件事,獲取當前狀態,然後根據需要更新(可能是有條件的)。需要進行的更新以及是否有條件的更新完全基於您的特定用例。 –