Compartir a través de


Enrutamiento de eventos personalizados a puntos de conexión web con Azure Portal y Azure Event Grid

Event Grid es un servicio totalmente administrado que le permite administrar fácilmente eventos en muchos servicios y aplicaciones de Azure diferentes. Simplifica la creación de aplicaciones controladas por eventos y sin servidor. Para obtener información general sobre el servicio, consulte ¿Qué es Azure Event Grid?

En este artículo, se usa Azure Portal para realizar las siguientes tareas:

  1. Cree un tema personalizado.
  2. Suscríbase a un tema personalizado.
  3. Desencadene el evento.
  4. Vea el resultado. Por lo general, se envían eventos a un punto de conexión que procesa los datos del evento y realiza acciones. Sin embargo, para simplificar en este artículo, los eventos se envían a una aplicación web que recopila y muestra los mensajes.

Requisitos previos

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Registro del proveedor de recursos de Event Grid

A menos que haya usado Event Grid antes, deberá registrar el proveedor de recursos de Event Grid. Si ha usado Event Grid anteriormente, vaya a la siguiente sección.

En Azure Portal, realice los siguientes pasos:

  1. En el menú de la izquierda, seleccione Suscripciones.

  2. Seleccione la suscripción que desea usar para Event Grid en la lista de suscripciones.

  3. En la página Suscripción, seleccione Proveedores de recursos en Configuración del menú izquierdo.

  4. Busque Microsoft.EventGrid y confirme que el estado es No registrado.

  5. Seleccione Microsoft.EventGrid en la lista de proveedores.

  6. Seleccione Registrar en la barra de comandos.

    Imagen que muestra el registro del proveedor Microsoft.EventGrid con la suscripción de Azure.

  7. Actualice para asegurarse de que el estado de Microsoft.EventGrid se cambia a Registrado.

    Imagen que muestra el registro correcto del proveedor Microsoft.EventGrid con la suscripció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 el portal de Azure.

  2. En la barra de búsqueda del tema, escriba Temas de Event Grid y, a continuación, seleccione Temas de Event Grid en la lista desplegable.

    Captura de pantalla que muestra la barra de búsqueda de puertos de Azure para buscar temas de Event Grid.

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

    Captura de pantalla que muestra el botón Crear tema en la página de temas de Event Grid.

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

    1. Selección la suscripciónde Azure.

    2. Seleccione un grupo de recursos existente o Crear nuevo y escriba un nombre para el grupo de recursos.

    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. En la parte inferior de la página, seleccione Revisar y crear.

      Página Crear tema

    6. En la pestaña Revisar y crear de la página Crear tema, seleccione Crear.

      Revisión de la configuración y creación

  5. Una vez que la implementación se haya realizado correctamente, seleccione Ir al recurso para ver la página Tema de Event Grid para su tema. Mantenga esta página abierta. La usará más adelante en este inicio rápido.

    Captura de pantalla que muestra la página principal de Tema de Event Grid.

    Nota

    Para simplificar el inicio rápido, solo usará la página Aspectos básicos para crear un tema. Para obtener pasos detallados sobre la configuración de la red, la seguridad y la residencia de datos en otras páginas del asistente, consulte Creación de un tema personalizado.

Creación de un punto de conexión de mensaje

Antes de crear una suscripción para el tema personalizado, cree un punto de conexión para el mensaje de evento. Normalmente, el punto de conexión realiza acciones en función de los datos del evento. Para simplificar este inicio rápido, se implementa una aplicación web precompilada que muestra los mensajes de los eventos. La solución implementada incluye un plan de App Service, una aplicación web de App Service y el código fuente desde GitHub.

  1. En la página del artículo, seleccione Implementar en Azure para implementar la solución en su suscripción. En Azure Portal, proporcione valores para los parámetros.

    Botón para implementar la plantilla de Resource Manager en Azure.

  2. En la página Implementación personalizada, siga estos pasos:

    1. En Grupo de recursos, seleccione un grupo de recursos existente o cree uno.

    2. En Nombre del sitio, escriba el nombre de la aplicación web.

    3. En Nombre del plan de hospedaje, escriba el nombre del plan de App Service que se va a usar para hospedar la aplicación web.

    4. Seleccione Revisar + crear.

      Captura de pantalla que muestra la página Implementación personalizada.

  3. En la página Revisar y crear, seleccione Crear.

  4. La implementación puede tardar unos minutos en completarse. Seleccione Alertas (el icono de la campana) en el portal y, después, seleccione Ir al grupo de recursos.

    Captura de pantalla que muestra el mensaje de implementación correcta con un vínculo para ir al grupo de recursos.

  5. En la página Grupo de recursos, en la lista de recursos, seleccione la aplicación web (contosoegriviewer, en el ejemplo siguiente) que creó.

    Captura de pantalla que muestra la página Grupo de recursos con los recursos implementados.

  6. En la página App Service de la aplicación web, seleccione la dirección URL para ir al sitio web. La dirección URL debe tener este formato: https://<your-site-name>.azurewebsites.net.

    Captura de pantalla que muestra la página de App Service con el vínculo al sitio resaltado.

  7. Confirme que ve el sitio, pero que aún no se han publicado eventos en él.

    Captura de pantalla que muestra la aplicación de ejemplo Visor 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.

    Botón Agregar una suscripción a evento

  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 Webhook como Tipo de punto de conexión.

    3. Elija Seleccionar un punto de conexión.

      Proporcionar valores de suscripción a eventos

    4. Para el punto de conexión de webhook, proporcione la dirección URL de la aplicación web y agregue api/updates a la dirección URL de la página principal. Seleccione Confirm Selection (Confirmar selección).

      Proporcionar la dirección URL del punto de conexión

    5. De nuevo en la página Crear suscripción de eventos, seleccione Crear.

  3. Vuelva a la aplicación web y observe que se ha enviado un evento de validación de suscripción. Seleccione el icono del ojo para expandir los datos del evento. Event Grid envía el evento de validación para que el punto de conexión pueda verificar que desea recibir datos de eventos. La aplicación web incluye código para validar la suscripción.

    Captura de pantalla de la aplicación Visor de Event Grid con el evento Suscripción validada.

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. Cloud Shell se abre en el panel inferior del explorador web.

    Selección del icono de Cloud Shell

  2. Seleccione Bash en la esquina superior izquierda de la ventana Cloud Shell.

    Captura de pantalla que muestra Cloud Shell con Bash seleccionado en la esquina superior izquierda.

  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. Publicas eventos de ejemplo en este punto de conexión del tema.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --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. Es la clave principal del tema de Event Grid. Para obtener esta clave en Azure Portal, cambie a la pestaña Claves de acceso de la página Tema de Event Grid. Para poder publicar un evento en un tema personalizado, necesita la clave de acceso.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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: En el comando, el encabezado aeg-sas-key se establece en la clave de acceso que obtuvo anteriormente.

    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/). Cloud Shell se abre en el panel inferior del explorador web.

    Selección del icono de Cloud Shell

  2. En Cloud Shell, 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.

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

    Grupo de recursos:

    $resourceGroupName = "<resource group name>"
    

    Nombre del tema de Event Grid:

    $topicName = "<topic name>"
    
  4. 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
    
  5. 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)+"]"
    
  6. 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 en Visor de Event Grid

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 aplicación web para ver el evento que acaba de enviar.

Visor de Event Grid

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.

    Captura de pantalla que muestra la página 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.

    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 personalizados y eventos, aprenda más acerca de cómo puede ayudarle Event Grid:

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.