אתם צופים במסמכי התיעוד של 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>
של מדיניות האיפוס של המכסות לא מוגדרת בשרת ה-proxy של ה-API. הרכיב <Quota>
הוא רכיב חובה
והוא מזהה את מדיניות מכסת היעד שצריך לעדכן את המונה באמצעותה
מדיניות איפוס המכסה. יש ליצור ולהגדיר את מדיניות מכסת היעד הזו בתוך
לאותו שרת proxy ל-API והוא צריך להיות זמין במהלך התהליך.
לדוגמה, נניח שהרכיב <Quota>
מוגדר כפי שמוצג בהמשך, אבל אם
הפרמטר MyQuotaPolicy
לא מוגדר בשרת ה-proxy ל-API, ולכן תקבלו את השגיאה שלמעלה.
<Quota name="MyQuotaPolicy">
אבחון
מזהים את השם הלא חוקי של מדיניות המכסות שצוין במדיניות האיפוס של המכסות. השם של מדיניות המכסה מופיע במחרוזת התקלה. לדוגמה, ב- מחרוזת השגיאה הבאה, שם מדיניות המכסה הוא
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>
אבל הוא לא זמין בתהליך ה-Proxy ל-API, ואז מקבלים את הערך
שלמעלה.
<Quota ref="request.header.quotapolicy">
אבחון
לבדוק כל אחד מכללי המדיניות לאיפוס מכסה בשרת ה-proxy ל-API כאשר השגיאה התרחשה ומזהה את מדיניות איפוס המכסה שבה שם קובץ העזר לא ניתן לפענח כראוי את המשתנה שמצוין ברכיב
<Quota>
.החליטו אם המשתנה מוגדר וזמין בתהליך שבו מדיניות האיפוס של המכסה תופעל.
אם המשתנה הוא:
- מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מתבצעת) או
- לא ניתן לפתרון (לא מוגדר)
אז זה הגורם לשגיאה.
בדוגמה הבאה, השם של מדיניות מכסת היעד אמור להיות אוחזרו מכותרת הבקשה בשם quotapolicy. עם זאת, ל-Edge אין אפשרות כדי לתקן את הבעיה request.header.quotapolicy. זה קורה אם הכותרת 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"