本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 Lambda 工作流程與事件
使用 Lambda 建置無伺服器應用程式時,您通常需要協調函數執行和處理事件的方法。 AWS 提供數種方法來協調 Lambda 函數:
-
AWS Step Functions 用於跨多個 服務的視覺化工作流程協同運作
-
適用於事件驅動型架構和排程的 Amazon EventBridge 排程器和 Amazon EventBridge
您也可以將這些方法整合在一起。例如,您可以使用 EventBridge 排程器在特定事件發生時觸發持久函數或 Step Functions 工作流程,或設定工作流程在定義的執行點將事件發佈至 EventBridge 排程器。本節中的下列主題提供如何使用這些協同運作選項的詳細資訊。
具有耐用函數的程式碼優先協同運作
Lambda 耐用函數提供工作流程協同運作的程式碼優先方法,可讓您直接在 Lambda 函數內建置具狀態且長時間執行的工作流程。與外部協同運作服務不同,耐用的函數會將工作流程邏輯保留在程式碼中,讓您更輕鬆地搭配業務邏輯進行版本化、測試和維護。
當您需要時,耐用的函數是理想的選擇:
-
程式碼優先工作流程定義:使用熟悉的程式設計語言定義工作流程,而不是使用 JSON 或視覺化設計工具
-
長時間執行的程序:執行工作流程,最多可執行一年,遠超過標準 Lambda 函數的 15 分鐘限制
-
簡化開發:將工作流程邏輯和商業邏輯保留在相同的程式碼庫中,以便於維護和測試
-
經濟實惠的等待:在等待狀態期間暫停執行,而不耗用運算資源
-
內建狀態管理:自動檢查點和狀態持續性,無需外部儲存組態
在耐久函數和 Step Functions 之間進行選擇
耐用函數和 Step Functions 都提供工作流程協同運作功能,但它們提供不同的使用案例:
| 考量事項 | 耐用的 函數 | 步驟函數 |
|---|---|---|
| 工作流程定義 | Code-first (JavaScript、Python、Java) | 以 JSON 為基礎的 Amazon States 語言或視覺化設計工具 |
| 開發方法 | 具有商業邏輯的單一程式碼庫 | 單獨的工作流程定義和函數程式碼 |
| 服務整合 | 透過 Lambda 函數程式碼和 AWS SDKs | 與許多 AWS 服務的原生整合 |
| 執行持續時間 | 最長 1 年 | 最長 1 年 (標準)、5 分鐘 (快速) |
| 平行處理 | Promise.all() 和程式碼型模式 | 平行狀態和分散式映射 |
| 錯誤處理 | Try-catch 區塊和自訂重試邏輯 | 內建重試和擷取狀態 |
| 視覺化監控 | CloudWatch 日誌和自訂儀表板 | 視覺化執行圖表和詳細歷史記錄 |
| 最適合 | 以開發人員為中心的工作流程、複雜的商業邏輯、快速原型設計 | 多服務協同運作、視覺化工作流程、企業控管 |
在以下情況下使用耐用的函數:
-
您的團隊偏好程式碼優先開發方法
-
工作流程邏輯與業務邏輯緊密結合
-
您需要快速原型設計和反覆運算
-
您的工作流程主要涉及 Lambda 函數和簡單的服務呼叫
在下列情況下使用 Step Functions:
-
您需要視覺化工作流程設計和監控
-
您的工作流程會廣泛協調多個 AWS 服務
-
您需要企業控管和合規功能
-
非技術利益相關者需要了解工作流程邏輯
如需耐用函數的詳細資訊,請參閱 Lambda 的耐用函數。
使用 Step Functions 協同運作工作流程
AWS Step Functions 是一種工作流程協同運作服務,可協助您將多個 Lambda 函數和其他 AWS 服務協調為結構化工作流程。這些工作流程可以維護狀態、使用複雜的重試機制處理錯誤,以及大規模處理資料。
Step Functions 提供兩種類型的工作流程,可滿足不同的協同運作需求:
- 標準工作流程
-
適用於需具備「恰好一次」執行語義、執行時間較長且可稽核的工作流程。標準工作流程最長可以執行一年,提供詳細的執行歷史記錄,並支援視覺化偵錯功能。此類型適用於訂單履行、資料處理管道或多步驟分析任務等流程。
- 快速工作流程
-
專為具備「至少一次」執行語義、高事件量且執行時間短的工作負載而設計。快速工作流程最長可執行五分鐘,非常適合大量事件處理、串流資料轉換或 IoT 資料擷取案例。相較於標準工作流程,此類型提供的輸送量更高,成本可能更低。
注意
如需有關 Step Functions 工作流程類型的詳細資訊,請參閱 Choosing workflow type in Step Functions。
在此類工作流程中,Step Functions 提供兩種類型的映射狀態,用於實現平行處理:
- 內嵌映射
-
在父工作流程的執行歷史記錄中處理來自 JSON 陣列的項目。內嵌映射最多支援 40 個並行迭代,適用於較小的資料集或需要將所有處理保持在單次執行內的情況。如需詳細資訊,請參閱 Using Map state in Inline mode。
- 分散式映射
-
透過迭代處理超過 256 KiB 或需要超過 40 個並行迭代的資料集,實現對大規模平行工作負載的處理。分散式映射可支援最多 10,000 個平行子工作流程執行,擅長處理儲存在 Amazon S3 中的半結構化資料 (例如 JSON 或 CSV 檔案),因此非常適合批次處理與 ETL 操作。如需詳細資訊,請參閱 Using Map state in Distributed mode。
透過結合這些工作流程類型與映射狀態,Step Functions 提供了靈活且強大的工具集,能夠從小型操作到大型資料處理管道,全面協同運作複雜的無伺服器應用程式。
若要開始將 Lambda 與 Step Functions 搭配使用,請參閱使用 Step Functions 協同運作 Lambda 函式。
使用 EventBridge 與 EventBridge 排程器管理事件
Amazon EventBridge 是一項事件匯流排服務,可協助建置事件驅動型架構。它會路由 AWS 服務、整合應用程式和軟體即服務 (SaaS) 應用程式之間的事件。EventBridge 排程器是一種無伺服器排程器,可讓您從一個中央服務建立、執行並管理任務,允許您使用 Cron 和 Rate 表達式依排程調用 Lambda 函式,或設定一次性調用函式。
Amazon EventBridge 和 EventBridge 排程器可協助使用 Lambda 建置事件驅動型架構。EventBridge 會路由 AWS 服務、整合應用程式和 SaaS 應用程式之間的事件,而 EventBridge 排程器則提供特定排程功能,以定期或一次性叫用 Lambda 函數。
這些服務為使用 Lambda 函式提供數種關鍵功能:
-
使用 EventBridge 建立規則來比對事件,並將其路由至 Lambda 函式
-
使用 EventBridge 排程器設定以 Cron 與 Rate 表達式驅動的週期性函式調用
-
在特定日期和時間設定一次性函式調用
-
為排程調用定義彈性時段與重試政策
如需詳細資訊,請參閱依排程調用 Lambda 函數。