Gespreksfrequentie per sleutel beperken
VAN TOEPASSING OP: Ontwikkelaar | Basic | Basic v2 | Standaard | Standard v2 | Premie
Het rate-limit-by-key
beleid voorkomt pieken in API-gebruik per sleutel door de aanroepsnelheid te beperken tot een opgegeven nummer per opgegeven periode. De sleutel kan een willekeurige tekenreekswaarde hebben en wordt doorgaans opgegeven met behulp van een beleidsexpressie. Optionele incrementele voorwaarde kan worden toegevoegd om op te geven welke aanvragen moeten worden meegeteld voor de limiet. Wanneer deze aanroepsnelheid wordt overschreden, ontvangt de aanroeper een 429 Too Many Requests
antwoordstatuscode.
Zie Frequentielimieten en quota voor meer informatie over het verschil tussen frequentielimieten en quota .
Let op
Vanwege de gedistribueerde aard van de beperkingsarchitectuur is snelheidsbeperking nooit volledig nauwkeurig. Het verschil tussen geconfigureerde aanvragen en het werkelijke aantal toegestane aanvragen varieert op basis van aanvraagvolume en -frequentie, back-endlatentie en andere factoren.
Notitie
Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Om u te helpen dit beleid te configureren, biedt de portal een begeleide editor op basis van formulieren. Meer informatie over het instellen of bewerken van API Management-beleid.
Beleidsinstructie
<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"/>
Kenmerken
Kenmerk | Beschrijving | Vereist | Standaardinstelling |
---|---|---|---|
Oproepen | Het maximumaantal aanroepen dat is toegestaan voor de sleutelwaarde tijdens het tijdsinterval dat is opgegeven in de renewal-period . Beleidsexpressies zijn toegestaan. |
Ja | N.v.t. |
tellertoets | De sleutel die moet worden gebruikt voor het beleid voor frequentielimieten. Voor elke sleutelwaarde wordt één teller gebruikt voor alle bereiken waarop het beleid is geconfigureerd. Beleidsexpressies zijn toegestaan. | Ja | N.v.t. |
incrementele voorwaarde | De Boole-expressie die aangeeft of de aanvraag moet worden meegeteld voor de snelheid (true ). Beleidsexpressies zijn toegestaan. |
Nee | N.v.t. |
increment-count | Het getal waarmee de teller per aanvraag wordt verhoogd. Beleidsexpressies zijn toegestaan. | Nee | 1 |
verlengingsperiode | De lengte in seconden van het schuifvenster waarin het aantal toegestane aanvragen niet groter mag zijn dan de waarde die is opgegeven in calls . Maximaal toegestane waarde: 300 seconden. Beleidsexpressies zijn toegestaan. |
Ja | N.v.t. |
naam na koptekst opnieuw proberen | De naam van een aangepaste antwoordheader waarvan de waarde het aanbevolen interval voor opnieuw proberen is in seconden nadat de opgegeven aanroepsnelheid is overschreden voor de sleutelwaarde. Beleidsexpressies zijn niet toegestaan. | Nee | Retry-After |
naam na variabele opnieuw proberen | De naam van een beleidsexpressievariabele waarin het aanbevolen interval voor opnieuw proberen in seconden wordt opgeslagen nadat de opgegeven aanroepsnelheid is overschreden voor de sleutelwaarde. Beleidsexpressies zijn niet toegestaan. | Nee | N.v.t. |
resterende aanroepen-header-naam | De naam van een antwoordheader waarvan de waarde na elke beleidsuitvoering het aantal resterende aanroepen is dat is toegestaan voor de sleutelwaarde in het tijdsinterval dat is opgegeven in de renewal-period . Beleidsexpressies zijn niet toegestaan. |
Nee | N.v.t. |
resterende aanroepen-variabele-naam | De naam van een beleidsexpressievariabele die na elke beleidsuitvoering het aantal resterende aanroepen opslaat dat is toegestaan voor de sleutelwaarde in het tijdsinterval dat is opgegeven in de renewal-period . Beleidsexpressies zijn niet toegestaan. |
Nee | N.v.t. |
total-calls-header-name | De naam van een antwoordheader waarvan de waarde de waarde is die is opgegeven in calls . Beleidsexpressies zijn niet toegestaan. |
Nee | N.v.t. |
Gebruik
- Beleidssecties: inkomend
- Beleidsbereik: globaal, werkruimte, product, API, bewerking
- Gateways: klassiek, v2, zelf-hostend, werkruimte
Gebruiksnotities
- API Management gebruikt één teller voor elke
counter-key
waarde die u in het beleid opgeeft. De teller wordt bijgewerkt op alle bereiken waarop het beleid is geconfigureerd met die sleutelwaarde. Als u afzonderlijke tellers wilt configureren voor verschillende bereiken (bijvoorbeeld een specifieke API of een specifiek product), geeft u verschillende sleutelwaarden op voor de verschillende bereiken. Voeg bijvoorbeeld een tekenreeks toe waarmee het bereik wordt geïdentificeerd aan de waarde van een expressie. - Frequentielimietaantallen in een zelf-hostende gateway kunnen worden geconfigureerd om lokaal te synchroniseren (tussen gateway-exemplaren tussen clusterknooppunten), bijvoorbeeld via implementatie van Helm-grafieken voor Kubernetes of met behulp van de Azure Portal-implementatiesjablonen. Frequentielimieten worden echter niet gesynchroniseerd met andere gatewayresources die zijn geconfigureerd in het API Management-exemplaar, inclusief de beheerde gateway in de cloud. Meer informatie
Opmerking
In het volgende voorbeeld wordt de frequentielimiet van 10 aanroepen per 60 seconden bepaald door het IP-adres van de beller. Na elke beleidsuitvoering worden de resterende aanroepen die zijn toegestaan voor dat aanroeper-IP-adres in de periode opgeslagen in de variabele 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>
Zie Geavanceerde aanvraagbeperking met Azure API Management voor meer informatie en voorbeelden van dit beleid.
Gerelateerd beleid
Gerelateerde inhoud
Zie voor meer informatie over het werken met beleid:
- Zelfstudie: Uw API transformeren en beveiligen
- Beleidsreferentie voor een volledige lijst met beleidsinstructies en hun instellingen
- Beleidsexpressies
- Beleid instellen of bewerken
- Beleidsconfiguraties opnieuw gebruiken
- Beleidsfragmentenopslagplaats
- Beleid ontwerpen met Behulp van Microsoft Copilot in Azure