我有一個用于觸發 AWS Lambda 作業的 API。根據請求,API 呼叫 AWS Lambda 作業,使用InvocationType='Event'. 此后,我想定期輪詢 AWS Lambda 作業是否已完成。
最適合我的架構的方法是將 Lambda 作業的識別符號存盤在資料庫中,并定期檢查作業是否完成以及它的輸出是什么。但是,我無法找到如何做到這一點。
如何定期輪詢 AWS Lambda 作業的結果,并在完成后查看輸出?
我已經研究過 using InvocationType='RequestResponse',但這需要我存盤一個未來,而我不能在資料庫中做到這一點。
uj5u.com熱心網友回復:
沒有內置方法可以檢查異步 Lambda 呼叫的狀態。
使用事件呼叫型別的異步 Lambda 呼叫意味著是一項“一勞永逸”的作業。因此,沒有“進度”或“狀態”可供獲取或投票。
由于您不想等待 Lambda 完成,因此無法進行同步 Lambda 呼叫。在這種情況下,您需要撰寫自己的邏輯來跟蹤狀態。
您可以執行此操作的一種方法是將(作業)專案存盤在jobs具有 2 個屬性的 DynamoDB 表中:
jobIdUUID(String屬性,設定為磁區鍵)completed布爾標志(Boolean屬性)
那么作業流程如下:
- 在您的 API 中,創建并存盤一個
completed默認為“假”的新作業 - 將新創建的傳遞
jobId給負載中正在呼叫的 Lambda - 當 Lambda 完成時,
jobId在jobs表中查找與傳入關聯的作業并將作業的completed屬性設定為true
然后,您可以定期輪詢 DynamoDB 表中的作業結果。
或者看看使用DynamoDB Streams作為一種無需輪詢即可近乎實時地了解作業何時完成的方法。
至于查看“輸出”,AWS Lambda 只是回傳一個成功回應,沒有其他資訊。沒有“輸出”。將您可能需要的任何輸出存盤在持久存盤中——也許每個作業都有一個額外的output屬性?String- & 稍后檢索它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/471357.html
標籤:亚马逊网络服务 aws-lambda 博托3 博托
上一篇:基于變數計數構建資源
