Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
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:
- Dieses Tutorial ist ausschließlich für Bildungs- und Studienzwecke konzipiert. Es bietet eine Umgebung, in der Lernende experimentieren und praktische Erfahrungen in einem kontrollierten Umfeld sammeln können. Es ist wichtig zu beachten, dass die in diesem Tutorial verwendeten Sicherheitskonfigurationen und -praktiken möglicherweise nicht für reale Szenarien geeignet sind.
- Sicherheitsaspekte für reale Anwendungen sind oft viel komplexer und dynamischer. Daher ist es vor der Implementierung einer der hier in einer Produktionsumgebung demonstrierten Techniken oder Konfigurationen unerlässlich, eine umfassende Sicherheitsbewertung und -prüfung durchzuführen. Diese Überprüfung sollte alle Aspekte der Sicherheit umfassen, einschließlich Zugriffskontrolle, Verschlüsselung, Überwachung und Compliance, um sicherzustellen, dass das System den Sicherheitsrichtlinien und -standards der Organisation entspricht.
- Sicherheit sollte beim Übergang von einer Übungsumgebung zu einer realen Bereitstellung immer oberste Priorität haben.
Ziele
- Mit OCI Functions können Sie Nachrichten nahtlos in ein Streaming-Thema in einem OCI-Streampool erstellen. Mithilfe der Authentifizierungsmethode für Resource Principals von Oracle und der Implementierung des Singleton-Designmusters in Java werden Sie durch den Prozess der sicheren Authentifizierung serverloser Funktionen mit der Kafka-API und der Optimierung der Ressourcenauslastung für eine effiziente Nachrichtenproduktion geführt.
Voraussetzungen
-
Oracle Cloud Infrastructure
-
Oracle-Account mit Zugriffsberechtigungen auf Admin-Ebene.
-
Ein Compartment zum Erstellen Ihrer Ressourcen.
Hinweis: Notieren Sie sich den Compartment-Namen und die Compartment-ID.
-
VCN mit einem privaten Subnetz. Weitere Informationen finden Sie unter Virtuelles Cloud-Netzwerk erstellen.
-
Streamen Sie den Pool im privaten Subnetz von Ihrem VCN aus. Weitere Informationen finden Sie unter Stream-Pool erstellen.
-
Stream mit dem Namen
my-pvt-topic
, der für den oben genannten Streampool erstellt wurde. Weitere Informationen finden Sie unter Stream erstellen.
-
-
Umgebung des lokalen Rechners
-
Eine Oracle Linux-Compute-Instanz im privaten Subnetz. Dies ist wichtig für den Zugriff auf Ressourcen im privaten Subnetz, wie OCI Streaming und Functions, die in diesem Tutorial bereitgestellt werden.
-
Ein OCI Bastion-Host, um eine Verbindung zur Oracle Linux-Compute-Instanz herzustellen und Aufgaben für das Tutorial auszuführen. Weitere Informationen finden Sie unter Bastion - Überblick.
-
Setup der lokalen Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI). Weitere Informationen finden Sie unter CLI installieren.
-
Lokaler Docker zum Erstellen von Images, wenn Sie Oracle Linux verwenden, finden Sie unter Docker: Docker auf Oracle Linux 8 installieren (OL8).
-
Lokale FN-CLI zur Bereitstellung Ihrer Funktion in OCI: FN-Projekt-CLI installieren
-
Aufgabe 1: Dynamische Gruppen einrichten
Gehen Sie zu Ihrer Domain, klicken Sie auf Dynamische Gruppen, und erstellen Sie die folgenden Gruppen.
- Gruppenname:
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Aufgabe 2: Policys erstellen
Gehen Sie zu Policys, und erstellen Sie die folgenden Policys.
- Policy-Name:
FunctionsPolicies
.
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
-
Gehen Sie zu Entwicklerservices, klicken Sie auf Containerregistrierung, und erstellen Sie ein privates Repository für das Fn-Image.
Name:
lab/fn-java-streaming
. -
Prüfen Sie die Repositorys, und notieren Sie sich den Namespace.
-
Ö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
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.
-
Gehen Sie zu Developer Services, und klicken Sie unter Functions auf Anwendungen und dann auf Anwendung erstellen.
-
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 -
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.
-
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
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
. -
KafkaProducerSingleton.java
.
-
-
Erstellen Sie den neuen Code, und stellen Sie die Funktion bereit.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
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
Hinweis: Der erste Aufruf kann bis zu 1 Minute dauern, bis die Funktion aufgerufen wird.
Verwandte Links
Danksagungen
- Autor - Joao Tarla (Oracle LAD A-Team Solution Engineer)
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.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93773-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.