Funktion in OCI Functions als API-Gateway-Backend hinzufügen

Erfahren Sie, wie Sie ein API-Deployment mit API Gateway erstellen, das in OCI Functions definierte serverlose Funktionen bereitstellt.

Häufig ist es erforderlich, eine API mit serverlosen Funktionen als Backend zu erstellen, sowie ein API-Gateway, das Frontend-Zugriff auf diese Funktionen gewährt.

Mit OCI Functions können Sie serverlose Funktionen erstellen, die als Docker-Images erstellt und per Push an eine angegebene Docker Registry übergeben werden. Eine Definition der einzelnen Funktionen wird als Metadaten auf dem OCI Functions-Server gespeichert. Wenn eine Funktion zum ersten Mal aufgerufen wird, ruft OCI Functions das Docker-Image der Funktion aus der angegebenen Docker Registry ab, führt es als Docker-Container aus und führt die Funktion aus. Wenn weitere Anforderungen an dieselbe Funktion vorhanden sind, leitet OCI Functions diese Anforderungen an denselben ausgeführten Container weiter. Nach einer Zeit des Leerlaufs wird der Docker-Container gestoppt.

Mit dem API-Gateway-Service können Sie ein API-Deployment erstellen, das in OCI Functions definierte serverlose Funktionen aufruft.

Vor der Verwendung von serverlosen Funktionen in OCI Functions als Backend für eine API müssen Sie Folgendes beachten:

Sie können serverlose Funktions-Backends zu einer API-Deployment-Spezifikation hinzufügen, indem Sie:

  • die Konsole verwenden
  • eine JSON-Datei bearbeiten

Serverlose Funktion in OCI Functions zur Verwendung als API-Gateway-Backend erstellen und bereitstellen

Um eine serverlose Funktion in OCI Functions zu erstellen, die aus einem API-Gateway aufgerufen werden kann, befolgen Sie die Anweisungen in der OCI Functions-Dokumentation, um:

  • Bestätigen Sie, dass Sie die erforderlichen Schritte für die Verwendung von OCI Functions abgeschlossen haben, wie unter Funktionen vorbereiten beschrieben.
  • Erstellen Sie die Funktion und stellen Sie sie in einem Compartment bereit, auf das API-Gateways Zugriff erhalten haben, wie unter Funktionen erstellen und bereitstellen beschrieben.

Mit der Konsole serverlose Funktions-Backends zu einer API-Deployment-Spezifikation hinzufügen

So fügen Sie mit der Konsole ein OCI Functions-Funktions-Backend 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 Authentifizierung die Authentifizierungsoptionen an.

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

  3. Erstellen Sie auf der Seite Routen eine neue Route, und geben Sie Folgendes an:

    • Pfad: Einen Pfad zum Backend-Service für API-Aufrufe, die die aufgeführten Methoden verwenden. Beachten Sie, dass der von Ihnen angegebene Routenpfad:

    • Methoden: Eine oder mehrere Methoden, die vom Backend-Service akzeptiert werden. Beispiel: GET, PUT.
    • Ein einzelnes Backend hinzufügen oder Mehrere Backends hinzufügen: Gibt an, ob alle Anforderungen an dasselbe Backend weitergeleitet oder Anforderungen entsprechend der eingegebenen Kontextvariable und Regeln an verschiedene Backends weitergeleitet werden sollen.

      Bei diesen Anweisungen wird davon ausgegangen, dass Sie ein einzelnes Backend verwenden möchten. Wählen Sie daher Ein einzelnes Backend hinzufügen aus. Wenn Sie alternativ andere Backends verwenden möchten, wählen Sie Mehrere Backends hinzufügen aus, und befolgen Sie die Anweisungen unter Dynamische Backend-Auswahl mit der Konsole zu einer API-Deployment-Spezifikation hinzufügen.

    • Backend-Typ: Den Typ des Backend-Service als Oracle Functions.
    • Anwendung in <compartment-name>: Der Name der Anwendung in OCI Functions, die diese Funktion enthält. Sie können eine Anwendung aus einem anderen Compartment auswählen.
    • Funktionsname: Den Namen der Funktion in OCI Functions.

    In diesem Beispiel definiert die Route eine einfache serverlose "Hello World"-Funktion in OCI Functions als einzelnes Backend.

    Feld: Eingeben:
    Pfad: /hello
    Methoden: GET
    Backend-Typ: Oracle Functions
    Anwendung in <compartment-name>: acmeapp
    Funktionsname: acme-func
  4. (Optional) Wählen Sie Weitere Route aus, um Details zusätzlicher Routen einzugeben.
  5. Wählen Sie Weiter aus, um die Details zu prüfen, die Sie für das API-Deployment eingegeben haben.
  6. Wählen Sie Erstellen oder Änderungen speichern aus, um das API-Deployment zu erstellen oder zu aktualisieren.
  7. (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).

    Wenn die serverlose Funktion Parameter akzeptiert, nehmen Sie diese in den Aufruf an die API auf. Beispiel:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"

JSON-Datei zum Hinzufügen von serverlosen Funktions-Backends zu einer API-Deployment-Spezifikation bearbeiten

So fügen Sie ein OCI Functions-Funktions-Backend zu einer API-Deployment-Spezifikation in einer JSON-Datei hinzu:

  1. Erstellen Sie mit Ihrem bevorzugten JSON-Editor die API-Deployment-Spezifikation in einer JSON-Datei in folgendem Format:

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "<identifier>"
          },
          "requestPolicies": {}
        }
      ]
    }

    Dabei gilt:

    • "requestPolicies" gibt optionale Policys an, mit denen das Verhalten eines API-Deployments gesteuert wird. Wenn Sie Policys auf alle Routen in einer API-Deployment-Spezifikation anwenden möchten, platzieren Sie die Policys außerhalb des routes-Abschnitts. Wenn Sie Policys nur auf eine bestimmte Route anwenden möchten, platzieren Sie die Policys innerhalb des routes-Abschnitts. Siehe Anforderungs-Policys und Antwort-Policys zu API-Deployment-Spezifikationen hinzufügen.
    • <api-route-path> gibt einen Pfad zum Backend-Service für API-Aufrufe an, die die aufgeführten Methoden verwenden. Beachten Sie, dass der von Ihnen angegebene Routenpfad:

    • <method-list> gibt eine oder mehrere Methoden, die vom Backend-Service akzeptiert werden, durch Komma getrennt an. Beispiel: "GET, PUT".
    • <identifier> gibt die OCID der Funktion an, die als Backend-Service verwendet werden soll. Beispiel: "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq".

    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. Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
  3. 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.

  4. (Optional) Bestätigen Sie, dass die API bereitgestellt wurde und dass die serverlose Funktion in OCI Functions erfolgreich aufgerufen werden kann, indem Sie die API aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).

    Wenn die serverlose Funktion Parameter akzeptiert, nehmen Sie diese in den Aufruf an die API auf. Beispiel:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"