Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Publication de messages vers le flux Kafka avec authentification du principal de ressource à l'aide d'OCI Functions
Introduction
Découvrez la synergie transparente entre Oracle Cloud Infrastructure (OCI) Functions et OCI Streaming dans l'orchestration de pipelines de données en temps réel. Dans ce tutoriel, nous explorerons une approche sécurisée et efficace de la production de messages, en tirant parti de la méthode d'authentification du principal de ressource Oracle et du modèle de conception singleton. Découvrez comment l'authentification par principal de ressource simplifie la gestion de la sécurité en authentifiant de manière transparente les fonctions sans serveur avec les services OCI Streaming, tandis que le modèle singleton optimise l'utilisation des ressources et améliore l'efficacité de la production de messages. Nous explorons la convergence d'OCI Functions et d'OCI Streaming, permettant aux développeurs d'élaborer des solutions robustes et évolutives basées sur les événements sans effort.
OCI Streaming : OCI dispose d'un éventail d'outils pour la gestion des données dans le cloud, OCI Streaming étant l'un de ces services conçus pour les flux de données en temps réel à haut débit. En tirant parti d'OCI Streaming, les développeurs peuvent construire des pipelines de données évolutifs et fiables qui assimilent, traitent et distribuent efficacement des flux de données.
OCI Functions : OCI Functions est une plate-forme Functions-as-a-Service entièrement gérée, colocative, hautement évolutive et à la demande. Elle repose sur OCI de niveau entreprise et sur le moteur open source du projet Fn. Utilisez OCI Functions (parfois abrégé en fonctions et anciennement appelé Oracle Functions) lorsque vous voulez écrire du code pour répondre aux besoins de votre entreprise.
Authentification du principal de ressource : vous pouvez utiliser un principal de ressource pour authentifier les ressources OCI et y accéder. Le principal de ressource se compose d'un jeton de session temporaire et d'informations d'identification sécurisées qui permettent aux fonctions OCI de s'authentifier auprès d'autres services OCI, tels qu'OCI Streaming.
Remarque :
- Ce tutoriel est conçu uniquement à des fins éducatives et d'étude. Il offre aux apprenants un environnement leur permettant d'expérimenter et d'acquérir une expérience pratique dans un environnement contrôlé. Il est important de noter que les configurations et les pratiques de sécurité utilisées dans ce tutoriel peuvent ne pas convenir à des scénarios réels.
- Les considérations de sécurité pour les applications du monde réel sont souvent beaucoup plus complexes et dynamiques. Par conséquent, avant de mettre en œuvre l'une des techniques ou configurations présentées ici dans un environnement de production, il est essentiel de procéder à une évaluation et à un examen complets de la sécurité. Cet examen doit porter sur tous les aspects de la sécurité, y compris le contrôle d'accès, le cryptage, la surveillance et la conformité, afin de garantir que le système s'aligne sur les politiques et les normes de sécurité de l'organisation.
- La sécurité doit toujours être une priorité absolue lors de la transition d'un environnement de laboratoire à un déploiement réel.
Objectifs
- Produisez facilement des messages dans un sujet de diffusion en continu au sein d'un pool de flux OCI à l'aide d'OCI Functions. En tirant parti de la méthode d'authentification du principal de ressource Oracle et en implémentant le modèle de conception singleton dans Java, nous vous guiderons tout au long du processus d'authentification sécurisée des fonctions sans serveur avec l'API Kafka et d'optimisation de l'utilisation des ressources pour une production de messages efficace.
Prérequis
-
Oracle Cloud Infrastructure
-
Compte Oracle avec droits d'accès de niveau administrateur.
-
Un compartiment pour créer vos ressources.
Remarque : notez le nom et l'ID du compartiment.
-
VCN avec un sous-réseau privé. Pour plus d'informations, reportez-vous à Création d'un réseau cloud virtuel.
-
Pool de flux de données sur le sous-réseau privé à partir de votre VCN. Pour plus d'informations, reportez-vous à Création d'un pool de flux de données.
-
Flux appelé
my-pvt-topic
, créé sur le pool de flux de données ci-dessus. Pour plus d'informations, reportez-vous à Création d'un flux de données.
-
-
Environnement d'ordinateur local
-
Instance de calcul Oracle Linux sur le sous-réseau privé. Cette étape est importante pour accéder aux ressources sur le sous-réseau privé, telles qu'OCI Streaming et Functions, qui seront déployées au cours de ce tutoriel.
-
Hôte OCI Bastion permettant de se connecter à l'instance de calcul Oracle Linux et d'effectuer les tâches du tutoriel. Pour plus d'informations, reportez-vous à Présentation de Bastion.
-
Configuration de l'interface de ligne de commande Oracle Cloud Infrastructure locale. Pour plus d'informations, reportez-vous à Installation de l'interface de ligne de commande.
-
Docker local pour pouvoir créer des images, si vous utilisez Oracle Linux, reportez-vous à Docker : installation de Docker sur Oracle Linux 8 (OL8).
-
CLI FN locale pour pouvoir déployer votre fonction vers OCI : Installation de l'interface de ligne de commande du projet Fn
-
Tâche 1 : configurer des groupes dynamiques
Accédez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.
- Nom de groupe :
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Tâche 2 : créer des stratégies
Accédez à Stratégies et créez les stratégies suivantes.
- Nom de stratégie :
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
Tâche 3 : créer OCI Container Registry
-
Accédez à Services de développeur, cliquez sur Registre de conteneur et créez un référentiel privé pour l'image Fn.
Nom :
lab/fn-java-streaming
. -
Vérifiez les référentiels et notez l'espace de noms.
-
Ouvrez le shell de terminal sur lequel vous avez installé l'interface de ligne de commande OCI et Docker, puis connectez-vous au registre. Vérifiez quelle est l'URL correcte pour votre région. Dans ce tutoriel, nous utilisons Est du Brésil (Sao Paulo) où l'URL du registre est
gru.ocir.io
.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Tâche 4 : créer les fonctions Java OCI pour recevoir le message et le publier sur le sujet OCI Streaming
Remarque : veillez à sélectionner votre sous-réseau privé, le même sous-réseau que celui du pool de flux de données.
-
Accédez à Services de développeur, sous Fonctions, cliquez sur Applications, puis sur Créer une application.
-
Créez quelques configurations pour stocker les paramètres OCI Streaming.
Remarque : ces variables de configuration sont utilisées dans cet exemple de code Java de tutoriel pour pouvoir générer des messages vers votre flux de données. Veillez à transmettre les variables de configuration correctes à partir de votre environnement.
Nom secret Value BOOTSTRAP_SERVERS coller vos serveurs Stream Pool Bootstrap sur le port 9092 STREAM_POOL_OCID coller votre OCID de pool de flux de données STREAM_TOPIC_NAME coller votre nom de flux -
Accédez au shell de terminal sur lequel Docker, l'interface de ligne de commande OCI et l'interface de ligne de commande du projet Fn sont installés et exécutez les commandes suivantes pour initialiser la fonction.
Remarque : si vous avez suivi les tâches, la commande de connexion Docker a déjà été exécutée à ce stade. Sinon, suivez les étapes de connexion Docker dans la tâche 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
Remarque : dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo). Si vous utilisez une autre région, vous devez modifier les lieux api-url et registre.
-
Obtenez l'exemple de code de fonction Java ici : fn-java-streaming.zip et décompressez-le sur votre machine shell de console de bastion.
# check your file is there ls -lrt # unzip the file unzip fn-java-streaming.zip
Ce projet de code Java simple génère un message dans la rubrique
my-pvt-topic
à partir de votre pool de flux de données. Il utilisera les valeurs de configuration Fn créées à l'étape 3.-
HelloFunction.java
. -
KafkaProducerSingleton.java
.
-
-
Créez le nouveau code et déployez la fonction.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
Appelez la fonction.
# Invoke the function to check if it is working as expected. echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
Remarque : le premier appel peut prendre jusqu'à 1 minute pour appeler la fonction.
Liens connexes
Remerciements
- Auteur - Joao Tarla (Ingénieur solutions Oracle LAD A-Team)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93775-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.