0Pricing
Cloud & IT Cert Prep · บทเรียน

การจำกัดอัตรา การแคช และแผนการใช้งาน

ปกป้องระบบส่วนหลังด้วยขีดจำกัดการจำกัดอัตราแบบพุ่งสูงและแบบคงที่ เปิดใช้แคชการตอบกลับ และสร้างแผนการใช้งานพร้อมคีย์ API สำหรับพาร์ทเนอร์

การจำกัดอัตรา การแคช และแผนการใช้งาน เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการจำกัดอัตราจึงจำเป็น

หากไม่มีการจำกัดอัตรา ไคลเอ็นต์ที่ทำงานผิดปกติเพียงรายเดียวหรือการพุ่งขึ้นของปริมาณการรับส่งข้อมูลอาจทำให้บริการแบ็กเอนด์ของคุณทำงานเกินกำลัง ไม่ว่าจะเป็นความพร้อมกันของฟังก์ชันแลมบ์ดา การเชื่อมต่อ RDS หรือ API ปลายทาง การจำกัดอัตราใน API Gateway จะจำกัดจำนวนคำขอต่อวินาที และอนุญาตให้มีคำขอพุ่งขึ้นระยะสั้นเกินกว่าอัตราคงที่ได้ คำขอที่ถูกจำกัดจะได้รับการตอบกลับ 429 Too Many Requests ทันที โดยไม่ส่งคำขอไปถึงแบ็กเอนด์ จึงช่วยป้องกันทรัพยากรปลายทางไม่ให้ทำงานเกินกำลัง

การจำกัดอัตราระดับบัญชีและระดับระยะ

การจำกัดอัตราทำงานได้หลายระดับ ขีดจำกัดระดับบัญชีคือ 10,000 คำขอต่อวินาที (RPS) โดยมีคำขอพุ่งขึ้น 5,000 รายการ (เป็นขีดจำกัดแบบผ่อนปรนและสามารถเพิ่มได้) ในระดับระยะ คุณสามารถตั้งค่าอัตราการจำกัดเริ่มต้น (RPS) และขีดจำกัดการพุ่งขึ้น ซึ่งมีผลกับทุกเมธอดในระยะนั้น ในระดับเมธอด คุณสามารถแทนที่ค่าเริ่มต้นของระยะสำหรับปลายทางเฉพาะได้ เช่น กำหนดให้อัตราของปลายทาง GET ที่เน้นการอ่านสูงกว่าอัตราของปลายทาง POST ที่เน้นการเขียน

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/*/*/throttling/rateLimit,value=1000' \
    'op=replace,path=/*/*/throttling/burstLimit,value=2000'

อัลกอริทึมถังโทเค็น

การจำกัดอัตราของ API Gateway ใช้อัลกอริทึมถังโทเค็น โทเค็นจะสะสมในถังได้สูงสุดตามขีดจำกัดการพุ่งขึ้น (ความจุสูงสุดในทันที) แต่ละคำขอใช้โทเค็นหนึ่งรายการ โทเค็นจะเติมกลับตามขีดจำกัดอัตรา (RPS ในสภาวะคงที่) หากถังว่าง คำขอจะถูกจำกัด ตัวอย่างเช่น burst=5000 และ rate=1000 RPS ในตอนเริ่มต้น คุณสามารถรองรับคำขอพร้อมกันได้ 5,000 รายการ และถังจะเติมโทเค็น 1,000 รายการต่อวินาที วิธีนี้ช่วยรองรับการพุ่งขึ้นของปริมาณการรับส่งข้อมูลช่วงสั้น ๆ พร้อมกับบังคับใช้ขีดจำกัดอัตราในระยะยาว

การแคชการตอบกลับของ API Gateway

การแคชการตอบกลับ (มีให้ใช้ในระยะของ REST API) จะจัดเก็บการตอบกลับจากแบ็กเอนด์ไว้ในแคชที่ API Gateway จัดการ เพื่อให้คำขอที่เหมือนกันได้รับการตอบกลับจากแคชโดยไม่ต้องเรียกแบ็กเอนด์ วิธีนี้ช่วยลดภาระของแบ็กเอนด์ ลดเวลาแฝง และอาจลดค่าใช้จ่ายการเรียกใช้ฟังก์ชันแลมบ์ดาได้อย่างมากสำหรับ API ที่เน้นการอ่าน แคชจะใช้คำขอเป็นกุญแจ (เมธอด เส้นทาง สตริงคำค้นหา และส่วนหัวตามการกำหนดค่า) สามารถกำหนด TTL ของแคชได้ตั้งแต่ 0 ถึง 3600 วินาที (ค่าเริ่มต้น 300 วินาที)

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/cacheClusterEnabled,value=true' \
    'op=replace,path=/cacheClusterSize,value=0.5' \
    'op=replace,path=/*/*/caching/ttlInSeconds,value=300'

การปรับแต่งคีย์แคช

