Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
Transferir logs a un flujo de punto final privado mediante OCI Connector Hub mediante OCI Functions
Introducción
Oracle Cloud Infrastructure (OCI) Functions es una plataforma de funciones como servicio totalmente gestionada, multi-cliente, altamente escalable. Utiliza OCI Functions cuando quieras centrarte en la escritura de código para satisfacer las necesidades empresariales.
OCI Connector Hub ayuda a transferir datos entre servicios en OCI. OCI Connector Hub no soporta el flujo de punto final privado como destino.
El servicio OCI Streaming proporciona una solución totalmente gestionada, escalable y duradera para la ingesta y el consumo de flujos de datos de gran volumen en tiempo real. Utiliza OCI Streaming para cualquier caso de uso en el que se produzcan y procesen datos de forma continua y secuencial en un modelo de mensajería de publicación-suscripción.
En este tutorial, el origen y el destino de OCI Connector Hub serán OCI Logging y OCI Functions respectivamente. OCI Connector Hub comprobará si hay nuevos logs, una vez detectados, transferirá los logs a OCI Functions y activará la función. OCI Functions transferirá esos logs al flujo de punto final privado.

Objetivos
- Transfiera logs a un flujo de punto final privado mediante OCI Connector Hub mediante OCI Functions.
Requisitos
- Cree un flujo de punto final privado mediante OCI Streaming.
Tarea 1: Creación de una función con OCI Functions
Cree una función en la misma subred privada en la que se crea el flujo privado mediante el siguiente código. A continuación, se muestra un ejemplo de los logs de OCI Object Storage. En el código, debe sustituir stream-ocid por un identificador de Oracle Cloud (OCID) de flujo de punto final privado y message-endpoint por una URL de punto final de mensaje de flujo privado. Extraemos solo unos pocos parámetros de logs como bucketName, message y clientIpAddress. Para obtener más información, consulte Creación y Despliegue de Funciones.
Nota: Este código de función es un ejemplo de transferencia de logs de OCI Object Storage a un flujo de punto final privado. Debe personalizar el script de Python según el requisito con diferentes logs.
#!/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
Tarea 2: Creación y configuración del hub de conector de OCI
-
Haga clic en Crear conector.

-
Introduzca el nombre del compartimento y seleccione los logs que desea transferir como origen.

-
Seleccione la función creada como destino y haga clic en Crear.

Ahora, OCI Connector Hub buscará nuevos logs en el origen. Siempre que se detecte un nuevo log, OCI Connector Hub enviará ese log a OCI Functions. La función se disparará y enviará los logs al flujo de punto final privado.
Enlaces relacionados
Agradecimientos
- Autor: Nikhil Khandelwal (arquitecto de nube empresarial)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Push Logs to a Private Endpoint Stream via OCI Connector Hub using OCI Functions
F92058-01
January 2024
Copyright © 2024, Oracle and/or its affiliates.