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:
- Serverlose Funktionen, die in der API-Deployment-Spezifikation referenziert wurden, müssen bereits in OCI Functions erstellt und bereitgestellt worden sein, Die Funktionen müssen aus dem VCN, das für das API-Gateway angegeben wurde, entweder über ein Internetgateway (bei einem öffentlichen API-Gateway) oder über ein Servicegateway (bei einem privaten API-Gateway) geroutet werden können. Die Funktionen müssen RFC-konforme HTTP-Statuscodes verwenden, um den Status zu kommunizieren. Siehe Funktionen erstellen und bereitstellen. Ein zugehöriges Entwicklertutorial finden Sie unter Funktionen: Funktion mit API-Gateway aufrufen.
Es müssen bereits entsprechende Policys vorhanden sein, mit denen folgenden Personen Zugriff auf in OCI Functions definierte serverlose Funktionen erteilt wird:
- Einer Gruppe, zu der Ihr Benutzerkonto gehört (siehe Policy erstellen, um API-Gateway-Benutzern Zugriff auf Funktionen zu erteilen)
- API-Gateways (siehe Policy erstellen, um API-Gateways Zugriff auf Funktionen zu erteilen).
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:
-
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.
-
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.
-
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:
- relativ zum Deployment-Pfadpräfix ist (siehe API durch das Erstellen eines API-Deployments in einem API-Gateway bereitstellen)
- einen Schrägstrich ( / ) vorangestellt haben muss. Es kann nur ein einzelner Schrägstrich verwendet werden
- mehrere Schrägstriche enthalten (sofern diese nicht aufeinander folgen) und mit einem Schrägstrich enden kann
- alphanumerische Zeichen in Großbuchstaben und Kleinbuchstaben enthalten kann
- die folgenden Sonderzeichen enthalten kann:
$ - _ . + ! * ' ( ) , % ; : @ & =
- Parameter und Platzhalter enthalten kann (siehe Pfadparameter und Platzhalter zu Routenpfaden hinzufügen)
- 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
-
- (Optional) Wählen Sie Weitere Route aus, um Details zusätzlicher Routen einzugeben.
- Wählen Sie Weiter aus, um die Details zu prüfen, die Sie für das API-Deployment eingegeben haben.
- Wählen Sie Erstellen oder Änderungen speichern aus, um das API-Deployment zu erstellen oder zu aktualisieren.
-
(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:
-
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 desroutes
-Abschnitts. Wenn Sie Policys nur auf eine bestimmte Route anwenden möchten, platzieren Sie die Policys innerhalb desroutes
-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:- relativ zum Deployment-Pfadpräfix ist (siehe API durch das Erstellen eines API-Deployments in einem API-Gateway bereitstellen)
- einen Schrägstrich ( / ) vorangestellt haben muss. Es kann nur ein einzelner Schrägstrich verwendet werden
- mehrere Schrägstriche enthalten (sofern diese nicht aufeinander folgen) und mit einem Schrägstrich enden kann
- alphanumerische Zeichen in Großbuchstaben und Kleinbuchstaben enthalten kann
- die folgenden Sonderzeichen enthalten kann:
$ - _ . + ! * ' ( ) , % ; : @ & =
- Parameter und Platzhalter enthalten kann (siehe Pfadparameter und Platzhalter zu Routenpfaden hinzufügen)
<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" } } ] }
- Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
-
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.
-
(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"