本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
耐久執行 SDK
耐用執行 SDK 是建置耐用函數的基礎。它為檢查點進度、處理重試和管理執行流程提供基本概念。開發套件可抽象化檢查點管理和重播的複雜性,讓您撰寫可自動容錯的循序程式碼。
開發套件適用於 JavaScript、TypeScript、Python 和 Java。如需完整的 API 文件、快速入門教學課程和特定語言指南,請參閱AWS 持久性執行 SDK 開發人員指南。
開發套件的功能
檢查點管理:軟體開發套件會在函數執行耐久操作時自動建立檢查點。每個檢查點都會記錄操作類型、輸入和結果。當您的函數完成步驟時,SDK 會保留檢查點再繼續。這可確保您的函數可以在中斷時從任何已完成的操作恢復。
重播協調:當函數在暫停或中斷後恢復時,軟體開發套件會執行重播。它會從頭開始執行程式碼,但會略過已完成的操作,使用儲存的檢查點結果,而不是重新執行它們。SDK 可確保重播是確定性的。假設輸入和檢查點日誌相同,您的函數會產生相同的結果。
狀態隔離:SDK 會與您的業務邏輯分開維護執行狀態。每個持久性執行都有自己的檢查點日誌,其他執行無法存取。SDK 會加密靜態檢查點資料,並確保狀態在重播之間保持一致。
如需檢查點如何運作和重播行為的詳細說明,請參閱 AWS 《持久性執行開發套件開發人員指南》中的關鍵概念。
耐久性操作
開發套件為您的函數提供 DurableContext 物件。此內容會取代標準 Lambda 內容,並提供建立檢查點、管理執行流程以及與外部系統協調的方法。
DurableContext 提供下列用於建置耐用工作流程的操作:
每個耐用的操作都會自動建立檢查點,確保您的函數可以隨時恢復。如需詳細的 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 的結果會直接檢查點。不會儲存較大的結果,而是透過重新處理內容的操作,在重播期間重建結果。