Anforderungs-Policys und Antwort-Policys zu API-Deployment-Spezifikationen hinzufügen

Erfahren Sie, wie Sie das Verhalten von API-Deployments steuern können, indem Sie Anforderungs- und Antwort-Policys zu API-Spezifikationen hinzufügen, die Sie zuvor mit API Gateway erstellt haben.

Sie können das Verhalten eines API-Deployments, das Sie in einem API-Gateway erstellen, steuern, indem Sie der API-Deployment-Spezifikation Anforderungs- und Antwort-Policys hinzufügen:

  • Eine Anforderungs-Policy beschreibt Aktionen, die für eine eingehende Anforderung von einem API-Client durchgeführt werden, bevor diese an ein Backend gesendet wird.
  • Eine Antwort-Policy beschreibt Aktionen, die für eine von einem Backend zurückgegebene Antwort durchgeführt werden, bevor diese an einen API-Client gesendet wird

Mit Anforderungs-Policys und/oder Antwort-Policys können Sie:

  • die Anzahl von Anforderungen begrenzen, die an Backend-Services gesendet werden
  • CORS-(Cross-Origin Resource Sharing-)Support aktivieren
  • Authentifizierung und Autorisierung bereitstellen
  • mTLS-Unterstützung hinzufügen
  • Anforderungen validieren, bevor sie an Backend-Services gesendet werden
  • eingehende Anforderungen und ausgehende Antworten ändern
  • Cacheantworten, um die Performance zu verbessern und die Belastung von Backend-Services zu reduzieren
  • API-Deployments für die Aufnahme in Nutzungspläne zur Überwachung und Verwaltung des Abonnentenzugriffs qualifizieren

Sie können einer API-Deployment-Spezifikation Policys hinzufügen, die global für alle Routen in der API-Deployment-Spezifikation gelten, sowie Policys, die nur für bestimmte Routen gelten.

Hinweis: API Gateway-Anforderungs-Policys und -Antwort-Policys unterscheiden sich von IAM-Policys, die den Zugriff auf Oracle Cloud Infrastructure-Ressourcen steuern.

Sie können Anforderungs- und Antwort-Policys zu einer API-Deployment-Spezifikation hinzufügen, indem Sie:

  • die Konsole verwenden
  • eine JSON-Datei bearbeiten

Anforderungs-Policys und Antwort-Policys mit der Konsole hinzufügen

So fügen Sie mit der Konsole Anforderungs- und Antwort-Policys zu einer API-Deployment-Spezifikation 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. Geben Sie auf der Seite Basisinformationen im Abschnitt API-Anforderungs-Policys Anforderungs-Policys an, die global für alle Routen in der API-Deployment-Spezifikation gelten:

    • Gegenseitig-TLS: Eine Policy zur Kontrolle des Zugriffs auf APIs, die Sie in API-Gateways bereitstellen, basierend auf dem TLS-Zertifikat, das der API-Client vorlegt, der eine Anforderung stellt. Sie können eine mTLS-Policy nur global auf alle Routen in der API-Deployment-Spezifikation (und nicht auf einzelne Routen) anwenden. Siehe mTLS-Support zu API-Deployments hinzufügen.
    • CORS: Eine Policy zur Aktivierung von CORS-Support in den APIs, die Sie in API-Gateways bereitstellen. Sie können auch CORS-Policys angeben, die für einzelne Routen in der API-Deployment-Spezifikation gelten (die vorausgehende Eingabe einer globalen CORS-Policy ist nicht erforderlich). Siehe CORS-Support zu API-Deployments hinzufügen.
    • Ratenbegrenzung: Eine Policy zur Begrenzung der Rate, mit der API-Clients Anforderungen an Backend-Services stellen können. Sie können eine ratenbegrenzende Policy nur global auf alle Routen in der API-Deployment-Spezifikation anwenden (und nicht auf einzelne Routen). Siehe Anzahl von Anforderungen an API-Gateway-Backends begrenzen.
  3. Wählen Sie Weiter aus, um Optionen zum Definieren einer globalen Authentifizierungsanforderungs-Policy auf der Seite Authentifizierung anzugeben.

    Die Authentifizierungsanforderungs-Policy steuert den Zugriff auf die APIs, die Sie in API-Gateways bereitstellen. Nachdem Sie eine globale Authentifizierungs-Policy angegeben haben, können Sie Autorisierungs-Policys angeben, die für einzelne Routen in der API-Deployment-Spezifikation gelten sollen. Siehe Authentifizierung und Autorisierung zu API-Deployments hinzufügen.

  4. Wählen Sie Weiter aus, um Details zu einzelnen Routen im API-Deployment auf der Seite Routen einzugeben.

  5. Um Anforderungs-Policys anzugeben, die für eine einzelne Route gelten sollen, wählen Sie Routenanforderungs-Policys anzeigen aus, und geben Sie Folgendes an:

  6. Um Antwort-Policys anzugeben, die für eine einzelne Route gelten, wählen Sie Routenantwort-Policys einblenden aus, und geben Sie Folgendes an:

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

