Inicio rápido: Enrutar eventos personalizados a Azure Queue Storage con la CLI de Azure y Event Grid
Azure Event Grid es un servicio de eventos para la nube. Azure Queue Storage es uno de los controladores de eventos compatibles. 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. Envíe los eventos a Queue Storage.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell.
Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
En este artículo se necesita la versión 2.0.56 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Si va a usar Azure PowerShell en la máquina local en lugar de usar Cloud Shell en Azure Portal, asegúrese de que dispone de la versión 1.1.0 de Azure PowerShell u otra versión posterior. Descargue la versión más reciente de Azure PowerShell en la máquina Windows desde Descargas de Azure: herramientas de línea de comandos.
En este artículo se proporcionan los comandos para usar la CLI de Azure.
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.
az group create --name gridResourceGroup --location westus2
Habilitar el 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. Ejecute el siguiente comando para registrar el proveedor:
az provider register --namespace Microsoft.EventGrid
El registro puede tardar unos instantes en finalizar. Para comprobar el estado, ejecute:
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 cuadrícula de eventos proporciona un punto de conexión definido por el usuario en el que se registran los eventos. En el ejemplo siguiente se crea el tema personalizado en el grupo de recursos. Reemplace <topic_name> por un nombre único para el tema personalizado. El nombre del tema de cuadrícula de eventos debe ser único porque se representa mediante una entrada DNS.
az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup
Creación de una instancia de Queue Storage
Antes de suscribirse al tema personalizado, vamos a crear el punto de conexión para el mensaje de evento. Cree una instancia de Queue Storage para recopilar los eventos.
storagename="<unique-storage-name>"
queuename="eventqueue"
az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
az storage queue create --name $queuename --account-name $storagename
Suscripción a un tema personalizado
Suscríbase a un tema personalizado para indicar a Event Grid los eventos cuyo seguimiento desea realizar. En el ejemplo siguiente se suscribirá al tema personalizado que creó y pasará el identificador del recurso de la instancia de Queue Storage para el punto de conexión. Con la CLI de Azure, se pasa el identificador de Queue Storage como punto de conexión. El punto de conexión tiene el formato:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>/queueservices/default/queues/<queue-name>
El siguiente script obtiene el identificador del recurso de la cuenta de almacenamiento de la cola. Construye el identificador de la cola de almacenamiento y se suscribe a un tema de Event Grid. Establece el tipo de punto de conexión en storagequeue y utiliza el identificador de la cola del punto de conexión.
storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint-type storagequeue \
--endpoint $queueid \
--expiration-date "<yyyy-mm-dd>"
La cuenta que crea la suscripción de eventos debe tener acceso de escritura al almacenamiento en la cola. Tenga en cuenta que se ha establecido una fecha de expiración para la suscripción.
Si utiliza la API REST para crear la suscripción, pasa el identificador de la cuenta de almacenamiento y el nombre de la cola como un parámetro independiente.
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"eventqueue",
"resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
}
...
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. De nuevo, use su nombre de tema personalizado para <topic_name>.
endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -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. CURL es una utilidad que envía solicitudes HTTP. En este artículo, usará CURL para enviar el evento al tema personalizado. En el ejemplo siguiente se envían tres eventos al tema de Event Grid:
for i in 1 2 3
do
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"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
Vaya a la instancia de Queue Storage en el portal y tenga en cuenta que Event Grid envió esos tres eventos a la cola.

Nota
Si usa un desencadenador de Azure Queue Storage para Azure Functions para una cola que recibe mensajes de Event Grid, es posible que vea el siguiente mensaje de error en la ejecución de la función: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
La razón es que, cuando se usa un desencadenador de Azure Queue Storage, Azure Functions espera una cadena codificada en Base64, pero Event Grid envía mensajes a una cola de almacenamiento como texto sin formato. Actualmente, no es posible configurar el desencadenador de cola para que Azure Functions acepte el texto sin formato.
Limpieza de recursos
Si piensa seguir trabajando con este evento, 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:
- 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.
