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

  1. Inicie sesión en Azure Portal.

  2. En el menú de navegación izquierdo, seleccione Todos los servicios.

  3. Seleccione Proceso en la lista Categorías.

  4. Mantenga el puntero (sin seleccionar) sobre Aplicación de funciones y seleccione +.

    Captura de pantalla que muestra la selección del vínculo Crear para una aplicación de funciones.

  5. En la página Aspectos básicos del asistente Crear aplicación de funciones, siga estos pasos:

    1. Seleccione la suscripción de Azure en la que quiere crear la aplicación de funciones.

    2. Cree un grupo de recursos nuevo o seleccione uno existente.

    3. Especifique un nombre para la aplicación de funciones.

    4. Seleccione .NET como Pila en tiempo de ejecución.

    5. En Versión, seleccione 6 (LTS), modelo In-Process.

    6. Seleccione la región más cercana.

    7. Seleccione Siguiente: Almacenamiento en la parte inferior de la página.

      Captura de pantalla en la que se muestra la pestaña Aspectos básicos de la página Crear aplicación de funciones.

  6. 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.

    Captura de pantalla que muestra la pestaña Almacenamiento de la página Crear aplicación de funciones.

  7. 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.

  8. 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.

  1. 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.

    Captura de pantalla en la que se muestra la selección del botón vínculo Crear función.

  2. En la página Crear función, siga estos pasos:

    1. En la sección Seleccionar plantilla, escriba en el cuadro de filtro o de búsqueda Desencadenador Azure Event Grid.

    2. Seleccione la plantilla Desencadenador de Azure Event Grid en la lista de plantillas.

    3. Seleccione Siguiente en la parte inferior de la página.

      Captura de pantalla que muestra la selección del desencadenador de Event Grid.

    4. En la página Detalles de plantilla, escriba un nombre para la función. En este ejemplo es HandleEventsFunc.

    5. Seleccione Crear.

      Captura de pantalla en la que se muestra la página Detalles de la plantilla.

  3. 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());
    }        
    

    Imagen en la que se muestra el menú Código y prueba seleccionado en una función de Azure.

  4. 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.

    Captura de pantalla que muestra la vista Supervisión de la función de Azure.

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.

  1. Inicie sesión en Azure Portal en una nueva pestaña de la ventana del explorador web.

  2. En la barra de búsqueda del tema, busque Temas de Event Grid y seleccione Temas de Event Grid.

    Imagen que muestra la selección de los temas de Event Grid.

  3. En la página Temas de Event Grid, seleccione + Crear en la barra de comandos.

    Captura de pantalla que muestra el botón Crear para crear un tema de Event Grid.

  4. En la página Crear tema, siga estos pasos:

    1. Seleccione la suscripción de Azure.

    2. Seleccione el mismo grupo de recursos que en los pasos anteriores.

    3. 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 "-".

    4. Seleccione una ubicación para el tema de Event Grid.

    5. Seleccione Revisar + crear.

      Captura de pantalla en la que se muestra la página Crear un tema.

    6. En la página Revisar y crear, examine la configuración y seleccione Crear.

  5. 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ó.

    Imagen que muestra la página principal del tema personalizado de Event Grid.

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.

  1. Ahora, en la página Tema de Event Grid de su tema personalizado, seleccione + Suscripción de eventos en la barra de herramientas.

    Imagen que muestra la selección de Agregar suscripción de eventos en la barra de herramientas.

  2. En la página Crear suscripción de eventos, siga estos pasos:

    1. Escriba un nombre para la suscripción a eventos.

    2. Seleccione Función de Azure en Tipo de punto de conexión.

    3. Elija Configurar un punto de conexión.

      Imagen que muestra los valores de suscripción de eventos.

    4. 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).

      Imagen que muestra la página Seleccionar función de Azure, en la cual se muestra la selección de la función que creó anteriormente.

    5. 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.

      Imagen que muestra la configuración de procesamiento por lotes de una suscripción de eventos.

    6. 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

  1. En Azure Portal, seleccione Cloud Shell. Seleccione Bash en la esquina superior izquierda de la ventana Cloud Shell.

    Imagen que muestra la ventana de Cloud Shell - Bash

  2. Establezca las variables topicname y resourcegroupname 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"
    
  3. 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)
    
  4. 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)
    
  5. 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"} ]'
    
  6. 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.

  1. 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.

  2. 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"
    
  3. 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
    
  4. 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)+"]"
    
  5. 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.

  1. En la página Supervisar de la función de Azure, verá una invocación.

    Captura de pantalla que muestra la pestaña Invocaciones de la página Supervisar.

  2. Seleccione la invocación para ver los detalles.

    Captura de pantalla que muestra los detalles de la invocación.

  3. 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.

    Imagen que muestra la vista de supervisión de la función de Azure con un registro.

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.

  1. 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.

  2. Seleccione el grupo de recursos para iniciar la página Grupo de recursos.

  3. Seleccione Eliminar grupo de recursos en la barra de herramientas.

  4. Confirme la eliminación; para ello, escriba el nombre del grupo de recursos y seleccione Eliminar.

    Grupos de recursos

    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:

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.