Compartir a través de


Inicio rápido: Enrutamiento de eventos personalizados a una función de Azure mediante 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 inicio rápido, 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 función con un desencadenador de Event Grid mediante Visual Studio Code

En esta sección, usará Visual Studio Code para crear una función con un desencadenador de Event Grid.

Requisitos previos

Creación de una función

  1. Abra Visual Studio Code.

  2. En la barra izquierda, seleccione Azure.

  3. En el panel izquierdo, en la sección ÁREA DE TRABAJO, seleccione el botón Azure Functions de la barra de comandos y a continuación, seleccione Crear función.

    Recorte de pantalla que muestra la pestaña de Azure de Visual Studio Code con el comando de menú para crear una función.

  4. Seleccione una carpeta donde quiera guardar el código de función.

  5. Para el comando Crear nuevo proyecto, en Lenguaje, seleccione C# y, a continuación, seleccione la tecla Entrar.

    Recorte de pantalla que muestra la selección de C Sharp como lenguaje para desarrollar una función de Azure.

  6. En Runtime de .NET, seleccione LTS aislado de .NET 8.0 y, después, la tecla Entrar.

  7. En Plantilla para la función, seleccione Desencadenador de Azure Event Grid y, a continuación, seleccione la tecla Entrar.

  8. En Nombre de función, escriba un nombre para la función y, a continuación, seleccione la tecla Entrar.

  9. En Espacio de nombres, escriba un nombre para el espacio de nombres de la función y, a continuación, seleccione la tecla Entrar.

  10. Abra el proyecto en la ventana actual o en una nueva ventana o agréguelo a un área de trabajo.

  11. Espere a que se cree la función. El estado de la creación de la función aparece en la esquina inferior derecha.

    Recorte de pantalla que muestra el estado de la creación de la función.

  12. Vea el código en el archivo YourFunctionName.cs, específicamente el método Run. Imprime la información mediante un registrador.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Implementación de la función en Azure

  1. Seleccione el botón Azure de la barra izquierda si el panel de Azure aún no está abierto.

  2. Mantenga el mouse sobre el proyecto y seleccione el botón Implementar en Azure.

    Recorte de pantalla que muestra el botón de implementación en Azure.

  3. En la lista desplegable de la paleta de comandos, seleccione + Crear nueva aplicación de funciones y, a continuación, seleccione la tecla Entrar.

  4. En Nombre, escriba un nombre único global para la nueva aplicación de funciones y, a continuación, seleccione la tecla Entrar.

  5. En Pila en tiempo de ejecución, seleccione .NET 8 aislado.

  6. Para Ubicación de los recursos de Azure, seleccione una región cercana.

  7. El estado de creación de la aplicación de funciones aparece en la pestaña AZURE del panel inferior. Una vez creada la aplicación de funciones, verá el estado de implementación de la función que creó localmente en la aplicación de funciones.

  8. Cuando la implementación se realice correctamente, expanda el mensaje Crear aplicación de funciones correctamente y seleccione Haga clic para ver el recurso. Confirme que su función se haya seleccionado en la sección RECURSOS del panel izquierdo.

  9. Haga clic con el botón derecho en la función y seleccione Abrir en el portal.

    Recorte de pantalla que muestra las selecciones para abrir una función en el portal.

  10. Inicie sesión en Azure si es necesario y confirme que la página Aplicación de funciones aparezca para la función.

  11. En el panel inferior, seleccione su función.

    Recorte de pantalla que muestra la selección de una función de Azure en la página Function App.

  12. Cambie a la pestaña Registros. Mantenga esta pestaña abierta para poder ver los mensajes registrados al enviar un evento a un tema de Event Grid más adelante en este tutorial.

    Captura de pantalla que muestra la pestaña Registros de una función en Azure Portal.

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. En una nueva pestaña de la ventana del explorador web, inicie sesión en Azure Portal.

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

    Recorte de pantalla que muestra la selección de temas de Event Grid.

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

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

  4. En el panel Crear tema, siga estos pasos:

    1. En Suscripción, seleccione su suscripción de Azure.

    2. En Grupo de recursos, seleccione el mismo grupo de recursos en los pasos anteriores.

    3. En Nombre, proporcione un nombre único para el tema personalizado. El nombre del tema debe ser único porque una entrada del Sistema de nombres de dominio (DNS) lo representa.

      No use el nombre que se muestra en la imagen de ejemplo. En su lugar, cree un nuevo. Debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-Z, 0-9 y un guión (-).

    4. Para Región, seleccione una ubicación para el tema de Event Grid.

    5. Seleccione Revisar + crear.

      Captura de pantalla que muestra el panel de creación de temas.

    6. En la pestaña Revisar y crear, revise la configuración y a continuación, seleccione Crear.

  5. Una vez creado el tema personalizado, seleccione el vínculo Ir al recurso para abrir la página Tema de Event Grid para ese tema.

    Recorte de pantalla que muestra la página de un 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. En la página Tema de Event Grid de su tema personalizado, seleccione + Suscripción a eventos en la barra de herramientas.

    Recorte de pantalla que muestra el botón para agregar una suscripción a eventos en la barra de herramientas.

  2. En el panel Crear suscripción de eventos, siga estos pasos:

    1. En Nombre, escriba un nombre para la suscripción a eventos.

    2. En Esquema de eventos, seleccione Esquema de eventos en la nube v1.0.

    3. En Tipo de punto de conexión, seleccione Función de Azure.

    4. Seleccione Configurar un punto de conexión.

      Recorte de pantalla que muestra los valores de la suscripción de eventos.

    5. En el panel Seleccionar la función de Azure, siga estos pasos:

      1. En Suscripción, seleccione la suscripción de Azure que tenga la función.

      2. Para Grupo de recursos, seleccione el grupo de recursos que contenga la función.

      3. En Aplicación de funciones, seleccione su aplicación de funciones.

      4. En Función, seleccione la función en la aplicación de funciones.

      5. Seleccione Confirm Selection (Confirmar selección).

        Recorte de pantalla que muestra el panel para seleccionar una función de Azure creada anteriormente.

    6. Este paso es opcional, pero se recomienda para escenarios de producción. En el panel Crear suscripción de eventos, vaya a la pestaña Características adicionales y establezca los valores de Máximo de eventos por lote y Tamaño de lote preferido en kilobytes.

      El procesamiento por lotes puede proporcionarle un alto rendimiento. Para Número 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 en kilobytes establece el límite superior preferido del tamaño del lote, pero se puede superar si un solo evento es mayor que este umbral.

      Recorte de pantalla que muestra la configuración del procesamiento por lotes de una suscripción a eventos.

    7. En el panel Crear suscripción a eventos, seleccione Crear.

