Sie lesen die Dokumentation zu Apigee Edge.
Sehen Sie sich die Apigee X-Dokumentation an. info
InvalidRLPolicy
Fehlercode
policies.resetquota.InvalidRLPolicy
Fehlerantworttext
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Kontingentrichtlinie, die im <Quota>
-Element der Richtlinie zum Zurücksetzen von Kontingenten angegeben ist, nicht im API-Proxy definiert ist. Das Element <Quota>
ist obligatorisch und gibt die Zielkontingentrichtlinie an, deren Zähler mit der Richtlinie zum Zurücksetzen der Kontingente aktualisiert werden muss. Diese Zielkontingentrichtlinie muss innerhalb desselben API-Proxys erstellt und definiert werden und muss während des Ablaufs verfügbar sein.
Angenommen, das Element <Quota>
ist (siehe unten) definiert, aber wenn MyQuotaPolicy
nicht im API-Proxy definiert ist, erhalten Sie den obigen Fehler.
<Quota name="MyQuotaPolicy">
Diagnose
Identifizieren Sie den in der Richtlinie zum Zurücksetzen von Kontingenten angegebenen ungültigen Kontingentrichtliniennamen. Den Namen der Kontingentrichtlinie finden Sie im Fehlerstring. Im folgenden Fehlerstring lautet der Name der Kontingentrichtlinie beispielsweise
MyQuotaPolicy:
."faultstring": "Invalid rate limit policy MyQuotaPolicy"
Prüfen Sie jede der Richtlinien zum Zurücksetzen von Kontingenten im API-Proxy, in dem der Fehler aufgetreten ist. Identifizieren Sie die spezifische Richtlinie zum Zurücksetzen des Kontingents, wobei die im verbindlichen Element
<Quota>
angegebene Kontingentrichtlinie mit dem in Schritt 1 angegebenen Namen übereinstimmt.Die folgende Richtlinie zum Zurücksetzen von Kontingenten legt beispielsweise eine Kontingentrichtlinie namens
MyQuotaPolicy
fest, die sich im Fehlerstring befindet:<?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>
Bestimmen Sie, ob diese Kontingentrichtlinie innerhalb desselben API-Proxys erstellt und definiert wird. Wenn die Kontingentrichtlinie nicht innerhalb desselben API-Proxys vorhanden ist, ist dies die Ursache des Fehlers.
Im gezeigten Beispiel sollte die Kontingentrichtlinie
MyQuotaPolicy
im Ablauf vorhanden sein, bevor die Richtlinie "Kontingent zurücksetzen"Reset_Quota_Demo
ausgeführt wird.Da die Kontingentrichtlinie
MyQuotaPolicy
nicht im Ablauf vorhanden ist, erhalten Sie den Fehlercode:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Lösung
Prüfen Sie, ob die im Element <Quota>
deklarierte Kontingentrichtlinie im API-Proxy definiert ist. Diese Zielkontingentrichtlinie muss verfügbar sein, wenn die Richtlinie zum Zurücksetzen von Kontingenten ausgeführt wird.
FailedToResolveAllowCountRef
Fehlercode
policies.resetquota.FailedToResolveAllowCountRef
Fehlerantworttext
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
Beispiel für Fehlermeldung
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
Der an den Client zurückgegebene Fehler ist einfach: policies.ratelimit.QuotaViolation
.
Ursache
Dieser Fehler tritt auf, wenn der Verweis auf die Variable mit der erlaubten Anzahl im <Allow>
-Element der Richtlinie nicht in einen Wert aufgelöst werden kann. Dieses Element ist obligatorisch und gibt den Betrag zur Verringerung des Kontingentzählers an.
Diagnose
Identifizieren Sie die Richtlinie zum Zurücksetzen von Kontingenten, in der der Fehler aufgetreten ist, sowie den Namen der Referenzvariable, die nicht aufgelöst werden kann. Sie finden beide Elemente in der Fehlerantwort.
Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise
ResetQuota
und die Referenzrequest.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
Überprüfen Sie in der XML-Datei zum Zurücksetzen der Kontingentrichtlinie, ob der Name der verwendeten Variablen für den Verweisnamen mit dem in der Fehlerantwort angegebenen Referenznamen übereinstimmt (Schritt 1 oben).
Die folgende Richtlinie legt beispielsweise das Element mit der Referenz
request.header.allowcount
fest, die mit dem Fehler übereinstimmt:<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>
Bestimmen Sie, ob die Referenzvariable definiert ist und in dem Ablauf verfügbar ist, in dem die Richtlinie zum Zurücksetzen von Kontingenten ausgeführt wird.
Wenn die Variable entweder:
- außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
- Kann nicht aufgelöst werden (nicht definiert)
Dann ist das die Ursache des Fehlers.
Im gezeigten Beispiel soll der Wert der zulässigen Anzahl im
<Allow>
-Element aus dem Anfrage-Header allowcount abgerufen werden. Edge kann request.header.allowcount jedoch nicht auflösen. Dies geschieht, wenn der Header allowcount nicht als Teil der API-Anfrage übergeben wird.Hier sehen Sie eine Beispiel-API-Anfrage, mit der der Header allowcount nicht als Teil der Anfrage übergeben wird:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Weil in der Kopfzeile allowcount nicht als Teil der Anfrage übergeben wird, wird die Variable request.header.allowcount, die in dem Element
<Allow>
in der obigen Richtlinie zum Zurücksetzen von Kontingenten verwendet wird, nicht definiert und kann daher nicht aufgelöst werden. Sie erhalten also die Fehlermeldung: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
Lösung
Achten Sie darauf, dass die Variable, auf die im Element <Allow>
verwiesen wird, vorhanden/definiert und in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie zum Zurücksetzen von Kontingenten ausgeführt wird.
Um das obige Beispiel zu korrigieren, können Sie die Anfrage so anpassen, dass der Header allowcount wie unten gezeigt eingeschlossen wird:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Fehlercode
policies.resetquota.FailedToResolveRLPolicy
Fehlerantworttext
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Variable, auf die im Attribut ref
verwiesen wird, im <Quota>
-Element nicht aufgelöst werden kann.
Wenn beispielsweise das Attribut ref
im Element <Quota>
als request.header.quotapolicy
festgelegt ist, jedoch nicht im API-Proxy-Flow verfügbar ist, erhalten Sie den obigen Fehler.
<Quota ref="request.header.quotapolicy">
Diagnose
Prüfen Sie jede der Richtlinien zum Zurücksetzen von Kontingenten im API-Proxy, in dem der Fehler aufgetreten ist. Identifizieren Sie außerdem die Richtlinie zum Zurücksetzen der Kontingente, in denen der Name der im
<Quota>
-Element angegebenen Referenzvariable nicht korrekt aufgelöst werden kann.Legen Sie fest, ob die Variable definiert ist und in dem Ablauf verfügbar ist, in dem die Richtlinie zum Zurücksetzen von Kontingenten ausgeführt wird.
Wenn die Variable entweder:
- außerhalb des Geltungsbereichs (nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird) oder
- nicht aufgelöst werden kann (nicht definiert ist),
dann ist das die Ursache des Fehlers.
Im folgenden Beispiel wird der Name der Richtlinie für das Zielkontingent aus dem Anfrageheader quotapolicy abgerufen. Edge kann die request.header.quotapolicy jedoch nicht auflösen. Dies geschieht, wenn der Header quotapolicy nicht als Teil der API-Anfrage übergeben wird.
<?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>
Hier sehen Sie eine Beispiel-API-Anfrage, die den Header quotapolicy nicht als Teil der Anfrage übergibt:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Da der Header quotapolicy nicht als Teil der Anfrage übergeben wird, wird die Referenz request.header.quotapolicy, die in dem Element
<Quota>
in der obigen Reset-Quota-Richtlinie verwendet wird, nicht definiert und kann nicht aufgelöst werden. Sie erhalten daher die Fehlermeldung:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Lösung
Achten Sie darauf, dass das Attribut ref
, auf das im Element <Quota>
verwiesen wird, zur Laufzeit aufgelöst wird und in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie zum Zurücksetzen von Kontingenten ausgeführt wird.
Sie können das Beispiel oben korrigieren, indem Sie die Anfrage so anpassen, dass der Header quotapolicy wie unten dargestellt eingeschlossen wird:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"