Ogranicz szybkość wywołań według klucza

DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premium

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 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ń. 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ń. 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 wyrażenia zasad, 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 callspliku . Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy

Użycie

Uwagi dotyczące użycia

  • 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 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).

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: