Anzahl von Anforderungen an API-Gateway-Backends begrenzen

Erfahren Sie, wie Sie mit einer Anforderungs-Policy die Anzahl von Anforderungen begrenzen, die mit API Gateway an Backend-Services gesendet werden.

Nachdem Sie ein API-Gateway erstellt und APIs darin bereitgestellt haben, möchten Sie wahrscheinlich die Rate begrenzen, mit der API-Clients Anforderungen an Backend-Services stellen können. Beispielsweise um:

  • High Availability und den angemessenen Einsatz von Ressourcen zu gewährleisten, indem Sie Backends vor zu vielen Anforderungen schützen
  • Denial-of-Service-Angriffe zu verhindern
  • die Kosten der Ressourcennutzung einzuschränken
  • die Nutzung von APIs durch die Benutzer Ihrer Kunden einzuschränken, um APIs zu monetarisieren

Sie wenden einen Ratengrenzwert global auf alle Routen in einer API-Deployment-Spezifikation an.

Wenn eine Anforderung abgelehnt wird, weil der Ratengrenzwert überschritten wurde, gibt der Antwortheader an, wann die Anforderung wiederholt werden kann.

Sie verwenden eine Anforderungs-Policy, um die Anzahl der Anforderungen zu begrenzen (siehe Anforderungs-Policys und Antwort-Policys zu API-Deployment-Spezifikationen hinzufügen).

Sie können einer API-Deployment-Spezifikation eine Anforderungs-Policy zur Ratenbegrenzung hinzufügen, indem Sie:

  • die Konsole verwenden
  • eine JSON-Datei bearbeiten

Anforderungs-Policys zur Ratenbegrenzung mit der Konsole hinzufügen

So fügen Sie mit der Konsole einer API-Deployment-Spezifikation eine Anforderungs-Policy zur Ratenbegrenzung hinzu:

  1. Erstellen oder aktualisieren Sie ein API-Deployment mit der Konsole, wählen Sie die Option Völlig neu aus, und geben Sie auf der Seite Basisinformationen Details ein.

    Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployment in einem API-Gateway bereitstellen und API-Gateway aktualisieren.

  2. Wählen Sie auf der Seite Basisinformationen im Abschnitt API-Anforderungs-Policys die Schaltfläche Hinzufügen neben Ratenbegrenzung aus, und geben Sie:

    • Anzahl von Anforderungen pro Sekunde: Die maximale Anzahl von Anforderungen pro Sekunde, die an das API-Deployment gesendet werden.
    • Typ der Ratenbegrenzung: Wie der Schwellenwert für die maximale Anzahl von Anforderungen pro Sekunde angewendet wird. Sie können angeben, dass der Höchstwert entweder für die Anzahl der Anforderungen gelten soll, die von einem API-Client (durch die zugehörige IP-Adresse identifiziert) gesendet werden, oder für die Gesamtanzahl der Anforderungen, die von allen API-Clients gesendet werden.
  3. Wählen Sie Änderungen speichern aus.

  4. Wählen Sie Weiter aus, und geben Sie Authentifizierungsoptionen auf der Seite Authentifizierung an.

    Weitere Informationen zu Authentifizierungsoptionen finden Sie unter Hinzufügen von Authentifizierung und Autorisierung zu API-Deployments.

  5. Wählen Sie Weiter aus, um Details zu einzelnen Routen im API-Deployment auf der Seite Routen einzugeben. Beachten Sie, dass Sie keine Policys zur Ratenbegrenzung auf einzelne Routen in der API-Deployment-Spezifikation anwenden können.

  6. Wählen Sie Weiter aus, um die Details zu prüfen, die Sie für das API-Deployment eingegeben haben.
  7. Wählen Sie Erstellen oder Änderungen speichern aus, um das API-Deployment zu erstellen oder zu aktualisieren.
  8. (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).

JSON-Datei zum Hinzufügen von Anforderungs-Policys zur Ratenbegrenzung bearbeiten

So fügen Sie eine Anforderungs-Policy zur Ratenbegrenzung zu einer API-Deployment-Spezifikation in einer JSON-Datei hinzu:

  1. Bearbeiten Sie mit Ihrem bevorzugten JSON-Editor die vorhandene API-Deployment-Spezifikation, der Sie einen Anforderungsgrenzwert hinzufügen möchten, oder erstellen Sie eine neue API-Deployment-Spezifikation (siehe API-Deployment-Spezifikation erstellen).

    Beispiel: Die folgende Basisspezifikation für das API-Deployment definiert eine einfache serverlose Hello World-Funktion in OCI Functions als einzelnes Backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Fügen Sie, falls noch nicht vorhanden, einen requestPolicies-Abschnitt vor dem routes-Abschnitt ein. Beispiel:

    {
      "requestPolicies": {},													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  3. Fügen Sie die folgende rateLimiting-Policy zum neuen requestPolicies-Abschnitt hinzu, um sie auf alle in der Spezifikation definierten Routen anzuwenden:

    {
      "requestPolicies": {
        "rateLimiting": {
          "rateKey": "<ratekey-value>",
          "rateInRequestsPerSecond": <requests-per-second>
        }
      },													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }

    Dabei gilt:

    • <ratekey-value> gibt an, ob der Schwellenwert für die maximale Anzahl von Anforderungen für die Anzahl von Anforderungen von einzelnen API-Clients (durch die zugehörige IP-Adresse identifiziert) gilt oder für die Gesamtanzahl von Anforderungen, die an den Backend-Service gesendet werden. Gültige Werte sind CLIENT_IP und TOTAL.
    • <requests-per-second> ist die maximale Anzahl von Anforderungen pro Sekunde, die an das API-Deployment gesendet werden.

    Beispiel:

    {
      "requestPolicies": {
        "rateLimiting": {
          "rateKey": "CLIENT_IP",
          "rateInRequestsPerSecond": 10
        }
      },													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  4. Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
  5. Verwenden Sie die API-Deployment-Spezifikation, wenn Sie ein API-Deployment wie folgt erstellen oder aktualisieren:

    • Durch Angabe der JSON-Datei in der Konsole bei Auswahl der Option Vorhandene API hochladen
    • Durch Angabe der JSON-Datei in einer Anforderung an die REST-API von API-Gateway

    Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployment in einem API-Gateway bereitstellen und API-Gateway aktualisieren.

  6. (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).