0Pricing
AWS Solutions Architect · บทเรียน

Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์

กำหนดกระบวนงานหลายขั้นตอนเป็นเครื่องจักรสถานะใน Step Functions จัดการข้อผิดพลาดด้วยบล็อกดักจับและลองใหม่ และผสานการทำงานแบบเนทีฟของ SDK

Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์ เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

AWS Step Functions คืออะไร

AWS Step Functions คือบริการควบคุมเวิร์กโฟลว์ที่จัดการให้ทั้งหมด ซึ่งประสานงานแอปพลิเคชันแบบกระจายเป็นลำดับขั้นตอนที่กำหนดไว้ใน เครื่องจักรสถานะ แต่ละขั้นตอนในเครื่องจักรสถานะคือ สถานะ เช่น การเรียกใช้ Lambda การเรียกใช้ AWS SDK ระยะเวลารอ สาขาแบบขนาน หรือทางเลือก (if/else) Step Functions จัดการสถานะ จัดการการลองใหม่ และแสดงประวัติการทำงานแบบภาพ จึงไม่จำเป็นต้องเขียนตรรกะควบคุมเวิร์กโฟลว์ไว้ในโค้ดแอปพลิเคชัน

ภาษาสถานะของ Amazon (ASL)

เครื่องจักรสถานะกำหนดด้วย ภาษาสถานะของ Amazon (ASL) ซึ่งเป็นภาษาที่ใช้ JSON แต่ละสถานะมี Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail) และเปลี่ยนไปยังสถานะ Next หรือจบการทำงาน ฟิลด์ Resource ของสถานะ Task ระบุบริการ AWS ที่จะเรียกใช้ ซึ่งอาจเป็น ARN สำหรับ Lambda หรือ ARN ของการผสานรวมบริการที่ได้รับการปรับให้เหมาะสมสำหรับบริการ AWS มากกว่า 200 รายการโดยไม่ต้องมี Lambda คั่นกลาง

{
  'Comment': 'Order processing workflow',
  'StartAt': 'ValidateOrder',
  'States': {
    'ValidateOrder': {
      'Type': 'Task',
      'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
      'Next': 'ChargePayment',
      'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
    },
    'ChargePayment': {
      'Type': 'Task',
      'Resource': 'arn:aws:states:::dynamodb:putItem',
      'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
      'End': true
    }
  }
}

เวิร์กโฟลว์ Standard เทียบกับ Express

Step Functions มีเวิร์กโฟลว์สองประเภท เวิร์กโฟลว์ Standard: ทนทาน ทำงานได้นานสูงสุด 1 ปี มีความหมายการทำงานแบบครั้งเดียวแน่นอน และจัดเก็บประวัติการทำงานทั้งหมดไว้ 90 วัน เหมาะสำหรับกระบวนการทางธุรกิจที่ทำงานเป็นเวลานาน เวิร์กโฟลว์ Express: มีปริมาณงานสูง (ทำงานได้มากกว่า 100,000 ครั้งต่อวินาที) ทำงานได้นานสูงสุด 5 นาที มีความหมายการทำงานอย่างน้อยหนึ่งครั้ง และส่งบันทึกไปยัง CloudWatch เหมาะสำหรับการประมวลผลเหตุการณ์แบบเรียลไทม์และไปป์ไลน์ข้อมูล IoT ควรเลือกโดยพิจารณาจากระยะเวลา ปริมาณงาน และข้อกำหนดด้านการทำงานซ้ำได้โดยไม่ก่อผลซ้ำ

# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
  --name OrderProcessing \
  --definition file://order-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type STANDARD

# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
  --name ClickstreamProcess \
  --definition file://click-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type EXPRESS

สถานะ Task และการผสานรวมบริการ

สถานะ Task ของ Step Functions รองรับรูปแบบการผสานรวมสองแบบ Request-Response: เรียกใช้บริการ AWS แล้วดำเนินการต่อทันที (สั่งงานแล้วไม่รอผล) การผสานรวมแบบ Sync: เรียกใช้บริการแล้วรอให้ทำงานเสร็จก่อนย้ายไปยังสถานะถัดไป (เช่น รอให้งาน ECS งาน Glue หรือ งานฝึก SageMaker เสร็จสิ้น) การผสานรวมแบบ Sync ใช้ส่วนต่อท้าย :sync:2 ใน ARN ของทรัพยากร และไม่จำเป็นต้องมีตรรกะสำหรับเรียกตรวจสอบเป็นระยะ

# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
  'Parameters': {
    'JobName': 'clean-sales'
  },
  'Next': 'RunAthenaQuery'
}

สถานะ Choice สำหรับตรรกะการแยกสาขา

