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 分鐘) | | 編排 | 單一任務 | | 圖形化除錯 | 程式碼除錯 | | 內建重試/例外處理 | 自訂重試邏輯 |