AWS DVA-C02
Esc
↑↓เลื่อน↵เปิดescปิด28 ผลลัพธ์
25

Other Serverless — Step Functions, AppSync & Amplify

Step Functions, AppSync และ Amplify สำหรับ DVA-C02

Integration & Messaging 22 นาที 20 คำถาม

01ภาพรวม: Serverless Orchestration & Frontend

หัวข้อนี้รวม 3 บริการ serverless ที่ออกสอบใน DVA-C02 โดย Step Functions เป็นพระเอกที่ออกสอบบ่อยที่สุด (orchestrate workflow), ส่วน AppSync (managed GraphQL) และ Amplify (full-stack development) ออกสอบน้อยกว่าแต่ก็ควรรู้คอนเซ็ปต์หลัก

  • AWS Step Functions — ประสาน (orchestrate) Lambda และ AWS services เป็น workflow ด้วย visual state machine เขียนด้วย JSON (Amazon States Language)
  • AWS AppSync — managed GraphQL API พร้อม real-time subscriptions และ offline sync
  • AWS Amplify — ชุดเครื่องมือพัฒนา full-stack web/mobile app (frontend + serverless backend)
เคล็ดลับ
ข้อสอบจริงทุ่มน้ำหนักที่ Step Functions มากที่สุดในหัวข้อนี้ โดยเฉพาะ state types, error handling (Retry/Catch), Standard vs Express และ Wait for Task Token ให้โฟกัสตรงนี้เป็นพิเศษ

02Step Functions: State Machine & ASL

AWS Step Functions ใช้สร้าง serverless workflow ในรูปแบบ state machine มองเห็นเป็น flow diagram ได้ใน console เขียนนิยามด้วย Amazon States Language (ASL) ซึ่งเป็น JSON ใช้ประสานงานหลาย service เช่น Lambda, ECS, DynamoDB, SNS, SQS โดยจัดการ error, retry, parallel ให้อัตโนมัติ

  • เริ่ม execution ด้วย StartExecution API หรือ trigger จาก API Gateway, EventBridge
  • แต่ละ run คือ execution หนึ่งครั้ง มี input/output เป็น JSON
  • มองเห็น visual workflow และ execution history สำหรับ audit/debug (เด่นใน Standard)
  • ใช้ IAM role ในการเรียก service อื่นแทน workflow
หมายเหตุ
State machine ต้องมี StartAt ระบุ state แรก และทุก state ต้องมี Next หรือ End: true (ยกเว้น terminal states เช่น Succeed/Fail/Choice)

03State Types ใน Amazon States Language

ASL มี state หลายประเภท ข้อสอบชอบถามว่า state ไหนใช้ทำอะไร ให้จำให้แม่น

Task
ทำงานจริง 1 หน่วย — เรียก Lambda, AWS service integration หรือ Activity (worker). เป็น state ที่ใช้บ่อยที่สุด
Choice
Branching logic — ประเมินเงื่อนไขจาก input (เช่น NumericEquals, StringEquals) แล้วเลือกเส้นทางถัดไป
Parallel
รัน branch ที่กำหนดไว้คงที่ หลายอันพร้อมกัน (static parallelism) แล้วรวมผลเป็น array
Map
วน loop รัน step ชุดเดียวกันกับ แต่ละ item ใน array (dynamic parallelism — จำนวน iteration ขึ้นกับขนาด input)
Wait
หน่วงเวลา (delay) ตามวินาทีที่กำหนด หรือจนถึง timestamp ที่ระบุ
Pass
ส่ง input ไป output โดยไม่ทำงานจริง อาจใช้ inject ข้อมูลคงที่หรือ transform
Succeed / Fail
Terminal states — Succeed หยุดและทำเครื่องหมายว่าสำเร็จ, Fail หยุดและทำเครื่องหมายว่าล้มเหลว (ระบุ Error/Cause ได้)
ระวัง
กับดักข้อสอบ: Parallel vs Map — Parallel = branch คงที่ที่รู้จำนวนล่วงหน้า (static), Map = วนกับแต่ละ element ใน array (dynamic จำนวนขึ้นกับ input) อย่าสับสน!

04Error Handling: Retry & Catch

Step Functions จัดการ error ที่ระดับ state ด้วย 2 กลไกหลัก ที่มักใช้คู่กัน

  • Retry — retry state อัตโนมัติเมื่อเกิด error: กำหนด ErrorEquals, IntervalSeconds, MaxAttempts, BackoffRate (exponential backoff)
  • Catch — เมื่อ retry หมดแล้วยัง fail ให้ route ไป fallback state ที่กำหนด: กำหนด ErrorEquals และ Next
  • Error names พิเศษ: States.ALL (จับทุก error), States.Timeout, States.TaskFailed, States.Permissions
เคล็ดลับ
ลำดับการทำงาน: Retry ทำงานก่อน ถ้า retry หมด MaxAttempts แล้วยัง fail → Catch จึงรับช่วงต่อไปยัง fallback state. การ retry แบบ exponential backoff เป็นวิธีที่ AWS แนะนำสำหรับ transient errors

