Правило ResetQuota

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Что

Используется для динамического изменения оставшегося количества запросов, разрешенных целевым правилом квоты. Обычно это правило используется для уменьшения текущего количества квот целевого правила квоты вместо того, чтобы ждать сброса количества квот.

Например, целевое правило квоты ограничивает количество запросов, которые разработчик может отправлять в неделю, до 1000. Разработчик достигает этого лимита уже на второй день недели. Используйте политику Reset Quota (Сброс квоты), чтобы вычесть 500 из счетчика квоты и разрешить ещё 500 запросов до конца недели. В конце недели квота сбрасывается, и разработчик снова может отправлять 1000 запросов в неделю.

Подробнее о правилах в отношении квот… Также ознакомьтесь с этой записью в сообществе о том, как использовать правило "Сброс квоты".

Примеры

В приведенных ниже примерах кода показано, как сбрасывать счетчики квот:

Сбросить счетчик по умолчанию

<ResetQuota name="resetQuota">
   <Quota name="MyQuotaPolicy">
      <Identifier name="_default">
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

В правилах сброса квоты целевые правила квоты указываются с помощью атрибута name тега <Quota>. В примере выше целевым объектом является правило MyQuotaPolicy.

Для всех правил сброса квоты требуется тег <Identifier>, чтобы указать счетчик в правиле квоты, который нужно обновить. По умолчанию в правиле квоты используется один счетчик, если только в нем нет тега <Identifier>. В этом примере целевое правило квоты не использует тег <Identifier>, поэтому вы указываете атрибут name как _default.

Элемент <Allow> указывает значение, которое используется для уменьшения текущего количества квот в целевом правиле. В этом примере счетчик квоты уменьшается на 100, чтобы разрешить ещё 100 запросов к целевому правилу квоты. Когда целевое правило квоты сбрасывается, это изменение отменяется.

Ниже приведено определение целевого правила квоты:

<Quota name="MyQuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

Как использовать референс

<ResetQuota name="resetQuota">
   <Quota ref="request.header.quotapolicy">
      <Identifier name="_default">
         <Allow ref="request.header.allowquota" />
      </Identifier>
   </Quota>
</ResetQuota>

В этом примере в заголовках запроса передаются название целевого правила квоты и изменение количества квот. Затем вы можете использовать переменные потока, содержащие эти значения, в правиле "Сброс квоты".

Как указать идентификатор

<ResetQuota name="resetQuota">
   <Quota name="QuotaPolicy">
      <Identifier ref="request.header.clientId">
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

Если целевое правило квоты содержит тег <Identifier>, вы можете указать то же значение в теге <Identifier> правила "Сбросить квоту", чтобы обновить определенное значение квоты. Обратите внимание, что тег <Identifier> в целевой политике квоты ниже соответствует значению, указанному в политике сброса квоты:

<Quota name="QuotaPolicy">
  <Identifier ref="request.header.clientId"/>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

Сведения об элементах

В справочнике по элементам описаны элементы и атрибуты правил "Сброс квоты".

<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1">
   <DisplayName>Reset Quota 1</DisplayName>
   <Quota name="quotaName" ref="request.header.quotapolicy">
      <Identifier name="identifierName" ref="request.header.identifier">
         <Class ref="request.header.classIdentifier" />
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

Атрибуты <ResetQuota>

<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1">

В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:

Атрибут Описание По умолчанию Присутствие
name

Внутреннее имя политики. Значение атрибута name может содержать буквы, цифры, пробелы, дефисы, подчеркивания и точки. Это значение не может превышать 255 символов.

При необходимости используйте элемент <DisplayName> , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

Н/Д Необходимый
continueOnError

Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик.

Установите значение true , чтобы выполнение потока продолжалось даже после сбоя политики.

ЛОЖЬ Необязательный
enabled

Установите значение true , чтобы обеспечить соблюдение политики.

Установите значение false , чтобы отключить политику. Политика не будет применена, даже если она останется привязанной к потоку.

истинный Необязательный
async

Этот атрибут устарел.

ЛОЖЬ Устарело

Элемент <DisplayName>

Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

<DisplayName>Policy Display Name</DisplayName>
По умолчанию