Envío de un evento al tema

Ahora, desencadene un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. Use la CLI de Azure o Azure 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, así como los datos de evento de ejemplo. Use su nombre de un tema personalizado para topicname. 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.

La herramienta cURL envía solicitudes HTTP. En este artículo, se usa cURL para enviar el evento al tema personalizado.

CLI de Azure

  1. En Azure Portal, seleccione Cloud Shell. Si está en modo de Azure PowerShell, seleccione Cambiar a Bash.

    Recorte de pantalla que muestra la ventana de Bash en Azure Cloud Shell.

  2. Establezca las variables topicname y resourcegroupname que se usan 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. Use el siguiente comando para obtener el punto de conexión del tema. Después de copiar y pegar el comando, actualice el nombre del tema y el nombre del grupo de recursos antes de ejecutarlo.

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

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Copie la siguiente instrucción con la definición de evento y, a continuación, seleccione la tecla 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 comando de CURL siguiente para publicar el evento:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. Confirme que el mensaje de la función aparece en la pestaña Registros de la función en Azure Portal.

    Recorte de pantalla que muestra la pestaña Registros de una función de Azure.

Azure PowerShell

El segundo ejemplo usa Azure PowerShell para realizar pasos similares.

  1. En Azure Portal, seleccione Cloud Shell (o vaya a la página de Azure Cloud Shell). En la esquina superior izquierda de la ventana de Cloud Shell, seleccione Cambiar a PowerShell.

  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 estas instrucciones en la ventana de Cloud Shell:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're 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}
    
  6. Confirme que el mensaje de la función aparece en la pestaña Registros de la función en Azure Portal.

    Recorte de pantalla que muestra la pestaña Registros de una función.

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. Ahora puede comprobar si la función lo recibió.

  1. En la página Supervisión de la función, busque una invocación.

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

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

    Recorte de pantalla que muestra los detalles de invocación.

    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.

    Recorte de pantalla que muestra la vista Supervisión de una función con un registro.

Limpieza de recursos

Si piensa seguir trabajando con este evento, no limpie los recursos que ha creado en este artículo. De lo contrario, elimine los recursos que ha creado en este artículo.

  1. En el menú de la izquierda, seleccione Grupos de recursos.

    Recorte de pantalla que muestra la página de los grupos de recursos

    Una alternativa es seleccionar Todos los servicios en el menú de la izquierda y, a continuación, seleccionar Grupos de recursos.

  2. Seleccione el grupo de recursos para abrir el panel y ver los detalles.

  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.

La ventana de Cloud Shell creó y usó el otro grupo de recursos que aparece en la página Grupos de recursos. Elimine este grupo de recursos si no tiene previsto usar la ventana de Cloud Shell más adelante.

Ahora que sabe cómo crear suscripciones a temas y eventos, aprenda más sobre cómo Event Grid puede ayudarle:

Para aprender a publicar y consumir eventos en Event Grid mediante varios lenguajes de programación, vea los siguientes ejemplos: