Step Functions

  • 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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *