Note:

Publicación de mensajes en el flujo de Kafka con autenticación de entidad de recurso mediante OCI Functions

Introducción

Descubre la sinergia perfecta entre Oracle Cloud Infrastructure (OCI) Functions y OCI Streaming en la orquestación de pipelines de datos en tiempo real. En este tutorial, exploraremos un enfoque seguro y eficiente para la producción de mensajes, aprovechando el método de autenticación de la entidad de recurso de Oracle y el patrón de diseño singleton. Descubre cómo la autenticación de entidad de recurso simplifica la gestión de seguridad al autenticar sin problemas las funciones sin servidor con los servicios de OCI Streaming, mientras que el patrón singleton optimiza el uso de recursos y mejora la eficiencia de la producción de mensajes. Profundizamos en la convergencia de OCI Functions y OCI Streaming, lo que permite a los desarrolladores diseñar soluciones sólidas y escalables basadas en eventos sin esfuerzo.

OCI Streaming: OCI tiene una serie de herramientas para gestionar datos en la nube, y OCI Streaming es uno de esos servicios adaptado a flujos de datos en tiempo real de alto rendimiento. Al aprovechar OCI Streaming, los desarrolladores pueden construir pipelines de datos escalables y confiables que ingieran, procesen y distribuyan flujos de datos de manera eficiente.

Funciones de OCI: OCI Functions es una plataforma de funciones como servicio totalmente gestionada, multicliente, altamente escalable y bajo demanda. Se basa en OCI de nivel empresarial y en el motor de código abierto Fn Project. Utilice OCI Functions (a veces abreviada como Functions, y anteriormente conocida como Oracle Functions) cuando desee centrarse en la escritura de código para satisfacer las necesidades empresariales.

Autenticación de entidad de recurso: puede utilizar una entidad de recurso para autenticar los recursos de OCI y acceder a ellos. La entidad de recurso consta de un token de sesión temporal y credenciales seguras que permiten a OCI Functions autenticarse en otros servicios de OCI, como OCI Streaming.

Nota:

Objetivos

Requisitos

Tarea 1: Configurar grupos dinámicos

Vaya al dominio, haga clic en Grupos dinámicos y cree los siguientes grupos.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Tarea 2: Crear políticas

Vaya a Políticas y cree las siguientes políticas.

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

Tarea 3: Creación de OCI Container Registry

  1. Vaya a Servicios para desarrolladores, haga clic en Registro de contenedores y cree un repositorio privado para la imagen de Fn.

    Nombre: lab/fn-java-streaming.

    T3_1

  2. Compruebe los repositorios y anote el espacio de nombres.

    T3_1

  3. Abra el shell de terminal donde tiene instalada la CLI y Docker de OCI y continúe con el inicio de sesión en el registro. Compruebe cuál es la URL correcta para su región. En este tutorial, estamos utilizando Este de Brasil (Sao Paulo), donde la URL del registro es gru.ocir.io.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Tarea 4: Creación de Java OCI Functions para recibir el mensaje y publicar en el tema de OCI Streaming

Nota Asegúrese de seleccionar la subred privada, la misma subred del pool de flujos.

  1. Vaya a Developer Services, en Functions, haga clic en Applications y, a continuación, en Create application.

    T9_1

  2. Cree algunas configuraciones para almacenar los valores de OCI Streaming.

    Nota Estas variables de configuración se utilizan en este tutorial de código de ejemplo de Java para poder producir mensajes en el flujo, asegúrese de transferir los correctos del entorno.

    Nombre de secreto Valor
    BOOTSTRAP_SERVERS pegue los servidores de inicialización de pool de flujos en el puerto 9092
    STREAM_POOL_OCID pegue el OCID del pool de flujos
    STREAM_TOPIC_NAME pegue el nombre del flujo

    T4_2

  3. Vaya al shell de terminal donde tiene instalado Docker, la CLI de OCI, la CLI de Fn Project y ejecute los siguientes comandos para inicializar la función.

    Nota: Si ha seguido las tareas, el comando de conexión de Docker ya se ha ejecutado en este momento, si no es así, continúe con los pasos de conexión de Docker de la tarea 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: En este tutorial, estamos utilizando la región Este de Brasil (Sao Paulo). Si está utilizando una región diferente, debe cambiar las ubicaciones api-url y registry.

  4. Obtenga el código de ejemplo de la función Java de aquí: fn-java-streaming.zip y descomprímalo en la máquina shell de la consola bastión.

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-streaming.zip
    

    T9_1

    Este sencillo proyecto de código Java producirá un mensaje en el tema denominado my-pvt-topic desde el pool de flujos. Utilizará los valores de configuración de Fn creados en el paso 3.

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. Cree el nuevo código y despliegue la función.

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

    T9_1

    T9_1

  6. Llame a la función.

    # 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

    Nota: La primera llamada puede tardar hasta 1 minuto en llamar a la función.

Agradecimientos

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.