สถานะ Choice ใช้สำหรับการแยกสาขาตามเงื่อนไข ซึ่งเทียบเท่ากับคำสั่ง if/else หรือ switch ในเวิร์กโฟลว์ คุณกำหนด Choices เป็นอาร์เรย์ของเงื่อนไข โดยเงื่อนไขแรกที่ตรงกันจะเป็นตัวกำหนดสถานะถัดไป สถานะ Default ใช้จัดการกรณีที่ไม่ตรงกับเงื่อนไขใด สถานะ Choice ช่วยให้กำหนดเส้นทางคำสั่งซื้อไปยังกระบวนการจัดส่งที่แตกต่างกันตามประเภทสินค้า ระดับลูกค้า หรือสถานะการชำระเงินได้ โดยไม่ต้องเขียนตรรกะเงื่อนไขใน Lambda

'RouteByOrderType': {
  'Type': 'Choice',
  'Choices': [
    {
      'Variable': '$.orderType',
      'StringEquals': 'DIGITAL',
      'Next': 'FulfillDigital'
    },
    {
      'Variable': '$.orderType',
      'StringEquals': 'PHYSICAL',
      'Next': 'FulfillPhysical'
    }
  ],
  'Default': 'HandleUnknownType'
}

สถานะ Parallel และ Map

สถานะ Parallel เรียกใช้หลายสาขาพร้อมกัน และรอให้ทุกสาขาเสร็จสิ้นก่อนดำเนินการต่อ เหมาะสำหรับงานที่ทำพร้อมกันได้ เช่น การตรวจสอบเครดิตและการตรวจสอบสินค้าคงคลังในเวลาเดียวกัน สถานะ Map วนซ้ำในอาร์เรย์ที่อยู่ในข้อมูลนำเข้า และใช้ชุดสถานะเดียวกันกับแต่ละองค์ประกอบแบบขนาน เหมาะสำหรับประมวลผลรายการเป็นชุดที่ส่งคืนจากขั้นตอนก่อนหน้า เช่น การปรับขนาดรูปภาพที่อัปโหลดหลายรูป

'ProcessImages': {
  'Type': 'Map',
  'ItemsPath': '$.imageKeys',
  'MaxConcurrency': 10,
  'Iterator': {
    'StartAt': 'ResizeImage',
    'States': {
      'ResizeImage': {
        'Type': 'Task',
        'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
        'End': true
      }
    }
  },
  'Next': 'NotifyComplete'
}

การจัดการข้อผิดพลาด: Catch และ Retry

สถานะ Task ทุกสถานะใน Step Functions สามารถมีบล็อก Retry และ Catch เพื่อจัดการข้อผิดพลาดอย่างยืดหยุ่น Retry ระบุประเภทข้อผิดพลาดที่ทำให้ลองใหม่โดยอัตโนมัติ พร้อมกำหนดค่า IntervalSeconds MaxAttempts และ BackoffRate (ตัวคูณช่วงเวลารอแบบทวีคูณ) Catch ระบุสถานะสำรองสำหรับข้อผิดพลาดที่กู้คืนไม่ได้ การจัดการข้อผิดพลาดแบบประกาศนี้ช่วยหลีกเลี่ยงบล็อก try/catch ที่ซ้ำซ้อนภายในฟังก์ชัน Lambda

'ChargeCard': {
  'Type': 'Task',
  'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
  'Retry': [{
    'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
    'IntervalSeconds': 2,
    'MaxAttempts': 3,
    'BackoffRate': 2.0
  }],
  'Catch': [{
    'ErrorEquals': ['PaymentDeclined'],
    'Next': 'NotifyPaymentFailed',
    'ResultPath': '$.error'
  }],
  'Next': 'FulfillOrder'
}

สถานะ Wait และ Callback

สถานะ Wait จะหยุดการทำงานของเวิร์กโฟลว์ชั่วคราวตามระยะเวลาที่กำหนด หรือนับจนถึงเวลาประทับที่ระบุ รูปแบบ Callback (โดยใช้ .waitForTaskToken) จะหยุดการทำงานจนกว่าระบบภายนอกจะเรียก SendTaskSuccess หรือ SendTaskFailure พร้อมโทเค็น วิธีนี้ทำให้ Step Functions จำลองขั้นตอนการอนุมัติโดยมนุษย์ได้ โดยส่งอีเมลพร้อมโทเค็นของงาน แล้วเวิร์กโฟลว์จะทำงานต่อเมื่อมนุษย์คลิกลิงก์อนุมัติหรือปฏิเสธในโปรแกรมอีเมล

# Callback pattern: wait for human approval
'RequestApproval': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
  'Parameters': {
    'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
    'MessageBody': {
      'taskToken.$': '$$.Task.Token',
      'orderId.$': '$.orderId'
    }
  },
  'Next': 'ProcessApproval'
}

การผสานรวม Step Functions กับ EventBridge

