

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

# Lambda 耐用函數
<a name="durable-functions"></a>

Lambda 耐用函數可讓您建置彈性的多步驟應用程式和 AI 工作流程，可執行長達一年，同時在中斷的情況下保持可靠的進度。當持久性函數執行時，這個完整的生命週期稱為持久性執行，它使用檢查點來追蹤進度，並透過重新執行自動從失敗中復原，從頭開始重新執行，同時略過完成的工作。

在每個函數中，您會使用耐用的操作做為基本的建置區塊。步驟會使用內建重試和進度追蹤來執行商業邏輯，同時等待暫停執行而不會產生運算費用，因此非常適合長時間執行的程序human-in-the-loop工作流程或輪詢外部相依性。無論您是在處理訂單、協調微服務或協調代理式 AI 應用程式，當您使用熟悉的程式設計語言編寫程式碼時，耐用的函數會自動維持狀態並從失敗中復原。

**注意**  
本指南涵蓋 Lambda 服務主題，例如部署、組態、許可、調用、監控和配額。如需 SDK 程式設計參考、快速入門教學課程和特定語言指南，請參閱[AWS 持久性執行 SDK 開發人員指南](https://docs.aws.amazon.com/durable-execution/)。

## 主要優點
<a name="durable-functions-benefits"></a>

**自然撰寫彈性程式碼：**使用熟悉的程式設計建構，您可以撰寫自動處理失敗的程式碼。內建檢查點、透明重試和自動復原意味著您的商業邏輯保持乾淨且專注。

**僅為您使用的項目付費：**在等待操作期間，您的函數會暫停，而不會產生運算費用。對於等待數小時或數天的長時間執行工作流程，您只需支付實際處理時間，而非閒置等待。

**操作簡單：**使用 Lambda 的無伺服器模型，您可以自動擴展，包括scale-to-zero，而無需管理基礎設施。耐用的函數會自動處理狀態管理、重試邏輯和故障復原，從而降低營運開銷。

## 何時使用耐用函數
<a name="durable-functions-use-cases"></a>

**短期協調：**透過自動轉返失敗，協調跨多項服務的付款、庫存和運送。透過驗證、付款授權、庫存分配和履行來處理訂單，並保證完成。

**安心處理付款：**建立彈性付款流程，透過失敗維持交易狀態，並自動處理重試。協調跨付款供應商的多步驟授權、詐騙檢查和和解，以及跨步驟的完整可稽核性。

**建置可靠的 AI 工作流程：**建立多步驟 AI 工作流程，以鏈結模型呼叫、納入人工意見回饋，並在失敗期間果斷地處理長時間執行的任務。停用後自動繼續，且只需支付作用中的執行時間。

**協調複雜的訂單履行：**使用內建彈性協調跨庫存、付款、運送和通知系統的訂單處理。自動處理部分故障、在中斷的情況下保留順序狀態，並有效率地等待外部事件，而不會耗用運算資源。

**自動化多步驟業務工作流程：**為員工加入、貸款核准和跨越數天或數週的合規程序建立可靠的工作流程。維護跨人工核准、系統整合和排程任務的工作流程狀態，同時提供程序狀態和歷史記錄的完整可見性。

### 與 Step Functions 比較的耐久性函數
<a name="durable-functions-vs-step-functions"></a>

耐用函數和 Step Functions 都提供具有自動狀態管理的工作流程協同運作。主要差異在於它們的執行位置，以及您如何定義工作流程：
+ **耐用函數：**在 Lambda 內執行、使用標準程式設計語言、在 Lambda 環境中管理
+ **Step Functions：**單機服務、圖形式 DSL 或視覺化設計工具，完全受管，無需維護

耐用的函數非常適合在 Lambda 中應用程式開發，其中工作流程與商業邏輯緊密結合。Step Functions 擅長跨您需要視覺化設計、原生整合 220 多項服務以及零維護基礎設施的 AWS 服務進行工作流程協同運作。

如需詳細比較，請參閱[耐用函數或 Step Functions](durable-step-functions.md)。

## 運作方式
<a name="durable-functions-how-it-works"></a>

 在幕後，耐用的函數是一般的 Lambda 函數，使用檢查點/重播機制來追蹤進度，並透過使用者定義的暫停點支援長時間執行的操作，通常稱為耐用執行。函數從暫停或中斷恢復後，系統會執行重播。在重播期間，您的程式碼會從頭開始執行，但會略過已完成的檢查點，使用儲存的結果，而不是重新執行已完成的操作。此重播機制可確保一致性，同時啟用長時間執行的執行。

為了在您的應用程式中利用此checkpoint-and-replay機制，Lambda 提供耐用的執行 SDK。開發套件可消除管理檢查點和重播的複雜性，公開您在程式碼中使用的稱為耐久操作的簡單基本概念。開發套件適用於 JavaScript、TypeScript、Python 和 Java，可與您現有的 Lambda 開發工作流程無縫整合。

使用 SDK，您可以包裝 Lambda 事件處理常式，然後提供 DurableContext 與您的事件並行。此內容可讓您存取耐用的操作，例如步驟和等待。您可以將函數邏輯寫入為一般循序程式碼，但不會直接呼叫 服務，而是將這些呼叫包裝為自動檢查點和重試的步驟。當您需要暫停執行時，您可以新增暫停函數的等待，而不會產生費用。開發套件可處理所有複雜的狀態管理和在幕後重播，讓您的程式碼保持乾淨且可讀取。

 ![Diagram showing how Lambda durable functions use checkpoints to persist progress and replay to resume execution after interruptions.](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/how_durable_works.png) 

## 後續步驟
<a name="durable-functions-next-steps"></a>
+ [AWS 持久性執行 SDK 開發人員指南](https://docs.aws.amazon.com/durable-execution/) – SDK 參考、快速入門、測試和語言指南
+ [開始使用耐用的 函數](durable-getting-started.md)
+ [耐用函數或 Step Functions](durable-step-functions.md)
+ [監控和偵錯耐用函數](durable-monitoring.md)
+ [檢閱安全性和許可](durable-security.md)
+ [遵循最佳實務](durable-best-practices.md)