Inicio rápido: Enrutamiento de eventos personalizados a una instancia de Azure Functions con Event Grid
Azure Event Grid es un servicio de eventos para la nube. Azure Functions es uno de los controladores de eventos compatibles. En este artículo, se usa Azure Portal para crear un tema personalizado, suscribirse al tema y desencadenar el evento para ver el resultado. Los eventos se envían a una instancia de Azure Functions.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Creación de una aplicación de funciones de Azure
Inicie sesión en Azure Portal.
En el menú de navegación izquierdo, seleccione Todos los servicios.
Seleccione Proceso en la lista Categorías.
Mantenga el puntero (sin seleccionar) sobre Aplicación de funciones y seleccione +.
En la página Aspectos básicos del asistente Crear aplicación de funciones, siga estos pasos:
Seleccione la suscripción de Azure en la que quiere crear la aplicación de funciones.
Cree un grupo de recursos nuevo o seleccione uno existente.
Especifique un nombre para la aplicación de funciones.
Seleccione .NET como Pila en tiempo de ejecución.
En Versión, seleccione 6 (LTS), modelo In-Process.
Seleccione la región más cercana.
Seleccione Siguiente: Almacenamiento en la parte inferior de la página.
En la página Almacenamiento, cree una cuenta de almacenamiento o seleccione una existente para asociarla a la aplicación de funciones y, a continuación, seleccione Revisar y crear en la parte inferior de la página.
En la página Revisar y crear, revise la configuración y seleccione Crear en la parte inferior de la página para crear la aplicación de funciones.
Una vez que la implementación se haya realizado correctamente, seleccione Ir al recurso para ir a la página principal de la aplicación de funciones.
Creación de una función
Antes de suscribirse al tema personalizado, cree una función para controlar los eventos.
En la página Aplicación de funciones, en la sección Crear en Azure Portal, seleccione vínculo Crear función en el panel derecho.
En la página Crear función, siga estos pasos:
En la sección Seleccionar plantilla, escriba en el cuadro de filtro o de búsqueda Desencadenador Azure Event Grid.
Seleccione la plantilla Desencadenador de Azure Event Grid en la lista de plantillas.
Seleccione Siguiente en la parte inferior de la página.
En la página Detalles de plantilla, escriba un nombre para la función. En este ejemplo es HandleEventsFunc.
Seleccione Crear.
En la página Función de HandleEventsFunc, seleccione Código y prueba en el menú de navegación izquierdo, reemplace el código por el código siguiente y, a continuación, seleccione Guardar en la barra de comandos.
#r "Azure.Messaging.EventGrid" #r "System.Memory.Data" using Azure.Messaging.EventGrid; using System; public static void Run(EventGridEvent eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); }
Seleccione Supervisar en el menú izquierdo y cambie a la pestaña Registros. Mantenga abierta esta ventana o pestaña del explorador para poder ver la información del evento que se ha recibido.
Creación de un tema personalizado
Un tema de Event Grid proporciona un punto de conexión definido por el usuario en el que se registran los eventos.
Inicie sesión en Azure Portal en una nueva pestaña de la ventana del explorador web.
En la barra de búsqueda del tema, busque Temas de Event Grid y seleccione Temas de Event Grid.
En la página Temas de Event Grid, seleccione + Crear en la barra de comandos.
En la página Crear tema, siga estos pasos:
Seleccione la suscripción de Azure.
Seleccione el mismo grupo de recursos que en los pasos anteriores.
Escriba un nombre único para el tema personalizado. El nombre del tema debe ser único porque se representa mediante una entrada DNS. No use el nombre que se muestra en la imagen. En su lugar, cree su propio nombre: debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-Z, 0-9 y "-".
Seleccione una ubicación para el tema de Event Grid.
Seleccione Revisar + crear.
En la página Revisar y crear, examine la configuración y seleccione Crear.
Una vez creado el tema personalizado, seleccione el enlace Ir al recurso para ver la siguiente página de tema de Event Grid del tema que creó.
Suscripción a un tema personalizado
Suscríbase a un tema de Event Grid que indique a Event Grid los eventos cuyo seguimiento quiere realizar y el lugar al que deben enviarse los eventos.
Ahora, en la página Tema de Event Grid de su tema personalizado, seleccione + Suscripción de eventos en la barra de herramientas.
En la página Crear suscripción de eventos, siga estos pasos:
Escriba un nombre para la suscripción a eventos.
Seleccione Función de Azure en Tipo de punto de conexión.
Elija Configurar un punto de conexión.
Para el punto de conexión de la función, seleccione la suscripción de Azure y el grupo de recursos en que está la aplicación de funciones y, después, seleccione la aplicación de funciones y la función que creó anteriormente. Seleccione Confirm Selection (Confirmar selección).
Este paso es opcional, pero se recomienda para escenarios de producción. En la página Crear suscripción de eventos, cambie a la pestaña Características avanzadas y establezca los valores de Max events per batch (Máximo de eventos por lote) y Preferred batch size in kilobytes (Tamaño de lote preferido en kilobytes).
El procesamiento por lotes puede proporcionarle un alto rendimiento. Para Max events per batch (Máximo de eventos por lote), establezca el número máximo de eventos que una suscripción incluirá en un lote. El tamaño de lote preferido establece el límite superior preferido del tamaño del lote en kilobytes, pero se puede superar si un solo evento es mayor que este umbral.
En la página Crear suscripción de eventos, seleccione Crear.
Envío de un evento al tema
Ahora, vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. Use la CLI de Azure o PowerShell para enviar un evento de prueba a su tema personalizado. Normalmente, una aplicación o servicio de Azure enviaría los datos del evento.
En el primer ejemplo se utiliza la CLI de Azure. Se obtiene la dirección URL y la clave del tema personalizado, y los datos de evento de ejemplo. Use su nombre de un tema personalizado para <topic name>
. Se crean datos de evento de ejemplo. El elemento data
del archivo JSON es la carga del evento. En este campo, puede usar cualquier archivo JSON bien formado. También puede usar el campo de asunto para realizar enrutamiento y filtrado avanzados. CURL es una utilidad que envía solicitudes HTTP.
Azure CLI
En Azure Portal, seleccione Cloud Shell. Seleccione Bash en la esquina superior izquierda de la ventana Cloud Shell.
Establezca las variables
topicname
yresourcegroupname
que se usarán en los comandos.Reemplace
TOPICNAME
por el nombre del tema de Event Grid.topicname="TOPICNAME"
Reemplace
RESOURCEGROUPNAME
por el nombre del grupo de recursos de Azure que contiene el tema de Event Grid.resourcegroupname="RESOURCEGROUPNAME"
Ejecute el comando siguiente para obtener el punto de conexión para el tema: Después de copiar y pegar el comando, actualice el nombre del tema y el nombre del grupo de recursos antes de ejecutar el comando.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
Ejecute el siguiente comando para obtener la clave para el tema personalizado: Después de copiar y pegar el comando, actualice el nombre del tema y el nombre del grupo de recursos antes de ejecutar el comando.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
Copie la siguiente instrucción con la definición del evento y presione ENTRAR.
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
Ejecute el siguiente comando de CURL para publicar el evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
El segundo ejemplo usa PowerShell para realizar pasos similares.
En Azure Portal, seleccione Cloud Shell (o vaya a
https://shell.azure.com/
). Seleccione PowerShell en la esquina superior izquierda de la ventana Cloud Shell. Vea el la imagen de la ventana Cloud Shell del ejemplo en la sección de la CLI de Azure.Establezca las siguientes variables. Después de copiar y pegar cada comando, actualice el nombre del tema y el nombre del grupo de recursos antes de ejecutar el comando:
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
Ejecute los siguientes comandos para obtener el punto de conexión y las claves del tema:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
Prepare el evento. Copie y ejecute las instrucciones en la ventana Cloud Shell.
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct body using Hashtable $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert event body from Hashtable to JSON Object #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Use el cmdlet Invoke-WebRequest para enviar el evento.
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Comprobación de que la función recibió el evento
Ha desencadenado el evento y Event Grid ha enviado el mensaje al punto de conexión que configuró al realizar la suscripción.
En la página Supervisar de la función de Azure, verá una invocación.
Seleccione la invocación para ver los detalles.
También puede usar la pestaña Registros del panel derecho para ver los mensajes registrados al publicar eventos en el punto de conexión del tema.
Limpieza de recursos
Si piensa seguir trabajando con este evento, no limpie los recursos creados en este artículo. De lo contrario, elimine los recursos que ha creado en este artículo.
Seleccione Grupos de recursos en el menú de la izquierda. Si no lo ve en el menú izquierdo, seleccione Todos los servicios en el menú de la izquierda y, después, seleccione Grupos de recursos.
Seleccione el grupo de recursos para iniciar la página Grupo de recursos.
Seleccione Eliminar grupo de recursos en la barra de herramientas.
Confirme la eliminación; para ello, escriba el nombre del grupo de recursos y seleccione Eliminar.
El otro grupo de recursos que se ve en la imagen ha sido creado y utilizado por la ventana Cloud Shell. Elimínelo si no va a usar la ventana Cloud Shell más adelante.
Pasos siguientes
Ahora que sabe cómo crear suscripciones a temas y eventos, aprenda más sobre cómo Event Grid puede ayudarle:
- Una introducción a Azure Event Grid
- Enrutamiento de eventos de Blob Storage a un punto de conexión web personalizado
- Supervisión de los cambios en máquinas virtuales con Azure Event Grid y Logic Apps
- Transmisión de macrodatos a un almacén de datos
Consulte los ejemplos siguientes para obtener información sobre la publicación y el consumo de eventos desde Event Grid con diferentes lenguajes de programación.