การทำงานของ Step Functions สามารถเริ่มต้นโดย กฎ EventBridge ทำให้เรียกใช้เวิร์กโฟลว์เพื่อตอบสนองต่อเหตุการณ์ของบริการ AWS ได้ง่าย ตัวอย่างเช่น เหตุการณ์ ObjectCreated จาก S3 จะเรียกกฎ EventBridge ซึ่งเริ่มเวิร์กโฟลว์ประมวลผลรูปภาพของ Step Functions นอกจากนี้ Step Functions ยังเผยแพร่เหตุการณ์ของตนเองไปยัง EventBridge ได้เมื่อการทำงานสำเร็จหรือล้มเหลว ทำให้ตรวจสอบและแจ้งเตือนต่อเนื่องได้โดยไม่ต้องเรียกตรวจสอบ API ของ Step Functions เป็นระยะ

การตรวจสอบการทำงานของ Step Functions

คอนโซล Step Functions มี แผนภาพการทำงานของเวิร์กโฟลว์แบบภาพ ซึ่งแสดงว่าสถานะใดทำงานสำเร็จ สถานะใดกำลังทำงาน และสถานะใดล้มเหลว โดยใช้สีแยกความแตกต่างแบบเรียลไทม์ การทำงานแต่ละครั้งจะจัดเก็บประวัติข้อมูลนำเข้า/ผลลัพธ์ทั้งหมดสำหรับเวิร์กโฟลว์ Standard (เก็บรักษา 90 วัน) สำหรับเวิร์กโฟลว์ Express บันทึกจะถูกส่งไปยัง CloudWatch Logs ใช้ การติดตามด้วย X-Ray เพื่อติดตามเวลาแฝงของคำขอตั้งแต่ต้นจนจบระหว่างฟังก์ชัน Lambda และบริการอื่นที่ถูกเรียกใช้ภายในเวิร์กโฟลว์

# List recent executions and check status
aws stepfunctions list-executions \
  --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
  --status-filter FAILED

# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
  --execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001

Step Functions เทียบกับ SQS และ EventBridge

การรู้ว่าเมื่อใดควรใช้ Step Functions แทน SQS หรือ EventBridge เป็นจุดตัดสินใจที่พบได้บ่อยในการสอบ ใช้ Step Functions เมื่อต้องการการควบคุมกระบวนการหลายขั้นตอนแบบมีสถานะและมองเห็นได้ พร้อมการจัดการข้อผิดพลาดและการแยกสาขา ใช้ SQS สำหรับการส่งข้อความแบบอะซิงโครนัสที่เชื่อถือได้ระหว่างบริการสองรายการแบบจุดต่อจุด พร้อมการลองใหม่ผ่านช่วงหมดเวลาการมองเห็น ใช้ EventBridge สำหรับกำหนดเส้นทางเหตุการณ์ไปยังผู้สมัครรับหลายรายตามรูปแบบเนื้อหา เวิร์กโฟลว์ของ Step Functions สามารถผสานรวมทั้งสามบริการได้ เช่น รอข้อความ SQS ผ่านโทเค็นของงาน เผยแพร่การเสร็จสิ้นไปยัง EventBridge และเชื่อมการเรียกใช้ Lambda กับ SDK เป็นลำดับ

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Step Functions ใช้จัดการเวิร์กโฟลว์ในรูปแบบเครื่องสถานะที่มีสถานะ Task, Choice, Parallel, Map, Wait และ Catch เวิร์กโฟลว์แบบ Standard รองรับการทำงานได้นานสูงสุด 1 ปีพร้อมประวัติการทำงานทั้งหมด ส่วนเวิร์กโฟลว์แบบ Express รองรับงานปริมาณงานสูงที่ใช้เวลาน้อยกว่า 5 นาที และ รูปแบบ Callback ที่ใช้โทเค็นงานช่วยให้มีขั้นตอนอนุมัติโดยมนุษย์อยู่ในกระบวนการได้ ต่อไป เราจะศึกษา Kinesis Data Streams สำหรับการประมวลผลเหตุการณ์แบบเรียลไทม์ที่มีปริมาณงานสูง

คำถามที่พบบ่อย

บทเรียน “Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์”

กำหนดกระบวนงานหลายขั้นตอนเป็นเครื่องจักรสถานะใน Step Functions จัดการข้อผิดพลาดด้วยบล็อกดักจับและลองใหม่ และผสานการทำงานแบบเนทีฟของ SDK คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. EventBridge: บัสเหตุการณ์และกฎ
  2. Step Functions: การประสานกระบวนงานแบบไร้เซิร์ฟเวอร์
  3. Kinesis Data Streams สำหรับการประมวลผลเหตุการณ์แบบเรียลไทม์
  4. รูปแบบการประสานงานกับการควบคุมจากศูนย์กลาง
← กลับไปที่ AWS Solutions Architect