Вы просматриваете документацию 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 Proxy, то вы получите указанную выше ошибку.
<Quota name="MyQuotaPolicy">
Диагноз
Найдите недопустимое имя политики квот, указанное в параметре «Сбросить политику квот». Имя политики квот можно найти в строке ошибки. Например, в следующей строке ошибки имя политики квот —
MyQuotaPolicy:"faultstring": "Invalid rate limit policy MyQuotaPolicy"Проанализируйте каждую из политик сброса квот в API-прокси, где произошла ошибка. Определите конкретную политику сброса квот, в которой политика квот, указанная в обязательном элементе
<Quota>совпадает с именем, указанным на шаге 1 выше.Например, следующая политика сброса квоты задает политику квоты с именем
MyQuotaPolicy, которая соответствует содержимому строки ошибки:<?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> политики, не может быть преобразована в значение. Этот элемент является обязательным и указывает величину, на которую следует уменьшить счетчик квоты.
Диагноз
Укажите политику сброса квоты, в которой произошла ошибка, и имя переменной-ссылки, которую не удается разрешить. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей строке ошибки имя политики —
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 . Это происходит, если заголовок 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"