Anforderungs-Policys und Antwort-Policys durch Bearbeiten einer JSON-Datei hinzufügen

So fügen Sie Anforderungs- und Antwort-Policys 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 eine Anforderungs- oder Antwort-Policy hinzufügen möchten, oder erstellen Sie eine neue API-Deployment-Spezifikation (siehe API-Deployment-Spezifikation erstellen).

    Die API-Deployment-Spezifikation beinhaltet zumindest einen routes-Abschnitt, der Folgendes enthält:

    • Einen Pfad. Beispiel: /hello
    • Mindestens eine Methode. Beispiel: GET
    • Eine Definition eines Backends. Beispiel: Eine URL oder die OCID einer Funktion in OCI Functions.

    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. So fügen Sie eine Anforderungs-Policy hinzu, die global für alle Routen in der API-Deployment-Spezifikation gelten soll:

    1. Fügen Sie 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"
            }
          }
        ]
      }
    2. Nehmen Sie eine Anforderungs-Policy in den requestPolicies-Abschnitt auf.

      Beispiel: Um die Anzahl der Anforderungen zu begrenzen, die an alle Routen in einer API-Deployment-Spezifikation gesendet werden, nehmen Sie die rateLimiting-Policy folgendermaßen in den requestPolicies-Abschnitt auf:

      {
        "requestPolicies": {
          "rateLimiting": {
            "rateKey": "CLIENT_IP",
            "rateInRequestsPerSecond": 10
          }
        },
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            }
          }
        ]
      }

      Weitere Informationen zur rateLimiting-Anforderungs-Policy finden Sie unter Anzahl von Anforderungen an API-Gateway-Backends begrenzen.

  3. So fügen Sie eine Anforderungs-Policy hinzu, die für eine einzelne Route in der API-Deployment-Spezifikation gelten soll:

    1. Fügen Sie einen requestPolicies-Abschnitt nach dem backend-Abschnitt der Route ein. Beispiel:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {}
          }
        ]
      }
    2. Nehmen Sie eine Anforderungs-Policy in den requestPolicies-Abschnitt auf.

      Beispiel: Um CORS-Support in einem API-Deployment für eine bestimmte Route zu aktivieren, nehmen Sie die cors-Policy folgendermaßen in den requestPolicies-Abschnitt auf:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {
              "cors":{
                 "allowedOrigins": ["*", "https://oracle.com"],
                 "allowedMethods": ["*", "GET"],
                 "allowedHeaders": [],
                 "exposedHeaders": [],
                 "isAllowCredentialsEnabled": false,
                 "maxAgeInSeconds": 3000
              }
            }
          }
        ]
      }

      Weitere Informationen zur cors-Anforderungs-Policy finden Sie unter CORS-Support zu API-Deployments hinzufügen.

  4. So fügen Sie eine Antwort-Policy hinzu, die für eine einzelne Route in der API-Deployment-Spezifikation gelten soll:

    1. Fügen Sie einen responsePolicies-Abschnitt nach dem backend-Abschnitt der Route ein. Beispiel:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "responsePolicies": {}
          }
        ]
      }
    2. Fügen Sie eine Antwort-Policy in den responsePolicies-Abschnitt ein.

      Beispiel: Um einen beliebigen X-Username-Header in der Antwort von einer bestimmten Route in X-User-ID umzubenennen, fügen Sie die headerTransformations-Policy wie folgt in den responsePolicies-Abschnitt ein:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "responsePolicies": {
              "headerTransformations": {
                "renameHeaders": {
                  "items": [
                    {
                      "from": "X-Username",
                      "to": "X-User-ID"
                    }
                  ]
                }
              }
            }
          }
        ]
      }

      Weitere Informationen zur headerTransformations-Antwort-Policy finden Sie unter Headertransformationsantwort-Policys durch Bearbeiten einer JSON-Datei hinzufügen.

  5. Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
  6. 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-Deployments in einem API-Gateway bereitstellen.