管理 Lambda 工作流程與事件 - AWS Lambda

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

管理 Lambda 工作流程與事件

使用 Lambda 建置無伺服器應用程式時,您通常需要協調函數執行和處理事件的方法。 AWS 提供數種方法來協調 Lambda 函數:

您也可以將這些方法整合在一起。例如,您可以使用 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 函數