Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Invia messaggi al flusso Kafka con autenticazione principal delle risorse mediante OCI Functions
Introduzione
Scopri la perfetta sinergia tra le funzioni di Oracle Cloud Infrastructure (OCI) e lo streaming OCI nell'orchestrazione delle pipeline di dati in tempo reale. In questo tutorial esploreremo un approccio sicuro ed efficiente alla produzione dei messaggi, sfruttando il metodo di autenticazione del principal delle risorse Oracle e il pattern di progettazione singleton. Scopri come l'autenticazione del principal delle risorse semplifica la gestione della sicurezza autenticando perfettamente le funzioni serverless con i servizi di streaming OCI, mentre il pattern singleton ottimizza l'utilizzo delle risorse e migliora l'efficienza della produzione dei messaggi. Scopriamo la convergenza tra OCI Functions e OCI Streaming, consentendo agli sviluppatori di progettare senza problemi soluzioni solide e scalabili basate sugli eventi.
OCI Streaming: OCI dispone di una vasta gamma di strumenti per la gestione dei dati nel cloud, con OCI Streaming uno di questi servizi su misura per flussi di dati in tempo reale con throughput elevato. Sfruttando lo streaming OCI, gli sviluppatori possono creare pipeline di dati scalabili e affidabili che incorporano, elaborano e distribuiscono in modo efficiente i flussi di dati.
OCI Functions: OCI Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e Functions-as-a-Service. Si basa su OCI di livello aziendale e si basa sul motore open source Fn Project. Utilizza OCI Functions (a volte abbreviato in Functions e precedentemente noto come Oracle Functions) quando vuoi concentrarti sulla scrittura di codice per soddisfare le esigenze aziendali.
Autenticazione principal risorsa: è possibile utilizzare un principal risorsa per autenticare e accedere alle risorse OCI. Il principal risorsa è costituito da un token di sessione temporaneo e da credenziali sicure che consentono alle funzioni OCI di autenticarsi in altri servizi OCI, come lo streaming OCI.
Nota:
- Questo tutorial è progettato esclusivamente per scopi educativi e di studio. Fornisce un ambiente per gli studenti di sperimentare e acquisire esperienza pratica in un ambiente controllato. È fondamentale notare che le configurazioni e le pratiche di sicurezza utilizzate in questo tutorial potrebbero non essere adatte per scenari reali.
- Le considerazioni sulla sicurezza per le applicazioni del mondo reale sono spesso molto più complesse e dinamiche. Pertanto, prima di implementare una delle tecniche o configurazioni qui dimostrate in un ambiente di produzione, è essenziale condurre una valutazione e un riesame completi della sicurezza. Questa revisione dovrebbe comprendere tutti gli aspetti della sicurezza, tra cui il controllo dell'accesso, la crittografia, il monitoraggio e la conformità, per garantire che il sistema sia allineato alle politiche e agli standard di sicurezza dell'organizzazione.
- La sicurezza dovrebbe sempre essere una priorità assoluta quando si passa da un ambiente di laboratorio a un'implementazione reale.
Obiettivi
- Genera senza problemi i messaggi in un argomento di streaming all'interno di un pool di flussi OCI utilizzando OCI Functions. Sfruttando il metodo di autenticazione del principal delle risorse Oracle e implementando il pattern di progettazione singleton in Java, ti guideremo attraverso il processo di autenticazione sicura delle funzioni serverless con l'API Kafka e l'ottimizzazione dell'utilizzo delle risorse per una produzione efficiente dei messaggi.
Prerequisiti
-
Infrastruttura Oracle Cloud
-
Account Oracle con autorizzazioni di accesso a livello di amministratore.
-
Compartimento per creare le risorse.
Nota: prendere nota del nome e dell'ID compartimento del compartimento.
-
VCN con una subnet privata. Per ulteriori informazioni, vedere Creazione di una rete cloud virtuale.
-
Pool di flussi nella subnet privata dalla VCN. Per ulteriori informazioni, vedere Creazione di un pool di flussi.
-
Flusso denominato
my-pvt-topic
, creato nel pool di flussi sopra riportato. Per ulteriori informazioni, vedere Creazione di un flusso.
-
-
Ambiente del computer locale
-
Un'istanza di computazione Oracle Linux nella subnet privata. Questa operazione è importante per accedere alle risorse nella subnet privata, ad esempio lo streaming OCI e le funzioni, che verranno distribuite durante questa esercitazione.
-
Un host OCI Bastion per connettersi all'istanza di computazione Oracle Linux ed eseguire i task per l'esercitazione. Per ulteriori informazioni, vedere Panoramica di Bastion.
-
Impostazione dell'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) locale. Per ulteriori informazioni, vedere Installazione dell'interfaccia CLI.
-
Docker locale per poter creare immagini, se utilizzi Oracle Linux, consulta Docker: Installa Docker su Oracle Linux 8 (OL8).
-
CLI FN locale per distribuire la funzione in OCI: Installazione dell'interfaccia CLI di Fn Project
-
Task 1: Impostazione dei gruppi dinamici
Andare al dominio, fare clic su Gruppi dinamici e creare i gruppi riportati di seguito.
- Nome gruppo:
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Task 2: Creare criteri
Andare a Criteri e creare i criteri riportati di seguito.
- Nome criterio:
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
Task 3: Crea OCI Container Registry
-
Andare a Servizi sviluppatore, fare clic su Container di registro e creare un repository privato per l'immagine Fn.
Nome:
lab/fn-java-streaming
. -
Controllare i repository e prendere nota dello spazio di nomi.
-
Aprire la shell del terminale in cui sono installate l'interfaccia CLI OCI e Docker e procedere con il login al registro. Controlla qual è l'URL corretto per la tua regione. In questa esercitazione viene utilizzato Brasile orientale (San Paolo) dove l'URL del registro è
gru.ocir.io
.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Task 4: creare le funzioni OCI Java per ricevere il messaggio e pubblicare nell'argomento di streaming OCI
Nota Assicurarsi di selezionare la subnet privata, la stessa subnet del pool di flussi.
-
Andare a Servizi sviluppatore, in Funzioni, fare clic su Applicazioni, quindi su Crea applicazione.
-
Crea alcune configurazioni per memorizzare le impostazioni di streaming OCI.
Nota Queste variabili di configurazione vengono utilizzate all'interno di questo codice di esempio Java di esercitazione per produrre messaggi nel flusso. Assicurarsi di passare quelli corretti dall'ambiente in uso.
Nome segreto Valore BOOTSTRAP_SERVERS incollare i server Stream Pool Bootstrap sulla porta 9092 STREAM_POOL_OCID incollare l'OCID del pool di flussi STREAM_TOPIC_NAME incollare il nome del flusso -
Andare alla shell del terminale in cui sono installati Docker, CLI OCI, CLI Fn Project ed eseguire i comandi riportati di seguito per inizializzare la funzione.
Nota: se sono stati eseguiti i task, il comando di login Docker è già stato eseguito, in caso contrario, procedere con i passi di login Docker nel task 3.
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
Nota: in questa esercitazione viene utilizzata l'area Est del Brasile (San Paolo). Se si utilizza un'area diversa, è necessario modificare le posizioni api-url e registro.
-
Ottenere il codice di esempio della funzione Java da qui: fn-java-streaming.zip ed estrarlo sul computer shell della console bastion.
# check your file is there ls -lrt # unzip the file unzip fn-java-streaming.zip
Questo semplice progetto di codice Java produrrà un messaggio all'argomento denominato
my-pvt-topic
dal pool di flussi. Utilizzerà i valori di configurazione Fn creati nel passo 3.-
HelloFunction.java
. -
KafkaProducerSingleton.java
.
-
-
Creare il nuovo codice e distribuire la funzione.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
Richiamare la funzione.
# Invoke the function to check if it is working as expected. echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
Nota: la prima chiamata può richiedere fino a 1 minuto per chiamare la funzione.
Collegamenti correlati
Conferme
- Autore - Joao Tarla (Solution Engineer Oracle LAD A-Team)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93776-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.