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
- Tener instalado Visual Studio Code en una de las plataformas compatibles.
- Extensión de Azure Functions
Creación de una función
Abra Visual Studio Code.
En la barra izquierda, seleccione Azure.
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.
Seleccione una carpeta donde quiera guardar el código de función.
Para el comando Crear nuevo proyecto, en Lenguaje, seleccione C# y, a continuación, seleccione la tecla Entrar.
En Runtime de .NET, seleccione LTS aislado de .NET 8.0 y, después, la tecla Entrar.
En Plantilla para la función, seleccione Desencadenador de Azure Event Grid y, a continuación, seleccione la tecla Entrar.
En Nombre de función, escriba un nombre para la función y, a continuación, seleccione la tecla Entrar.
En Espacio de nombres, escriba un nombre para el espacio de nombres de la función y, a continuación, seleccione la tecla Entrar.
Abra el proyecto en la ventana actual o en una nueva ventana o agréguelo a un área de trabajo.
Espere a que se cree la función. El estado de la creación de la función aparece en la esquina inferior derecha.
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
Seleccione el botón Azure de la barra izquierda si el panel de Azure aún no está abierto.
Mantenga el mouse sobre el proyecto y seleccione el botón Implementar en Azure.
En la lista desplegable de la paleta de comandos, seleccione + Crear nueva aplicación de funciones y, a continuación, seleccione la tecla Entrar.
En Nombre, escriba un nombre único global para la nueva aplicación de funciones y, a continuación, seleccione la tecla Entrar.
En Pila en tiempo de ejecución, seleccione .NET 8 aislado.
Para Ubicación de los recursos de Azure, seleccione una región cercana.
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.
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.
Haga clic con el botón derecho en la función y seleccione Abrir en el portal.
Inicie sesión en Azure si es necesario y confirme que la página Aplicación de funciones aparezca para la función.
En el panel inferior, seleccione su función.
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.
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 una nueva pestaña de la ventana del explorador web, inicie sesión en Azure Portal.
En la barra de búsqueda del tema, busque Temas de Event Grid y seleccione Temas de Event Grid.
En la página Temas, seleccione + Crear en la barra de comandos.
En el panel Crear tema, siga estos pasos:
En Suscripción, seleccione su suscripción de Azure.
En Grupo de recursos, seleccione el mismo grupo de recursos en los pasos anteriores.
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 (
-
).Para Región, seleccione una ubicación para el tema de Event Grid.
Seleccione Revisar + crear.
En la pestaña Revisar y crear, revise la configuración y a continuación, seleccione Crear.
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.
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.
En la página Tema de Event Grid de su tema personalizado, seleccione + Suscripción a eventos en la barra de herramientas.
En el panel Crear suscripción de eventos, siga estos pasos:
En Nombre, escriba un nombre para la suscripción a eventos.
En Esquema de eventos, seleccione Esquema de eventos en la nube v1.0.
En Tipo de punto de conexión, seleccione Función de Azure.
Seleccione Configurar un punto de conexión.
En el panel Seleccionar la función de Azure, siga estos pasos:
En Suscripción, seleccione la suscripción de Azure que tenga la función.
Para Grupo de recursos, seleccione el grupo de recursos que contenga la función.
En Aplicación de funciones, seleccione su aplicación de funciones.
En Función, seleccione la función en la aplicación de funciones.
Seleccione Confirm Selection (Confirmar selección).
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.
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
En Azure Portal, seleccione Cloud Shell. Si está en modo de Azure PowerShell, seleccione Cambiar a Bash.
Establezca las variables
topicname
yresourcegroupname
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"
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)
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)
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"} ]'
Ejecute el comando de CURL siguiente para publicar el evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Confirme que el mensaje de la función aparece en la pestaña Registros de la función en Azure Portal.
Azure PowerShell
El segundo ejemplo usa Azure PowerShell para realizar pasos similares.
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.
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"
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
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)+"]"
Use el cmdlet
Invoke-WebRequest
para enviar el evento:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Confirme que el mensaje de la función aparece en la pestaña Registros de la función en Azure Portal.
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ó.
En la página Supervisión de la función, busque una invocación.
Seleccione la invocación para mostrar los detalles.
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.
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.
En el menú de la izquierda, seleccione Grupos de recursos.
Una alternativa es seleccionar Todos los servicios en el menú de la izquierda y, a continuación, seleccionar Grupos de recursos.
Seleccione el grupo de recursos para abrir el panel y ver los detalles.
Seleccione Eliminar grupo de recursos en la barra de herramientas.
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.
Contenido relacionado
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 Azure 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
Para aprender a publicar y consumir eventos en Event Grid mediante varios lenguajes de programación, vea los siguientes ejemplos: