Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
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:
- Este tutorial está diseñado exclusivamente para fines educativos y de estudio. Proporciona un entorno para que los estudiantes experimenten y adquieran experiencia práctica en un entorno controlado. Es crucial tener en cuenta que las configuraciones y prácticas de seguridad empleadas en este tutorial pueden no ser adecuadas para escenarios del mundo real.
- Las consideraciones de seguridad para las aplicaciones reales suelen ser mucho más complejas y dinámicas. Por lo tanto, antes de implementar cualquiera de las técnicas o configuraciones aquí demostradas en un entorno de producción, es esencial realizar una evaluación y revisión exhaustivas de la seguridad. Esta revisión debe abarcar todos los aspectos de la seguridad, incluido el control de acceso, el cifrado, la supervisión y el cumplimiento, para garantizar que el sistema se alinee con las políticas y estándares de seguridad de la organización.
- La seguridad siempre debe ser una prioridad al realizar la transición de un entorno de prácticas a un despliegue real.
Objetivos
- Produce mensajes sin problemas en un tema de flujo dentro de un pool de flujos de OCI mediante OCI Functions. Aprovechando el método de autenticación de entidad de recurso de Oracle y la implantación del patrón de diseño singleton en Java, le guiaremos a través del proceso de autenticación segura de funciones sin servidor con la API de Kafka y la optimización de la utilización de recursos para una producción eficiente de mensajes.
Requisitos
-
Oracle Cloud Infrastructure
-
Cuenta de Oracle con permisos de acceso de nivel de administrador.
-
Compartimento para crear los recursos.
Nota: Tenga en cuenta el nombre del compartimento y el ID del compartimento.
-
VCN con una subred privada. Para obtener más información, consulte Creación de una red virtual en la nube.
-
Pool de flujos en la subred privada desde la VCN. Para obtener más información, consulte Creación de un pool de flujos.
-
Flujo denominado
my-pvt-topic
, creado en el pool de flujos anterior. Para obtener más información, consulte Creación de un flujo.
-
-
Entorno de máquina local
-
Una instancia informática de Oracle Linux en la subred privada. Esto es importante para acceder a los recursos de la subred privada, como OCI Streaming y Functions que se desplegarán durante este tutorial.
-
Host de OCI Bastion para conectarse a la instancia informática de Oracle Linux y realizar tareas para el tutorial. Para obtener más información, consulte Visión general de Bastion.
-
Configuración de la interfaz de línea de comandos (CLI de OCI) local de Oracle Cloud Infrastructure. Para obtener más información, consulte Instalación de la CLI.
-
Docker local para poder crear imágenes, si utiliza Oracle Linux, consulte Docker: Instalación de Docker en Oracle Linux 8 (OL8).
-
CLI de FN local para poder desplegar su función en OCI: Instalación de la CLI de Fn Project
-
Tarea 1: Configurar grupos dinámicos
Vaya al dominio, haga clic en Grupos dinámicos y cree los siguientes grupos.
- Nombre del Grupo:
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Tarea 2: Crear políticas
Vaya a Políticas y cree las siguientes políticas.
- Nombre de la Política:
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
Tarea 3: Creación de OCI Container Registry
-
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
. -
Compruebe los repositorios y anote el espacio de nombres.
-
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
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.
-
Vaya a Developer Services, en Functions, haga clic en Applications y, a continuación, en Create application.
-
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 -
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.
-
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
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
. -
KafkaProducerSingleton.java
.
-
-
Cree el nuevo código y despliegue la función.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
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
Nota: La primera llamada puede tardar hasta 1 minuto en llamar a la función.
Enlaces relacionados
Agradecimientos
- Autor: Joao Tarla (ingeniero de soluciones de equipo A de Oracle LAD)
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.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93774-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.