
- Sử dụng json để định nghĩa workload
- Sử dụng SDK hoặc API Gateway, EventBridge hoặc từ console để start
- Có thể xem từng step input, output là gì đã run theo nhánh nào trong workload
Task State
- Lambda function
- ECS Task
- Insert DynamoDB
- SNS, SQS
- Run trên các server khác (EC2, ECS, On-Premise, poll từ step function rồi gửi lại kết quả)
- Run Step function workflow khác
State
- Choice: test điều kiện true/fase để rẽ nhánh
- Fail or Succeed: dừng với kết quả fail/success
- Pass: input data cho step tiếp theo
- Wait: delay 1 khoảng thời gian hoặcd đến thời điểm chỉ định
- Map: iterate
- Parallel State: run đồng thời nhiều nhánh
Error Handling
- Tất cả các error nên được define trong Step function, không phải trong code
- Sử dụng Retry hoặc Catch để xử lý
- States.ALL
- States.Timeout
- States.TaskFailed
- States.Permissions
- Có thể include Error trong output bằng cách sử dụng ResultPath

Retry

Catch

Wait for Task Token
- Đợi resource gửi lại Task Token (Bằng API SendTaskSuccess or SendTaskFailure) trước khi thực hiện Task State tiếp theo
- Thêm .waitForTaskToken vào sau Resource để đợi
Activity Tasks
Giống Wait for Task Token, nhưng dành cho workflow run trên các nền tảng khác như EC2, On-Premise…, cần poll task từ step function (sử dụng api GetActivityTask). Sau khi thực hiện, cần call API SendTaskSuccess or SendTaskFailure
- Có thể setting TimeoutSeconds để config thời gian timeout
- Sử dụng API SendTaskHeartBeat để gia hạn thêm thời gian cần để xử lý task, max 1 năm
Standard vs. Express

- Standard
- Max 1 năm
- Duy nhất 1 lần chạy
- 2000 workflow/second
- History max 90 ngày hoặc sử dụng Cloudwatch Logs
- Trả tiền theo Task State
- Express
- Max 5 phút
- 100.000 workflow/second
- Chỉ xem được qua Cloudwatch Logs
- Trả tiền theo số lần run, memory sử dụng
- Asynchronous
- Run ít nhất 1 lần
- Không đợi kết quả, check log để kiểm tra
- Synchronous
- Run nhiều nhất 1 lần
- Đợi kết quả return
- Nếu có lỗi sẽ không tự re-try, tuỳ người dùng có re-try không
- Có thể gọi từ API Gateway, Lambda function