Hívás sebességének korlátozása kulcs szerint
A KÖVETKEZŐKRE VONATKOZIK: Fejlesztő | Alapszintű | Alapszintű v2 | Standard | Standard v2 | Prémium | Prémium v2
A rate-limit-by-key
szabályzat megakadályozza az API-használat kulcsonkénti megugrását azáltal, hogy a hívási arányt egy megadott időszakra korlátozza. A kulcs tetszőleges sztringértékkel rendelkezhet, és általában egy szabályzatkifejezéssel adható meg. Az opcionális növekményes feltétel hozzáadható annak meghatározásához, hogy mely kérelmeket kell a korlátba beleszámítani. A hívási sebesség túllépésekor a hívó válaszállapot-kódot 429 Too Many Requests
kap.
A sebességkorlátok és a kvóták közötti különbség megértéséhez tekintse meg a sebességkorlátokat és a kvótákat.
Figyelemfelhívás
A szabályozási architektúra elosztott jellege miatt a sebességkorlátozás soha nem teljesen pontos. Az engedélyezett kérelmek konfigurált és valós száma közötti különbség a kérések mennyiségének és sebességének, a háttér késésének és egyéb tényezőknek megfelelően változik.
Feljegyzés
Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. A szabályzat konfigurálásához a portál egy irányított, űrlapalapú szerkesztőt biztosít. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.
Szabályzatutasítás
<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"/>
Attribútumok
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
Hívások | A kulcsértékhez engedélyezett hívások maximális száma a megadott időintervallumban renewal-period . A szabályzatkifejezések engedélyezettek. |
Igen | n/a |
számlálókulcs | A sebességkorlát-szabályzathoz használandó kulcs. Minden kulcsértékhez egyetlen számlálót használ a rendszer minden olyan hatókörhöz, amelyen a szabályzat konfigurálva van. A szabályzatkifejezések engedélyezettek. | Igen | n/a |
növekményes feltétel | A logikai kifejezés, amely megadja, hogy a kérést bele kell-e számolni a sebességbe (true ). A szabályzatkifejezések engedélyezettek, de elhalasztják a kiértékelési és számláló növekményes műveleteket a kimenő folyamat végére. |
Nem | N.A. |
növekményes szám | Az a szám, amellyel a számláló kérésenként növekszik. A szabályzatkifejezések engedélyezettek, de elhalasztják a kiértékelési és számlálói növekményt a kimenő folyamat végéig. | Nem | 0 |
megújítási időszak | A tolóablak másodpercben megadott hossza, amely során az engedélyezett kérelmek száma nem haladhatja meg a megadott calls értéket. Megengedett maximális érték: 300 másodperc. A szabályzatkifejezések engedélyezettek. |
Igen | n/a |
újrapróbálkozás a fejléc után | Annak az egyéni válaszfejlécnek a neve, amelynek értéke az ajánlott újrapróbálkozási időköz másodpercben, miután a kulcsértéknél túllépte a megadott hívási gyakoriságot. A szabályzatkifejezések nem engedélyezettek. | Nem | Retry-After |
újrapróbálkozó változó utáni név | Annak a szabályzatkifejezés-változónak a neve, amely másodpercekben tárolja az ajánlott újrapróbálkozási időközt a kulcsérték megadott hívási sebességének túllépése után. A szabályzatkifejezések nem engedélyezettek. | Nem | N.A. |
fennmaradó hívások-fejléc-név | Annak a válaszfejlécnek a neve, amelynek értéke az egyes szabályzatok végrehajtása után a kulcsértékhez engedélyezett hívások száma a megadott időintervallumban renewal-period . A szabályzatkifejezések nem engedélyezettek. |
Nem | N.A. |
fennmaradó hívások-változó neve | Annak a szabályzatkifejezés-változónak a neve, amely minden szabályzat végrehajtása után tárolja a kulcsértékhez engedélyezett hívások számát a megadott időintervallumban renewal-period . A szabályzatkifejezések nem engedélyezettek. |
Nem | N.A. |
total-calls-header-name | Annak a válaszfejlécnek a neve, amelynek értéke a megadott calls érték. A szabályzatkifejezések nem engedélyezettek. |
Nem | N.A. |
Használat
- Szabályzatszakaszok: bejövő
- Szabályzathatókörök: globális, munkaterület, termék, API, művelet
- Átjárók: klasszikus, v2, saját üzemeltetésű, munkaterület
Használati megjegyzések
- Az API Management egyetlen számlálót használ a szabályzatban megadott összes
counter-key
értékhez. A számláló minden olyan hatókörben frissül, ahol a szabályzat ezzel a kulcsértékkel van konfigurálva. Ha külön számlálókat szeretne konfigurálni különböző hatókörökben (például egy adott API-n vagy terméken), adjon meg különböző kulcsértékeket a különböző hatókörökben. Hozzáfűzhet például egy sztringet, amely azonosítja a hatókört egy kifejezés értékéhez. - A sebességkorlátok száma egy saját üzemeltetésű átjáróban konfigurálható helyi szinkronizálásra (a fürtcsomópontok közötti átjárópéldányok között), például a Helm-diagram Kubernetes-alapú üzembe helyezésével vagy az Azure Portal üzembe helyezési sablonjainak használatával. A sebességkorlátok száma azonban nem szinkronizálható az API Management-példányban konfigurált többi átjáróerőforrással, beleértve a felhőben lévő felügyelt átjárót is. További információ
- Ha
increment-condition
kifejezésekkel definiálják vagyincrement-count
definiálják, a sebességkorlát számlálójának kiértékelése és növelése a kimenő folyamat végére halasztva van, hogy lehetővé tegye a reponse-alapú szabályzatkifejezéseket. Ebben az esetben a korlátot túllépő feltétel kiértékelése nem történik meg egyszerre, és a következő bejövő hívás során lesz kiértékelve. Ez olyan esetekhez vezet, amikor429 Too Many Requests
az állapotkód a szokásosnál később 1 hívást ad vissza.
Példa
Az alábbi példában a 60 másodpercenkénti 10 hívás sebességkorlátját a hívó IP-címe határozza meg. Az egyes szabályzatok végrehajtása után az adott hívó IP-címére vonatkozó fennmaradó hívások az adott időszakban a változóban remainingCallsPerIP
lesznek tárolva.
<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>
A szabályzatra vonatkozó további információkért és példákért tekintse meg az Azure API Management speciális kérésszabályozását.
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban