Ograniczanie liczby wywołań według subskrypcji
DOTYCZY: Wszystkie warstwy usługi API Management
Zasady rate-limit
uniemożliwiają skoki użycia interfejsu API dla poszczególnych subskrypcji przez ograniczenie liczby wywołań do określonej liczby na określony okres. Po przekroczeniu szybkości wywołania obiekt wywołujący otrzymuje 429 Too Many Requests
kod stanu odpowiedzi.
Aby zrozumieć różnicę między limitami szybkości i limitami przydziałów, zobacz Limity szybkości i limity przydziału.
Uwaga
Ze względu na rozproszony charakter architektury ograniczania przepustowości ograniczanie szybkości nigdy nie jest całkowicie dokładne. Różnica między skonfigurowaną a rzeczywistą liczbą dozwolonych żądań różni się w zależności od liczby i szybkości żądań, opóźnienia wewnętrznej baza danych i innych czynników.
Uwaga
Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<rate-limit calls="number" renewal-period="seconds" retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name">
<api name="API name" id="API id" calls="number" renewal-period="seconds" >
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</rate-limit>
Atrybuty
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
Wywołania | Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period . Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
okres odnowienia | Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls . Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
retry-after-header-name | Nazwa niestandardowego nagłówka odpowiedzi, którego wartość jest zalecanym interwałem ponawiania prób w sekundach po przekroczeniu określonej liczby wywołań. Wyrażenia zasad nie są dozwolone. | Nie. | Retry-After |
retry-after-variable-name | Nazwa zmiennej, która przechowuje zalecany interwał ponawiania prób w sekundach po przekroczeniu określonej liczby wywołań. Wyrażenia zasad nie są dozwolone. | Nie. | Nie dotyczy |
remaining-calls-header-name | Nazwa nagłówka odpowiedzi, którego wartość po każdym wykonaniu zasad jest liczbą pozostałych wywołań dozwolonych dla przedziału czasu określonego w obiekcie renewal-period . Wyrażenia zasad nie są dozwolone. |
Nie. | Nie dotyczy |
remaining-calls-variable-name | Nazwa zmiennej, która po każdym wykonaniu zasad przechowuje liczbę pozostałych wywołań dozwolonych dla przedziału czasu określonego w obiekcie renewal-period . Wyrażenia zasad nie są dozwolone. |
Nie. | Nie dotyczy |
total-calls-header-name | Nazwa nagłówka odpowiedzi, którego wartość jest wartością określoną w calls pliku . Wyrażenia zasad nie są dozwolone. |
Nie. | Nie dotyczy |
Elementy
Element | opis | Wymagania |
---|---|---|
api | Dodaj co najmniej jeden z tych elementów, aby narzucić limit liczby wywołań interfejsom API w ramach produktu. Limity szybkości wywołań produktu i interfejsu API są stosowane niezależnie. Do interfejsu API można odwoływać się za pośrednictwem metody name lub id . Jeśli podano oba atrybuty, id zostaną użyte i name zostaną zignorowane. |
Nie. |
rozdzielnicy | Dodaj co najmniej jeden z tych elementów, aby narzucić limit liczby wywołań dla operacji w interfejsie API. Limity szybkości wywołań produktu, interfejsu API i operacji są stosowane niezależnie. Do operacji można odwoływać się za pośrednictwem metody name lub id . Jeśli podano oba atrybuty, id zostaną użyte i name zostaną zignorowane. |
Nie. |
atrybuty interfejsu API
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
name | Nazwa interfejsu API, dla którego ma być stosowany limit szybkości. | id Albo name musi być określony. |
Nie dotyczy |
identyfikator | Identyfikator interfejsu API, dla którego ma być stosowany limit szybkości. | id Albo name musi być określony. |
Nie dotyczy |
Wywołania | Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period . Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
okres odnowienia | Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls . Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
atrybuty operacji
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
name | Nazwa operacji, dla której ma być stosowany limit szybkości. | id Albo name musi być określony. |
Nie dotyczy |
identyfikator | Identyfikator operacji, dla której ma być stosowany limit szybkości. | id Albo name musi być określony. |
Nie dotyczy |
Wywołania | Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period . Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
okres odnowienia | Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls . Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. |
Tak | Nie dotyczy |
Użycie
- Sekcje zasad: ruch przychodzący
- Zakresy zasad: produkt, interfejs API, operacja
- Bramy: klasyczne, v2, zużycie, self-hosted, obszar roboczy
Uwagi dotyczące użycia
- Te zasady mogą być używane tylko raz na definicję zasad.
- Te zasady są stosowane tylko wtedy, gdy dostęp do interfejsu API jest uzyskiwany przy użyciu klucza subskrypcji.
- Liczbę limitów szybkości w bramie hostowanej samodzielnie można skonfigurować do synchronizowania lokalnie (między wystąpieniami bramy między węzłami klastra), na przykład za pomocą wdrożenia wykresu helm dla platformy Kubernetes lub szablonów wdrażania w witrynie Azure Portal. Jednak liczby limitów szybkości nie są synchronizowane z innymi zasobami bramy skonfigurowanymi w wystąpieniu usługi API Management, w tym z bramą zarządzaną w chmurze. Dowiedz się więcej
Przykład
W poniższym przykładzie limit liczby wywołań na subskrypcję wynosi 20 wywołań na 90 sekund. Po każdym wykonaniu zasad pozostałe wywołania dozwolone w okresie są przechowywane w zmiennej remainingCallsPerSubscription
.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Powiązane zasady
Powiązana zawartość
Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz:
- Samouczek: przekształcanie i ochrona interfejsu API
- Dokumentacja zasad dla pełnej listy instrukcji zasad i ich ustawień
- Wyrażenia zasad
- Ustawianie lub edytowanie zasad
- Ponowne używanie konfiguracji zasad
- Repozytorium fragmentów zasad
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot na platformie Azure