05Standard vs Express Workflow

Step Functions มี workflow 2 ประเภท เป็นจุดที่ออกสอบ scenario บ่อยมาก ต้องเลือกให้ถูกตามโจทย์

คุณสมบัติStandard WorkflowExpress Workflow
Max durationสูงสุด 1 ปีสูงสุด 5 นาที
Execution semanticsExactly-onceAsync = at-least-once / Sync = at-most-once
Execution rateสูงถึง ~2,000/วินาทีสูงมาก > 100,000/วินาที
Pricingตามจำนวน state transitionsตามจำนวน execution + duration + memory
Execution historyมีใน console (audit/debug ได้)ส่ง log ไป CloudWatch Logs
Use caseLong-running, auditable, orchestrationHigh-volume event processing, short tasks
เคล็ดลับ
จำสั้นๆ: เห็นคำว่า high-volume / event processing / short / cost-effective → เลือก Express. เห็นคำว่า long-running / audit / exactly-once / human approval → เลือก Standard
ระวัง
กับดัก: Express Workflow ไม่มี visual execution history แบบ Standard (ต้องดูจาก CloudWatch Logs) และจำกัดที่ 5 นาที ถ้าโจทย์ต้องการ audit trail เต็มรูปแบบหรือ workflow นานกว่า 5 นาที ห้ามเลือก Express

06Service Integration & Wait for Task Token

Step Functions เชื่อมต่อ service อื่นได้ 3 รูปแบบ (integration patterns) ซึ่งสำคัญมากในข้อสอบ

  • Request Response (default) — เรียก service แล้วไป state ถัดไปทันที ไม่รอผลงานเสร็จ
  • Run a Job (.sync) — เรียกแล้ว รอจน job เสร็จ (เช่น ECS task, Batch, Glue) จึงไปต่อ
  • Wait for Callback (.waitForTaskToken) — pause workflow จนกว่าจะได้รับ task token กลับ

Wait for Task Token ใช้เมื่อต้อง pause รอ external system/human เป็นเวลานาน: Step Functions ฝัง task token ส่งไปกับงาน แล้ว external worker เรียก SendTaskSuccess (พร้อม token) เพื่อให้ workflow ไปต่อ หรือ SendTaskFailure เมื่อล้มเหลว และใช้ SendTaskHeartbeat เพื่อแจ้งว่ายังทำงานอยู่ (กัน timeout)

Activity Tasks
อีกวิธีให้ worker ภายนอก (host บน EC2, ECS, mobile, on-prem) มา poll งานผ่าน GetActivityTask แล้วส่งผลกลับด้วย SendTaskSuccess/SendTaskFailure เหมาะกับงานที่ไม่เหมาะรันบน Lambda
ระวัง
กับดัก: .waitForTaskToken ต่างจาก Wait state — Wait state แค่หน่วงเวลาที่กำหนดแน่นอน ส่วน .waitForTaskToken รอ callback ภายนอกแบบไม่มีกำหนด (จนกว่าจะมี SendTaskSuccess หรือ timeout)

07AWS AppSync (Managed GraphQL)

AWS AppSync เป็น managed service สำหรับสร้าง GraphQL API ประกอบด้วย schema (กำหนด type/query/mutation/subscription) และ resolvers (เชื่อม field กับ data source) จุดเด่นคือ real-time subscriptions (ผ่าน WebSocket) และ offline data sync เหมาะกับ mobile/web app

  • Data sources ที่รองรับ: DynamoDB, Aurora (RDS), Lambda, OpenSearch, HTTP endpoints
  • Real-time — client subscribe การเปลี่ยนแปลงข้อมูลผ่าน GraphQL subscriptions (WebSocket)
  • Offline sync — เก็บข้อมูล local แล้ว sync เมื่อ online (มักใช้ผ่าน Amplify DataStore)
  • ดึงข้อมูลได้พอดีตามที่ client ขอ (ลด over-fetching เทียบกับ REST)
Authorization Modeใช้เมื่อ
API_KEYdev/testing หรือ public access ชั่วคราว
AWS_IAMผู้ใช้/role ใน AWS (IAM credentials, SigV4)
Amazon Cognito User Poolsผู้ใช้แอปที่ login ผ่าน Cognito
OpenID Connect (OIDC)identity provider ภายนอกที่รองรับ OIDC
AWS Lambdacustom authorization logic เขียนเอง
หมายเหตุ
AppSync รองรับ multiple authorization modes ใน API เดียว และสามารถใช้ Cognito เป็น primary auth ได้ ส่วน API_KEY เหมาะกับ public/dev เท่านั้น ไม่ควรใช้ใน production ที่ต้องการความปลอดภัยสูง

08AWS Amplify (Full-Stack Development)

