Compartir a través de


Inicio rápido: Enrutamiento de eventos personalizados al punto de conexión de web con la CLI de Azure y Event Grid

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usará la CLI de Azure para crear un tema personalizado, suscribirse a él y desencadenar el evento para ver 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.

Cuando haya terminado, verá que los datos del evento se han enviado a la aplicación web.

Captura de pantalla que muestra el ejemplo del visor de Event Grid con un evento de ejemplo.

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

Requisitos previos

  • En este artículo se necesita la versión 2.0.70 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Crear un grupo de recursos

Los temas de Event Grid son recursos de Azure y se deben colocar en un grupo de recursos de Azure. El grupo de recursos de Azure es una colección lógica en la que se implementan y administran los recursos de Azure.

Para crear un grupo de recursos, use el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado gridResourceGroup en la ubicación westus2. Si selecciona Pruébelo, verá la ventana de Azure Cloud Shell en el panel derecho. A continuación, seleccione Copiar para copiar el comando y pegarlo en la ventana de Azure Cloud Shell y presione INTRODUCIR para ejecutar el comando. Si quiere, puede cambiar el nombre del grupo de recursos y la ubicación.

az group create --name gridResourceGroup --location westus2

Habilitar el proveedor de recursos de Event Grid

  1. 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. Ejecute el siguiente comando para registrar el proveedor:

    az provider register --namespace Microsoft.EventGrid
    
  2. El registro puede tardar unos instantes en finalizar. Para comprobar el estado, ejecute el comando siguiente:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Cuando registrationState sea Registered, estará preparado para continuar.

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. En el ejemplo siguiente se crea en un grupo de recursos el tema personalizado mediante Bash en Azure Cloud Shell. Reemplace <your-topic-name> por un nombre único para el tema. El nombre del tema personalizado debe ser único porque forma parte de la entrada Sistema de nombres de dominio (DNS). Además, debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-Z, 0-9 y "-".

  1. Copie el siguiente comando, especifique un nombre para el tema y presione ENTER para ejecutar el comando.

    topicname=<your-topic-name>
    
  2. Utilice el comando az eventgrid topic create para crear un tema personalizado.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

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

Antes de suscribirse al tema personalizado, vamos a crear el 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. Copie el siguiente comando, especifique un nombre para la aplicación web (ejemplo del visor de Event Grid) y presione ENTER para ejecutar el comando. Reemplace <your-site-name> por un nombre único para la aplicación web. El nombre de la aplicación web debe ser único, ya que es parte de la entrada DNS.

    sitename=<your-site-name>
    
  2. Ejecute az deployment group create para implementar la aplicación web mediante una plantilla de Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

La implementación puede tardar unos minutos en finalizar. Después de que la implementación se haya realizado correctamente, puede ver la aplicación web para asegurarse de que se está ejecutando. En un explorador web, vaya a: https://<your-site-name>.azurewebsites.net

Debería ver el sitio, que no muestra ningún mensaje actualmente.

Suscripción a un tema personalizado

Suscríbase a un tema de Event Grid para indicarle los eventos de los que quiere realizar un seguimiento y el lugar al que deben enviarse dichos eventos. En el ejemplo siguiente se suscribirá al tema personalizado que ha creado y pasará la dirección URL de la aplicación web como el punto de conexión de la notificación de eventos.

El punto de conexión de la aplicación web debe incluir el sufijo /api/updates/.

  1. Copie el comando siguiente, reemplace $sitename por el nombre de la aplicación web que creó en el paso anterior y presione INTRODUCIR para ejecutar el comando.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Ejecute el siguiente comando para obtener el id. de recurso del tema que creó.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Ejecute el siguiente comando para crear una suscripción al tema personalizado mediante el punto de conexión.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint      
    

    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.

    Visualización del evento de suscripción en el visor de Azure Event Grid

Envío de un evento al tema personalizado

Vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. En primer lugar, vamos a obtener la dirección URL y la clave del tema personalizado.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Para simplificar este artículo, usará datos de evento de ejemplo para enviar al tema personalizado. Normalmente, una aplicación o servicio de Azure enviaría los datos del evento. En el ejemplo siguiente se crean datos de evento de ejemplo:

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"} ]'

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. En este artículo, use CURL para enviar el evento al tema.

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

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.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

Limpieza de recursos

Si piensa seguir trabajando con este evento o con la aplicación de visualización de eventos, no limpie los recursos creados en este artículo. En caso contrario, use el siguiente comando para eliminar los recursos creados en este artículo.

az group delete --name gridResourceGroup

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.