Вы просматриваете документацию по 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> правила "Сброс квоты", не определено в прокси-сервере API. Элемент <Quota> является обязательным и определяет целевую политику квоты, счетчик которой должен быть обновлен с помощью политики сброса квоты. Это целевое правило квоты должно быть создано и определено в том же прокси-сервере API и быть доступно во время выполнения потока.
Например, элемент <Quota> определен так, как показано ниже, но если MyQuotaPolicy не определен в прокси API, то вы получите указанную выше ошибку.
<Quota name="MyQuotaPolicy">
диагностика;
Определите недопустимое название правила квоты, указанное в правиле сброса квоты. Название правила квоты можно найти в строке ошибки. Например, в следующей строке ошибки название правила "Квота" –
MyQuotaPolicy::"faultstring": "Invalid rate limit policy MyQuotaPolicy"Проверьте все правила сброса квоты в прокси API, в котором произошла ошибка. Найдите правило сброса квоты, в котором правило квоты, указанное в обязательном элементе
<Quota>, совпадает с названием, определенным на шаге 1.Например, в приведенных ниже правилах Reset Quota (Сброс квоты) заданы правила Quota (Квота) с названием
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-файле неудачной политики Reset Quota убедитесь, что название используемой переменной reference совпадает с названием, указанным в ответе об ошибке (шаг 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>в приведенных выше правилах Reset Quota, не определена и поэтому не может быть разрешена. В результате вы получите ответ об ошибке: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>, существует или определена и доступна в определенном потоке, в котором выполняется правило Reset Quota.
Чтобы исправить приведенный выше пример, измените запрос, добавив заголовок 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">
диагностика;
Проверьте все правила Reset Quota в прокси API, в котором произошла ошибка, и найдите правило Reset Quota, в котором имя переменной, указанной в элементе
<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"