Н/Д

Если вы опустите этот элемент, будет использовано значение атрибута name политики.

Присутствие Необязательный
Тип Нить

Элемент <Quota>

Определяет целевую политику квот, счетчик которой нужно обновить.

<Quota name="quotaName"  ref="request.header.quotapolicy">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
По умолчанию: Н/Д
Присутствие Обязательно
Тип: Н/Д

Атрибуты

Атрибут Описание По умолчанию Тип поля
name

Указывает название целевого правила квоты.

Н/Д Необязательно
ref Переменная потока, содержащая название целевого правила квоты. Если указаны оба атрибута (ref и name), приоритет имеет атрибут ref. Если ref не разрешается во время выполнения, используется name. Н/Д Необязательно

Элемент <Quota>/<Identifier>

Переменная, которая используется для уникальной идентификации счетчика, если в целевой политике квоты указан тег <Identifier>.

<Quota name="quotaName">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
По умолчанию: Н/Д
Присутствие Обязательно
Тип: Строка

Атрибуты

Атрибут Описание По умолчанию Тип поля
name

Указывает название идентификатора счетчика в целевом правиле квоты. Для правила квоты, в котором не используется тег <Identifier>, укажите значение _default.

Н/Д Необязательно
ref

Переменная потока, содержащая название идентификатора счетчика в целевом правиле Quota. Если указаны оба атрибута – ref и name, то приоритет имеет атрибут ref. Если ref не разрешается во время выполнения, используется name.

Н/Д Необязательно

Элемент <Quota>/<Identifier>/<Allow>

Указывает, на какую величину нужно уменьшить счетчик квоты. Вы должны указать <Allow>, иначе правило не изменит квоту.

<Identifier name="identifierName" ref="request.header.identifier">
   <Allow ref="request.header.allowquota">100</Allow>
</Identifier>
По умолчанию: Н/Д
Присутствие Обязательно
Тип: Целое число

Атрибуты

Атрибут Описание По умолчанию Тип поля
ref

Переменная потока, содержащая изменение количества квот в целевых правилах квот.

Н/Д Необязательно

Элемент <Quota>/<Identifier>/<Class>

Указывает класс, для которого обновляется счетчик квот. Подробнее о том, как использовать класс с правилами в отношении квот…

<Identifier name="_default">
   <Class ref="request.header.classIdentifier">
     <Allow>200</Allow>
   </Class>
</Identifier>
По умолчанию: Н/Д
Присутствие Необязательно
Тип: Н/Д

Атрибуты

Атрибут Описание По умолчанию Тип поля
ref

Ссылка на переменную потока, содержащую класс квоты, который нужно обновить.

Н/Д Необязательно

Справочник по ошибкам

В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые задаются Edge, когда это правило вызывает ошибку. Эта информация важна, если вы разрабатываете правила обработки ошибок. Подробнее о том, что нужно знать об ошибках в правилах и об обработке ошибок…

Ошибки времени выполнения

Эти ошибки могут возникать при выполнении правил.

Код ошибки Статус HTTP Причина Исправить
policies.resetquota.InvalidRLPolicy 500 Политика квот, указанная в элементе <Quota> политики "Сброс квот", не определена в прокси-сервере API и поэтому недоступна во время выполнения. Элемент <Quota> обязателен и определяет целевую политику квот, счетчик которой нужно обновить с помощью политики сброса квот.
policies.resetquota.FailedToResolveAllowCountRef Н/Д Ссылка на переменную, содержащую количество разрешений, в элементе <Allow> правил не может быть преобразована в значение. Этот обязательный элемент указывает, на сколько нужно уменьшить счетчик квоты.
policies.resetquota.FailedToResolveRLPolicy 500 Не удалось обработать переменную, на которую ссылается атрибут ref в элементе <Quota>.

Ошибки развертывания

Эти ошибки могут возникать при развертывании прокси-сервера, содержащего это правило.

Название ошибки Причина Исправить
InvalidCount Если значение счетчика, указанное в элементе <Allow> правила сброса квоты, не является целым числом, развертывание прокси-сервера API завершится неудачно.

Схемы

Статьи по теме

Правила в отношении квот