โดยค่าเริ่มต้น คีย์แคชคือ URL ของคำขอทั้งหมด คุณสามารถปรับแต่งได้ว่าองค์ประกอบใดจะนำมาใช้สร้างคีย์แคช โดยรวมพารามิเตอร์สตริงคำค้นหาที่ระบุ (เช่น pageSize, filter) และไม่รวมพารามิเตอร์ที่ไม่เกี่ยวข้อง (เช่น การประทับเวลา) นอกจากนี้ คุณยังสามารถรวมส่วนหัวที่ระบุไว้ในคีย์แคชได้ด้วย ควรไม่รวมส่วนหัวที่มีข้อมูลละเอียดอ่อนออกจากคีย์แคช เพื่อป้องกันไม่ให้ข้อมูลส่วนตัวปะปนอยู่ในรายการแคชที่ใช้ร่วมกัน ใช้การปรับแต่งคีย์แคชเพื่อเพิ่มอัตราการพบข้อมูลในแคชให้สูงที่สุด พร้อมตรวจสอบให้แน่ใจว่าคำขอเชิงตรรกะที่แตกต่างกันได้รับคำตอบจากแคชที่แตกต่างกัน

การทำให้แคชใช้ไม่ได้

ไคลเอ็นต์สามารถทำให้แคชของคำขอที่ระบุใช้ไม่ได้ โดยใส่ส่วนหัว Cache-Control: max-age=0 คุณยังสามารถล้างแคชของสเตจทั้งหมดได้จากคอนโซลหรือ API ให้กำหนดว่าไคลเอ็นต์มีสิทธิ์ทำให้แคชใช้ไม่ได้หรือไม่ โดยจำกัดสิทธิ์นี้ในระบบจริงเพื่อป้องกันไม่ให้ไคลเอ็นต์จงใจหลีกเลี่ยงการใช้แคช หากต้องการมอบสิทธิ์การล้างแคชแบบเลือกเฉพาะ ให้แนบนโยบายทรัพยากร หรือใช้ตัวอนุญาตของ Lambda ที่ตรวจสอบว่าผู้เรียกมีสิทธิ์ล้างแคชหรือไม่

# Flush entire stage cache
aws apigateway flush-stage-cache \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

แผนการใช้งาน: ขีดจำกัดอัตราต่อไคลเอ็นต์

แผนการใช้งานกำหนดขีดจำกัดการควบคุมอัตราและโควตาสำหรับกลุ่มไคลเอ็นต์ API เชื่อมโยงสเตจของ API กับแผนการใช้งาน จากนั้นเชื่อมโยงคีย์ APIกับแผนดังกล่าว คีย์ API แต่ละรายการจะบังคับใช้ขีดจำกัดของแผนแยกจากกัน แผนการใช้งานช่วยให้คุณนำเสนอสิทธิ์การเข้าถึงหลายระดับได้ เช่น แผนฟรีที่ 100 RPM/10,000 คำขอต่อวัน และแผน Pro ที่ 1,000 RPM/100,000 คำขอต่อวัน นี่คือรูปแบบสำหรับ API ที่สร้างรายได้และการผสานรวมกับพาร์ทเนอร์ ซึ่งไคลเอ็นต์แต่ละรายต้องการขีดจำกัดอัตราที่แตกต่างกัน

# Create a usage plan
aws apigateway create-usage-plan \
  --name 'ProTier' \
  --throttle 'rateLimit=1000,burstLimit=2000' \
  --quota 'limit=100000,period=DAY' \
  --api-stages 'apiId=abc123,stage=prod'

คีย์ API และการระบุไคลเอ็นต์

คีย์ API คือโทเค็นสตริงแบบทึบแสงที่ไคลเอ็นต์ใส่ไว้ในส่วนหัวคำขอ x-api-key API Gateway จะตรวจสอบคีย์และเชื่อมโยงคำขอกับแผนการใช้งานที่ตรงกัน คีย์ API ไม่ใช่กลไกด้านความปลอดภัย—มีไว้เพื่อระบุไคลเอ็นต์สำหรับการควบคุมอัตราและโควตาเท่านั้น ด้านความปลอดภัย ควรใช้คีย์ API ร่วมกับการอนุญาตที่เหมาะสมเสมอ (IAM, ตัวอนุญาตของ Lambda หรือ Cognito) คีย์ API ที่ไม่ได้เชื่อมโยงกับแผนการใช้งานจะไม่มีการนำขีดจำกัดการควบคุมอัตรามาใช้

# Create an API key and associate with usage plan
aws apigateway create-api-key \
  --name 'PartnerABC-Key' \
  --enabled

aws apigateway create-usage-plan-key \
  --usage-plan-id 'uvw321' \
  --key-id 'xyz789' \
  --key-type API_KEY

ขีดจำกัดโควตาในแผนการใช้งาน

