Omezení četnosti volání podle klíče

PLATÍ PRO: Vývojář | Základní | Basic v2 | Standardní | Standard v2 | Prémie

Tato rate-limit-by-key zásada zabraňuje špičkám využití rozhraní API na klíč omezením četnosti volání na zadané číslo za zadané časové období. Klíč může mít libovolnou řetězcovou hodnotu a obvykle se zadává prostřednictvím výrazu zásad. K určení požadavků, které se mají počítat do limitu, je možné přidat volitelnou podmínku přírůstku. Při překročení této míry volání obdrží volající stavový 429 Too Many Requests kód odpovědi.

Pokud chcete porozumět rozdílu mezi limity sazeb a kvótami, přečtěte si téma Omezení rychlosti a kvóty.

Upozornění

Vzhledem k distribuované povaze architektury omezování není omezování rychlosti nikdy úplně přesné. Rozdíl mezi nakonfigurovaným a skutečným počtem povolených požadavků se liší v závislosti na objemu a četnosti požadavků, latenci back-endu a dalších faktorech.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Portál poskytuje průvodce editorem založeným na formulářích, který vám pomůže s konfigurací této zásady. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.

Prohlášení o zásadách

<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"/> 

Atributy

Atribut Popis Požaduje se Výchozí
volá Maximální celkový počet volání povolených pro hodnotu klíče během časového intervalu zadaného v sadě renewal-period. Výrazy zásad jsou povolené. Yes
counter-key Klíč, který se má použít pro zásady omezení rychlosti. Pro každou hodnotu klíče se pro všechny obory, ve kterých je zásada nakonfigurovaná, používá jeden čítač. Výrazy zásad jsou povolené. Yes
inkrementace podmínky Logický výraz určující, jestli se má požadavek počítat do sazby (true). Výrazy zásad jsou povolené. No
inkrement-count Číslo, o které se čítač zvýší na požadavek. Výrazy zásad jsou povolené. No 0
období prodloužení Délka v sekundách posuvného okna, během kterého by počet povolených požadavků neměl překročit hodnotu zadanou v calls. Maximální povolená hodnota: 300 sekund. Výrazy zásad jsou povolené. Yes
retry-after-header-name Název vlastní hlavičky odpovědi, jejíž hodnota je doporučený interval opakování v sekundách po překročení zadané četnosti volání pro hodnotu klíče. Výrazy zásad nejsou povolené. No Retry-After
retry-after-variable-name Název proměnné výrazu zásad, která ukládá doporučený interval opakování v sekundách po překročení zadané četnosti volání pro hodnotu klíče. Výrazy zásad nejsou povolené. No
remaining-calls-header-name Název hlavičky odpovědi, jejíž hodnota po každém spuštění zásady je počet zbývajících volání povolených pro hodnotu klíče v časovém intervalu zadaném renewal-periodv . Výrazy zásad nejsou povolené. No
remaining-calls-variable-name Název proměnné výrazu zásady, která po každém spuštění zásady ukládá počet zbývajících volání povolených pro hodnotu klíče v časovém intervalu zadaném renewal-periodv . Výrazy zásad nejsou povolené. No
total-calls-header-name Název hlavičky odpovědi, jejíž hodnota je hodnota zadaná v calls. Výrazy zásad nejsou povolené. No

Využití

Poznámky k využití

  • Služba API Management používá pro každou counter-key hodnotu, kterou zadáte v zásadách, jeden čítač. Čítač se aktualizuje ve všech oborech, ve kterých je zásada nakonfigurovaná s danou hodnotou klíče. Pokud chcete nakonfigurovat samostatné čítače v různých oborech (například konkrétní rozhraní API nebo produkt), zadejte různé hodnoty klíče v různých oborech. Připojte například řetězec, který identifikuje obor k hodnotě výrazu.
  • Počty omezení rychlosti v bráně v místním prostředí je možné nakonfigurovat tak, aby se synchronizovaly místně (mezi instancemi bran napříč uzly clusteru), například prostřednictvím nasazení chartu Helm pro Kubernetes nebo pomocí šablon nasazení webu Azure Portal. Počty omezení rychlosti se ale nesynchronizují s jinými prostředky brány nakonfigurovanými v instanci služby API Management, včetně spravované brány v cloudu. Další informace

Příklad

V následujícím příkladu je limit rychlosti 10 volání za 60 sekund klíčován IP adresou volajícího. Po každém spuštění zásad jsou zbývající volání povolená pro danou IP adresu volajícího v časovém období uložena v proměnné 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>

Další informace a příklady této zásady najdete v tématu Pokročilé omezování požadavků ve službě Azure API Management.

Další informace o práci se zásadami najdete v tématech: