Hinweis:

Nachrichten mit Resource Principal-Authentifizierung mit OCI Functions in Kafka-Stream posten

Einführung

Entdecken Sie die nahtlose Synergie zwischen Oracle Cloud Infrastructure (OCI) Functions und OCI Streaming bei der Orchestrierung von Echtzeit-Datenpipelines. In diesem Tutorial werden wir einen sicheren und effizienten Ansatz für die Nachrichtenproduktion untersuchen, indem wir die Authentifizierungsmethode des Resource Principals von Oracle und das Singleton-Designmuster nutzen. Erfahren Sie, wie die Resource Principal-Authentifizierung das Sicherheitsmanagement vereinfacht, indem serverlose Funktionen nahtlos mit OCI Streaming-Services authentifiziert werden, während das Singleton-Muster die Ressourcenauslastung optimiert und die Effizienz der Nachrichtenproduktion verbessert. Wir befassen uns mit der Konvergenz von OCI Functions und OCI Streaming und ermöglichen es Entwicklern, robuste und skalierbare ereignisgesteuerte Lösungen mühelos zu entwickeln.

OCI Streaming: OCI verfügt über eine Reihe von Tools für die Verarbeitung von Daten in der Cloud. OCI Streaming ist ein solcher Service, der auf Datenstreams mit hohem Durchsatz in Echtzeit zugeschnitten ist. Durch die Nutzung von OCI Streaming können Entwickler skalierbare und zuverlässige Datenpipelines erstellen, die Datenstreams effizient aufnehmen, verarbeiten und verteilen.

OCI Functions: OCI Functions ist eine vollständig verwaltete, mehrmandantenige, hochskalierbare, On-Demand-Plattform für Funktionen als Service. Sie basiert auf OCI für Unternehmen und wird von der Fn-Projekt-Open-Source-Engine unterstützt. Verwenden Sie OCI Functions (gelegentlich als Functions und früher als Oracle Functions bezeichnet), wenn Sie sich auf das Schreiben von Code konzentrieren möchten, um die Geschäftsanforderungen zu erfüllen.

Resource-Principal-Authentifizierung: Sie können einen Resource Principal zur Authentifizierung und zum Zugriff auf OCI-Ressourcen verwenden. Der Resource Principal besteht aus einem temporären Sessiontoken und sicheren Zugangsdaten, mit denen sich OCI Functions bei anderen OCI-Services wie OCI Streaming authentifizieren kann.

Hinweis:

Ziele

Voraussetzungen

Aufgabe 1: Dynamische Gruppen einrichten

Gehen Sie zu Ihrer Domain, klicken Sie auf Dynamische Gruppen, und erstellen Sie die folgenden Gruppen.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Aufgabe 2: Policys erstellen

Gehen Sie zu Policys, und erstellen Sie die folgenden Policys.

Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME

Aufgabe 3: OCI Container Registry erstellen

  1. Gehen Sie zu Entwicklerservices, klicken Sie auf Containerregistrierung, und erstellen Sie ein privates Repository für das Fn-Image.

    Name: lab/fn-java-streaming.

    T3_1

  2. Prüfen Sie die Repositorys, und notieren Sie sich den Namespace.

    T3_1

  3. Öffnen Sie die Terminal-Shell, in der OCI-CLI und Docker installiert sind, und fahren Sie mit der Anmeldung in der Registry fort. Prüfen Sie, welche URL für Ihre Region korrekt ist. In diesem Tutorial verwenden wir Brazil East (Sao Paulo), wobei die Registry-URL gru.ocir.io lautet.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Aufgabe 4: Java OCI-Funktionen erstellen, um die Nachricht zu empfangen und im OCI Streaming Topic zu veröffentlichen

Hinweis Stellen Sie sicher, dass Sie Ihr privates Subnetz und dasselbe Subnetz Ihres Streampools auswählen.

  1. Gehen Sie zu Developer Services, und klicken Sie unter Functions auf Anwendungen und dann auf Anwendung erstellen.

    T9_1

  2. Erstellen Sie einige Konfigurationen zum Speichern der OCI Streaming-Einstellungen.

    Hinweis Diese Konfigurationsvariablen werden in diesem Tutorial-Java-Beispielcode verwendet, um Nachrichten an Ihren Stream zu erzeugen. Stellen Sie sicher, dass Sie die richtigen aus Ihrer Umgebung übergeben.

    Secret-Name Datum
    BOOTSTRAP_SERVERS Einfügen Ihrer Stream Pool Bootstrap Server auf Port 9092
    STREAM_POOL_OCID Streampool-OCID einfügen
    STREAM_TOPIC_NAME Fügen Sie Ihren Stream-Namen ein

    T4_2

  3. Gehen Sie zur Terminalshell, in der Docker, OCI-CLI und Fn-Projekt-CLI installiert sind, und führen Sie die folgenden Befehle aus, um die Funktion zu initialisieren.

    Hinweis: Wenn Sie die Aufgaben ausgeführt haben, wurde Ihr Docker-Anmeldebefehl bereits ausgeführt. Wenn nicht, fahren Sie mit den Docker-Anmeldeschritten in Aufgabe 3 fort.

    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    

    Hinweis: In diesem Tutorial verwenden wir die Region Brazil East(Sao Paulo). Wenn Sie eine andere Region verwenden, müssen Sie die api-url- und registry-Speicherorte ändern.

  4. Rufen Sie den Beispielcode der Java-Funktion von hier ab: fn-java-streaming.zip, und dekomprimieren Sie ihn auf dem Shellrechner der Bastionkonsole.

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-streaming.zip
    

    T9_1

    Dieses einfache Java-Codeprojekt erstellt eine Nachricht mit dem Namen my-pvt-topic aus Ihrem Streampool an das Thema. Es werden die in Schritt 3 erstellten Fn-Konfigurationswerte verwendet.

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. Erstellen Sie den neuen Code, und stellen Sie die Funktion bereit.

    cd fn-java-streaming
    ls -lrt
    fn deploy --app fn-lab
    

    T9_1

    T9_1

  6. Rufen Sie die Funktion auf.

    # Invoke the function to check if it is working as expected.
    echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
    

    T9_1

    Hinweis: Der erste Aufruf kann bis zu 1 Minute dauern, bis die Funktion aufgerufen wird.

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. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.