นอกเหนือจากอัตราการควบคุมต่อวินาทีแล้ว แผนการใช้งานยังรองรับขีดจำกัดโควตา ซึ่งคือจำนวนคำขอสูงสุดในช่วงเวลาหนึ่ง (DAY, WEEK หรือ MONTH) เมื่อไคลเอ็นต์ใช้โควตาจนหมด คำขอถัดไปจะส่งคืน 429 จนกว่าโควตาจะรีเซ็ต ขีดจำกัดโควตามีประโยชน์สำหรับการบังคับใช้ระดับฟรี การป้องกันการใช้งาน API ในทางที่ผิด และการทำให้การใช้ API สอดคล้องกับการเรียกเก็บเงิน ตัวนับโควตามีความสอดคล้องในท้ายที่สุด ดังนั้นไคลเอ็นต์อาจใช้เกินโควตาได้เล็กน้อยก่อนถูกบล็อก

เมตริก CloudWatch สำหรับการควบคุมอัตราและการแคช

ตรวจสอบสถานะของ API Gateway ด้วยเมตริก CloudWatch ต่อไปนี้:

  • Count: จำนวนการเรียก API ทั้งหมด
  • 4XXError: ข้อผิดพลาดจากไคลเอ็นต์ รวมถึงการควบคุมอัตราที่ได้ผลเป็น 429
  • 5XXError: ข้อผิดพลาดจากแบ็กเอนด์
  • Latency: เวลาของคำขอตั้งแต่ต้นจนจบ
  • IntegrationLatency: เวลาที่รอแบ็กเอนด์
  • CacheHitCount / CacheMissCount: ประสิทธิผลของแคช

ตั้งการแจ้งเตือนเมื่อ 4XXError เพิ่มขึ้นอย่างรวดเร็ว เพื่อค้นหาปัญหาการควบคุมอัตราก่อนที่จะส่งผลกระทบต่อผู้ใช้ และตั้งการแจ้งเตือนที่ CacheMissCount เพื่อระบุปัญหาการกำหนดค่าแคช

ควรเปิดใช้การแคชหรือการควบคุมอัตราเมื่อใด

ใช้การแคชกับ API ที่เน้นการอ่านข้อมูลและคำตอบเปลี่ยนแปลงไม่บ่อย เช่น การค้นหาแค็ตตาล็อกสินค้า ข้อมูลอ้างอิง และการกำหนดค่าแบบคงที่ การแคชไม่เหมาะกับข้อมูลเฉพาะผู้ใช้หรือข้อมูลที่เปลี่ยนแปลงบ่อย ควรใช้การควบคุมอัตราเสมอ แม้แต่กับ API ภายใน เพื่อป้องกันไม่ให้บริการแบ็กเอนด์ทำงานเกินกำลัง ใช้ทั้งสองอย่างร่วมกัน โดยแคชข้อมูลที่มีการเรียกใช้บ่อยเพื่อลดภาระของแบ็กเอนด์ และใช้การควบคุมอัตราอย่างเข้มงวดเพื่อป้องกันไม่ให้ไคลเอ็นต์รายใดรายหนึ่งครองการใช้งาน API สำหรับการสอบ SAA-C03 การแคชช่วยลดต้นทุนและเวลาแฝง ส่วนการควบคุมอัตราช่วยให้บริการพร้อมใช้งาน

ตรวจสอบความเข้าใจ

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

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า การควบคุมอัตราในระดับบัญชี สเตจ และเมธอดช่วยปกป้องแบ็กเอนด์ด้วยอัลกอริทึมถังโทเค็น ซึ่งกำหนดอัตราและขีดจำกัดการเพิ่มขึ้นอย่างรวดเร็วได้ การแคชคำตอบจัดเก็บคำตอบจากแบ็กเอนด์ตามอายุการใช้งานที่กำหนดได้ เพื่อลดภาระของแบ็กเอนด์และเวลาแฝงสำหรับปลายทางที่เน้นการอ่านข้อมูล และแผนการใช้งานร่วมกับคีย์ APIบังคับใช้อัตราการควบคุมและโควตาแยกตามไคลเอ็นต์ ทำให้ควบคุมสิทธิ์การเข้าถึงหลายระดับสำหรับ API ของพาร์ทเนอร์และ API สาธารณะได้ บทถัดไป เราจะศึกษา ECS คลัสเตอร์ นิยามงาน และบริการสำหรับเวิร์กโหลดแบบคอนเทนเนอร์

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

บทเรียน “การจำกัดอัตรา การแคช และแผนการใช้งาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจำกัดอัตรา การแคช และแผนการใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจำกัดอัตรา การแคช และแผนการใช้งาน”

ปกป้องระบบส่วนหลังด้วยขีดจำกัดการจำกัดอัตราแบบพุ่งสูงและแบบคงที่ เปิดใช้แคชการตอบกลับ และสร้างแผนการใช้งานพร้อมคีย์ API สำหรับพาร์ทเนอร์ คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

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

บทเรียน “การจำกัดอัตรา การแคช และแผนการใช้งาน” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

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

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

  1. REST API เทียบกับ HTTP API เทียบกับ WebSocket API
  2. การผสานรวม: Lambda, HTTP และแบบจำลอง
  3. การอนุญาต: IAM, ตัวอนุญาต Lambda และ Cognito
  4. การจำกัดอัตรา การแคช และแผนการใช้งาน
← กลับไปที่ Cloud & IT Cert Prep