Step Functions

🔥 Vibe Prompt

「建立一個 Step Functions 工作流程:訂單處理流程為驗證→付款→出貨→通知。」

{
  "Comment": "Order Processing Workflow",
  "StartAt": "ValidateOrder",
  "States": {
    "ValidateOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:validate-order",
      "Next": "ProcessPayment"
    },
    "ProcessPayment": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:process-payment",
      "Next": "CheckPaymentResult",
      "Retry": [{
        "ErrorEquals": ["TransactionError"],
        "IntervalSeconds": 5,
        "MaxAttempts": 3,
        "BackoffRate": 2
      }]
    },
    "CheckPaymentResult": {
      "Type": "Choice",
      "Choices": [{
        "Variable": "$.payment.status",
        "StringEquals": "SUCCESS",
        "Next": "ShipOrder"
      }],
      "Default": "HandleFailure"
    },
    "ShipOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:ship-order",
      "Next": "SendNotification",
      "Catch": [{
        "ErrorEquals": ["States.ALL"],
        "Next": "HandleFailure"
      }]
    },
    "SendNotification": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:send-email",
      "End": true
    },
    "HandleFailure": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:handle-failure",
      "End": true
    }
  }
}

可視化工作流程

Validate → Payment → [Choice] → Ship → Notify → Done
                          ↓
                      Handle Failure

Step Functions 功能

| 功能 | 用途 | |------|------| | Retry | 暫時性錯誤(指數退避 3 次) | | Catch | 永久性失敗 → DLQ | | Choice | 條件分支 | | Parallel | 平行處理 | | Wait | 延遲(例如等待 24 小時退貨) | | Map | 處理列表中的項目 |

Terraform 部署

resource "aws_sfn_state_machine" "order_workflow" {
  name     = "order-processing"
  role_arn = aws_iam_role.stepfunctions.arn
  definition = file("workflow.json")
}

Step Functions vs Lambda

| Step Functions | Lambda | |---------------|--------| | 長時間執行(最多 1 年) | 短時間(最多 15 分鐘) | | 編排 | 單一任務 | | 圖形化除錯 | 程式碼除錯 | | 內建重試/例外處理 | 自訂重試邏輯 |

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!