Ogranicz szybkość wywołań według klucza
DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premia
Zasady rate-limit-by-key
uniemożliwiają skoki użycia interfejsu API dla poszczególnych kluczy przez ograniczenie liczby wywołań do określonej liczby w określonym przedziale czasu. Klucz może mieć dowolną wartość w postaci ciągu i jest zwykle określany przy użyciu wyrażenia zasad. Można dodać opcjonalny warunek przyrostu, aby określić, które żądania mają być liczone do limitu. Po przekroczeniu tego współczynnika wywołań obiekt wywołujący otrzyma 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. Aby ułatwić konfigurowanie tych zasad, portal udostępnia edytor oparty na formularzach z przewodnikiem. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<rate-limit-by-key calls="number"
renewal-period="seconds"
increment-condition="condition"
increment-count="number"
counter-key="key value"
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"/>
Atrybuty
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
Wywołania | Maksymalna całkowita liczba wywołań dozwolonych dla wartości klucza w przedziale czasu określonym w obiekcie renewal-period . Wyrażenia zasad są dozwolone. |
Tak | Nie dotyczy |
counter-key | Klucz do użycia dla zasad limitu szybkości. Dla każdej wartości klucza jest używany pojedynczy licznik dla wszystkich zakresów, w których skonfigurowano zasady. Wyrażenia zasad są dozwolone. | Tak | Nie dotyczy |
warunek przyrostowy | Wyrażenie logiczne określające, czy żądanie powinno być zliczane do szybkości (true ). Wyrażenia zasad są dozwolone. |
Nie. | Nie dotyczy |
increment-count | Liczba, za pomocą której licznik jest zwiększany na żądanie. Wyrażenia zasad są dozwolone. | Nie. | 1 |
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 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ń dla wartości klucza. Wyrażenia zasad nie są dozwolone. | Nie. | Retry-After |
retry-after-variable-name | Nazwa zmiennej wyrażenia zasad, która przechowuje zalecany interwał ponawiania prób w sekundach po przekroczeniu określonej liczby wywołań dla wartości klucza. 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 wartości klucza w interwale czasu określonym w renewal-period . Wyrażenia zasad nie są dozwolone. |
Nie. | Nie dotyczy |
remaining-calls-variable-name | Nazwa zmiennej wyrażenia zasad, która po każdym wykonaniu zasad przechowuje liczbę pozostałych wywołań dozwolonych dla wartości klucza w interwale czasu określonym w renewal-period obiekcie . 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 |
Użycie
- Sekcje zasad: ruch przychodzący
- Zakresy zasad: globalny, obszar roboczy, produkt, interfejs API, operacja
- Bramy: klasyczne, wersja 2, self-hosted, obszar roboczy
Uwagi dotyczące użycia
- Usługa API Management używa pojedynczego licznika dla każdej
counter-key
wartości określonej w zasadach. Licznik jest aktualizowany we wszystkich zakresach, w których zasady są skonfigurowane przy użyciu tej wartości klucza. Jeśli chcesz skonfigurować oddzielne liczniki w różnych zakresach (na przykład określony interfejs API lub produkt), określ różne wartości klucza w różnych zakresach. Na przykład dołącz ciąg identyfikujący zakres do wartości wyrażenia. - 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 szybkości 10 wywołań na 60 sekund jest kluczem przez adres IP obiektu wywołującego. Po każdym wykonaniu zasad pozostałe wywołania dozwolone dla tego adresu IP obiektu wywołującego w okresie są przechowywane w zmiennej remainingCallsPerIP
.
<policies>
<inbound>
<base />
<rate-limit-by-key calls="10"
renewal-period="60"
increment-condition="@(context.Response.StatusCode == 200)"
counter-key="@(context.Request.IpAddress)"
remaining-calls-variable-name="remainingCallsPerIP"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Aby uzyskać więcej informacji i przykłady tych zasad, zobacz Advanced request throttling with Azure API Management (Zaawansowane ograniczanie żądań za pomocą usługi Azure API Management).
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