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 antes de empezar.
Creación de una función de Azure
Antes de suscribirse al tema personalizado, cree una función para controlar los eventos.
Cree una aplicación de funciones mediante las instrucciones de Creación de una aplicación de función.
En la página Aplicación de funciones, seleccione Funciones en el menú de la izquierda.
Seleccione +Crear en la barra de herramientas para crear una función.
En la página Crear función, siga estos pasos:
Este paso es opcional. En el Entorno de desarrollo, seleccione el entorno de desarrollo que quiere usar para trabajar con el código de función.
Seleccione Desencadenador de Azure Event Grid en la sección Seleccionar una plantilla.
Escriba el nombre de la función. En este ejemplo es HandleEventsFunc.
Use la página Código o prueba para ver el código existente de la función y actualizarlo.
Habilitación del proveedor de recursos de Event Grid
Si aún no ha usado anteriormente Event Grid en su suscripción de Azure, puede que tenga que registrar el proveedor de recursos de Event Grid.
En Azure Portal:
- Seleccione Suscripciones en el menú de la izquierda.
- Seleccione la suscripción que está usando para Event Grid.
- En el menú de la izquierda, en Configuración, seleccione Proveedores de recursos.
- Busque Microsoft.EventGrid.
- Si no está registrado, seleccione Registrar.
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el estado es Registrado, ya está listo para continuar.
Creación de un tema personalizado
Un tema de cuadrícula de eventos proporciona un punto de conexión definido por el usuario en el que se registran los eventos.
Inicie sesión en el portal de Azure.
Seleccione Todos los servicios en el menú de navegación izquierdo, busque Event Grid y seleccione Temas de Event Grid.
En la página Temas de Event Grid, seleccione + Agregar en la barra de herramientas.
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 cuadrícula de eventos que indique a Event Grid los eventos cuyo seguimiento desea 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 Seleccionar 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.
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 <topic name> -g <resource group name> --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 <topic name> -g <resource group name> --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 = <resource group name> $topicName = <topic name>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 $topicNamePrepare 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. Vaya a la función desencadenada por Event Grid y abra los registros, donde debería ver una copia de la carga de datos del evento. Si no la ve, asegúrese de que abre primero los registros, o pulsa Volver a conectar, y luego intente volver a enviar el evento de prueba.
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.