# AWS - Step Functions


# Step Function

AWS Step Functions 是一個 工作流程編排服務 (Workflow Orchestration Service),讓你能用 視覺化狀態機 (State Machine) 方式把多個 AWS 服務或 Lambda 函數串成「可追蹤、有條件、可重試」的流程。

用來:

  • 協調 (Orchestrate) 多個 AWS 服務的執行順序
  • 自動化流程(例如 ETL、資料分析、ML Pipeline、訂單流程)
  • 可視化工作流,能定義分支、重試、錯誤處理
  • 完全無伺服器 (Serverless),不需管理基礎設施

# 簡單理解,他就像是 AWS 的「流程控制中心」

  1. 上傳 S3 → 觸發 Lambda(驗證格式)
  2. 若驗證通過 → 呼叫 Rekognition 分析
  3. 儲存結果到 DynamoDB
  4. 若失敗 → 發送 SNS 通知

# 運作模型

核心概念

  • State Machine:整個工作流程的定義
  • States:流程中的每個步驟(例如 Lambda、Choice、Wait、Parallel)
  • Execution:一次完整的流程執行

常見狀態類型

狀態類型 功能 說明
Task 執行動作 呼叫 Lambda、ECS、Glue 等
Choice 條件判斷 if /else 決策
Parallel 平行執行 同時做多個任務
Map 迴圈處理 對陣列中每個項目執行任務
Wait 等待 延遲一段時間
Fail / Succeed 流程結束 表示成功或失敗
Pass 傳遞資料 不執行任何動作,用於測試或資料轉換

# 兩種執行模式

模式 說明 適合用途
Standard Workflow 長時間(最長 1 年)執行、完整記錄 ETL、審批流程、ML Pipeline
Express Workflow 高併發、短時間(最長 5 分鐘)執行 即時處理、API 呼叫、IoT 事件

# 映射狀態處理模式

剛剛有講說 Step Functions 會有一些狀態,但 Map (映射) 這個狀態 (Map State) 這個「處理多筆資料」的強大功能還可以細談一下


# Map State

Map 狀態 是 Step Functions 中用來「重複執行相同子流程」的特殊狀態,
它可以針對 一個清單 (Array) 中的每個元素,重複執行一段工作流程。

就像 Python 的 for loop,
但在 Step Functions 裡可以讓每個元素的任務「平行執行」而非逐一跑。


# Map 狀態的兩種「處理模式 (Processing Mode)」


# Inline Map(內嵌映射)
特性 說明
執行模式 Step Functions 引擎內部 處理所有迭代
平行數量 限制在 40 同時運行(受帳戶限額影響)
適合情境 處理少量項目(幾百筆以下)
成本 與一般 Step Function 計費相同
輸入輸出 結果會在流程結束後自動收集成陣列返回
使用範例 批量呼叫 Lambda、少量影像處理、小規模任務

# Distributed Map(分散式映射)
特性 說明
執行模式 每個項目會觸發 獨立的 Step Function 子執行 (Execution)
擴展能力 幾乎無限制,可處理 上百萬筆資料
啟動方式 使用 S3 Input(從 S3 讀入陣列資料)
適合情境 大量任務處理(ETL、大型批次任務、AI 影像批次分析)
成本 每個子流程都要額外計費
特色 支援分散式監控、可跨 AZ 同時運行
內建快取 支援使用 S3 儲存中間結果