คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info

อะไร
ใช้นโยบายโควต้าเพื่อกำหนดค่าจำนวนข้อความคำขอที่พร็อกซี API อนุญาตในช่วงเวลาหนึ่งๆ เช่น นาที ชั่วโมง วัน สัปดาห์ หรือเดือน คุณสามารถตั้งค่าโควต้าให้เหมือนกันสำหรับแอปทั้งหมดที่เข้าถึงพร็อกซี API หรือจะตั้งค่าโควต้าตามเกณฑ์ต่อไปนี้ก็ได้
- ผลิตภัณฑ์ที่มีพร็อกซี API
- แอปที่ขอ API
- นักพัฒนาแอป
- เกณฑ์อื่นๆ อีกมากมาย
อย่าใช้โควต้าเพื่อปกป้องจากปริมาณการเข้าชมโดยรวมที่เพิ่มขึ้นอย่างรวดเร็ว โปรดใช้นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน ดูนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน
วิดีโอ
วิดีโอเหล่านี้จะแนะนำการจัดการโควต้าด้วยนโยบายโควต้า
บทนำ (Edge เวอร์ชันใหม่)
อินโทร (Edge เวอร์ชันคลาสสิก)
โควต้าแบบไดนามิก
แบบกระจายและแบบซิงโครนัส
น้ำหนักข้อความ
ปฏิทิน
กรอบเวลาแบบเลื่อน
Flexi
โควต้าแบบมีเงื่อนไข
ตัวแปรของโฟลว์
การจัดการข้อผิดพลาด
ตัวอย่าง
ตัวอย่างโค้ดนโยบายเหล่านี้แสดงวิธีเริ่มต้นและสิ้นสุดระยะเวลาโควต้าโดยทำดังนี้
โควต้าแบบไดนามิกเพิ่มเติม
<Quota name="CheckQuota"> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/> </Quota>
โควต้าแบบไดนามิกช่วยให้คุณกำหนดค่านโยบายโควต้าเดียวที่จะบังคับใช้การตั้งค่าโควต้าที่แตกต่างกันตามข้อมูลที่ส่งไปยังนโยบายโควต้าได้ คําอื่นสําหรับการตั้งค่าโควต้าในบริบทนี้คือ "แพ็กเกจบริการ" โควต้าแบบไดนามิกจะตรวจสอบ "แพ็กเกจบริการ" ของแอป แล้วบังคับใช้การตั้งค่าเหล่านั้น
หมายเหตุ: หากคุณระบุทั้งค่าและการอ้างอิงสำหรับองค์ประกอบ ระบบจะให้ความสำคัญกับการอ้างอิง หากการอ้างอิงไม่ได้รับการแก้ไขเมื่อรันไทม์ ระบบจะใช้ค่าดังกล่าว
เช่น เมื่อสร้างผลิตภัณฑ์ API คุณสามารถเลือกกำหนดขีดจำกัดโควต้าที่อนุญาต หน่วยเวลา และช่วงเวลาได้ อย่างไรก็ตาม การตั้งค่าค่าเหล่านี้ในผลิตภัณฑ์ API ไม่ได้บังคับให้ใช้ในพร็อกซี API นอกจากนี้ คุณยังต้องเพิ่มนโยบายโควต้าลงในพร็อกซี API ที่อ่านค่าเหล่านี้ด้วย ดูข้อมูลเพิ่มเติมได้ที่สร้างผลิตภัณฑ์ API
ในตัวอย่างข้างต้น พารามิเตอร์การเรียก API ที่มีนโยบายโควต้าใช้นโยบาย VerifyAPIKey ชื่อ verify-api-key
เพื่อตรวจสอบคีย์ API ที่ส่งมาในคําขอ จากนั้นนโยบายโควต้าจะเข้าถึงตัวแปรของโฟลว์จากนโยบาย VerifyAPIKey เพื่ออ่านค่าโควต้าที่ตั้งไว้ในผลิตภัณฑ์ API ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรของขั้นตอน VerifyAPIKey ได้ที่นโยบายการยืนยันคีย์ API
อีกทางเลือกหนึ่งคือการตั้งค่าแอตทริบิวต์ที่กำหนดเองสำหรับนักพัฒนาแอปหรือแอปแต่ละราย แล้วอ่านค่าเหล่านั้นในนโยบายโควต้า เช่น คุณต้องการกำหนดค่าโควต้าที่แตกต่างกันสำหรับนักพัฒนาแอปแต่ละราย ในกรณีนี้ คุณต้องตั้งค่าแอตทริบิวต์ที่กำหนดเองในนักพัฒนาแอปซึ่งมีขีดจํากัด หน่วยเวลา และช่วงเวลา จากนั้นคุณอ้างอิงค่าเหล่านี้ในนโยบายโควต้าดังที่แสดงด้านล่าง
<Quota name="DeveloperQuota"> <Identifier ref="verifyapikey.verify-api-key.client_id"/> <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> </Quota>
ตัวอย่างนี้ยังใช้ตัวแปรขั้นตอน VerifyAPIKey เพื่ออ้างอิงแอตทริบิวต์ที่กําหนดเองซึ่งตั้งค่าไว้ในส่วนนักพัฒนาแอปด้วย
คุณใช้ตัวแปรใดก็ได้เพื่อตั้งค่าพารามิเตอร์ของนโยบายโควต้า ตัวแปรดังกล่าวอาจมาจากสิ่งต่อไปนี้
- ตัวแปรของโฟลว์
- พร็อพเพอร์ตี้ในผลิตภัณฑ์ API, แอป หรือนักพัฒนาแอป
- แมปค่าคีย์ (KVM)
- ส่วนหัว พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม ฯลฯ
สําหรับพร็อกซี API แต่ละรายการ คุณสามารถเพิ่มนโยบายโควต้าที่อ้างอิงตัวแปรเดียวกับนโยบายโควต้าอื่นๆ ทั้งหมดในพร็อกซีอื่นๆ หรือนโยบายโควต้าจะอ้างอิงตัวแปรเฉพาะสําหรับนโยบายและพร็อกซีนั้นก็ได้
เวลาเริ่มต้น
<Quota name="QuotaPolicy" type="calendar"> <StartTime>2017-02-18 10:30:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
สำหรับโควต้าที่มีการตั้งค่า type
เป็น calendar
คุณต้องกำหนดค่า <StartTime>
ที่ชัดเจน ค่าเวลาคือเวลา GMT ไม่ใช่เวลาท้องถิ่น หากคุณไม่ได้ระบุค่า <StartTime>
สำหรับนโยบายประเภท calendar
ทาง Edge จะแสดงข้อผิดพลาด
ระบบจะรีเฟรชตัวนับโควต้าสําหรับแต่ละแอปตามค่า <StartTime>
, <Interval>
และ <TimeUnit>
ในตัวอย่างนี้ โควต้าจะเริ่มนับเวลา 10:30 น. GMT ของวันที่ 18 กุมภาพันธ์ 2017 และรีเฟรชทุก 5 ชั่วโมง ดังนั้น การรีเฟรชครั้งถัดไปจะเป็นเวลา 15:30 น. GMT ของวันที่ 18 กุมภาพันธ์ 2017
ตัวนับการเข้าถึง
<Quota name="QuotaPolicy"> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
พารามิเตอร์การเข้าถึง API มีสิทธิ์เข้าถึงตัวแปรการไหลที่กำหนดโดยนโยบายโควต้า คุณสามารถเข้าถึงตัวแปรการไหลเหล่านี้ในพร็อกซี API เพื่อดำเนินการแบบมีเงื่อนไข ตรวจสอบนโยบายเมื่อใกล้ถึงขีดจำกัดโควต้า ส่งตัวนับโควต้าปัจจุบันไปยังแอป หรือเหตุผลอื่นๆ
เนื่องจากสิทธิ์เข้าถึงตัวแปรการไหลของนโยบายจะอิงตามแอตทริบิวต์ name
ของนโยบาย ดังนั้นสําหรับนโยบายชื่อ QuotaPolicy
ข้างต้น คุณจะเข้าถึงตัวแปรการไหลของนโยบายในรูปแบบต่อไปนี้
ratelimit.QuotaPolicy.allowed.count
: จำนวนที่อนุญาตratelimit.QuotaPolicy.used.count
: ค่าตัวนับปัจจุบันratelimit.QuotaPolicy.expiry.time
: เวลา UTC เมื่อตัวนับรีเซ็ต
คุณสามารถเข้าถึงตัวแปรอื่นๆ ของโฟลว์ได้อีกมากมายตามที่อธิบายไว้ด้านล่าง
ตัวอย่างเช่น คุณสามารถใช้นโยบาย AssignMessage ต่อไปนี้เพื่อแสดงค่าของตัวแปรการไหลของโควต้าเป็นส่วนหัวของคำตอบ
<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars"> <AssignTo createNew="false" type="response"/> <Set> <Headers> <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header> <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header> <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
คำขอแรก
<Quota name="MyQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="10000"/> </Quota>
ใช้โค้ดตัวอย่างนี้เพื่อบังคับใช้โควต้าการโทร 10,000 ครั้งต่อ 1 ชั่วโมง นโยบายจะรีเซ็ตตัวนับโควต้าที่ด้านบนของทุกชั่วโมง หากตัวนับถึงโควต้าการโทร 10,000 สายก่อนหมดเวลา 1 ชั่วโมง ระบบจะปฏิเสธสายที่เกิน 10,000 สาย
เช่น หากตัวนับเริ่มต้นที่ 2017-07-08 07:00:00
ระบบจะรีเซ็ตเป็น 0 ที่ 2017-07-08 08:00:00
(1 ชั่วโมงนับจากเวลาเริ่มต้น) หากได้รับข้อความแรกเมื่อเวลา 2017-07-08 07:35:28
และข้อความมีจำนวนถึง 10,000 รายการก่อนเวลา 2017-07-08 08:00:00
ระบบจะปฏิเสธสายโทรเข้าเกินจำนวนดังกล่าวจนกว่าระบบจะรีเซ็ตจำนวนใหม่เมื่อถึงเวลา 00:00 น.
เวลารีเซ็ตตัวนับจะอิงตามชุดค่าผสมของ <Interval>
และ <TimeUnit>
ตัวอย่างเช่น หากคุณตั้งค่า <Interval>
เป็น 12 สำหรับ <TimeUnit>
ชั่วโมง ตัวนับจะรีเซ็ตทุก 12 ชั่วโมง
คุณสามารถตั้งค่า <TimeUnit>
เป็นนาที ชั่วโมง วัน สัปดาห์ หรือเดือน
คุณอ้างอิงนโยบายนี้ได้หลายที่ในพร็อกซี API เช่น คุณอาจวางไว้ใน Proxy PreFlow เพื่อให้ระบบเรียกใช้กับทุกคําขอ หรือจะวางไว้ในหลายโฟลว์ในพร็อกซี API ก็ได้ หากคุณใช้นโยบายนี้ในหลายตำแหน่งในพร็อกซี ระบบจะเก็บรักษาตัวนับเดียวที่อินสแตนซ์ทั้งหมดของนโยบายจะอัปเดต
หรือจะกําหนดนโยบายโควต้าหลายรายการในพร็อกซี API ก็ได้ นโยบายโควต้าแต่ละรายการจะเก็บรักษาตัวนับของตัวเองตามแอตทริบิวต์ name
ของนโยบาย
ตั้งค่าตัวระบุ
<Quota name="QuotaPolicy" type="calendar"> <Identifier ref="request.header.clientId"/> <StartTime>2017-02-18 10:00:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
โดยค่าเริ่มต้น นโยบายโควต้าจะกำหนดตัวนับเดียวสำหรับพร็อกซี API โดยไม่คำนึงถึงต้นทางของคำขอ หรือจะใช้แอตทริบิวต์ <Identifier>
กับนโยบายโควต้าเพื่อดูแลรักษาตัวนับแยกกันตามค่าของแอตทริบิวต์ <Identifier>
ก็ได้
เช่น ใช้แท็ก <Identifier>
เพื่อกําหนดตัวนับแยกต่างหากสําหรับรหัสไคลเอ็นต์ทุกรหัส เมื่อส่งคำขอไปยังพร็อกซี แอปไคลเอ็นต์จะส่งส่วนหัวที่มี clientID
ตามที่แสดงในตัวอย่างด้านบน
คุณสามารถระบุตัวแปรการไหลใดก็ได้ในแอตทริบิวต์ <Identifier>
ตัวอย่างเช่น คุณอาจระบุว่าพารามิเตอร์การค้นหาชื่อ id
มีพารามิเตอร์การค้นหาที่มีตัวระบุที่ไม่ซ้ำกัน ดังนี้
<Identifier ref="request.queryparam.id"/>
หากคุณใช้นโยบาย VerifyAPIKey เพื่อตรวจสอบคีย์ API หรือนโยบาย OAuthV2 กับโทเค็น OAuth คุณจะใช้ข้อมูลในคีย์หรือโทเค็น API เพื่อกำหนดตัวนับแต่ละรายการสำหรับนโยบายโควต้าเดียวกันได้ ตัวอย่างเช่น แท็ก <Identifier>
ต่อไปนี้ใช้ตัวแปรโฟลว์ client_id
ของนโยบาย VerifyAPIKey ชื่อ verify-api-key
<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>
ตอนนี้ค่า client_id
ที่ไม่ซ้ำกันแต่ละค่าจะกำหนดตัวนับของตัวเองในนโยบายโควต้า
ระดับ
<Quota name="QuotaPolicy"> <Interval>1</Interval> <TimeUnit>day</TimeUnit> <Allow> <Class ref="request.header.developer_segment"> <Allow class="platinum" count="10000"/> <Allow class="silver" count="1000" /> </Class> </Allow> </Quota>
คุณกำหนดขีดจำกัดโควต้าแบบไดนามิกได้โดยใช้จำนวนโควต้าตามคลาส ในตัวอย่างนี้ ระบบจะกำหนดขีดจำกัดโควต้าตามค่าของส่วนหัว developer_segment
ที่ส่งพร้อมกับคำขอแต่ละรายการ ตัวแปรดังกล่าวอาจมีค่าเป็น platinum
หรือ silver
หากส่วนหัวมีค่าไม่ถูกต้อง นโยบายจะแสดงข้อผิดพลาดการละเมิดโควต้า
เกี่ยวกับนโยบายโควต้า
โควต้าคือการจัดสรรข้อความคําขอที่พร็อกซี API สามารถจัดการได้ในช่วงระยะเวลาหนึ่ง เช่น นาที ชั่วโมง วัน สัปดาห์ หรือเดือน นโยบายจะดูแลรักษาตัวนับที่นับจํานวนคําขอที่ได้รับจากพร็อกซี API ความสามารถนี้ช่วยให้ผู้ให้บริการ API สามารถบังคับใช้ขีดจํากัดเกี่ยวกับจํานวนการเรียก API ที่แอปทําในช่วงเวลาหนึ่ง การใช้นโยบายโควต้าช่วยให้คุณจำกัดแอปให้มีคำขอได้ 1 คำขอต่อนาที หรือ 10,000 คำขอต่อเดือน เป็นต้น
เช่น หากกำหนดโควต้าเป็น 10,000 ข้อความต่อเดือน การจำกัดอัตราการส่งจะเริ่มขึ้นหลังจากข้อความที่ 10,001 ไม่ว่าระบบจะนับข้อความ 10,000 รายการในวันแรกหรือวันสุดท้ายของระยะเวลาดังกล่าว ระบบจะไม่อนุญาตให้ส่งคำขอเพิ่มเติมจนกว่าตัวนับโควต้าจะรีเซ็ตโดยอัตโนมัติเมื่อสิ้นสุดช่วงเวลาที่ระบุ หรือจนกว่าจะมีการรีเซ็ตโควต้าอย่างชัดเจนโดยใช้นโยบายรีเซ็ตโควต้า
รูปแบบหนึ่งของโควต้าที่เรียกว่า SpikeArrest จะป้องกันไม่ให้มีการเข้าชมเพิ่มขึ้นอย่างรวดเร็ว (หรือเพิ่มขึ้นอย่างฉับพลัน) ซึ่งอาจเกิดจากการใช้งานที่เพิ่มขึ้นอย่างฉับพลัน ไคลเอ็นต์ที่มีข้อบกพร่อง หรือการโจมตีที่เป็นอันตราย ดูข้อมูลเพิ่มเติมเกี่ยวกับ SpikeArrest ได้ที่นโยบาย SpikeArrest
โควต้าจะมีผลกับพร็อกซี API แต่ละรายการและจะไม่กระจายไปยังพร็อกซี API อื่นๆ ตัวอย่างเช่น หากคุณมีพร็อกซี API 3 ตัวในผลิตภัณฑ์ API หนึ่งๆ ระบบจะไม่ใช้โควต้าเดียวกันกับทั้ง 3 ตัว แม้ว่าทั้ง 3 ตัวจะใช้การกำหนดค่านโยบายโควต้าเดียวกันก็ตาม
ประเภทนโยบายโควต้า
นโยบายโควต้ารองรับนโยบายหลายประเภท ได้แก่ เริ่มต้น, calendar
, flexi
และ rollingwindow
แต่ละประเภทจะกำหนดว่าตัวนับโควต้าจะเริ่มทำงานเมื่อใดและรีเซ็ตเมื่อใด ดังที่แสดงในตารางต่อไปนี้
หน่วยเวลา | รีเซ็ตเป็นค่าเริ่มต้น (หรือค่า Null) | รีเซ็ตปฏิทิน | flexi reset |
---|---|---|---|
นาที | ต้นของนาทีถัดไป | 1 นาทีหลังจาก<StartTime> |
1 นาทีหลังจากคําขอแรก |
ชั่วโมง | ต้นชั่วโมงถัดไป | 1 ชั่วโมงหลังจาก<StartTime> |
1 ชั่วโมงหลังจากคําขอแรก |
วัน | เที่ยงคืนตามเขตเวลา GMT ของวันปัจจุบัน | 24 ชั่วโมงหลังจาก<StartTime> |
24 ชั่วโมงหลังจากคำขอแรก |
สัปดาห์ | เที่ยงคืน GMT วันอาทิตย์ ซึ่งเป็นวันสุดท้ายของสัปดาห์ | 1 สัปดาห์หลังจาก<StartTime> |
1 สัปดาห์หลังจากคำขอแรก |
เดือน | เวลาเที่ยงคืน GMT ของวันสุดท้ายของเดือน | 1 เดือน (28 วัน) หลังจาก<StartTime> |
1 เดือน (28 วัน) หลังจากส่งคำขอครั้งแรก |
สําหรับ type="calendar"
คุณต้องระบุค่าของ <StartTime>
ตารางไม่ได้แสดงค่าสำหรับประเภท rollingwindow
โควต้าแบบเลื่อนไปเรื่อยๆ
โควต้าจะทํางานโดยกําหนดขนาดของ "กรอบเวลา" ของโควต้า เช่น กรอบเวลา 1 ชั่วโมงหรือ 1 วัน เมื่อได้รับคำขอใหม่ นโยบายจะระบุว่ามีการใช้โควต้าเกิน "กรอบเวลา" ที่ผ่านมาหรือไม่
เช่น คุณกำหนดกรอบเวลา 2 ชั่วโมงที่อนุญาตคำขอ 1, 000 รายการ คำขอใหม่เข้ามาเวลา 16:45 น.นโยบายจะคำนวณจำนวนโควต้าสำหรับกรอบเวลา 2 ชั่วโมงที่ผ่านมา ซึ่งก็คือจํานวนคําขอนับตั้งแต่ 14:45 น. หากไม่ได้ใช้โควต้าเกินขีดจํากัดในกรอบเวลา 2 ชั่วโมงดังกล่าว ระบบจะอนุญาตคําขอ
1 นาทีต่อมา เวลา 16:46 น. มีคำขออีกรายการเข้ามา ตอนนี้นโยบายจะคํานวณจํานวนโควต้านับตั้งแต่เวลา 14:46 น. เพื่อพิจารณาว่าเกินขีดจํากัดหรือไม่
สําหรับประเภท rollingwindow
ตัวนับจะไม่รีเซ็ต แต่จะคํานวณใหม่ในคําขอแต่ละรายการ
ทำความเข้าใจตัวนับโควต้า
โดยค่าเริ่มต้น นโยบายโควต้าจะเก็บรักษาตัวนับรายการเดียว ไม่ว่าคุณจะอ้างอิงนโยบายในพร็อกซี API กี่ครั้งก็ตาม ชื่อตัวนับโควต้าจะอิงตามแอตทริบิวต์ name
ของนโยบาย
เช่น คุณสร้างนโยบายโควต้าชื่อ MyQuotaPolicy
ที่มีขีดจํากัด 5 คำขอ และวางไว้ในหลายเวิร์กโฟลว์ (เวิร์กโฟลว์ ก, ข และ ค) ในพร็อกซี API แม้ว่าจะใช้ในหลายขั้นตอน แต่ก็มีตัวนับเดียวที่อินสแตนซ์ทั้งหมดของนโยบายจะอัปเดต
- โฟลว์ ก ทำงาน -> MyQuotaPolicy ทำงานและตัวนับ = 1
- โฟลว์ ข ทำงาน -> MyQuotaPolicy ทำงานและตัวนับ = 2
- โฟลว์ ก ทำงาน -> MyQuotaPolicy ทำงานและตัวนับ = 3
- โฟลว์ C ทำงาน -> MyQuotaPolicy ทำงานและตัวนับ = 4
- โฟลว์ ก ทำงาน -> MyQuotaPolicy ทำงานและตัวนับ = 5
ระบบจะปฏิเสธคำขอถัดไปสำหรับโฟลว์ใดโฟลว์หนึ่งเนื่องจากตัวนับโควต้าถึงขีดจำกัดแล้ว
การใช้นโยบายโควต้าเดียวกันในหลายตำแหน่งในเวิร์กโฟลว์พร็อกซี API ซึ่งอาจทำให้โควต้าหมดเร็วกว่าที่คาดไว้โดยไม่ตั้งใจ เป็นรูปแบบที่ไม่แนะนำที่อธิบายไว้ในสมุดรูปแบบที่ไม่แนะนำของ Apigee Edge
หรือจะกําหนดนโยบายโควต้าหลายรายการในพร็อกซี API และใช้นโยบายที่แตกต่างกันในแต่ละเวิร์กโฟลว์ก็ได้ นโยบายโควต้าแต่ละรายการจะมีตัวนับของตัวเอง โดยอิงตามแอตทริบิวต์ name
ของนโยบาย
หรือใช้องค์ประกอบ <Class>
หรือ <Identifier>
ในนโยบายโควต้าเพื่อกำหนดตัวนับที่ไม่ซ้ำกันหลายรายการในนโยบายเดียว การใช้องค์ประกอบเหล่านี้จะช่วยให้นโยบายเดียวสามารถเก็บรักษาตัวนับที่แตกต่างกันตามแอปที่ส่งคำขอ นักพัฒนาแอปที่ส่งคำขอ รหัสไคลเอ็นต์หรือตัวระบุไคลเอ็นต์อื่นๆ และอื่นๆ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้องค์ประกอบ <Class>
หรือ <Identifier>
ได้จากตัวอย่างด้านบน
การเขียนเวลา
ระบบจะตั้งค่าเวลาโควต้าทั้งหมดเป็นเขตเวลาเวลาสากลเชิงพิกัด (UTC)
รูปแบบเวลาโควต้าเป็นไปตามรูปแบบวันที่มาตรฐานสากลที่ระบุไว้ในมาตรฐานสากล ISO 8601
วันที่จะกำหนดเป็นปี เดือน และวันในรูปแบบ YYYY-MM-DD
เช่น 2015-02-04
แสดงถึงวันที่ 4 กุมภาพันธ์ 2015
เวลาของวันจะกำหนดเป็นชั่วโมง นาที และวินาทีในรูปแบบต่อไปนี้
hours:minutes:seconds
ตัวอย่างเช่น 23:59:59
แสดงเวลา 1 วินาทีก่อนเที่ยงคืน
โปรดทราบว่ามีเครื่องหมาย 2 แบบ ได้แก่ 00:00:00
และ 24:00:00
เพื่อแยกแยะเวลาเที่ยงคืน 2 ครั้งที่เชื่อมโยงกับวันที่เดียวกันได้ ดังนั้น 2015-02-04
24:00:00
จึงเป็นวันและเวลาเดียวกับ 2015-02-05 00:00:00
โดยปกติแล้ว รูปแบบหลังจะเป็นรูปแบบที่แนะนำ
การรับการตั้งค่าโควต้าจากการกําหนดค่าผลิตภัณฑ์ API
คุณสามารถกำหนดขีดจำกัดโควต้าในการกำหนดค่าผลิตภัณฑ์ API ขีดจํากัดเหล่านั้นจะไม่บังคับใช้โควต้าโดยอัตโนมัติ แต่คุณสามารถอ้างอิงการตั้งค่าโควต้าผลิตภัณฑ์ในนโยบายโควต้าแทนได้ ต่อไปนี้คือข้อดีบางส่วนของการตั้งโควต้าในผลิตภัณฑ์เพื่อให้นโยบายโควต้าอ้างอิง
- นโยบายโควต้าสามารถใช้การตั้งค่าแบบเดียวกันกับพร็อกซี API ทั้งหมดในผลิตภัณฑ์ API
- คุณทำการเปลี่ยนแปลงรันไทม์ในการตั้งค่าโควต้าในผลิตภัณฑ์ API ได้ และนโยบายโควต้าที่อ้างอิงค่าจะมีค่าโควต้าที่อัปเดตโดยอัตโนมัติ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การตั้งค่าโควต้าจากผลิตภัณฑ์ API ได้ที่ตัวอย่าง "โควต้าแบบไดนามิก" ด้านบน
ดูข้อมูลเกี่ยวกับการกำหนดค่าผลิตภัณฑ์ API ที่มีขีดจำกัดโควต้าได้ที่สร้างผลิตภัณฑ์ API
การอ้างอิงองค์ประกอบ
ต่อไปนี้คือองค์ประกอบและแอตทริบิวต์ที่คุณกำหนดค่าในนโยบายนี้ได้ โปรดทราบว่าการผสมองค์ประกอบบางอย่างจะแยกกันใช้ไม่ได้หรือไม่จำเป็น ดูตัวอย่างการใช้งานที่เฉพาะเจาะจง ตัวแปร verifyapikey.VerifyAPIKey.apiproduct.*
ด้านล่างจะพร้อมใช้งานโดยค่าเริ่มต้นเมื่อใช้นโยบาย "VerifyAPIKey" เพื่อตรวจสอบคีย์ API ของแอปในคําขอ
ค่าตัวแปรมาจากการตั้งค่าโควต้าในผลิตภัณฑ์ API ที่คีย์เชื่อมโยงอยู่ ตามที่อธิบายไว้ในการรับการตั้งค่าโควต้าจากการกําหนดค่าผลิตภัณฑ์ API
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar"> <DisplayName>Quota 3</DisplayName> <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> <Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow> <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <Distributed>false</Distributed> <Synchronous>false</ Synchronous> <AsynchronousConfiguration> <SyncIntervalInSeconds>20</ SyncIntervalInSeconds> <SyncMessageCount>5</ SyncMessageCount> </AsynchronousConfiguration> <Identifier/> <MessageWeight/> </Quota>
แอตทริบิวต์ <Quota>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
แอตทริบิวต์ต่อไปนี้ใช้กับนโยบายนี้โดยเฉพาะ
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ประเภท |
ใช้เพื่อกำหนดเวลาและวิธีการทำงานของตัวนับโควต้าในการตรวจสอบการใช้โควต้า ดูข้อมูลเพิ่มเติมได้ในประเภทนโยบายโควต้า หากคุณละเว้นค่า ค่าที่ใช้ได้มีดังนี้
|
ปฏิทิน | ไม่บังคับ |
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบ <Allow>
ระบุขีดจํากัดจํานวนสำหรับโควต้า หากตัวนับของนโยบายถึงค่าขีดจํากัดนี้ ระบบจะปฏิเสธการเรียกใช้ครั้งต่อๆ ไปจนกว่าตัวนับจะรีเซ็ต
ด้านล่างนี้คือ 3 วิธีในการตั้งค่าองค์ประกอบ <Allow>
<Allow count="2000"/>
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
หากคุณระบุทั้ง count
และ countRef
countRef
จะมีลำดับความสำคัญเหนือกว่า หาก countRef
ไม่สามารถแก้ไขได้ในรันไทม์ ระบบจะใช้ค่าของ count
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
จำนวน |
ใช้เพื่อระบุจำนวนข้อความสำหรับโควต้า เช่น ค่าแอตทริบิวต์ |
2000 | ไม่บังคับ |
countRef |
ใช้เพื่อระบุตัวแปรโฟลว์ที่มีจํานวนข้อความสําหรับโควต้า
|
ไม่มี | ไม่บังคับ |
องค์ประกอบ <Allow>/<Class>
องค์ประกอบ <Class>
ช่วยให้คุณกำหนดค่าขององค์ประกอบ <Allow>
ตามเงื่อนไขโดยอิงตามค่าของตัวแปรการไหลได้ นโยบายจะเก็บตัวนับที่แตกต่างกันสำหรับ<Allow>
แท็กย่อยแต่ละรายการของ <Class>
หากต้องการใช้องค์ประกอบ <Class>
ให้ระบุตัวแปรการไหลโดยใช้แอตทริบิวต์ ref
กับแท็ก <Class>
จากนั้น Edge จะใช้ค่าของตัวแปรโฟลว์เพื่อเลือกแท็กย่อย <Allow>
รายการใดรายการหนึ่งเพื่อระบุจํานวนแท็กที่อนุญาตของนโยบาย Edge จะจับคู่ค่าของตัวแปรการไหลกับแอตทริบิวต์ class
ของแอตทริบิวต์ <Allow>
ดังที่แสดงด้านล่าง
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
ในตัวอย่างนี้ ตัวนับโควต้าปัจจุบันจะกำหนดโดยค่าของพารามิเตอร์การค้นหา time_variable
ที่ส่งพร้อมกับคำขอแต่ละรายการ ตัวแปรดังกล่าวอาจมีค่าเป็น peak_time
หรือ off_peak_time
หากพารามิเตอร์การค้นหามีค่าที่ไม่ถูกต้อง นโยบายจะแสดงข้อผิดพลาดการละเมิดโควต้า
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: | ไม่มี |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ref |
ใช้เพื่อระบุตัวแปรการไหลที่มีคลาสโควต้าสําหรับโควต้า |
ไม่มี | ต้องระบุ |
องค์ประกอบ <Allow>/<Class>/<Allow>
องค์ประกอบ <Allow>
ระบุขีดจํากัดสําหรับตัวนับโควต้าที่กําหนดโดยองค์ประกอบ <Class>
นโยบายจะเก็บตัวนับที่แตกต่างกันสำหรับแท็กย่อย <Allow>
แต่ละรายการของ <Class>
เช่น
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
ในตัวอย่างนี้ นโยบายโควต้าจะดูแลเคาน์เตอร์โควต้า 2 รายการที่มีชื่อว่า peak_time
และ off_peak_time
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: | ไม่มี |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
คลาส |
กําหนดชื่อตัวนับโควต้า |
ไม่มี | ต้องระบุ |
จำนวน | ระบุขีดจํากัดโควต้าสําหรับตัวนับ | ไม่มี | ต้องระบุ |
องค์ประกอบ <Interval>
ใช้เพื่อระบุจำนวนเต็ม (เช่น 1, 2, 5, 60 และอื่นๆ) ที่จะจับคู่กับ TimeUnit
ที่คุณระบุ (นาที ชั่วโมง วัน สัปดาห์ หรือเดือน) เพื่อกำหนดระยะเวลาที่ Edge จะคำนวณการใช้โควต้า
เช่น Interval
ของ 24
ที่มี TimeUnit
ของ hour
หมายความว่าระบบจะคำนวณโควต้าในช่วง 24 ชั่วโมง
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ต้องระบุ |
ประเภท: | จำนวนเต็ม |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ref |
ใช้เพื่อระบุตัวแปรการไหลที่มีช่วงเวลาสำหรับโควต้า |
ไม่มี | ไม่บังคับ |
องค์ประกอบ <TimeUnit>
ใช้เพื่อระบุหน่วยเวลาที่ใช้กับโควต้า
เช่น Interval
ของ 24
ที่มี TimeUnit
ของ hour
หมายความว่าระบบจะคำนวณโควต้าในช่วง 24 ชั่วโมง
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ต้องระบุ |
ประเภท: |
สตริง เลือกจาก |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ref | ใช้เพื่อระบุตัวแปรการไหลที่มีหน่วยเวลาสำหรับโควต้า ref
จะมีความสำคัญเหนือกว่าค่าของรอบที่ชัดเจน หาก ref ไม่สามารถแก้ไขได้เมื่อรันไทม์ ระบบจะใช้ค่านั้น |
ไม่มี | ไม่บังคับ |
องค์ประกอบ <StartTime>
เมื่อตั้งค่า type
เป็น calendar,
จะระบุวันที่และเวลาที่ตัวนับโควต้าจะเริ่มนับ ไม่ว่าจะได้รับคําขอจากแอปใดก็ตาม
เช่น
<StartTime>2017-7-16 12:00:00</StartTime>
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ต้องระบุเมื่อตั้งค่า type เป็น calendar |
ประเภท: |
สตริงในรูปแบบวันที่และเวลา ISO 8601 |
องค์ประกอบ <Distributed>
การติดตั้ง Edge สามารถใช้โปรแกรมประมวลผลข้อความอย่างน้อย 1 รายการเพื่อประมวลผลคำขอ ตั้งค่าองค์ประกอบนี้เป็น true
เพื่อระบุว่านโยบายควรรักษาตัวนับส่วนกลางและซิงค์กับตัวประมวลผลข้อความทั้งหมดอย่างต่อเนื่อง โปรแกรมประมวลผลข้อความอาจอยู่ในโซนความพร้อมให้บริการและ/หรือภูมิภาคต่างๆ
หากคุณใช้ค่าเริ่มต้น false
คุณอาจใช้โควต้าเกินเนื่องจากระบบจะไม่แชร์จํานวนสำหรับตัวประมวลผลข้อความแต่ละรายการ ดังนี้
<Distributed>true</Distributed>
หากต้องการให้ตัวนับมีการซิงค์และอัปเดตในคําขอทุกรายการ ให้ตั้งค่า <Distributed>
และ <Synchronous>
เป็น "จริง"
<Distributed>true</Distributed> <Synchronous>true</Synchronous>
ค่าเริ่มต้น: | เท็จ |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: | บูลีน |
องค์ประกอบ <Synchronous>
ตั้งค่าเป็น true
เพื่ออัปเดตตัวนับโควต้าแบบกระจายพร้อมกัน ซึ่งหมายความว่าการอัปเดตตัวนับจะดำเนินการพร้อมกันกับการตรวจสอบโควต้าในคำขอไปยัง API ตั้งค่าเป็น true
หากไม่อนุญาตให้มีการเรียก API เกินโควต้า
ตั้งค่าเป็น false
เพื่ออัปเดตตัวนับโควต้าแบบไม่พร้อมกัน ซึ่งหมายความว่าการเรียก API บางรายการที่เกินโควต้าอาจดำเนินการได้ ทั้งนี้ขึ้นอยู่กับเวลาที่ตัวนับโควต้าในที่เก็บข้อมูลส่วนกลางได้รับการอัปเดตแบบไม่พร้อมกัน อย่างไรก็ตาม คุณจะไม่ต้องเผชิญกับผลกระทบด้านประสิทธิภาพที่อาจเกิดขึ้นซึ่งเชื่อมโยงกับการอัปเดตแบบพร้อมกัน
ช่วงเวลาการอัปเดตแบบไม่พร้อมกันเริ่มต้นคือ 10 วินาที ใช้องค์ประกอบ AsynchronousConfiguration
เพื่อกำหนดค่าลักษณะการทำงานแบบไม่สอดคล้องกันนี้
<Synchronous>false</Synchronous>
ค่าเริ่มต้น: | เท็จ |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: | บูลีน |
องค์ประกอบ <AsynchronousConfiguration>
กําหนดค่าช่วงเวลาการซิงค์ระหว่างตัวนับโควต้าแบบกระจายเมื่อองค์ประกอบการกําหนดค่านโยบาย <Synchronous>
ไม่อยู่หรือไม่อยู่และตั้งค่าเป็น false
คุณสามารถซิงค์หลังจากระยะเวลาหนึ่งหรือจำนวนข้อความโดยใช้องค์ประกอบย่อย SyncIntervalInSeconds
หรือ SyncMessageCount
ข้อมูลเหล่านี้จะแยกกันโดยสิ้นเชิง ตัวอย่างเช่น
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
หรือ
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
ค่าเริ่มต้น: | SyncIntervalInSeconds = 10 วินาที |
การแสดงข้อมูล: | ไม่บังคับ ระบบจะไม่สนใจเมื่อตั้งค่า <Synchronous> เป็น true |
ประเภท: |
อาคารและพื้นที่โดยรอบ |
องค์ประกอบ <AsynchronousConfiguration>/<SyncIntervalInSeconds>
ใช้เพื่อลบล้างลักษณะการทำงานเริ่มต้นซึ่งจะทำการอัปเดตแบบไม่พร้อมกันหลังจากผ่านไป 10 วินาที
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
ช่วงเวลาการซิงค์ต้องมากกว่าหรือเท่ากับ 10 วินาทีตามที่อธิบายไว้ในหัวข้อขีดจํากัด
ค่าเริ่มต้น: | 10 |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: |
จำนวนเต็ม |
<AsynchronousConfiguration>/<SyncMessageCount> element
ระบุจํานวนคําขอในโปรแกรมประมวลผลข้อความ Apigee ทั้งหมดระหว่างการอัปเดตโควต้า
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
ตัวอย่างนี้ระบุว่าระบบจะอัปเดตจำนวนโควต้าทุกๆ 5 คำขอในเครื่องประมวลผลข้อความ Apigee Edge แต่ละเครื่อง
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: |
จำนวนเต็ม |
องค์ประกอบ <Identifier>
ใช้องค์ประกอบ <Identifier>
เพื่อกําหนดค่านโยบายเพื่อสร้างตัวนับที่ไม่ซ้ำกันตามตัวแปรการไหล
หากคุณไม่ได้ใช้องค์ประกอบนี้ นโยบายจะใช้ตัวนับเดียวกับโควต้า
องค์ประกอบนี้ยังกล่าวถึงในโพสต์ชุมชน Apigee ต่อไปนี้ด้วย http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html
<Identifier ref="verifyapikey.verify-api-key.client_id"/>
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: |
สตริง |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ref |
ระบุตัวแปรการไหลที่ระบุตัวนับที่จะใช้กับคําขอ ตัวระบุอาจเป็นส่วนหัว HTTP, พารามิเตอร์การค้นหา, พารามิเตอร์แบบฟอร์ม หรือเนื้อหาข้อความที่ไม่ซ้ำกันสำหรับแต่ละแอป ผู้ใช้แอป นักพัฒนาแอป ผลิตภัณฑ์ API หรือลักษณะอื่นๆ
ในบางกรณี คุณต้องเรียกข้อมูลการตั้งค่าโควต้าในกรณีที่ไม่มี |
ไม่มี | ไม่บังคับ |
องค์ประกอบ <MessageWeight>
ใช้เพื่อระบุน้ำหนักที่กำหนดให้กับข้อความแต่ละรายการ ใช้น้ำหนักข้อความเพื่อเพิ่มผลลัพธ์ของข้อความคำขอ เช่น ข้อความที่ต้องใช้ทรัพยากรการประมวลผลมากกว่าข้อความอื่นๆ
เช่น คุณต้องการนับข้อความ POST ว่า "หนัก" หรือมีค่าใช้จ่ายมากกว่าข้อความ GET 2 เท่า ดังนั้น คุณจึงตั้งค่า MessageWeight
เป็น 2 สําหรับ POST และ 1 สําหรับ GET คุณยังตั้งค่า MessageWeight
เป็น 0 ได้ด้วยเพื่อให้คำขอไม่ส่งผลต่อตัวนับ ในตัวอย่างนี้ หากโควต้าคือ 10 ข้อความต่อนาที และ MessageWeight
สำหรับคำขอ POST คือ 2
โควต้าจะอนุญาตคำขอ POST 5 รายการในระยะ 10 นาที ระบบจะปฏิเสธคำขอเพิ่มเติม ไม่ว่าจะเป็น POST หรือ GET ก่อนที่จะรีเซ็ตตัวนับ
ค่าที่แสดงถึง MessageWeight
ต้องระบุโดยตัวแปรการไหล และสามารถดึงมาจากส่วนหัว HTTP, พารามิเตอร์การค้นหา, เพย์โหลดคําขอ XML หรือ JSON หรือตัวแปรการไหลอื่นๆ เช่น คุณตั้งค่าในส่วนหัวชื่อ
weight
<MessageWeight ref="message_weight"/>
ค่าเริ่มต้น: | ไม่มี |
การแสดงข้อมูล: | ไม่บังคับ |
ประเภท: |
จำนวนเต็ม |
ตัวแปรของโฟลว์
ระบบจะป้อนค่าตัวแปร Flow ที่กําหนดไว้ล่วงหน้าต่อไปนี้โดยอัตโนมัติเมื่อนโยบายโควต้าทํางาน ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรของ Flow ได้ที่ข้อมูลอ้างอิงตัวแปร
ตัวแปร | ประเภท | สิทธิ์ | คำอธิบาย |
---|---|---|---|
ratelimit.{policy_name}.allowed.count | ยาว | อ่านอย่างเดียว | แสดงผลจํานวนโควต้าที่อนุญาต |
ratelimit.{policy_name}.used.count | ยาว | อ่านอย่างเดียว | แสดงผลโควต้าปัจจุบันที่ใช้ภายในช่วงเวลาของโควต้า |
ratelimit.{policy_name}.available.count | ยาว | อ่านอย่างเดียว | แสดงผลจํานวนโควต้าที่ใช้ได้ในช่วงโควต้า |
ratelimit.{policy_name}.exceed.count | ยาว | อ่านอย่างเดียว | แสดงผลเป็น 1 หลังจากเกินโควต้า |
ratelimit.{policy_name}.total.exceed.count | ยาว | อ่านอย่างเดียว | แสดงผลเป็น 1 หลังจากเกินโควต้า |
ratelimit.{policy_name}.expiry.time | ยาว | อ่านอย่างเดียว |
แสดงผลเวลา UTC เป็นมิลลิวินาทีซึ่งจะเป็นตัวกำหนดว่าโควต้าจะหมดอายุเมื่อใดและช่วงเวลาโควต้าใหม่จะเริ่มขึ้นเมื่อใด เมื่อประเภทนโยบายโควต้าเป็น |
ratelimit.{policy_name}.identifier | สตริง | อ่านอย่างเดียว | แสดงข้อมูลอ้างอิงตัวระบุ (ไคลเอ็นต์) ที่แนบอยู่กับนโยบาย |
ratelimit.{policy_name}.class | สตริง | อ่านอย่างเดียว | แสดงคลาสที่เชื่อมโยงกับตัวระบุไคลเอ็นต์ |
ratelimit.{policy_name}.class.allowed.count | ยาว | อ่านอย่างเดียว | แสดงผลจํานวนโควต้าที่อนุญาตซึ่งกําหนดไว้ในคลาส |
ratelimit.{policy_name}.class.used.count | ยาว | อ่านอย่างเดียว | แสดงผลโควต้าที่ใช้ภายในชั้นเรียน |
ratelimit.{policy_name}.class.available.count | ยาว | อ่านอย่างเดียว | แสดงผลจํานวนโควต้าที่ใช้ได้ในชั้นเรียน |
ratelimit.{policy_name}.class.exceed.count | ยาว | อ่านอย่างเดียว | แสดงผลจํานวนคําขอที่เกินขีดจํากัดในชั้นเรียนในช่วงโควต้าปัจจุบัน |
ratelimit.{policy_name}.class.total.exceed.count | ยาว | อ่านอย่างเดียว | แสดงจํานวนคําขอทั้งหมดที่เกินขีดจํากัดในชั้นเรียนตลอดช่วงเวลาโควต้าทั้งหมด ดังนั้นค่านี้คือผลรวมของ class.exceed.count สําหรับช่วงเวลาโควต้าทั้งหมด |
ratelimit.{policy_name}.failed | บูลีน | อ่านอย่างเดียว |
ระบุว่านโยบายดำเนินการไม่สำเร็จหรือไม่ (จริงหรือเท็จ) |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | เกิดขึ้นเมื่อไม่ได้กำหนดองค์ประกอบ <Interval> ภายในนโยบายโควต้า องค์ประกอบนี้
เป็นข้อมูลบังคับและใช้เพื่อระบุช่วงเวลาที่ใช้กับโควต้า ช่วงเวลา
อาจเป็นนาที ชั่วโมง วัน สัปดาห์ หรือเดือนตามที่กำหนดไว้ในองค์ประกอบ <TimeUnit> |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | เกิดขึ้นเมื่อไม่ได้กำหนดองค์ประกอบ <TimeUnit> ภายในนโยบายโควต้า องค์ประกอบนี้
เป็นข้อมูลบังคับและใช้เพื่อระบุหน่วยเวลาที่ใช้กับโควต้า ช่วงเวลา
อาจเป็นนาที ชั่วโมง วัน สัปดาห์ หรือเดือน |
build |
policies.ratelimit.InvalidMessageWeight |
500 | เกิดขึ้นเมื่อค่าขององค์ประกอบ <MessageWeight> ที่ระบุผ่านตัวแปรโฟลว์
ไม่ถูกต้อง (ค่าที่ไม่ใช่จำนวนเต็ม) |
build |
policies.ratelimit.QuotaViolation |
500 | เกินโควต้าแล้ว | ไม่มี |
ข้อผิดพลาดในการทำให้ใช้งานได้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidQuotaInterval |
หากช่วงเวลาโควต้าที่ระบุในองค์ประกอบ <Interval> ไม่
จำนวนเต็ม การทำให้พร็อกซี API ใช้งานได้ล้มเหลว ตัวอย่างเช่น ถ้าช่วงโควต้า
ที่ระบุคือ 0.1 ในองค์ประกอบ <Interval> แล้วการทำให้ใช้งานได้ของ
พร็อกซี API ล้มเหลว
|
build |
InvalidQuotaTimeUnit |
หากระบบไม่รองรับหน่วยเวลาที่ระบุในองค์ประกอบ <TimeUnit>
การทำให้พร็อกซี API ใช้งานได้ล้มเหลว หน่วยเวลาที่รองรับคือ minute
hour , day , week และ month
|
build |
InvalidQuotaType |
หากประเภทของโควต้าที่ระบุโดยแอตทริบิวต์ type ใน <Quota>
องค์ประกอบไม่ถูกต้อง การทำให้พร็อกซี API ใช้งานได้จึงล้มเหลว
ประเภทโควต้าที่รองรับคือ default , calendar , flexi และ rollingwindow
|
build |
InvalidStartTime |
หากรูปแบบของเวลาที่ระบุในองค์ประกอบ <StartTime> คือ
จะทำให้การใช้งานพร็อกซี API ล้มเหลว รูปแบบที่ถูกต้องคือ yyyy-MM-dd HH:mm:ss
ซึ่งจะอยู่ในรูปแบบวันที่และเวลา ISO 8601 สำหรับ
ตัวอย่างเช่น หากเวลาที่ระบุในองค์ประกอบ <StartTime> คือ
7-16-2017 12:00:00 การทำให้พร็อกซี API ใช้งานได้ล้มเหลว
|
build |
StartTimeNotSupported |
หากมีการระบุองค์ประกอบ <StartTime> ซึ่งไม่ได้กำหนดประเภทโควต้า
calendar การทำให้พร็อกซี API ใช้งานได้ล้มเหลว องค์ประกอบ <StartTime> คือ
รองรับเฉพาะโควต้าประเภท calendar ตัวอย่างเช่น หากมีการตั้งค่าแอตทริบิวต์ type
เป็น flexi หรือ rolling window ในองค์ประกอบ <Quota> แล้วตามด้วยค่า
การทำให้พร็อกซี API ใช้งานได้ล้มเหลว
|
build |
InvalidTimeUnitForDistributedQuota |
หากตั้งค่าองค์ประกอบ <Distributed> เป็น true และตั้งค่าองค์ประกอบ <TimeUnit> เป็น
second การทำให้พร็อกซี API ใช้งานได้ล้มเหลว หน่วยเวลา second ไม่ถูกต้องสำหรับ
โควต้าแบบกระจาย |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
หากค่าที่ระบุสำหรับองค์ประกอบ <SyncIntervalInSeconds> ภายในองค์ประกอบ
องค์ประกอบ <AsynchronousConfiguration> ในนโยบายโควต้ามีค่าน้อยกว่า 0 ดังนั้นค่า
การทำให้พร็อกซี API ใช้งานได้ล้มเหลว |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
หากค่าขององค์ประกอบ <AsynchronousConfiguration> ได้รับการตั้งค่าเป็น true ในนโยบายโควต้า ซึ่ง
มีการกำหนดค่าอะซิงโครนัสโดยใช้องค์ประกอบ <AsynchronousConfiguration> แล้ว
การทำให้พร็อกซี API ใช้งานได้ล้มเหลว |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | ratelimit.QT-QuotaPolicy.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRules> <FaultRule name="Quota Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "QuotaViolation") </Condition> </Step> <Condition>ratelimit.Quota-1.failed=true</Condition> </FaultRule> </FaultRules>
สคีมา
หัวข้อที่เกี่ยวข้อง
การเปรียบเทียบนโยบายโควต้า การหยุดการเพิ่มขึ้นอย่างฉับพลัน และขีดจำกัดอัตราพร้อมกัน