คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
InvalidRLPolicy
รหัสข้อผิดพลาด
policies.resetquota.InvalidRLPolicy
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายโควต้าที่ระบุในองค์ประกอบ <Quota>
ของ
ไม่ได้กำหนดนโยบายการรีเซ็ตโควต้าในพร็อกซี API องค์ประกอบ <Quota>
เป็นสิ่งที่ต้องระบุ และระบุนโยบายโควต้าเป้าหมายที่ควรอัปเดตตัวนับผ่านนโยบายรีเซ็ตโควต้า ต้องสร้างและกำหนดนโยบายโควต้าเป้าหมายนี้ภายใน
พร็อกซี API เดียวกันและต้องพร้อมใช้งานในระหว่างขั้นตอน
ตัวอย่างเช่น สมมติว่ามีการกำหนดเอลิเมนต์ <Quota>
ดังที่เห็นด้านล่าง แต่หาก
ไม่มีการกำหนด MyQuotaPolicy
ในพร็อกซี API คุณจึงได้รับข้อผิดพลาดข้างต้น
<Quota name="MyQuotaPolicy">
การวินิจฉัย
ระบุชื่อนโยบายโควต้าที่ไม่ถูกต้องซึ่งระบุไว้ในนโยบายรีเซ็ตโควต้า คุณดูชื่อของนโยบายโควต้าได้จากสตริงข้อผิดพลาด ตัวอย่างเช่น ใน สตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายโควต้าคือ
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
ตรวจสอบนโยบายการรีเซ็ตโควต้าแต่ละรายการในพร็อกซี API ที่เกิดความล้มเหลว ระบุนโยบายการรีเซ็ตโควต้าที่เฉพาะเจาะจงซึ่งใช้นโยบายโควต้า ที่ระบุภายในองค์ประกอบที่จำเป็น
<Quota>
ตรงกับชื่อที่ระบุ ในขั้นตอนที่ 1 ข้างต้นตัวอย่างเช่น นโยบายรีเซ็ตโควต้าต่อไปนี้ระบุนโยบายโควต้าที่ชื่อว่า
MyQuotaPolicy
ซึ่งตรงกับสิ่งที่อยู่ใน faultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
ตรวจสอบว่ามีการสร้างและกำหนดนโยบายโควต้านี้ภายในพร็อกซี API เดียวกันหรือไม่ หากไม่มีนโยบายโควต้าอยู่ภายในพร็อกซี API เดียวกัน นี่จึงเป็นสาเหตุที่ ของข้อผิดพลาด
ในตัวอย่างที่แสดงด้านบน นโยบายโควต้า
MyQuotaPolicy
อยู่ในโฟลว์ก่อนที่นโยบายรีเซ็ตโควต้าReset_Quota_Demo
จะดำเนินการเนื่องจากไม่มีนโยบายโควต้า
MyQuotaPolicy
อยู่ในขั้นตอนนี้ คุณจะ ได้รับรหัสข้อผิดพลาด:
"errorcode": "policies.resetquota.InvalidRLPolicy"
ความละเอียด
ตรวจสอบว่าได้กำหนดนโยบายโควต้าที่ประกาศในองค์ประกอบ <Quota>
ในองค์ประกอบ
พร็อกซี API นโยบายโควต้าเป้าหมายนี้ต้องมีเมื่อนโยบายรีเซ็ตโควต้า
ในการดำเนินการ
FailedToResolveAllowCountRef
รหัสข้อผิดพลาด
policies.resetquota.FailedToResolveAllowCountRef
เนื้อหาการตอบกลับข้อผิดพลาด
Failed to resolve allow count reference reference_name for identifier identifier_name in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision: revision_number;Environment:env_name;Organization:org_name
ตัวอย่างข้อความแสดงข้อผิดพลาด
Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo
ข้อผิดพลาดที่แสดงผลในไคลเอ็นต์จะเกิดขึ้นเพียงแค่ policies.ratelimit.QuotaViolation
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากการอ้างอิงตัวแปรที่มีจํานวนการอนุญาตใน
องค์ประกอบ <Allow>
ของนโยบายเป็นค่าไม่ได้ ช่วงเวลานี้
จำเป็นต้องมีและระบุจำนวนที่จะลดตัวนับโควต้า
การวินิจฉัย
ระบุนโยบายการรีเซ็ตโควต้าที่เกิดข้อผิดพลาดและชื่อของ ตัวแปรอ้างอิงที่ไม่สามารถระบุค่าได้ คุณจะเห็นทั้ง 2 รายการนี้ในการตอบกลับข้อผิดพลาด
ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
ResetQuota
และ ข้อมูลอ้างอิงคือrequest.header.allowcount
:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
ใน XML นโยบายการรีเซ็ตโควต้าที่ไม่สําเร็จ ให้ตรวจสอบว่าชื่อตัวแปรอ้างอิงที่ใช้สอดคล้องกันกับชื่ออ้างอิงที่ระบุในการตอบกลับข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน)
ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าองค์ประกอบที่มีการอ้างอิงชื่อ
request.header.allowcount
ซึ่งตรงกับสิ่งที่มีข้อผิดพลาด:<ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota"> <DisplayName>ResetQuota</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName"> <Allow ref="request.header.allowcount"/> </Identifier> </Quota> </ResetQuota>
ตรวจสอบว่าตัวแปรอ้างอิงได้รับการกำหนดไว้และพร้อมใช้งานในขั้นตอน ที่นโยบายรีเซ็ตโควต้าทำงาน
หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กําหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างที่แสดงด้านบน ค่าของจำนวนที่อนุญาตในองค์ประกอบ
<Allow>
ควรดึงจากส่วนหัวของคำขอที่ชื่อ allowcount อย่างไรก็ตาม Edge แปลค่า request.header.allowcount ไม่ได้ กรณีนี้จะเกิดขึ้นหากไม่มีการส่งส่วนหัว allowcount เป็นส่วนหนึ่งของคําขอ APIต่อไปนี้คือตัวอย่างคำขอ API ที่ไม่ส่ง allowcount ของส่วนหัวเป็นส่วนหนึ่งของ ของคำขอ:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
เนื่องจากไม่ได้ส่งส่วนหัว allowcount เป็นส่วนหนึ่งของคําขอ ตัวแปร request.header.allowcount ที่ใช้กับองค์ประกอบ
<Allow>
ในนโยบายการรีเซ็ตโควต้าข้างต้นจึงไม่มีการกำหนดค่า จึงแก้ไขไม่ได้ ดังนั้นคุณจะได้รับ การตอบกลับข้อผิดพลาด:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
ความละเอียด
ตรวจสอบว่าได้กำหนดตัวแปรที่อ้างอิงในองค์ประกอบ <Allow>
แล้ว
และใช้ได้ในขั้นตอนหนึ่งๆ ซึ่งจะมีการใช้นโยบายรีเซ็ตโควต้า
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขคําขอให้ใส่ส่วนหัว allowcount ดังที่แสดงด้านล่าง
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
รหัสข้อผิดพลาด
policies.resetquota.FailedToResolveRLPolicy
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่อ้างอิงโดยแอตทริบิวต์ ref
ใน
ไม่สามารถแก้ไของค์ประกอบ <Quota>
ตัวอย่างเช่น หากตั้งค่าแอตทริบิวต์ ref
เป็น request.header.quotapolicy
ในองค์ประกอบ <Quota>
แต่ไม่มีให้ใช้งานในโฟลว์พร็อกซี API คุณจะได้รับข้อผิดพลาดข้างต้น
<Quota ref="request.header.quotapolicy">
การวินิจฉัย
ตรวจสอบนโยบายการรีเซ็ตโควต้าแต่ละรายการในพร็อกซี API ที่การดำเนินการล้มเหลว เกิดขึ้นและระบุนโยบายการรีเซ็ตโควต้าที่ชื่อของข้อมูลอ้างอิง ไม่สามารถแก้ไขตัวแปรที่ระบุในองค์ประกอบ
<Quota>
ได้อย่างถูกต้องตรวจสอบว่าตัวแปรได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่มี การบังคับใช้นโยบายการรีเซ็ตโควต้า
หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งนโยบายทํางาน) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
แสดงว่านี่อาจเป็นสาเหตุของข้อผิดพลาด
ในตัวอย่างด้านล่าง ชื่อของนโยบายโควต้าเป้าหมายควรเป็น ที่ดึงมาจากส่วนหัวของคำขอที่ชื่อ quotapolicy อย่างไรก็ตาม Edge ไม่สามารถแก้ไข request.header.quotapolicy กรณีนี้จะเกิดขึ้นหากส่วนหัวโควต้านโยบาย ไม่ส่งผ่านเป็นส่วนหนึ่งของคำขอ API
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
ต่อไปนี้คือตัวอย่างคำขอ API ที่ไม่ผ่านส่วนหัว quotapolicy เป็น ส่วนหนึ่งของคำขอ:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
เนื่องจากไม่มีการส่งส่วนหัว quotapolicy เป็นส่วนหนึ่งของคําขอ ข้อมูลอ้างอิง request.header.quotapolicy ที่ใช้กับองค์ประกอบ
<Quota>
ในการรีเซ็ตข้างต้นจึงไม่มีการกำหนดนโยบายโควต้าและไม่สามารถแก้ไขได้ ด้วยเหตุนี้ คุณจึงได้รับการตอบกลับที่มีข้อผิดพลาดดังต่อไปนี้"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
ความละเอียด
ตรวจสอบว่าแอตทริบิวต์ ref
ที่อ้างอิงในองค์ประกอบ <Quota>
ได้รับการแก้ไขที่
และใช้ได้ในขั้นตอนหนึ่งๆ ซึ่งใช้นโยบายรีเซ็ตโควต้า
หากต้องการแก้ไขตัวอย่างที่แสดงข้างต้น ให้แก้ไขคำขอให้รวมส่วนหัวของ quotapolicy ตามที่แสดงด้านล่าง ดังนี้
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"