Zasada ResetQuota

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Co

Użyj tej zasady, aby dynamicznie modyfikować pozostałą liczbę żądań dozwolonych przez docelową zasadę dotyczącą limitów. Zazwyczaj używasz tej zasady, aby zmniejszyć bieżącą liczbę limitów w docelowej zasadzie dotyczącej limitów zamiast czekać na zresetowanie tej liczby.

Na przykład docelowa zasada dotycząca limitów ogranicza dewelopera do 1000 żądań tygodniowo. Do drugiego dnia tygodnia deweloper osiągnął już ten limit. Użyj zasady Reset Quota aby odjąć 500 od licznika limitów, co pozwoli na dodatkowe 500 żądań w pozostałej części tygodnia. Pod koniec tygodnia zasada dotycząca limitów zostanie zresetowana, a deweloper będzie mógł wysłać 1000 żądań w tygodniu.

Więcej informacji o zasadach dotyczących limitów znajdziesz w artykule Zasady dotyczące limitów. Zapoznaj się też z tym postem w społeczności na temat używania zasady Reset Quota.

Przykłady

Te przykłady kodu zasad pokazują, jak zresetować liczniki limitów:

Resetowanie domyślnego licznika

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

Zasada Reset Quota określa docelową zasadę dotyczącą limitów za pomocą atrybutu name tagu <Quota>. W powyższym przykładzie, celem jest zasada MyQuotaPolicy.

Wszystkie zasady Reset Quota wymagają tagu <Identifier>, aby określić licznik w zasadzie dotyczącej limitów, który ma zostać zaktualizowany. Domyślnie zasada dotycząca limitów ma jeden licznik, chyba że zawiera też tag <Identifier>. W tym przykładzie, docelowa zasada dotycząca limitów nie używa tagu <Identifier>, więc atrybut name określasz jako _default.

Element <Allow> określa wartość używaną do zmniejszenia bieżącej liczby limitów w docelowej zasadzie. W tym przykładzie liczba limitów jest zmniejszana o 100, co pozwala na wysłanie 100 dodatkowych żądań do docelowej zasady dotyczącej limitów. Gdy docelowa zasada dotycząca limitów zostanie zresetowana, ta zmiana zostanie odrzucona.

Poniżej znajduje się definicja docelowej zasady dotyczącej limitów:

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

Korzystanie z wzorca

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

W tym przykładzie przekazujesz nazwę docelowej zasady dotyczącej limitów i zmianę jej liczby limitów limitów jako nagłówki w żądaniu. Następnie możesz odwołać się do zmiennych przepływu zawierających te wartości w zasadzie Reset Quota.

Określanie identyfikatora

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

Jeśli docelowa zasada dotycząca limitów określa tag <Identifier>, możesz określić tę samą wartość w tagu <Identifier> zasady Reset Quota w celu zaktualizowania konkretnej liczby limitów. Zwróć uwagę, że tag <Identifier> w docelowej zasadzie dotyczącej limitów poniżej pasuje do wartości określonej w zasadzie Reset Quota:

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

Dokumentacja elementów

Dokumentacja elementów opisuje elementy i atrybuty zasady Reset 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>

Atrybuty <ResetQuota>

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

W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:

Atrybut Opis Domyślny Obecność
name

Wewnętrzna nazwa zasady. Wartość atrybutu name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; element

Używaj oprócz atrybutu name do oznaczania zasady w edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

<DisplayName>Policy Display Name</DisplayName>
Domyślny

Nie dotyczy

Jeśli pominiesz ten element, atrybut name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

Element <Quota>

Określa docelową zasadę dotyczącą limitów, której licznik ma zostać zaktualizowany.

<Quota name="quotaName"  ref="request.header.quotapolicy">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
Domyślny: Nie dotyczy
Obecność: Wymagane
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
name

Określa nazwę docelowej zasady dotyczącej limitów.

Nie dotyczy Opcjonalny
ref Zmienna przepływu, która zawiera nazwę docelowej zasady dotyczącej limitów. Jeśli określono zarówno ref, jak i name, priorytet ma ref. Jeśli ref nie zostanie rozpoznany w czasie działania, używana jest wartość name. Nie dotyczy Opcjonalny

Element <Quota>/<Identifier>

Zmienna używana do jednoznacznego identyfikowania licznika, jeśli docelowa zasada dotycząca limitów określa tag <Identifier>.

<Quota name="quotaName">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
Domyślny: Nie dotyczy
Obecność: Wymagane
Typ: Ciąg znaków

Atrybuty

Atrybut Opis Domyślny Obecność
name

Określa nazwę identyfikatora liczby w docelowej zasadzie dotyczącej limitów. W przypadku zasady dotyczącej limitów, która nie używa tagu <Identifier>, określ _default.

Nie dotyczy Opcjonalny
ref

Zmienna przepływu, która zawiera nazwę identyfikatora liczby w docelowej zasadzie dotyczącej limitów policy. Jeśli określono zarówno ref, jak i name, priorytet ma ref. Jeśli ref nie zostanie rozpoznany w czasie działania, używana jest wartość name.

Nie dotyczy Opcjonalny

Element <Quota>/<Identifier>/<Allow>

Określa kwotę, o jaką ma zostać zmniejszony licznik limitów. Musisz określić <Allow>, w przeciwnym razie zasada nie zmodyfikuje limitu.

<Identifier name="identifierName" ref="request.header.identifier">
   <Allow ref="request.header.allowquota">100</Allow>
</Identifier>
Domyślny: Nie dotyczy
Obecność: Wymagane
Typ: Liczba całkowita

Atrybuty

Atrybut Opis Domyślny Obecność
ref

Zmienna przepływu, która zawiera zmianę liczby limitów w docelowej zasadzie dotyczącej limitów.

Nie dotyczy Opcjonalny

Element <Quota>/<Identifier>/<Class>

Określa klasę, dla której ma zostać zaktualizowany licznik limitów. Więcej informacji o używaniu klasy z zasadą dotyczącą limitów znajdziesz w artykule Zasady dotyczące limitów.

<Identifier name="_default">
   <Class ref="request.header.classIdentifier">
     <Allow>200</Allow>
   </Class>
</Identifier>
Domyślny: Nie dotyczy
Obecność: Opcjonalny
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
ref

Odwołanie do zmiennej przepływu, która zawiera klasę limitów do zaktualizowania.

Nie dotyczy Opcjonalny

Dokumentacja błędów

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.resetquota.InvalidRLPolicy 500 The Quota policy specified in the <Quota> element of the Reset Quota policy is not defined in the API proxy and thus is not available during the flow. The <Quota> element is mandatory and identifies the target Quota policy whose counter should be updated through the Reset Quota policy.
policies.resetquota.FailedToResolveAllowCountRef N/A The reference to the variable containing the allow count in the <Allow> element of the policy cannot be resolved to a value. This element is mandatory and specifies the amount to decrease the quota counter.
policies.resetquota.FailedToResolveRLPolicy 500 The variable referenced by the ref attribute in the <Quota> element cannot be resolved.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCount If the count value specified in the <Allow> element of the Reset Quota Policy is not an integer, then the deployment of the API proxy fails.

Schematy

Powiązane artykuły

Zasady dotyczące limitów