Eventos de la infraestructura de Oracle Cloud es un servicio que le permite crear alguna base de automatización en el cambio de estado en un servicio, o tal vez en algún tipo de entrada recibida. Ahora, demos un paso atrás y Evento es la ocurrencia de una situación particular. Para que estas situaciones sean útiles, los eventos deben tener algún tipo de información, por ejemplo, el nombre de la instancia, el nombre del objeto, el código de estado, etc. La información puede proporcionar a la automatización algo con lo que trabajar.
Eventos son la base de la arquitectura sin servidor, a veces también denominada arquitectura basada en eventos . Además, los eventos son cruciales para las arquitecturas de software contemporáneas, ya que permiten desacoplar servicios y ayudar a realizar llamadas asíncronas de software. y facilitar los procesos de escalado.
Un ejemplo de una arquitectura basada en eventos:
- Usted desarrolla una aplicación de procesamiento de imágenes .
- Cada vez que se sube una nueva imagen a un depósito se desencadena un evento .
- Este evento llama a una función que toma esa imagen y crea una miniatura a partir de ella .
- La miniatura se almacena en otro depósito.
- Esto activa otro evento que envía una notificación por correo electrónico al cliente.
NOTA La función OCI es una solución sin servidor de OCI, que le permite ejecutar un software de un solo propósito sin aprovisionar hardware o máquinas virtuales, el software se ejecuta en función de un evento o un trabajo programado, es como tener funciones como un servicio. Más de Funciones AQUÍ
Volviendo a OCI Events, algunas de las características importantes son:
- El servicio de eventos usa el objeto JSON para definir las reglas del evento . Puedes pensar en una regla como el filtro eso determinará qué eventos son importantes a considerar, para determinar cuáles serán sus entradas. Básicamente, las reglas desencadenan acciones . Un ejemplo de lógica de regla puede ser:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
)
Este evento se activará cuando se cree una nueva instancia informática
Pero...
¿Dónde está la parte JSON?
Sobre el evento en sí, veamos un ejemplo de un evento:
{
"eventType": "com.oraclecloud.computeapi.launchinstance.end",
"cloudEventsVersion": "0.1",
"eventTypeVersion": "2.0",
"source": "ComputeApi",
"eventTime": "2019-08-16T12:07:42.794Z",
"contentType": "application/json",
"data": {
"compartmentId": "ocid1.compartment.oc1..unique_ID",
"compartmentName": "example_compartment",
"resourceName": "my_instance",
"resourceId": "ocid1.instance.oc1.phx.unique_ID",
"availabilityDomain": "availability_domain",
"additionalDetails": {
"imageId": "ocid1.image.oc1.phx.unique_ID",
"shape": "VM.Standard2.1",
"type": "CustomerVmi"
}
},
"eventID": "unique_ID",
"extensions": {
"compartmentId": "ocid1.compartment.oc1..unique_ID"
}
}
Este es un ejemplo de una instancia que se acaba de crear y activará el evento.
- Puede agregar condiciones o filtros para restringir aún más sus eventos .
Durante la configuración de una regla de evento, puede agregar algunos atributos para filtrar aún más sus resultados
En este ejemplo estamos filtrando los resultados del tipo de evento, solo para cambios en Sandbox y dev compartimentos, toda la lógica se ve así:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
)
)
Adicional a esto, podemos agregar Condiciones de filtro basado en etiquetas
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
definedTags INCLUDES ANY OF (
Oracle-Tags.CreatedBy.elopez
)
)
)
Visualmente algo como:
Básicamente este evento se activará cada vez que se inicie una instancia en Sandbox O desarrollo compartimentos por el usuario elopez .
- Reglas más específicas y acción .
El principal objetivo de las reglas es provocar algo cuando se activan, de lo contrario serán inútiles.
Las acciones son respuestas definidas para eventos coincidentes
Las acciones se pueden crear usando:
Notificaciones enviar los mensajes a un servicio de notificación que puede enviarlos a los puntos finales que están suscritos al tema
Estos pueden ser:una dirección de correo electrónico, un grupo de correo electrónico, un canal de slack, etc.
Transmisión Al usar este servicio, incorporará sus eventos en un flujo de datos para obtener más análisis e inteligencia sobre estos datos.
Funciones las funciones se pueden ejecutar en función de los eventos recibidos. Ejemplo rápido:
puede tener un evento que se active cada vez que se crea una nueva instancia y esto ejecutará una función que configure el monitoreo para esa nueva instancia.
- Debe agregar permisos para que el servicio de eventos pueda llamar a los servicios de acción .
Tener en cuenta cualquier acción se deniega de forma predeterminada en OCI, por lo que deberá crear una política que permita que el servicio de eventos ejecute las acciones.
El permiso básico que necesitará es:
Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy
Esto es para el inquilino pero puede asignarlo a un Compartimento específico
Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV
Más sobre compartimentos AQUÍ