AWS Amplify เป็นชุดเครื่องมือพัฒนา full-stack web/mobile app ครบวงจร เปรียบได้กับ Elastic Beanstalk แต่สำหรับ frontend + serverless backend ช่วยให้ตั้งค่า auth, API, storage และ deploy ได้รวดเร็ว

  • Amplify Hosting — host frontend พร้อม CI/CD อัตโนมัติจาก Git repository (build & deploy)
  • Amplify CLI / Amplify Studio — สร้างและจัดการ backend resources แบบ guided
  • DataStore — on-device storage ที่ sync กับ cloud (AppSync) อัตโนมัติ รองรับ offline
  • Integrations — เชื่อม Cognito (auth), AppSync/API Gateway (API), S3 (storage) ได้ง่าย
เคล็ดลับ
จำคู่กัน: โจทย์ที่พูดถึง deploy frontend web/mobile + CI/CD จาก Git + serverless backend + เชื่อม Cognito/AppSync/S3 ได้เร็ว มักตอบ Amplify. ส่วน DataStore = offline-capable storage ที่ sync ผ่าน AppSync
หมายเหตุ
Amplify เหมาะกับนักพัฒนาที่ต้องการเริ่มต้นเร็วโดยไม่ต้องตั้งค่า infrastructure เองทั้งหมด แต่เบื้องหลังยังใช้บริการ AWS มาตรฐาน (CloudFront, S3, Cognito, AppSync, Lambda) ทำให้ขยาย/ปรับแต่งได้

คำถามทบทวน

ทดสอบความเข้าใจหัวข้อ Other Serverless — Step Functions, AppSync & Amplify

20 ข้อ · เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย

ทำแล้ว 0/20คะแนน 0
  1. 1.บริษัทต้องการ orchestrate workflow ที่มีหลายขั้นตอน โดยบาง step ต้อง pause เพื่อรอการอนุมัติจากมนุษย์ (human approval) ซึ่งอาจใช้เวลาหลายชั่วโมง ก่อนจะดำเนินการต่อ ควรใช้ integration pattern ใดใน Step Functions?

  2. 2.แอปพลิเคชันต้องการ process event ปริมาณสูงมาก (high-volume) เช่น IoT data streaming, แต่ละ workflow ทำงานเสร็จภายในไม่กี่วินาที และต้องการต้นทุนต่ำ ควรเลือก Step Functions workflow แบบใด?

  3. 3.ใน Amazon States Language (ASL) state ประเภทใดใช้สำหรับ branching logic เลือกเส้นทางถัดไปตามเงื่อนไขของ input?

  4. 4.ต้องการประมวลผล array ของ item จำนวนมาก โดยรัน step เดียวกันกับแต่ละ item แบบ dynamic parallelism ควรใช้ state ประเภทใด?

  5. 5.ใน Step Functions เมื่อ Task state ที่เรียก Lambda เกิด error ต้องการ retry แบบ exponential backoff ก่อน แล้วถ้ายัง fail ให้ไปยัง state จัดการ error ควรกำหนดอะไรใน ASL?

  6. 6.AWS AppSync เป็น managed service สำหรับเทคโนโลยีใด?

  7. 7.แอป mobile ต้องการ real-time updates เมื่อข้อมูลเปลี่ยน และทำงานต่อได้แม้ offline แล้ว sync ภายหลัง ควรใช้บริการใด?

  8. 8.AppSync รองรับ authorization mode ใดบ้างสำหรับการรักษาความปลอดภัยของ GraphQL API?

  9. 9.นักพัฒนาต้องการ deploy full-stack web app (React frontend + serverless backend) พร้อม CI/CD, hosting, และเชื่อม Cognito/AppSync/S3 ได้ง่าย ควรใช้บริการใด?

  10. 10.Standard Workflow ของ Step Functions มี maximum execution duration เท่าใด?

  11. 11.Activity Task ใน Step Functions ใช้สำหรับอะไร?

  12. 12.ใน Express Workflow ของ Step Functions มี execution semantics แบบใด?

  13. 13.Step Functions สามารถ integrate กับ AWS service ใดได้โดยตรง (optimized integration)?

  14. 14.ใน ASL state ประเภทใดใช้สำหรับหยุด execution และทำเครื่องหมายว่า workflow สำเร็จ?

  15. 15.แอปต้องการ visual workflow ที่มี full execution history สำหรับ audit และ debugging ของ order processing ที่ใช้เวลาหลายวัน ควรเลือก workflow type ใด?

  16. 16.data source ใดที่ AppSync resolver สามารถเชื่อมต่อได้?

  17. 17.ในการ pause workflow ด้วย .waitForTaskToken แล้ว external worker ต้องเรียก API ใดเพื่อให้ workflow ดำเนินการต่อเมื่อสำเร็จ?

  18. 18.ข้อใดเป็นความแตกต่างด้าน pricing ระหว่าง Standard และ Express Workflow ที่ถูกต้อง?

  19. 19.Amplify DataStore ให้ความสามารถหลักด้านใดแก่ frontend app?

  20. 20.workflow ของ Step Functions ต้องการรัน sub-task หลายอันที่กำหนดไว้แน่นอนพร้อมกัน (เช่น เรียก 3 Lambda พร้อมกัน) แล้วรวมผลลัพธ์ ควรใช้ state ใด?