Aufrufrate nach Schlüssel begrenzen
GILT FÜR: Entwickler | Basic | Basic v2 | Standard | Standard v2 | Premium
Die rate-limit-by-key
-Richtlinie verhindert API-Nutzungsspitzen auf Schlüsselbasis, indem sie die Aufrufrate auf eine angegebene Anzahl pro angegebenem Zeitraum beschränkt. Der Schlüssel kann einen beliebigen Zeichenfolgenwert aufweisen und wird in der Regel über einen Richtlinienausdruck angegeben. Optional kann eine inkrementelle Bedingung hinzugefügt werden, um anzugeben, welche Anforderungen für den Grenzwert gezählt werden sollen. Wenn diese Aufrufrate überschritten wird, empfängt der Aufrufer einen 429 Too Many Requests
-Antwortstatuscode.
Informationen zu den Unterschieden zwischen Ratenbegrenzungen und Kontingenten finden Sie unter Ratenbegrenzungen und Kontingente.
Achtung
Da die Einschränkungsarchitektur verteilt ist, ist die Begrenzung der Rate nie ganz genau. Die Differenz zwischen der konfigurierten und der tatsächlichen Anzahl zugelassener Anforderungen variiert basierend auf Anforderungsvolumen und -rate, Back-End-Latenz und anderen Faktoren.
Hinweis
Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Das Portal unterstützt Sie bei der Konfiguration dieser Richtlinie durch einen formularbasierten, angeleiteten Editor. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.
Richtlinienanweisung
<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"/>
Attribute
Attribut | BESCHREIBUNG | Erforderlich | Standard |
---|---|---|---|
calls | Die maximale Gesamtanzahl von Aufrufen, die für den Schlüsselwert während des Zeitintervalls zulässig sind, der in renewal-period angegeben ist. Richtlinienausdrücke sind zulässig. |
Ja | – |
counter-key | Der Schlüssel, der für die Ratenbegrenzungsrichtlinie verwendet werden soll. Für jeden Schlüsselwert wird ein einzelner Indikator für alle Bereiche verwendet, in denen die Richtlinie konfiguriert ist. Richtlinienausdrücke sind zulässig. | Ja | – |
increment-condition | Dieser boolesche Ausdruck gibt an, ob die Anforderung auf die Ratenbegrenzung angerechnet werden soll (true ). Richtlinienausdrücke sind zulässig. |
Nein | – |
increment-count | Die Zahl, um die der Zähler pro Anforderung erhöht wird. Richtlinienausdrücke sind zulässig. | Nein | 1 |
renewal-period | Die Länge des gleitenden Fensters in Sekunden, in der die Anzahl zulässiger Anforderungen den in calls angegebenen Wert nicht überschreiten darf. Maximal zulässiger Wert: 300 Sekunden. Richtlinienausdrücke sind zulässig. |
Ja | – |
retry-after-header-name | Der Name eines benutzerdefinierten Antwortheaders, dessen Wert das empfohlene Wiederholungsintervall in Sekunden ist, nachdem die angegebene Anrufrate für den Schlüsselwert überschritten wurde. Richtlinienausdrücke sind nicht zulässig. | No | Retry-After |
retry-after-variable-name | Der Name einer Richtlinienausdrucksvariablen, die das empfohlene Wiederholungsintervall in Sekunden speichert, nachdem die angegebene Aufrufrate für den Schlüsselwert überschritten wurde. Richtlinienausdrücke sind nicht zulässig. | Nein | – |
remaining-calls-header-name | Der Name eines Antwortheaders, dessen Wert nach jeder Richtlinienausführung die Anzahl der verbleibenden Aufrufe ist, die für den Schlüsselwert in dem Zeitintervall zulässig sind, der in renewal-period angegeben ist. Richtlinienausdrücke sind nicht zulässig. |
Nein | – |
remaining-calls-variable-name | Der Name einer Richtlinienausdrucksvariablen, in der nach jeder Richtlinienausführung die Anzahl der verbleibenden Aufrufe gespeichert wird, die für den Schlüsselwert in dem Zeitintervall zulässig sind, der in renewal-period angegeben ist. Richtlinienausdrücke sind nicht zulässig. |
Nein | – |
total-calls-header-name | Der Name eines Antwortheaders, dessen Wert der in calls angegebene Wert ist. Richtlinienausdrücke sind nicht zulässig. |
Nein | – |
Verwendung
- Richtlinienabschnitte: inbound
- Richtlinienbereiche: global, Arbeitsbereich, Produkt, API, Vorgang
- Gateways: klassisch, v2, selbstgehostet, Arbeitsbereich
Hinweise zur Verwendung
- API Management verwendet einen einzelnen Zähler für jeden
counter-key
-Wert, den Sie in der Richtlinie angeben. Der Zähler wird für alle Bereiche aktualisiert, für die die Richtlinie mit diesem Schlüsselwert konfiguriert ist. Wenn Sie für verschiedene Bereiche separate Zähler konfigurieren möchten (z. B. eine bestimmte API oder ein bestimmtes Produkt), geben Sie für die verschiedenen Bereiche unterschiedliche Schlüsselwerte an. Fügen Sie beispielsweise eine Zeichenfolge an, die den Bereich auf den Wert eines Ausdrucks festlegt. - Ratengrenzwerte in einem selbstgehosteten Gateway können so konfiguriert werden, dass sie lokal (zwischen Gatewayinstanzen über Clusterknoten hinweg) synchronisiert werden, z. B. über die Helm-Diagrammbereitstellung für Kubernetes oder mithilfe der Azure-Portal Bereitstellungsvorlagen. Ratengrenzwerte werden jedoch nicht mit anderen in der API Management-Instanz konfigurierten Gateway-Ressourcen synchronisiert, einschließlich des verwalteten Gateways in der Cloud. Weitere Informationen
Beispiel
Im folgenden Beispiel wird die Ratenbegrenzung von 10 Aufrufen pro 60 Sekunden anhand der IP-Adresse des Aufrufers bestimmt. Nach jeder Richtlinienausführung werden die verbleibenden Aufrufe, die in dem Zeitraum für diese aufrufende IP-Adresse zulässig sind, in der Variablen remainingCallsPerIP
gespeichert.
<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>
Weitere Informationen und Beispiele zu dieser Richtlinie finden Sie unter Erweiterte Anforderungsbegrenzung mit Azure API Management.
Verwandte Richtlinien
Zugehöriger Inhalt
Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier:
- Tutorial: Transformieren und Schützen Ihrer API
- Unter Richtlinien für die API-Verwaltung finden Sie eine komplette Liste der Richtlinienanweisungen und der zugehörigen Einstellungen.
- Richtlinienausdrücke
- Festlegen oder Bearbeiten von Richtlinien
- Wiederverwenden von Richtlinienkonfigurationen
- Repository für Richtliniencodeausschnitte
- Erstellen von Richtlinien mit Microsoft Copilot in Azure