View a markdown version of this page

耐久執行 SDK - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

耐久執行 SDK

耐用執行 SDK 是建置耐用函數的基礎。它為檢查點進度、處理重試和管理執行流程提供基本概念。開發套件可抽象化檢查點管理和重播的複雜性,讓您撰寫可自動容錯的循序程式碼。

開發套件適用於 JavaScript、TypeScript、Python 和 Java。如需完整的 API 文件、快速入門教學課程和特定語言指南,請參閱AWS 持久性執行 SDK 開發人員指南

開發套件的功能

檢查點管理:軟體開發套件會在函數執行耐久操作時自動建立檢查點。每個檢查點都會記錄操作類型、輸入和結果。當您的函數完成步驟時,SDK 會保留檢查點再繼續。這可確保您的函數可以在中斷時從任何已完成的操作恢復。

重播協調:當函數在暫停或中斷後恢復時,軟體開發套件會執行重播。它會從頭開始執行程式碼,但會略過已完成的操作,使用儲存的檢查點結果,而不是重新執行它們。SDK 可確保重播是確定性的。假設輸入和檢查點日誌相同,您的函數會產生相同的結果。

狀態隔離:SDK 會與您的業務邏輯分開維護執行狀態。每個持久性執行都有自己的檢查點日誌,其他執行無法存取。SDK 會加密靜態檢查點資料,並確保狀態在重播之間保持一致。

如需檢查點如何運作和重播行為的詳細說明,請參閱 AWS 《持久性執行開發套件開發人員指南》中的關鍵概念

耐久性操作

開發套件為您的函數提供 DurableContext 物件。此內容會取代標準 Lambda 內容,並提供建立檢查點、管理執行流程以及與外部系統協調的方法。

DurableContext 提供下列用於建置耐用工作流程的操作:

作業 Description
Step (步驟) 使用可設定的重試策略和執行語意來執行並檢查點一個工作單位。
等候 在指定期間內暫停執行,而不耗用運算資源。
等待條件 輪詢在嘗試之間具有自動檢查點的條件。
回呼 暫停執行並等待外部系統透過 Lambda API 提供輸入。
Invoke 透過自動檢查點,呼叫另一個 Lambda 函數並等待其結果。
平行 與可設定的完成政策同時執行多個操作。
Map 使用選用並行控制同時處理集合中的每個項目。
子內容 建立隔離的執行內容,以分組多個操作。

每個耐用的操作都會自動建立檢查點,確保您的函數可以隨時恢復。如需詳細的 API 參考、程式碼範例和特定語言的使用方式,請參閱《 AWS 耐久執行 SDK 開發人員指南》中的 SDK 參考

如何計量耐久性操作

您透過 呼叫的每個耐用操作都會DurableContext建立檢查點,以追蹤執行進度並存放狀態資料。這些操作會根據其用量產生費用,而檢查點可能包含對您的資料寫入和保留成本有所貢獻的資料。儲存的資料包括調用事件資料、步驟傳回的承載,以及完成回呼時傳遞的資料。了解耐用操作的計量方式,可協助您預估執行成本並最佳化工作流程。如需定價的詳細資訊,請參閱 Lambda 定價頁面

承載大小是指持久性操作持續的序列化資料大小。資料是以位元組為單位測量,大小可能會因 操作使用的序列化程式而有所不同。操作的承載可能是成功完成的結果本身,如果操作失敗,可能是序列化錯誤物件。

基本操作

基本操作是耐用函數的基本建置區塊:

作業 檢查點計時 操作數量 資料持續存在
執行 已開始 1 輸入承載大小
執行 已完成 Succeeded/Failed/Stopped) 0 輸出承載大小
Step (步驟) Retry/Succeeded/Failed 1 + N 次重試 每次嘗試傳回的承載大小
等候 已開始 1 N/A
WaitForCondition 每次輪詢嘗試 1 + N 輪詢 每次輪詢嘗試傳回的承載大小
調用層級重試 已開始 1 錯誤物件的承載

回呼操作

回呼操作可讓您的函數暫停並等待外部系統提供輸入。這些操作會在建立回呼和完成時建立檢查點:

作業 檢查點計時 操作數量 資料持續存在
CreateCallback 已開始 1 N/A
透過 API 呼叫完成回呼 已完成 0 回呼承載
WaitForCallback 已開始 3 + N 次重試 (內容 + 回呼 + 步驟) 提交者步驟嘗試傳回的承載,加上兩個回呼承載副本

複合操作

複合操作結合多個耐久操作,以處理複雜的協調模式,例如平行執行、陣列處理和巢狀內容:

作業 檢查點計時 操作數量 資料持續存在
平行 已開始 1 + N 個分支 (1 個父內容 + N 個子內容) 每個分支最多兩個傳回承載大小的副本,以及每個分支的狀態
Map 已開始 1 + N 個分支 (1 個父內容 + N 個子內容) 每次反覆運算傳回的承載大小最多兩個副本,加上每次反覆運算的狀態
Promise 協助程式 已完成 1 從 promise 傳回的承載大小
RunInChildContext 成功/失敗 1 從子內容傳回的承載大小

對於內容,例如來自 runInChildContext或由複合操作內部使用,小於 256 KB 的結果會直接檢查點。不會儲存較大的結果,而是透過重新處理內容的操作,在重播期間重建結果。