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.
Transmission de journaux vers un flux d'adresses privées via OCI Connector Hub à l'aide d'OCI Functions
Introduction
Oracle Cloud Infrastructure (OCI) Functions est une plate-forme Functions-as-a-Service entièrement gérée, colocative, hautement évolutive, à la demande. Utilisez OCI Functions lorsque vous voulez écrire du code pour répondre aux besoins de votre entreprise.
OCI Connector Hub permet de transférer des données entre les services dans OCI. OCI Connector Hub ne prend pas en charge le flux d'adresse privée en tant que cible.
Le service OCI Streaming offre une solution complète, évolutive et durable pour l'inclusion et l'utilisation de flux de données volumineux en temps réel. Utilisez OCI Streaming pour tout cas d'emploi dans lequel des données sont produites et traitées de manière continue et séquentielle selon un modèle d'échange de messages de publication-abonnement.
Dans ce tutoriel, la source et la cible pour OCI Connector Hub seront respectivement OCI Logging et OCI Functions. OCI Connector Hub recherche les nouveaux journaux. Une fois qu'il est détecté, il transfère les journaux vers OCI Functions et déclenche la fonction. OCI Functions propage ces journaux vers le flux d'adresse privée.
Objectifs
- Transmettez les journaux à un flux d'adresse privée via OCI Connector Hub à l'aide d'OCI Functions.
Prérequis
- Créez un flux d'adresse privée à l'aide d'OCI Streaming.
Tâche 1 : créer une fonction à l'aide d'OCI Functions
Créez une fonction dans le sous-réseau privé dans lequel le flux privé est créé à l'aide du code suivant. Le code ci-dessous est un exemple pour les journaux OCI Object Storage. Dans le code, vous devez remplacer stream-ocid
par un OCID (identificateur Oracle Cloud) de flux d'adresse privée et message-endpoint
par une URL d'adresse de message de flux de données privé. Nous extrayons uniquement quelques paramètres à partir de journaux tels que bucketName, message et clientIpAddress. Pour plus d'informations, reportez-vous à Création et déploiement de fonctions.
Remarque : ce code de fonction est un exemple de propagation des journaux OCI Object Storage vers un flux d'adresse privée. Vous devez personnaliser le script Python en fonction de l'exigence avec différents journaux.
#!/bin/bash
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
import io
import oci
import logging
import json
import os
from fdk import response
from base64 import b64encode, b64decode
def handler(ctx, data: io.BytesIO = None):
signer_auth = oci.auth.signers.get_resource_principals_signer()
streaming_client = oci.streaming.StreamClient(config = {}, service_endpoint = "<message-endpoint>", signer=signer_auth)
logger = logging.getLogger()
logger.info("function start")
try:
logentries = json.loads(data.getvalue()) # deserialize the bytesstream input as JSON array
if not isinstance(logentries, list):
logger.error('Invalid connector payload. No log queries detected')
raise
logger.info("json input from SCH")
logger.info(data.getvalue())
for logEntry in logentries:
logger.info("Extracting/Parse log details from the log entry json")
bucketName = logEntry["data"]["bucketName"]
message = logEntry["data"]["message"]
clientIpAddress = logEntry["data"]["clientIpAddress"]
log_line = bucketName + '\t' + message + '\t' + clientIpAddress
encoded_message = b64encode(log_line.encode()).decode()
put_messages_response = streaming_client.put_messages(
stream_id="<stream-ocid>",
put_messages_details=oci.streaming.models.PutMessagesDetails(
messages=[
oci.streaming.models.PutMessagesDetailsEntry(value=encoded_message)]))
logger.info("function end")
return
except Exception as e:
logger.error("Failure in the function: {}".format(str(e)))
raise
Tâche 2 : créer et configurer OCI Connector Hub
-
Cliquez sur Créer un connecteur.
-
Entrez le nom du compartiment et sélectionnez les journaux à propager en tant que source.
-
Sélectionnez la fonction créée en tant que cible et cliquez sur Créer.
OCI Connector Hub va maintenant rechercher de nouveaux journaux dans la source. Lorsqu'un nouveau journal est détecté, OCI Connector Hub l'envoie à OCI Functions. La fonction sera déclenchée et propagera les journaux vers le flux d'adresse privée.
Liens connexes
Remerciements
- Auteur : Nikhil Khandelwal (Enterprise Cloud Architect)
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.
Push Logs to a Private Endpoint Stream via OCI Connector Hub using OCI Functions
F92059-01
January 2024
Copyright © 2024, Oracle and/or its affiliates.