כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
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>
של המדיניותReset Quota לא מוגדרת בשרת ה-proxy של ה-API. הרכיב <Quota>
הוא שדה חובה, ומזהה את המדיניות בנושא מכסות יעד שצריך לעדכן את המונה שלה באמצעות המדיניות איפוס המכסה. צריך ליצור ולהגדיר את המדיניות הזו בנושא מכסת היעד באותו שרת proxy ל-API, והיא צריכה להיות זמינה לאורך הזרימה.
לדוגמה, נניח שהרכיב <Quota>
מוגדר כפי שמוצג בהמשך, אבל אם
MyQuotaPolicy
לא מוגדר בשרת ה-Proxy של API, תתקבל הודעת השגיאה שלמעלה.
<Quota name="MyQuotaPolicy">
אבחון
זיהוי השם הלא חוקי של מדיניות המכסה שמצוין במדיניות 'איפוס המכסה'. אפשר למצוא את השם של מדיניות המכסה ב-faultstring. לדוגמה, במחרוזת השבר הבאה, השם של מדיניות המכסה הוא
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
חשוב לבדוק כל אחד מכללי המדיניות לאיפוס המכסה בשרת ה-proxy של ה-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>
יש לקבוע אם מדיניות המכסה הזו נוצרת ומוגדרת באותו שרת proxy ל-API. אם מדיניות המכסה לא קיימת באותו שרת proxy ל-API, זו הסיבה לשגיאה.
בדוגמה שלמעלה, מדיניות המכסה
MyQuotaPolicy
אמורה להתקיים בתהליך לפני היישום של מדיניות איפוס המכסהReset_Quota_Demo
.מאחר שמדיניות המכסה
MyQuotaPolicy
לא קיימת בתהליך, תקבלו את קוד השגיאה:
"errorcode": "policies.resetquota.InvalidRLPolicy"
רזולוציה
צריך לוודא שמדיניות המכסה שהוצהרה באלמנט <Quota>
מוגדרת בשרת ה-proxy של ה-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>
של המדיניות. הרכיב הזה הוא חובה ומציין את הסכום להקטנה במונה.
אבחון
מאתרים את המדיניות לאיפוס המכסה שבה קרתה השגיאה ואת השם של משתנה ההפניה שאי אפשר לפענח. תוכלו למצוא את שני הפריטים האלה בתגובת השגיאה.
לדוגמה, במחרוזת הבאג הבאה, שם המדיניות הוא
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 של שרת ה-proxy, תתקבל
השגיאה שצוינה למעלה.
<Quota ref="request.header.quotapolicy">
אבחון
יש לבדוק כל אחד מכללי המדיניות לאיפוס המכסה בשרת ה-API של ה-API שבהם התרחש הכשל, ולזהות את המדיניות איפוס המכסה, שבה לא ניתן לפענח כראוי את שם משתנה ההפניה שצוין ברכיב
<Quota>
.לקבוע אם המשתנה מוגדר וזמין בתהליך שבו מופעלת המדיניותReset 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 שלא מעבירה את המכסה של הכותרת כחלק מהבקשה:
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"