Omezení četnosti volání podle klíče
PLATÍ PRO: Vývojář | Základní | Basic v2 | Standardní | Standard v2 | Premium | Premium v2
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-period v . 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-period v . 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í
- Oddíly zásad: příchozí
- Obory zásad: globální, pracovní prostor, produkt, rozhraní API, operace
- Brány: Classic, v2, v místním prostředí, pracovní prostor
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.
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- Sada nástrojů zásad služby Azure API Management
- Vytváření zásad pomocí Microsoft Copilotu v Azure