Remarques :

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 :

Objectifs

Prérequis

Tâche 1 : configurer des groupes dynamiques

Accédez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.

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.

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

  1. 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.

    T3_1

  2. Vérifiez les référentiels et notez l'espace de noms.

    T3_1

  3. 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
    

    T3_3

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.

  1. Accédez à Services de développeur, sous Fonctions, cliquez sur Applications, puis sur Créer une application.

    T9_1

  2. 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

    T4_2

  3. 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.

  4. 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
    

    T9_1

    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.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. Créez le nouveau code et déployez la fonction.

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

    T9_1

    T9_1

  6. 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
    

    T9_1

    Remarque : le premier appel peut prendre jusqu'à 1 minute pour appeler la fonction.

Remerciements

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.