Aufrufrate nach Abonnement begrenzen

GILT FÜR: Alle API Management-Ebenen

Die rate-limit-Richtlinie verhindert API-Nutzungsspitzen auf Abonnementbasis, indem sie die Aufrufrate auf eine angegebene Anzahl pro angegebenem Zeitraum begrenzt. Wenn die 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. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienanweisung

<rate-limit calls="number" renewal-period="seconds"  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">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
calls Die maximale Gesamtanzahl von Aufrufen, die während des in renewal-period angegebenen Zeitraums zulässig sind Richtlinienausdrücke sind nicht zulässig. Ja
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 nicht zulässig. Ja
retry-after-header-name Der Name eines benutzerdefinierten Antwort-Headers, dessen Wert das empfohlene Wiederholungsintervall in Sekunden ist, nachdem die angegebene Anrufrate überschritten wurde. Richtlinienausdrücke sind nicht zulässig. No Retry-After
retry-after-variable-name Der Name einer Variablen, die das empfohlene Wiederholungsintervall in Sekunden speichert, nach dem die angegebene Aufrufrate überschritten wird. Richtlinienausdrücke sind nicht zulässig. Nein
remaining-calls-header-name Der Name einer Antwortheaders, dessen Wert nach jeder Richtlinienausführung die Anzahl der verbleibenden Aufrufe ist, die für den Zeitraum zulässig sind, der in renewal-period angegeben ist. Richtlinienausdrücke sind nicht zulässig. Nein
remaining-calls-variable-name Der Name einer Variablen, in der nach jeder Richtlinienausführung die Anzahl der verbleibenden Aufrufe gespeichert wird, die für den Zeitraum 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

Elemente

Element BESCHREIBUNG Erforderlich
api Fügen Sie mindestens eins dieser Elemente hinzu, um eine Aufrufratenbegrenzung für APIs innerhalb des Produkts zu erzwingen. Produkt- und API-Aufrufratenbegrenzungen werden unabhängig voneinander angewendet. Auf „api“ kann über name oder id verwiesen werden. Wenn beide Attribute bereitgestellt werden, wird id verwendet und name ignoriert. Nein
operation Fügen Sie mindestens eins dieser Elemente hinzu, um eine Aufrufratenbegrenzung auf Vorgänge innerhalb einer API zu erzwingen. Aufrufratenbegrenzungen für Produkte, APIs und Vorgänge werden unabhängig voneinander angewendet. Auf „operation“ kann über name oder id verwiesen werden. Wenn beide Attribute bereitgestellt werden, wird id verwendet und name ignoriert. Nein

API-Attribute

attribute BESCHREIBUNG Erforderlich Standard
name Der Name der API, auf die die Ratenbegrenzung angewendet werden soll. Es muss entweder name oder id angegeben werden.
id Die ID der API, auf die die Ratenbegrenzung angewendet werden soll. Es muss entweder name oder id angegeben werden.
calls Die maximale Gesamtanzahl von Aufrufen, die während des in renewal-period angegebenen Zeitraums zulässig sind Richtlinienausdrücke sind nicht zulässig. Ja
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 nicht zulässig. Ja

Vorgangsattribute

attribute BESCHREIBUNG Erforderlich Standard
name Der Name des Vorgangs, auf den die Ratenbegrenzung angewendet werden soll. Es muss entweder name oder id angegeben werden.
id Die ID des Vorgangs, auf den die Ratenbegrenzung angewendet werden soll. Es muss entweder name oder id angegeben werden.
calls Die maximale Gesamtanzahl von Aufrufen, die während des in renewal-period angegebenen Zeitraums zulässig sind Richtlinienausdrücke sind nicht zulässig. Ja
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 nicht zulässig. Ja

Verwendung

Hinweise zur Verwendung

  • Diese Richtlinie kann pro Richtliniendefinition nur einmal verwendet werden.
  • Diese Richtlinie wird nur angewendet, wenn mithilfe eines Abonnementschlüssels auf eine API zugegriffen wird.
  • 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 beträgt das Ratenlimit pro Abonnement 20 Aufrufe pro 90 Sekunden. Nach jeder Richtlinienausführung werden die verbleibenden Aufrufe, die im Zeitraum zulässig sind, in der Variablen remainingCallsPerSubscription gespeichert.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: