คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
ใช้นโยบายโควต้าเพื่อกำหนดค่าจำนวนข้อความคำขอที่พร็อกซี API อนุญาต ช่วงเวลา เช่น นาที ชั่วโมง วัน สัปดาห์ หรือเดือน คุณสามารถตั้งค่าโควต้าเป็น เหมือนกันสำหรับแอปทั้งหมดที่เข้าถึงพร็อกซี API หรือคุณอาจตั้งค่าโควต้าตามข้อมูลต่อไปนี้
- ผลิตภัณฑ์ที่มีพร็อกซี API
- แอปที่ขอ API
- นักพัฒนาแอป
- เกณฑ์อื่นๆ อีกมากมาย
อย่าใช้โควต้าเพื่อป้องกันการเพิ่มขึ้นของการเข้าชมโดยรวม สำหรับการเล่นแบบนั้น ให้ใช้เครื่องหมาย Spike Arrest ดู Spike Arrest
วิดีโอ
วิดีโอเหล่านี้จะแนะนำการจัดการโควต้าด้วยนโยบายโควต้า
บทนำ (New 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 Google อื่นๆเพิ่มเติม
ในตัวอย่างด้านบน พร็อกซี 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 ชั่วโมง ด้วยเหตุนี้ จะมีการรีเฟรชครั้งต่อไปในวันที่ 18 กุมภาพันธ์ 2017 เวลา 15.30 น. GMT
ตัวนับการเข้าถึง
<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 ครั้งต่อชั่วโมง นโยบายจะรีเซ็ต ตัวนับโควต้าที่ด้านบนของแต่ละชั่วโมง หากตัวนับถึงโควต้าการโทร 10,000 ครั้ง ก่อนสิ้นสุดชั่วโมง สายที่เกิน 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
การโทรที่เกินจากจำนวนดังกล่าวจะถูกปฏิเสธจนกว่า
จำนวนจะรีเซ็ตที่ด้านบนของชั่วโมง
เวลาในการรีเซ็ตตัวนับอิงจาก <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 หรือโทเค็นเพื่อกำหนด
ตัวนับสำหรับนโยบายโควต้าเดียวกัน ตัวอย่างเช่น URL ต่อไปนี้
แท็ก <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,000 ไม่ว่าจะมี 10,000 ข้อความหรือไม่ก็ตาม วันหรือวันสุดท้ายของระยะเวลานั้น ไม่อนุญาตให้มีพื้นที่คำขอเพิ่มเติมจนกว่าจะถึงตัวนับโควต้า จะรีเซ็ตโดยอัตโนมัติเมื่อสิ้นสุดช่วงเวลาที่ระบุ หรือจนกว่าจะมีการกำหนดโควต้าอย่างชัดเจน รีเซ็ตโดยใช้รีเซ็ตโควต้า
รูปแบบของโควต้าที่เรียกว่า SpikeArrest ช่วยป้องกันการเพิ่มขึ้นของการเข้าชม (หรือจำนวนพุ่งสูงขึ้น) ที่อาจเป็นไปได้ เกิดจากการใช้งานที่เพิ่มขึ้นอย่างฉับพลัน ไคลเอ็นต์ที่มีข้อบกพร่อง หรือการโจมตีที่เป็นอันตราย สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับ SpikeArrest โปรดดูนโยบายเกี่ยวกับ SpikeArrest
โควต้าจะมีผลกับพร็อกซี API แต่ละรายการ และจะไม่กระจายไปยังพร็อกซี API ตัวอย่างเช่น หากคุณมีพร็อกซี API 3 รายการในผลิตภัณฑ์ API โควต้าเดียวจะไม่มีการใช้ร่วมกันในทั้ง 3 รายการ แม้ว่าผลิตภัณฑ์ทั้ง 3 ประเภทจะใช้การกำหนดค่านโยบายโควต้าเดียวกัน
ประเภทนโยบายโควต้า
นโยบายโควต้ารองรับนโยบายหลายประเภท ได้แก่ ค่าเริ่มต้น calendar
flexi
และ rollingwindow
แต่ละประเภทจะกำหนดเวลาที่ตัวนับโควต้า
จะเริ่มต้นและรีเซ็ตเมื่อใด ดังที่แสดงในตารางต่อไปนี้
หน่วยเวลา | รีเซ็ตเป็นค่าเริ่มต้น (หรือ Null) | รีเซ็ตปฏิทิน | รีเซ็ตแบบยืดหยุ่น |
---|---|---|---|
นาที | เริ่มนาทีถัดไป | 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 น. หากไม่ได้เกินขีดจำกัดโควต้า สองชั่วโมง คำขอจะได้รับอนุญาต
1 นาทีต่อมา เวลา 16:46 น. คำขอใหม่เข้ามา ตอนนี้นโยบายจะคำนวณ จำนวนโควต้าตั้งแต่ 14:46 น. เพื่อดูว่าเกินขีดจำกัดหรือไม่
สำหรับประเภท rollingwindow
ตัวนับจะไม่รีเซ็ต แต่
ระบบจะคำนวณใหม่ในคำขอแต่ละรายการ
การทำความเข้าใจตัวนับโควต้า
โดยค่าเริ่มต้น นโยบายโควต้าจะใช้ตัวนับเพียงตัวเดียว โดยไม่คำนึงถึงจำนวนครั้งที่
อ้างอิงในพร็อกซี API ชื่อของตัวนับโควต้าจะอิงตาม
แอตทริบิวต์ name
ของนโยบาย
เช่น คุณสร้างนโยบายโควต้าชื่อ MyQuotaPolicy
ที่มีขีดจำกัด 5
แล้วนำไปวางในหลายโฟลว์ (โฟลว์ A, B และ C) ในพร็อกซี API แม้ว่าจะเป็น
ซึ่งใช้ในหลายๆ ขั้นตอน ตัวนับจะเป็นตัวเดียวที่มีการอัปเดตโดยอินสแตนซ์ทุกรายการ
นโยบาย:
- ดำเนินการโฟลว์ A แล้ว -> ดำเนินการ MyBidPolicy ดําเนินการและตัวนับ = 1
- ดำเนินการขั้นตอน B -> ดำเนินการตาม MyBidPolicy แล้วตัวนับ = 2
- ดำเนินการโฟลว์ A แล้ว -> ดำเนินการตาม MyBidPolicy ดําเนินการและตัวนับ = 3
- ดำเนินการโฟลว์ C แล้ว -> ดำเนินการ MyBidPolicy ดําเนินการและตัวนับ = 4
- ดำเนินการโฟลว์ A แล้ว -> ดำเนินการ MyBidPolicy ดําเนินการและตัวนับ = 5
คำขอถัดไปจาก 3 ขั้นตอนถูกปฏิเสธเนื่องจากใช้ตัวนับโควต้าแล้ว ขีดจำกัด
การใช้นโยบายโควต้าเดียวกันมากกว่า 1 ที่ในขั้นตอนพร็อกซี API ซึ่งสามารถ ทำให้โควต้าหมดเร็วกว่าที่คาดไว้โดยไม่ได้ตั้งใจ ซึ่งเป็นรูปแบบที่แก้ไขไม่ได้ที่อธิบายไว้ใน หนังสือของ Apigee Edge Antipatterns
หรือจะกำหนดนโยบายโควต้าหลายรายการในพร็อกซี API และใช้
ในแต่ละขั้นตอน นโยบายโควต้าแต่ละรายการจะรักษาตัวนับของตนเอง โดยขึ้นอยู่กับ
แอตทริบิวต์ name
ของนโยบาย
หรือใช้
องค์ประกอบ <Class>
หรือ <Identifier>
ใน
นโยบายโควต้าเพื่อกำหนดตัวนับที่ไม่ซ้ำกันหลายรายการในนโยบายเดียว ด้วยการใช้สิ่งเหล่านี้
แต่ละนโยบายจะมีตัวนับ 1 ตัวที่แตกต่างกันตามแอปที่ส่งคำขอ
นักพัฒนาแอปที่ส่งคำขอ รหัสไคลเอ็นต์ หรือตัวระบุไคลเอ็นต์อื่นๆ และอื่นๆ โปรดดู
ตัวอย่างด้านบนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้
องค์ประกอบ <Class>
หรือ <Identifier>
หมายเหตุเวลา
กำหนดเวลาของโควต้าทั้งหมดเป็นสากลเชิงพิกัด เขตเวลา (UTC)
ค่าเวลาของโควต้าเป็นไปตามค่าวันที่มาตรฐานสากลที่กำหนดไว้ใน International มาตรฐาน ISO 8601
วันที่จะกำหนดเป็นปี เดือน และวันในรูปแบบต่อไปนี้: YYYY-MM-DD
เช่น 2015-02-04
แสดงถึงวันที่ 4 กุมภาพันธ์ 2015
เวลาของวันระบุเป็นชั่วโมง นาที และวินาทีในรูปแบบต่อไปนี้
hours:minutes:seconds
เช่น 23:59:59
จะแสดงเวลาหนึ่ง
วินาที ก่อนเที่ยงคืน
โปรดทราบว่าสัญกรณ์ 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.*
ตัวแปรด้านล่างจะใช้งานได้โดยค่าเริ่มต้นเมื่อ
นโยบายคีย์ API การยืนยันที่ชื่อ "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 จะใช้ค่าของแอตทริบิวต์
เพื่อเลือกแท็กย่อย 1 จาก <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
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง |
ใช้เพื่อระบุตัวแปรโฟลว์ที่มีคลาสโควต้าสำหรับโควต้า |
ไม่มี | ต้องระบุ |
<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
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง |
ใช้เพื่อระบุตัวแปรโฟลว์ที่มีช่วงเวลาสำหรับ
โควต้า |
ไม่มี | ไม่บังคับ |
<TimeUnit> องค์ประกอบ
ใช้เพื่อระบุหน่วยเวลาที่ใช้กับโควต้า
ตัวอย่างเช่น Interval
ของ 24
ที่มี
TimeUnit
ของ hour
หมายความว่าโควต้าจะเท่ากับ
ได้รับการคำนวณภายใน 24 ชั่วโมง
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ |
ประเภท: |
สตริง เลือกจาก |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง | ใช้เพื่อระบุตัวแปรโฟลว์ที่มีหน่วยเวลาสำหรับโควต้า ref
จะมีความสำคัญเหนือกว่าค่าช่วงที่ชัดเจน หาก ref รวม
ไม่แปลค่าขณะรันไทม์ ระบบก็จะใช้ค่า |
ไม่มี | ไม่บังคับ |
<StartTime> องค์ประกอบ
เมื่อตั้งค่า type
เป็น calendar,
จะเป็นการระบุวันที่
และเวลาที่ตัวนับโควต้าจะเริ่มนับ ไม่ว่าจะมีคำขอใดๆ
ที่ได้รับจากแอปใดๆ
คุณต้องระบุ StartTime
อย่างชัดแจ้งเมื่อมีการตั้งค่า type
อย่างชัดแจ้ง
ไปยัง calendar,
คุณไม่สามารถใช้การอ้างอิงตัวแปรโฟลว์ได้ หากระบุ
ค่า StartTime
เมื่อไม่ได้ตั้งค่า type
คุณจะได้รับ
เช่น
<StartTime>2017-7-16 12:00:00</StartTime>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุเมื่อตั้งค่า type เป็น calendar |
ประเภท: |
สตริงใน ISO 8601 รูปแบบวันที่และเวลา |
<เผยแพร่แล้ว> องค์ประกอบ
การติดตั้ง Edge จะใช้ตัวประมวลผลข้อความ (Message Processor) อย่างน้อย 1 ตัวเพื่อประมวลผลคำขอได้ ตั้งค่าสิ่งนี้
เป็น true
เพื่อระบุว่านโยบายควรรักษา
และซิงค์ข้อมูลอย่างต่อเนื่องกับตัวประมวลผลข้อความ (Message Processor) ทั้งหมดอย่างต่อเนื่อง โปรเซสเซอร์ข้อความ
จะอยู่ในโซนและ/หรือภูมิภาคที่พร้อมใช้งานได้
หากใช้ค่าเริ่มต้น 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> องค์ประกอบ
ระบุจำนวนคำขอจากผู้ประมวลผลข้อมูลข้อความ 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
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง |
ระบุตัวแปรโฟลว์ที่ระบุตัวนับที่จะใช้สำหรับคำขอ ตัวระบุอาจเป็นส่วนหัว HTTP พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม หรือเนื้อหาข้อความก็ได้ ที่ไม่ซ้ำกันสำหรับแต่ละแอป ผู้ใช้แอป นักพัฒนาแอป ผลิตภัณฑ์ API หรืออื่นๆ ลักษณะเฉพาะ
ในบางสถานการณ์ จะต้องเรียกดูการตั้งค่าโควต้าเมื่อไม่มี
|
ไม่มี | ไม่บังคับ |
<MessageWeight> องค์ประกอบ
ใช้เพื่อระบุน้ำหนักที่กำหนดให้แต่ละข้อความ ใช้น้ำหนักข้อความเพื่อเพิ่มผลลัพธ์ของ เช่น จะขอข้อความที่ใช้ทรัพยากรในการคำนวณมากกว่าทรัพยากรอื่นๆ
เช่น คุณต้องการนับข้อความ POST ว่ามีขนาด "หนัก" เป็น 2 เท่า หรือแพงๆ อย่าง GET
ข้อความ คุณจึงตั้งค่า MessageWeight
เป็น 2 สำหรับ POST และ 1 สำหรับ
ดาวน์โหลด คุณยังตั้งค่า MessageWeight
เป็น 0 ได้เพื่อไม่ให้คำขอ
มีผลต่อตัวนับ ในตัวอย่างนี้ หากโควต้าคือ 10 ข้อความต่อนาทีและ
MessageWeight
สำหรับคำขอ POST คือ 2
ดังนั้นโควต้าจะ
อนุญาตให้มีคำขอ POST 5 รายการในช่วง 10 นาทีใดก็ได้ คำขอเพิ่มเติม เช่น POST หรือ GET
ก่อนที่การรีเซ็ตตัวนับจะถูกปฏิเสธ
ต้องระบุค่าที่แสดงถึง MessageWeight
โดยโฟลว์
และสามารถดึงข้อมูลจากส่วนหัว HTTP พารามิเตอร์การค้นหา คำขอ XML หรือ JSON
เพย์โหลด หรือตัวแปรโฟลว์อื่นๆ ตัวอย่างเช่น คุณตั้งค่าไว้ในส่วนหัวชื่อ
weight
:
<MessageWeight ref="message_weight"/>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: |
จำนวนเต็ม |
ตัวแปรโฟลว์
ระบบจะป้อนข้อมูลตัวแปรโฟลว์ที่กำหนดไว้ล่วงหน้าต่อไปนี้โดยอัตโนมัติเมื่อนโยบายโควต้า ในการดำเนินการ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ข้อมูลอ้างอิงตัวแปร
ตัวแปร | ประเภท | สิทธิ์ | คำอธิบาย |
---|---|---|---|
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>
สคีมา
หัวข้อที่เกี่ยวข้อง
การเปรียบเทียบ นโยบายโควต้า การจํากัดปริมาณสูงสุด และขีดจำกัดอัตราคำขอพร้อมกัน