Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premium | Premium, wersja 2
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ą liczbą dozwolonych żądań a rzeczywistą liczbą różni się w zależności od liczby żądań i szybkości, opóźnienia zaplecza 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, ale odroczyć akcje oceny i licznika przyrostu na koniec potoku wychodzącego. |
Nie. | Nie dotyczy |
| increment-count | Liczba, za pomocą której licznik jest zwiększany na żądanie. Wyrażenia zasad są dozwolone, ale odroczyć ocenę i przyrost licznika na koniec potoku wychodzącego. | 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-periodobiekcie . 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 callspliku . 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-keywartoś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. - Poziomy v2 wykorzystują algorytm typu token bucket do ograniczania szybkości, który różni się od algorytmu okna przesuwnego w klasycznych poziomach. Ze względu na tę różnicę w implementacji, konfigurując tę politykę w tierach v2 w więcej niż jednym zakresie i używając tej samej
counter-keywartości, upewnij się, żerenewal-periodwartości icallssą spójne we wszystkich instancjach polityki. Niespójne wartości mogą powodować nieprzewidywalne zachowania. - 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
- Te zasady śledzą wywołania niezależnie w każdej bramie, w której jest ona stosowana, w tym bramy obszaru roboczego i bramy regionalne we wdrożeniu w wielu regionach. Nie agreguje danych wywołań w całym wystąpieniu.
- Gdy
increment-conditionlubincrement-countsą zdefiniowane przy użyciu wyrażeń, ocena i przyrost licznika limitu szybkości są odroczone na końcu potoku ruchu wychodzącego, aby umożliwić wyrażenia zasad na podstawie odpowiedzi. Przekroczono limit warunku nie jest obliczany w tym samym czasie w tym przypadku i zostanie oceniony przy następnym wywołaniu przychodzącym. Prowadzi to do przypadków, w których429 Too Many Requestskod stanu jest zwracany 1 wywołanie później niż zwykle.
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
- Repozytorium placu zabaw zasad
- Zestaw narzędzi zasad usługi Azure API Management
- Zyskaj wsparcie Copilot w tworzeniu, wyjaśnianiu i rozwiązywaniu problemów z zasadami