การพัฒนา API

การพัฒนาแอปพลิเคชันบน AWS

Ricardo Sueiras

Principal Technologist

การเชื่อมต่อของ API Gateway

 

การเชื่อมต่อของ API Gateway

  • ตัวเลือกการเชื่อมต่อ back-end หลายรูปแบบ
  • HTTP: endpoint ที่เข้าถึงได้สาธารณะ
  • AWS service API เช่น DynamoDB หรือ SNS
  • Lambda functions
  • ทรัพยากรส่วนตัวผ่าน VPC links
  • Mock responses โดยไม่ต้องมี back-end จริง
การพัฒนาแอปพลิเคชันบน AWS

ประเภทการเชื่อมต่อ: proxy

 

ประเภทการเชื่อมต่อ API

  • ประเภทการเชื่อมต่อกำหนดระดับการควบคุมของ API Gateway
  • ประเภท Proxy: AWS_PROXY และ HTTP_PROXY
  • ส่ง HTTP request ทั้งหมดตรงไปยัง back-end
  • API Gateway ทำหน้าที่เป็น pass-through โปร่งใส
  • back-end เป็นผู้สร้าง response
การพัฒนาแอปพลิเคชันบน AWS

ประเภทการเชื่อมต่อ: non-proxy

  • ประเภท Non-proxy: AWS และ HTTP
  • กำหนดค่าการแปลง request และ response เองได้
  • ขับเคลื่อนด้วย mapping templates
  • Templates เขียนด้วย Velocity Template Language (VTL)

 

ประเภทการเชื่อมต่อ API

การพัฒนาแอปพลิเคชันบน AWS

การตรวจสอบ request

 

การตรวจสอบ request

  • ตรวจสอบ request ก่อนส่งถึง back-end
  • ตรวจจับฟิลด์ที่จำเป็นแต่ขาดหายไป
  • ตรวจจับรูปแบบ JSON ที่ไม่ถูกต้อง
  • ตรวจจับประเภทพารามิเตอร์ที่ผิดพลาด
  • เมื่อไม่ผ่านการตรวจสอบ มักได้รับ 400 Bad Request
การพัฒนาแอปพลิเคชันบน AWS

การตรวจสอบ request

 

การตรวจสอบ request

  • การตรวจสอบครอบคลุม:
    • Headers
    • Query string parameters
    • Request body
    • JSON schema
การพัฒนาแอปพลิเคชันบน AWS

การตรวจสอบ request

 

การตรวจสอบ request

  • การตรวจสอบให้ผลคุ้มค่าด้วยการ:
    • ลด request ที่ไม่ถูกต้องไปยัง back-end
    • ลดค่าใช้จ่ายการรัน Lambda
    • เพิ่มความเสถียรของ API
การพัฒนาแอปพลิเคชันบน AWS

การแปลงข้อมูล

  • ปรับรูป request และ response โดยไม่แตะโค้ด back-end
    • เปลี่ยนโครงสร้าง payload
    • เปลี่ยนชื่อฟิลด์
    • แปลง headers
    • แปลงรูปแบบข้อมูล
    • ซ่อนรายละเอียดการ implement
  • ขับเคลื่อนด้วย VTL mapping templates

 

การแปลง API

การพัฒนาแอปพลิเคชันบน AWS

การจัดการข้อผิดพลาด

 

ข้อผิดพลาดของ API

  • ข้อผิดพลาด 2 ประเภท
    • Gateway errors: เกิดจาก API Gateway
    • Integration errors: ความล้มเหลวจาก back-end
  • Gateway errors ที่พบบ่อย:
    • 400 Bad Request: ไม่ผ่านการตรวจสอบ request
    • 429 Too Many Requests: เกินขีดจำกัด throttling
การพัฒนาแอปพลิเคชันบน AWS

การจัดการข้อผิดพลาด

 

ข้อผิดพลาดของ API

  • Integration errors ที่พบบ่อย:
    • 502 Bad Gateway: response ผิดรูปแบบหรือไม่ถูกต้อง
    • 503 Service Unavailable: back-end ไม่พร้อมหรือโหลดเกิน
    • 504 Gateway Timeout: เกิน timeout 29 วินาที
    • REST API แบบ Regional และ Private สามารถขยายได้เกิน 29 วินาที
การพัฒนาแอปพลิเคชันบน AWS

