Hinweis:

Mit OCI API Gateway, Funktionen und Beobachtbarkeit JSON-Inhalt validieren und API-Header und -Body überwachen

Einführung

Wenn wir verteilte Anwendungen entwickeln, insbesondere in Architekturen, die auf Microservices basieren, wollen wir Komponenten, die sich in ihrer Ausführung skalieren und gut ausführen lassen. Sie verfügen über sehr komplexe Architekturen, Komponenten, die andere Komponenten ausführen, andere Komponenten ausführen usw. in einer unendlichen Anzahl von endlosen Aufrufen.

Die Planung, wie man jeden von ihnen entwickelt, ist eine große Aufgabe. Sie können Ihre Microservices, die auf einem Kubernetes-Cluster basieren, über das Oracle Cloud Infrastructure API Gateway (OCI API Gateway) bereitstellen. Es gibt eine Reihe von Funktionen, wie die Durchführung von Anrufauthentifizierung und -autorisierung, Datenvalidierung und Anrufoptimierung, um nur einige zu nennen. Es besteht auch die Möglichkeit, Anrufe mit OCI Functions auszuführen, um personalisierte Authentifizierungs- und Autorisierungsmechanismen zu erstellen, wenn vorhandene Methoden nicht ausreichen, um die Notwendigkeit zu lösen.

In diesem Tutorial wird gezeigt, wie Sie mit dem benutzerdefinierten Mechanismus einige Anwendungsfälle validieren, wie:

Obwohl es sich um einen Mechanismus zur Authentifizierung und Autorisierung im OCI-API-Gateway handelt, kann es bei einigen anderen Anforderungen helfen, z. B.:

Ziele

Voraussetzungen

Aufgabe 1: OCI-Beobachtbarkeit konfigurieren

  1. Erstellen Sie ein Log in Ihrem OCI-Mandanten, um die Logs aus Ihrer Funktion aufzunehmen. Navigieren Sie zu Observability and Management, und wählen Sie in der OCI-Konsole die Option Logs aus.

    Logging-1

  2. Klicken Sie auf Benutzerdefiniertes Log erstellen.

    Logging-2

  3. Geben Sie einen Namen in das Feld Name benutzerdefiniertes Log ein, und wählen Sie ein gültiges Compartment und eine geeignete Loggruppe aus.

    Logging-3

Hinweis: Es ist wichtig, die OCID des Logs zu erfassen. Sie benötigen diese für Ihren Code.

Logging-4

Aufgabe 2: OCI-Funktion zum Erfassen der HEADER und BODY aus der API-Anforderung erstellen

Um die folgenden Schritte auszuführen, laden Sie Code von hier function.zip herunter.

Code verstehen

Diesen Code finden Sie hier: function.zip.

Hinweis: Wenn Sie nicht wissen, wie Sie eine Funktion entwickeln und in API Gateway aufrufen, lesen Sie Funktion mit API Gateway aufrufen.

SDK-Authentifizierung für OCI konfigurieren

Sie müssen die Konfigurationsdatei konfigurieren und Ihren OCI-Private Key und Fingerprint mit Ihrer Funktion ablegen, bevor Sie sie in OCI bereitstellen. Sie müssen die Dateien config und private key für die Installation und Konfiguration der Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) generieren lassen.

Informationen zum Installieren und Konfigurieren der OCI-CLI finden Sie unter OCI-CLI installieren. Bei dieser Installation und Konfiguration werden zwei Dateien für Sie generiert. Suchen Sie die Datei config und private key (Standard ist oci_api_key.pem). Der Ordnerpfad wird in den Installationsanweisungen angegeben.

Code-2

Laden Sie function.zip herunter, um den Code, die Konfigurationsdatei und den Private Key anzuzeigen. Ersetzen Sie die Konfigurations- und Private-Key-Dateien durch Ihre OCI-CLI-Dateien.

OCI-Funktion erstellen und bereitstellen

In diesem Schritt müssen wir die OCI-CLI verwenden, um die OCI-Funktionen zu erstellen und Code in Ihrem Mandanten bereitzustellen. Informationen zum Erstellen einer OCI-Funktion finden Sie unter OCI Functions QuickStart, und suchen Sie nach der Option "Python". Sie müssen Ihre Funktion mit folgenden Informationen erstellen:

Denken Sie an das Compartment, das Sie für Ihre Funktion bereitgestellt haben. Sie benötigen diese Informationen, um das OCI-API-Gateway-Deployment zu konfigurieren.

Aufgabe 3: OCI-Funktion in API Gateway konfigurieren

Stellen Sie Ihre API bereit, und integrieren Sie sie in Ihre OCI-Funktionen, um Anforderungsparameter (Header und BODY) zu validieren und an OCI Observability zu senden. Wenn Sie nicht wissen, wie Sie Ihr Backend im OCI-API-Gateway bereitstellen, finden Sie weitere Informationen unter OCI-API-Gateway: API einrichten, erstellen und bereitstellen.

  1. Öffnen Sie Deployment bearbeiten.

    config-apigw-1

  2. Klicken Sie auf den Abschnitt Authentifizierung.

    config-apigw-2

  3. Klicken Sie auf Einzelne Authentifizierung, und wählen Sie Autorisiererfunktion aus.

    config-apigw-2a

  4. Wählen Sie das Funktions-Compartment (in dem Sie Ihre Funktion bereitgestellt haben), wählen Sie die Anwendung fn_apigw_json und die Funktion python-json-header aus.

    config-apigw-2b

  5. Konfigurieren Sie die Funktionsargumente, um den HEADER und BODY zu erfassen. Erfassen Sie den HEADER namens header und header2 sowie den BODY-Inhalt, der als body benannt wird.

    config-apigw-2c

  6. Klicken Sie auf Routen, und konfigurieren Sie die Headertransformation. Diese Konfiguration ist optional, nur um den Antwortinhalt mit den Anforderungsdaten (HEADER- und BODY-Inhalt) oder die bei der Anforderung generierten Fehler anzuzeigen. Es wird nützlich sein, Ihre Funktion zu debuggen.

    config-apigw-3

Aufgabe 4: Anforderung testen

Hinweis: In Ihrem API-Deployment wird ein Cache für die Functions-Argumente aktiviert, wenn Sie die Autorisiererfunktion konfigurieren und die Functions-Argumente einrichten. Sie können festlegen, welcher Datentyp im Cache gespeichert wird. Sie können den Cache für Abfrageparameter oder Header konfigurieren, jedoch nicht für Textinhalt.

Wir können die API-Anforderung testen. Testen wir nur mit einem Element in einem Array im Body.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
    --header 'Content-Type: text/plain' \
    --header 'header: header' \
    --header 'header2: header2' \
    --header 'header3: header3' \
    --data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

header3 wurde gesendet, aber im Log angezeigt, weil es nicht als Funktionsargument im OCI-API-Gateway konfiguriert wurde. Es gibt nur 1 Element im BODY-JSON-Array, also eine gültige Autorisierungsanforderung.

Test-1

Lassen Sie uns ein weiteres Element auf Array setzen und testen.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
--header 'Content-Type: text/plain' \
--header 'header: header' \
--header 'header2: header2' \
--header 'header3: header3' \
--data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}, {"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

Test-2

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.