Skip to main content

AWS Step Functions

AWS Step Functions ช่วยให้คุณสามารถ ออกแบบ workflow เป็น state machine ได้ โดย หนึ่ง workflow = หนึ่ง state machine สามารถนำมาใช้กับหลายกรณี เช่น การจัดการคำสั่งซื้อ (order fulfillment), การประมวลผลข้อมูล (data processing), แอปพลิเคชันเว็บ หรือ workflow ที่ต้องการทำงานอัตโนมัติ

แนวคิดคือคุณกำหนดว่า จะเกิดอะไรขึ้น ขั้นตอนถัดไปคืออะไร และจะเกิดอะไรถ้ามีเงื่อนไขบางอย่าง → เพื่อนิยามเป็น workflow

เช่น ตัวอย่าง workflow แบบภาพ (visual workflow):

  • เริ่มจากการตัดสินใจ Yes/No
  • ถ้า "No" → ไปที่ End
  • ถ้า "Yes" → รอ 3 วินาที → แสดงข้อความ “Hello” และ “World” → รวมเป็น “Hello World” → ไปที่ End

คุณจะนิยาม workflow ในรูปแบบ JSON ซึ่งจะทำให้คุณเห็น ภาพรวมแบบ visualization และยังดู ประวัติการรัน (execution history) ได้ด้วย

ทุกขั้นตอนเล็ก ๆ ใน workflow อาจเป็น:

  • Lambda function

  • การเพิ่มข้อมูลลง DynamoDB

  • การรันงาน ECS Task AWS Step Functions จะช่วย orchestrate (ควบคุมการไหล) ของ workflow ให้คุณ

    An image

การเริ่มต้น Workflow

คุณสามารถเริ่ม workflow ได้หลายวิธี เช่น:

  • ผ่าน SDK API Call
  • API Gateway
  • CloudWatch Events / Amazon EventBridge
  • หรือกดเริ่ม workflow ด้วยมือผ่าน AWS Console

Task State

Step Functions มี กล่องงาน (task boxes) เรียกว่า Task State ซึ่งใช้สำหรับทำงานจริงใน state machine เช่น:

  • เรียกใช้ Lambda function
  • รันงาน AWS Batch
  • รัน ECS Task และรอจนเสร็จ
  • เขียนข้อมูลลง DynamoDB
  • ส่งข้อความไป SNS หรือ SQS
  • หรือแม้กระทั่ง เรียก Step Function อีกอัน

นอกจากนี้ Task อาจจะเป็น Activity → ซึ่งเป็น instance/app server (เช่น EC2, ECS task, หรือ server on-premise) ที่ ดึงงานจาก Step Functions มาทำเอง แล้วส่งผลลัพธ์กลับไป (เหมือน AWS SWF)

An image

ตัวอย่าง Task State ที่เรียก Lambda Function

คุณจะกำหนด JSON object เช่น:

  • "Name": "Invoke Lambda function"
  • "Type": "Task"
  • "Resource": การเรียก Lambda function
  • "Parameters": ชื่อ function + payload
  • "Next": state ถัดไป
  • "TimeoutSeconds": เวลารอ

ประเภทของ States ใน Step Functions

  • Choice State → เช็คเงื่อนไขแล้วเลือกเส้นทาง
  • Fail / Succeed State → จบ workflow แบบล้มเหลวหรือสำเร็จ
  • Pass State → ส่ง input ไป output โดยตรง (หรือใส่ค่าคงที่)
  • Wait State → หน่วงเวลาตามที่กำหนด
  • Map State → รันขั้นตอนแบบวนลูป/ไดนามิก
  • Parallel State → รันขั้นตอนแบบขนาน (parallel branches)

👉 สำหรับการสอบ ให้เน้นจำ Parallel และ Task State

ตัวอย่าง Workflow การรันจริง (Visual Execution)

สมมุติคุณส่งงานเข้าไป → รอ X วินาที → เช็คสถานะงาน

  • ถ้างานยังไม่เสร็จ → รออีก (วน loop)
  • ถ้างานเสร็จ → ดึงสถานะสุดท้าย
  • ถ้าล้มเหลว → handle error → จบ

ในหน้าจอคุณจะเห็น workflow แสดงเป็นสีน้ำเงิน → loop ตอนรอ → จบเมื่อเสร็จ

An image

Key Takeaways

  • AWS Step Functions = สร้าง workflow แบบ state machine (หนึ่ง workflow ต่อหนึ่ง state machine)
  • Workflows กำหนดด้วย JSON → แสดงผลแบบ visual + ติดตาม execution ได้
  • Task State ใช้เรียก Lambda, Batch, ECS, DynamoDB, SNS, SQS, หรือแม้แต่ Step Function อื่น ๆ
  • รองรับหลาย state type เช่น Choice, Fail, Succeed, Pass, Wait, Map, Parallel เพื่อควบคุม workflow ได้อย่างยืดหยุ่น