การ Logging

  • Execution logs และ CloudWatch metrics คือเครื่องมือหลักในการแก้ปัญหา
  • API Gateway เชื่อมต่อกับ CloudWatch สำหรับ:
    • Logs
    • Metrics
    • Execution tracing

 

 

การตรวจสอบ API

การพัฒนาแอปพลิเคชันบน AWS

การ Logging

  • CloudWatch logs ช่วยแก้ปัญหาเหล่านี้:
    • การเชื่อมต่อที่ล้มเหลว
    • ข้อผิดพลาดในการแปลงข้อมูล
    • ความล้มเหลวด้านการตรวจสอบสิทธิ์
    • ปัญหาการรัน Lambda

 

 

การตรวจสอบ API

การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • API definition เดียวรองรับหลาย environment
  • Stages คือวิธีที่ API Gateway จัดการ environment เหล่านั้น
การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • API definition เดียวรองรับหลาย environment
  • Stages คือวิธีที่ API Gateway จัดการ environment เหล่านั้น
  • Stage คือการอ้างอิงที่มีชื่อ
  • ชี้ไปยัง deployment snapshot ของการตั้งค่า API
การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • API definition เดียวรองรับหลาย environment
  • Stages คือวิธีที่ API Gateway จัดการ environment เหล่านั้น
  • Stage คือการอ้างอิงที่มีชื่อ
  • ชี้ไปยัง deployment snapshot ของการตั้งค่า API
  • ชื่อ stage ที่ใช้บ่อย:
    • Dev
    • Test
    • QA และ Prod
การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • API definition เดียวรองรับหลาย environment
  • Stages คือวิธีที่ API Gateway จัดการ environment เหล่านั้น
  • Stage คือการอ้างอิงที่มีชื่อ
  • ชี้ไปยัง deployment snapshot ของการตั้งค่า API
  • ชื่อ stage ที่ใช้บ่อย: Dev, Test, QA, Prod
  • Invoke URL สะท้อนแต่ละ stage
การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • API definition เดียวรองรับหลาย environment
  • Stages คือวิธีที่ API Gateway จัดการ environment เหล่านั้น
  • Stage คือการอ้างอิงที่มีชื่อ
  • ชี้ไปยัง deployment snapshot ของการตั้งค่า API
  • ชื่อ stage ที่ใช้บ่อย: Dev, Test, QA, Prod
  • Invoke URL สะท้อนแต่ละ stage
  • หลาย stage ชี้ไปยัง deployment เดียวได้เพื่อ rollback ทันที
การพัฒนาแอปพลิเคชันบน AWS

Stages: การจัดการ API ข้าม environment

 

Stages

  • การเปลี่ยนแปลงจะมีผลเมื่อ deploy ไปยัง stage แล้วเท่านั้น
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Stages

  • แต่ละ stage ตั้งค่าได้อิสระ
  • การตั้งค่ารวมถึง stage variables
  • Stage variables คือคู่ key-value
  • ส่ง deployment เดียวไปยัง back-end ที่แตกต่างกันได้
  • ไม่ต้อง redeploy เมื่อเปลี่ยน environment

 

stage

การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Stages

  • Canary deployments
    • เฉพาะ REST API
    • ส่งทราฟฟิกบางส่วนไปยัง deployment ใหม่
    • Promote เป็น full release
    • ลบ canary เพื่อ rollback

 

stage

การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Stages

  • Throttling
    • ตั้งค่าที่ระดับ stage
    • ใช้กับทุก method พร้อมปรับแต่งรายเมธอดได้

 

stage

การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Stages

  • Throttling
    • ตั้งค่าที่ระดับ stage
    • ใช้กับทุก method พร้อมปรับแต่งรายเมธอดได้
  • Caching
    • เฉพาะ REST API
    • จัดเก็บ response จาก back-end ที่ระดับ stage
    • Client ข้ามแคชได้ด้วย Cache-Control
    • TTL ตั้งแต่ 0 ถึง 3600 วินาที ค่าเริ่มต้น 300

 

stage

การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Stages

  • Logging มี 2 โหมด
    • Access logs
    • สร้างจากตัวแปร $context ส่งไปยัง CloudWatch log group
    • Execution logs
    • บันทึกรายละเอียด request และ response ครบถ้วน

 

stage

การพัฒนาแอปพลิเคชันบน AWS

มาฝึกกันเถอะ!

การพัฒนาแอปพลิเคชันบน AWS

Preparing Video For Download...