Inicio rápido: Enrutamiento de eventos personalizados a Azure Queue Storage con la CLI de Azure y Event Grid
Azure Event Grid es un agente de eventos sin servidor altamente escalable que se puede usar para integrar aplicaciones mediante eventos. Event Grid entrega los eventos a controladores de eventos admitidos y Azure Queue Storage es uno de ellos. En este artículo, se usa la CLI de Azure para los pasos siguientes:
- Permite crear un tema personalizado de Event Grid.
- Cree una suscripción a Azure Queue para el tema personalizado.
- Envíe los eventos de ejemplo al tema personalizado.
- Compruebe que esos eventos se entregan a Azure Queue Storage.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
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.
Nota
Seleccione Pruébelo junto al ejemplo de la CLI para iniciar Cloud Shell en el panel derecho. Seleccione Copiar para copiar el comando, péguelo en la ventana de Cloud Shell y presione ENTRAR para ejecutarlo.
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 el comando siguiente:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Cuando
registrationState
seaRegistered
, 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 el tema personalizado en el grupo de recursos. Reemplace <topic_name>
por un nombre único para el tema personalizado. El nombre del tema de Event Grid debe ser único porque está representado por una entrada del sistema de nombres de dominio (DNS).
Especifique un nombre para el tema.
topicname="<TOPIC NAME>"
Para crear el tema, ejecute el siguiente comando.
az eventgrid topic create --name $topicname -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.
Especifique un nombre único para la cuenta de Azure Storage.
storagename="<STORAGE ACCOUNT NAME>"
Ejecute los comandos siguientes para crear una cuenta de Azure Storage y una cola (denominada
eventqueue
) en el almacenamiento.queuename="eventqueue" az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)" az storage queue create --name $queuename --account-name $storagename --account-key $key
Suscripción a un tema personalizado
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/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT 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.
Importante
Reemplace el marcador de posición de fecha de expiración (<yyyy-mm-dd>
) por un valor real. Por ejemplo: 2022-11-17
antes de ejecutar el comando.
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 $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name mystoragequeuesubscription \
--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.
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. CURL es una utilidad que envía solicitudes HTTP. En este artículo, se usa 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.
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.