0% encontró este documento útil (0 votos)
225 vistas524 páginas

Guía de Azure Event Grid en IoT Edge

Este documento proporciona información sobre Azure Event Grid, incluyendo una introducción general, guías de inicio rápido, tutoriales, ejemplos y conceptos. Cubre temas como la publicación y suscripción a eventos personalizados y de sistema, el uso de controladores de eventos como Azure Functions y colas de almacenamiento, y la seguridad y solución de problemas de Event Grid. También incluye referencias como Azure CLI, PowerShell, REST y SDKs.

Cargado por

Fabian Mendoza
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
225 vistas524 páginas

Guía de Azure Event Grid en IoT Edge

Este documento proporciona información sobre Azure Event Grid, incluyendo una introducción general, guías de inicio rápido, tutoriales, ejemplos y conceptos. Cubre temas como la publicación y suscripción a eventos personalizados y de sistema, el uso de controladores de eventos como Azure Functions y colas de almacenamiento, y la seguridad y solución de problemas de Event Grid. También incluye referencias como Azure CLI, PowerShell, REST y SDKs.

Cargado por

Fabian Mendoza
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Contents

Documentación sobre Azure Event Grid


Documentación del cambio a Event Grid en IoT Edge
Información general
¿Qué es Event Grid?
Comparación de los servicios de mensajería
Notas de la versión
Guías de inicio rápido
Eventos de almacenamiento
Portal
Azure CLI
Azure PowerShell
Plantilla ARM
Eventos personalizados
Portal
Azure CLI
PowerShell
Azure Functions como controlador de eventos
Almacenamiento en cola como controlador de eventos
Event Hubs como controlador de eventos
Eventos de Container Registry
Tutoriales
Envío de un correo electrónico cuando cambia la máquina virtual
Cambio de tamaño de las imágenes cargadas
Desencadenamiento de runbook de Automation
Envío de un correo electrónico cuando se agrega un dispositivo de IoT Hub
Respuesta a eventos de Service Bus
Datos de flujo de Event Hubs
Enrutamiento de eventos de Media Services
Enrutamiento a Hybrid Connection
Ejemplos
Azure CLI
Creación de un tema personalizado
Suscripción a suscripciones de Azure
Suscripción a Blob Storage
Suscripción a un tema personalizado
Suscripción a grupos de recursos
Suscripción y filtrado de eventos para grupos de recursos
Azure PowerShell
Creación de un tema personalizado
Suscripción a suscripciones de Azure
Suscripción a Blob Storage
Suscripción a un tema personalizado
Suscripción a grupos de recursos
Suscripción y filtrado de eventos para grupos de recursos
Plantillas de Resource Manager
Ejemplos de código
Elementos integrados de Azure Policy
Conceptos
Terminología de Event Grid
Temas personalizados
Temas del sistema
Introducción a los temas del sistema
Orígenes de eventos
Azure App Configuration
Azure App Service
Azure Blob Storage
Azure Container Registry
Azure Event Hubs
Azure IoT Hub
Azure Key Vault
Azure Machine Learning
Azure Maps
Azure Media Services
Grupos de recursos de Azure
Azure Service Bus
Azure SignalR
Suscripciones de Azure
Temas de asociados
Introducción a los temas de asociados
Auth0
Convertirse en asociado de Event Grid
Dominios de eventos
Formatos del esquema de eventos
Esquema de eventos de Event Grid
Esquema de eventos en la nube
Controladores de eventos
webhooks
Azure Functions
Event Hubs
Azure Service Bus
Retransmisión de conexiones híbridas
Colas de Storage
Entrega de eventos
Filtro de evento
Entrega y nuevo intento
Entrega de eventos de webhook
Recuperación ante desastres
Recuperación geográfica ante desastres
Seguridad
Autenticación de la entrega de eventos en los controlador de eventos
Autenticación de clientes de publicación
Autorización del acceso a los recursos de Event Grid
Seguridad de las redes
Supervisión y solución de problemas
Registros de diagnóstico
Métricas
Guías paso a paso
Creación, visualización y administración de temas del sistema
Azure portal
Azure CLI
Plantilla del Administrador de recursos de Azure
Obtención de claves de acceso de temas o dominios
Publicación en tema personalizado
Suscripción a eventos de Auth0
Recepción de eventos en un punto de conexión de HTTP
Mensajes fallidos y reintentos
Filtrado de eventos
Consulta de suscripciones a eventos
Suscripción a través del portal
Asignación de campos personalizados al esquema
Uso del esquema de CloudEvents
Administración de temas con Dominios de eventos
Implementación de conmutación por error en el lado de cliente
Seguimiento de operaciones de REST asincrónicas
Seguridad
Configuración de puntos de conexión privados
Configuración de la dirección IP del firewall (versión preliminar)
Protección de webhook con AAD
Entrega de evento con identidad administrada
Solución de problemas
Habilitar registros de diagnóstico
Solución de errores
Solución de problemas de conectividad de red
Solución de problemas de validación de suscripciones
Visualización de métricas
Creación de alertas
Referencia
Azure CLI
PowerShell
REST
.NET
Java
Python
[Link]
Cuotas y límites
Esquema de suscripción
Recursos de plantilla
Suscripciones a eventos
Temas
SDK
Recursos
Desarrollo de aptitudes con Microsoft Learn
Azure Roadmap
Precios
Calculadora de precios
Stack Overflow
Tutorial: Publicación de eventos y suscripción a ellos
de forma local
04/08/2020 • 13 minutes to read • Edit Online

Este artículo le guía por todos los pasos necesarios para publicar eventos y suscribirse a ellos mediante Event Grid
en IoT Edge.

NOTE
Para información sobre los temas y las suscripciones de Azure Event Grid, consulte Conceptos de Event Grid.

Prerrequisitos
Para realizar este tutorial, necesitará lo siguiente:
Una suscripción a Azure : cree una cuenta gratuita si aún no tiene una.
Dispositivo Azure IoT Hub e IoT Edge : siga los pasos del inicio rápido para dispositivos Linux o Windows si
aún no tiene uno.

Implementación del módulo de Event Grid en IoT Edge


Hay varias maneras de implementar módulos en un dispositivo IoT Edge, y todas ellas funcionan con Azure Event
Grid en IoT Edge. En este artículo se describen los pasos para implementar Event Grid en IoT Edge desde Azure
Portal.

NOTE
En este tutorial, implementará el módulo de Event Grid sin persistencia. Esto significa que los temas y las suscripciones que
cree en este tutorial se eliminarán al volver a implementar el módulo. Para más información sobre cómo configurar la
persistencia, consulte los artículos siguientes: Persistencia del estado en Linux o Persistencia del estado en Windows. En el
caso de las cargas de trabajo de producción, se recomienda instalar el módulo de Event Grid con persistencia.

Selección del dispositivo IoT Edge


1. Inicie sesión en el Portal de Azure
2. Vaya a su instancia de IoT Hub.
3. Seleccione IoT Edge en el menú de la sección Administración automática de dispositivos .
4. Haga clic en el identificador del dispositivo de destino en la lista de dispositivos.
5. Seleccione Set modules (Establecer módulos). Mantenga la página abierta. Continuará con los pasos de la
siguiente sección.
Configuración de un manifiesto de implementación
Un manifiesto de implementación es un documento JSON que describe qué módulos se van a implementar, cómo
fluyen los datos entre los módulos y las propiedades deseadas de los módulos gemelos. Azure Portal tiene un
asistente que le guía en la creación de un manifiesto de implementación, en lugar de crear el documento JSON de
forma manual. Consta de tres pasos: Adición de módulos , Especificación de rutas y Revisión de la
implementación .
Adición de módulos
1. En la sección Módulos de implementación , seleccione Agregar .
2. En los tipos de módulos de la lista desplegable, seleccione Módulo IoT Edge
3. Proporcione el nombre, la imagen y las opciones de creación del contenedor:
Nombre : eventgridmodule
URI de imagen : [Link]/azure-event-grid/iotedge:latest
Opciones de creación del contenedor :

NOTE
Compruebe siempre la versión de la imagen para asegurarse de que tiene las características que necesita. Si tiene una
versión anterior de la imagen de contenedor ya extraída en el equipo, deberá especificar la etiqueta de versión que
desee o eliminar la imagen existente antes de volver a extraerla con la etiqueta :latest . Para más información sobre
las versiones y etiquetas de las imágenes, consulte las notas de la versión.

{
"Env": [
"inbound__clientAuth__clientCert__enabled=false"
],
"HostConfig": {
"PortBindings": {
"4438/tcp": [
{
"HostPort": "4438"
}
]
}
}
}

4. Haga clic en Guardar


5. Continúe con la sección siguiente para agregar el módulo de suscriptor de Azure Event Grid antes de
implementarlos juntos.

IMPORTANT
En este tutorial, implementará el módulo de Event Grid con la autenticación de cliente deshabilitada. En el caso de las
cargas de trabajo de producción, se recomienda habilitar la autenticación de cliente. Para más información sobre cómo
configurar el módulo de Event Grid de forma segura, consulte Seguridad y autenticación.
Si va a usar una máquina virtual de Azure como dispositivo perimetral, agregue una regla de puerto de entrada para
permitir tráfico entrante en el puerto 4438. Para instrucciones sobre cómo agregar la regla, consulte Apertura de
puertos en una máquina virtual.

Implementación del módulo IoT Edge de suscriptor de Event Grid


En esta sección se muestra cómo implementar otro módulo de IoT que funcionará como controlador de eventos al
que se pueden entregar eventos.
Adición de módulos
1. En la sección Módulos de implementación , seleccione de nuevo Agregar .
2. En los tipos de módulos de la lista desplegable, seleccione Módulo IoT Edge
3. Proporcione el nombre, la imagen y las opciones de creación del contenedor:
Nombre : suscriptor
URI de imagen : [Link]/azure-event-grid/iotedge-samplesubscriber:latest
Opciones de creación del contenedor : None
4. Haga clic en Guardar
5. Seleccione Siguiente para ir a la sección de rutas
Configuración de rutas
Mantenga las rutas predeterminadas y seleccione Siguiente para pasar a la sección de revisión.
Envío de la solicitud de implementación
1. La sección de revisión le muestra el manifiesto de implementación en formato JSON que se ha creado en
función de las selecciones de la sección anterior. Confirme que ve los módulos eventgridmodule y
subscriber enumerados en el archivo JSON.
2. Revise la información de implementación y seleccione Enviar . Después de enviar la implementación,
regresará a la página del dispositivo .
3. En la sección Módulos , compruebe que aparecen los módulos eventgrid y subscriber . Además,
compruebe que las columnas Especificado en la implementación y Notificado por el dispositivo
están establecidas en Sí .
Puede tardar unos minutos para que el módulo se inicie en el dispositivo y, a continuación, notifique a IoT
Hub. Actualice la página para ver el estado actualizado.

de un tema
Como publicador de un evento, debe crear un tema de Event Grid. En Azure Event Grid, un tema hace referencia a
un punto de conexión al que los publicadores pueden enviar eventos.
1. Cree [Link] con el siguiente contenido. Para más información sobre la carga, consulte nuestra
documentación de API.

{
"name": "sampleTopic1",
"properties": {
"inputschema": "eventGridSchema"
}
}

2. Ejecute el comando siguiente para crear un tema de Event Grid. Confirme que se muestra el código de
estado HTTP 200 OK .

curl -k -H "Content-Type: application/json" -X PUT -g -d @[Link] [Link]


ip-here>:4438/topics/sampleTopic1?api-version=2019-01-01-preview

3. Use el siguiente comando para comprobar que se creó el tema correctamente. Se devolverá el código de
estado HTTP "200 - Correcto".

curl -k -H "Content-Type: application/json" -X GET -g [Link]


here>:4438/topics/sampleTopic1?api-version=2019-01-01-preview

Salida del ejemplo:


[
{
"id": "/iotHubs/eg-iot-edge-hub/devices/eg-edge-
device/modules/eventgridmodule/topics/sampleTopic1",
"name": "sampleTopic1",
"type": "[Link]/topics",
"properties": {
"endpoint": "[Link]
preview",
"inputSchema": "EventGridSchema"
}
}
]

Creación de una suscripción a evento


Los suscriptores pueden registrarse en eventos publicados en un tema. Para recibir cualquier evento, deberá crear
una suscripción de Event Grid para un tema de interés.

NOTE
Si necesita asegurarse de que los eventos pendientes persisten en caso de que se reinicie el dispositivo, deberá habilitar la
persistencia para la suscripción de eventos. Para más información sobre cómo configurar la persistencia, consulte los artículos
siguientes: Persistencia del estado en Linux o Persistencia del estado en Windows.

1. Cree el archivo [Link] con el siguiente contenido. Para más información sobre la carga, consulte la
Documentación de API

{
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[Link]
}
}
}
}

NOTE
La propiedad endpointType especifica que el suscriptor es un webhook . La propiedad endpointUrl especifica la
dirección URL en la que el suscriptor escucha los eventos. Esta dirección URL corresponde al ejemplo de suscriptor de
Azure que implementó anteriormente.

2. Ejecute el siguiente comando para crear una suscripción para el tema. Confirme que se muestra el código de
estado HTTP 200 OK .

curl -k -H "Content-Type: application/json" -X PUT -g -d @[Link] [Link]


public-ip-here>:4438/topics/sampleTopic1/eventSubscriptions/sampleSubscription1?api-version=2019-01-01-
preview

3. Ejecute el siguiente comando para comprobar que la suscripción se ha creado correctamente. Se devolverá
el código de estado HTTP "200 - Correcto".
curl -k -H "Content-Type: application/json" -X GET -g [Link]
here>:4438/topics/sampleTopic1/eventSubscriptions/sampleSubscription1?api-version=2019-01-01-preview

Salida del ejemplo:

{
"id": "/iotHubs/eg-iot-edge-hub/devices/eg-edge-
device/modules/eventgridmodule/topics/sampleTopic1/eventSubscriptions/sampleSubscription1",
"type": "[Link]/eventSubscriptions",
"name": "sampleSubscription1",
"properties": {
"Topic": "sampleTopic1",
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[Link]
}
}
}
}

Publicación de un evento
1. Cree el archivo [Link] con el siguiente contenido. Para más información sobre la carga, consulte nuestra
documentación de API.

[
{
"id": "eventId-func-0",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2019-07-28T21:03:07+00:00",
"dataVersion": "1.0",
"data": {
"make": "Ducati",
"model": "Monster"
}
}
]

2. Ejecute el siguiente comando para publicar un evento.

curl -k -H "Content-Type: application/json" -X POST -g -d @[Link] [Link]


ip-here>:4438/topics/sampleTopic1/events?api-version=2019-01-01-preview

Comprobación de la entrega del evento


1. Use el protocolo SSH o RDP en la máquina virtual IoT Edge.
2. Compruebe los registros del suscriptor:
En Windows, ejecute el siguiente comando:

docker -H npipe:////./pipe/iotedge_moby_engine container logs subscriber

En Linux, ejecute el siguiente comando:


sudo docker logs subscriber

Salida del ejemplo:

Received Event:
{
"id": "eventId-func-0",
"topic": "sampleTopic1",
"subject": "myapp/vehicles/motorcycles",
"eventType": "recordInserted",
"eventTime": "2019-07-28T21:03:07+00:00",
"dataVersion": "1.0",
"metadataVersion": "1",
"data": {
"make": "Ducati",
"model": "Monster"
}
}

Limpieza de recursos
Ejecute el siguiente comando para eliminar el tema y todas sus suscripciones.

curl -k -H "Content-Type: application/json" -X DELETE [Link]


here>:4438/topics/sampleTopic1?api-version=2019-01-01-preview

Elimine el módulo de suscriptor del dispositivo IoT Edge.

Pasos siguientes
En este tutorial, ha creado un tema y una suscripción de Event Grid y ha publicado eventos. Ahora que conoce los
pasos básicos, consulte los siguientes artículos:
Para solucionar problemas relacionados con el uso de Azure Event Grid en IoT Edge, consulte la Guía de solución
de problemas.
Cree o actualice una suscripción con filtros.
Habilite la persistencia del módulo de Event Grid en Linux o Windows.
Siga la documentación para configurar la autenticación de cliente
Reenvíe eventos a Azure Functions en la nube siguiendo este tutorial.
Reacción a eventos de Blob Storage en IoT Edge
Supervisión de temas y suscripciones en el perímetro
¿Qué es Azure Event Grid?
04/08/2020 • 9 minutes to read • Edit Online

Azure Event Grid permite crear fácilmente aplicaciones con arquitecturas basadas en eventos. En primer
lugar, seleccione el recurso de Azure al que le gustaría suscribirse y, posteriormente, asigne el
controlador de eventos o el punto de conexión de WebHook para enviar el evento. Event Grid tiene
compatibilidad integrada para eventos procedentes de los servicios de Azure, como los blobs de
almacenamiento y los grupos de recursos. Event Grid también tiene compatibilidad para sus propios
eventos mediante temas personalizados.
Puede usar filtros para enrutar eventos específicos a distintos puntos de conexión, multidifusión a varios
puntos de conexión y asegurarse de que los eventos se entregan de forma confiable.
Azure Event Grid se implementa para maximizar la disponibilidad mediante la distribución nativa por
múltiples dominios de error en cada región, y por zonas de disponibilidad (en regiones que los admiten).
Para obtener una lista de las regiones que admite Event Grid, consulte Productos disponibles por región.
Este artículo ofrece información general sobre Azure Event Grid. Para comenzar a usar rápidamente
Event Grid, consulte Creación y enrutamiento de eventos personalizados con Azure Event Grid.

En esta imagen se muestra cómo se conectan los orígenes y los controladores en Event Grid, pero no
proporciona una lista completa de las integraciones admitidas.

Orígenes de eventos
Actualmente, los siguientes servicios de Azure admiten el envío de eventos a Event Grid:
Azure App Configuration
Azure Blob Storage
Azure Container Registry
Azure Event Hubs
Azure IoT Hub
Azure Key Vault
Azure Machine Learning
Azure Maps
Azure Media Services
Grupos de recursos de Azure
Azure Service Bus
Azure SignalR
Suscripciones de Azure

Controladores de eventos
Para obtener una información completa sobre las funcionalidades de cada controlador, así como los
artículos relacionados, consulte controladores de eventos. Actualmente, los siguientes servicios de Azure
admiten el control de eventos de Event Grid:
Azure Automation
Funciones de Azure
Event Hubs
Retransmisión de conexiones híbridas
Logic Apps
Power Automate (conocido anteriormente como Microsoft Flow)
Service Bus
Queue Storage
Webhooks

Conceptos
Hay cinco conceptos en Azure Event Grid que le permiten empezar a trabajar:
Eventos : ¿qué ha ocurrido?
Orígenes de eventos : ¿dónde tuvo lugar el evento?
Temas : el punto de conexión donde los publicadores envían los eventos.
Suscripciones a eventos : el punto de conexión o mecanismo integrado para enrutar eventos, a
veces a más de un controlador. Los controladores también usan las suscripciones para filtrar los
eventos de entrada de forma inteligente.
Controladores de eventos : la aplicación o servicio que reacciona al evento.
Para más información acerca de estos conceptos, consulte Conceptos en Azure Event Grid.

Capacidades
Estas son algunas características clave de Azure Event Grid:
Simplicidad : seleccione y haga clic para conseguir eventos desde el recurso de Azure a cualquier
controlador de eventos o punto de conexión.
Filtrado avanzado : filtre por tipo de evento o por ruta de acceso del publicador del evento para
asegurarse de que los controladores de eventos solo reciben eventos pertinentes.
Distribución ramificada : suscriba varios puntos de conexión al mismo evento para enviar copias
del evento a tantos lugares como sea necesario.
Confiabilidad : 24 horas de reintento con retroceso exponencial para asegurarse de que se entregan
los eventos.
Pago por evento : pague solo por la cantidad utilizada en Event Grid.
Alto rendimiento : cree cargas de trabajo de gran volumen en Event Grid con soporte para millones
de eventos por segundo.
Eventos integrados : desarrolle y ejecute rápidamente con eventos integrados definidos por el
recurso.
Eventos personalizados : use Event Grid para enrutar, filtrar y entregar de forma confiable eventos
personalizados en su aplicación.
Para obtener una comparación de Event Grid, Event Hubs y Service Bus, vea Choose between Azure
services that deliver message (Elección entre servicios de Azure de envío mensajes).

¿Qué puedo hacer con Event Grid?


Azure Event Grid proporciona varias características que mejoran considerablemente el trabajo sin
servidor, la automatización de operaciones y la integración:
Arquitecturas de aplicación sin servidor

Event Grid conecta orígenes de datos y controladores de eventos. Por ejemplo, usar Event Grid para
desencadenar una función sin servidor que analiza imágenes cuando se agregan a un contenedor de
almacenamiento de blobs.
Automatización de operaciones

Event Grid permite agilizar la automatización y simplificar el cumplimiento de directivas. Por ejemplo,
puede usar Event Grid para enviar una notificación a Azure Automation cuando se crea una máquina
virtual o una base de datos en Azure SQL. Use los eventos para comprobar de forma automática que la
configuración del servicio es compatible, poner metadatos en herramientas de operaciones, etiquetar
máquinas virtuales o archivar elementos de trabajo.
Integración de aplicaciones
Event Grid conecta su aplicación con otros servicios. Por ejemplo, cree un tema personalizado para
enviar los datos de eventos de su aplicación a Event Grid y aprovechar la entrega confiable, el
enrutamiento avanzado y la integración directa con Azure que ofrece. También puede usar Event Grid
con Logic Apps para procesar datos en cualquier parte, sin necesidad de escribir código.

¿Cuánto cuesta Event Grid?


Azure Event Grid usa un modelo de precios de pago por evento, por lo que solo se paga por lo que usa.
Los 100 000 primeras operaciones al mes son gratis. Las operaciones se definen como entrada de
eventos, intentos de entrega de suscripción, llamadas de administración y filtrado por el sufijo de asunto.
Para obtener información detallada, consulte la página de precios.

Pasos siguientes
Enrutamiento de los eventos de Storage Blob
Permite responder a los eventos de Storage Blob mediante Event Grid.
Crear eventos personalizados y suscribirse a ellos
Para comenzar de inmediato y empezar a enviar sus propios eventos personalizados a cualquier
punto de conexión con el inicio rápido de Azure Event Grid.
Uso de Logic Apps como controlador de eventos
Tutorial sobre la creación de una aplicación con Logic Apps para reaccionar ante eventos enviados
por Event Grid.
Transmisión de macrodatos a un almacén de datos
Tutorial en el que se usa Azure Functions para transmitir datos desde Event Hubs al SQL Data
Warehouse.
Referencia de la API de REST de Event Grid
Proporciona contenido de referencia para la administración de suscripciones a eventos, el
enrutamiento y el filtrado.
Elija entre los servicios de mensajería de Azure: Event
Grid, Event Hubs y Service Bus
04/08/2020 • 10 minutes to read • Edit Online

Azure ofrece tres servicios que le ayudan en la entrega de mensajes de evento en una solución. Estos servicios son
los siguientes:
Event Grid
Event Hubs
Service Bus
Aunque son similares, cada servicio se designa para escenarios determinados. Este artículo describe las diferencias
entre estos servicios y le ayuda a entender cuál elegir para su aplicación. En muchos casos, los servicios de
mensajería son complementarios y se pueden usar conjuntamente.

Servicios de eventos frente a los de mensajería


Hay una diferencia importante entre los servicios que entregan un evento y los que entregan un mensaje.
Evento
Un evento es una notificación ligera de una condición o un cambio de estado. El publicador del evento no tiene
ninguna expectativa sobre cómo se trata el evento. El consumidor del evento decide qué hacer con la notificación.
Los eventos pueden ser unidades discretas o parte de una serie.
Los eventos discretos notifican un cambio de estado y se puede actuar sobre ellos. Para realizar el paso siguiente,
el consumidor solo necesita saber que algo ha pasado. Los datos de evento tienen información acerca de lo que ha
ocurrido, pero no tienen los datos que desencadenaron el evento. Por ejemplo, un evento notifica a los
consumidores que se ha creado un archivo. Puede tener información general acerca del archivo, pero no contiene
el propio archivo. Los eventos discretos funcionan muy bien con soluciones sin servidor que necesitan escalarse.
Los eventos de serie notifican una condición y son analizables. Los eventos están ordenados en el tiempo e
interrelacionados. El consumidor necesita la serie de eventos ordenada para analizar lo que ha pasado.
Message
Un mensaje son datos sin procesar producidos por un servicio que se consumen o almacenan en otro lugar. El
mensaje contiene los datos que desencadenó la canalización del mensaje. El publicador del mensaje tiene una
expectativa sobre la forma en que el consumidor trata el mensaje. Existe un contrato entre ambas partes. Por
ejemplo, el publicador envía un mensaje con los datos sin procesar, espera que el consumidor cree un archivo a
partir de esos datos y envía una respuesta cuando el trabajo finaliza.

Comparación de servicios
SERVIC IO P RO P Ó SITO T IP O C UÁ N DO SE USA

Event Grid Programación reactiva Distribución de eventos Reacción ante los cambios
(discretos) de estado

Event Hubs Canalización de macrodatos Streaming de eventos (serie) Streaming de datos


distribuidos y telemetría
SERVIC IO P RO P Ó SITO T IP O C UÁ N DO SE USA

Azure Service Bus Mensajería empresarial de Message Procesamiento de pedidos y


gran valor transacciones financieras

Event Grid
Event Grid es un panel posterior de eventos que habilita la programación orientada a eventos y reactiva. Utiliza un
modelo de publicación-suscripción. Los publicadores emiten eventos, pero no tienen expectativas sobre qué
eventos se administran. Los suscriptores deciden qué eventos quieren administrar.
Event Grid está totalmente integrado con los servicios de Azure y puede integrarse con servicios de terceros.
Simplifica el consumo de eventos y reduce los costos mediante la eliminación de la necesidad de un sondeo
constante. Event Grid enruta de forma eficiente y fiable eventos desde recursos de Azure y que no son de Azure.
Distribuye los eventos a los puntos de conexión del suscriptor registrado. El mensaje de evento tiene la
información que necesita para reaccionar a los cambios en los servicios y aplicaciones. Event Grid no es una
canalización de datos y no entrega el objeto real que se ha actualizado.
Event Grid admite colas de mensajes fallidos para los eventos que no se pueden entregar en un punto de
conexión.
Tiene las siguientes características:
dinámicamente escalable
bajo costo
sin servidor
al menos una entrega
Event Hubs
Azure Event Hubs es una canalización de macrodatos. Facilita la captura, la retención y la reproducción de los datos
de streaming de eventos y telemetría. Los datos pueden proceder de distintos orígenes simultáneos. Event Hubs
permite que los datos de telemetría y eventos estén disponibles para una variedad de servicios de análisis e
infraestructuras de procesamiento de streaming. Está disponible como transmisiones de datos o lotes de eventos
agrupados. Este servicio proporciona una solución única que permite una recuperación de datos rápida para el
procesamiento en tiempo real, así como una reproducción repetida de los datos sin procesar almacenados. Puede
capturar los datos de streaming en un archivo para su procesamiento y análisis.
Tiene las siguientes características:
baja latencia
capacidad de recibir y procesar millones de eventos por segundo
al menos una entrega
Azure Service Bus
Service Bus se ha diseñado para aplicaciones empresariales tradicionales. Estas aplicaciones empresariales
requieren transacciones, ordenación, detección de duplicados y coherencia inmediata. Service Bus permite que las
aplicaciones nativas de la nube proporcionen una administración de transición de estado de confianza para los
procesos empresariales. Cuando se administran mensajes de gran valor que no se pueden perder o duplicarse, use
Azure Service Bus. Service Bus también facilita la comunicación de alta seguridad en soluciones híbridas en la
nube y pueden conectar sistema locales existentes a soluciones en la nube.
Service Bus es un sistema de mensajería asincrónica. Almacena los mensajes en un "agente" (por ejemplo, una
cola) hasta que la parte consumidora esté preparada para recibirlos.
Tiene las siguientes características:
entrega de mensajes asincrónica de confianza (mensajería empresarial como servicio) que requiere el sondeo.
características de mensajería avanzada, como FIFO, procesamiento por lotes o sesiones, transacciones, colas de
mensajes fallidos, control temporal, enrutamiento y filtrado, y detección de duplicados
al menos una entrega
entrega en orden opcional

Uso conjunto de servicios


En algunos casos, puede utilizar servicios en paralelo para cumplir con distintos roles. Por ejemplo, un sitio de
comercio electrónico puede utilizar Service Bus para procesar el pedido, Event Hubs para capturar la telemetría del
sitio y Event Grid para responder a eventos, como un artículo enviado.
En otros casos, puede vincular estas soluciones para formar una canalización de datos y eventos. Use Event Grid
para responder a los eventos en los demás servicios. Para obtener un ejemplo sobre el uso de Event Grid con
Event Hubs para migrar datos a un almacén de datos, vea Transmisión de macrodatos a un almacén de datos. En la
siguiente imagen se muestra el flujo de trabajo para el streaming de datos.

Pasos siguientes
Vea los artículos siguientes:
Opciones de mensajería asincrónica en Azure
Events, Data Points, and Messages - Choosing the right Azure messaging service for your data (Eventos, puntos
de datos y mensajes - Elección del servicio de mensajería de Azure adecuado para los datos).
Colas de Storage y de Service Bus: comparación y diferencias
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Para comenzar a usar Event Hubs, vea Creación de un espacio de nombres de Event Hubs y un centro de
eventos con Azure Portal.
Para comenzar a usar Service Bus, vea Creación de un espacio de nombres de Service Bus mediante Azure
Portal.
Novedades de Azure Event Grid
04/08/2020 • 6 minutes to read • Edit Online

Reciba notificaciones para volver a visitar esta página y obtener actualizaciones; para ello, copie y pegue la
dirección URL
[Link] en el
lector de fuentes.

En Azure Event Grid se realizan mejoras de forma continua. Para mantenerse al día de los avances más recientes,
este artículo proporciona información acerca de los elementos siguientes:
Versiones más recientes
Problemas conocidos
Corrección de errores
Funciones obsoletas
Planes de cambios

6.0.0 (2020-06)
Agregue compatibilidad a la nueva versión 2020-06-01 de la API de servicio de disponibilidad general.
Las nuevas características que han pasado a tener disponibilidad general son:
Asignaciones de entradas
Esquema de entrada personalizado
Esquema de eventos en la nube v10
Tema de Service Bus como destino
Función de Azure como destino
Procesamiento por lotes de webhooks
Webhook seguro (soporte técnico de Azure Active Directory)
Filtrado de IP
Soporte técnico del servicio Private Link
Esquema de entrega de eventos

5.3.2-preview (2020-05)
Esta versión incluye correcciones de errores adicionales para mejorar la calidad.
Como la versión 5.3.1-preview, esta versión corresponde a la versión de API 2020-04-01-preview, que incluye
las siguientes funcionalidades nuevas:
Compatibilidad con el filtrado de IP al publicar eventos en dominios y temas
Temas de asociados
Temas del sistema como recursos en seguimiento en Azure Portal
Entrega de evento con Managed Service Identity
Soporte técnico del servicio Private Link

5.3.1-versión preliminar (2020-04)


Esta versión incluye correcciones de errores diversas para mejorar la calidad.
Como la versión 5.3.0-preview, esta versión corresponde a la versión de API 2020-04-01-preview, que incluye
las siguientes funcionalidades nuevas:
Compatibilidad con el filtrado de IP al publicar eventos en dominios y temas
Temas de asociados
Temas del sistema como recursos en seguimiento en Azure Portal
Entrega de evento con Managed Service Identity
Soporte técnico del servicio Private Link

5.3.0-preview (2020-03)
Incorporamos nuevas características sobre las características ya agregadas en la versión 5.2.0-preview.
Como la versión de 5.2.0-preview, esta versión corresponde a la versión de API 2020-04-01-Preview.
Agrega compatibilidad con las siguientes funcionalidades nuevas:
Compatibilidad con el filtrado de IP al publicar eventos en dominios y temas
Temas de asociados
Temas del sistema como recursos en seguimiento en Azure Portal
Entrega de evento con Managed Service Identity
Soporte técnico del servicio Private Link

5.2.0-preview (2020-01)
Esta versión corresponde a la versión de API 2020-04-01-preview.
Agrega compatibilidad con la siguiente funcionalidad nueva:
Compatibilidad con el filtrado de IP al publicar eventos en dominios y temas

5.0.0 (2019-05)
Esta versión corresponde a la versión de API 2019-06-01 .
Agrega compatibilidad con las siguientes funcionalidades nuevas:
Dominios
Paginación y filtro de búsqueda para las operaciones de lista de recursos. Para obtener un ejemplo,
consulte Temas: Lista por suscripción.
Cola de Service Bus como destino
Filtrado avanzado

4.1.0-preview (2019-03)
Esta versión corresponde a la versión de API 2019-02-01-preview.
Agrega compatibilidad con las siguientes funcionalidades nuevas:
Paginación y filtro de búsqueda para las operaciones de lista de recursos. Para obtener un ejemplo,
consulte Temas: Lista por suscripción.
Temas de creación y eliminación manual de dominios
Cola de Service Bus como destino

4.0.0 (2018-12)
Esta versión corresponde a la versión de API 2019-01-01 estable.
Admite la disponibilidad general de las siguientes funcionalidades relacionadas con las suscripciones a eventos:
Destino de la cola de mensajes fallidos
Cola de Azure Storage como destino
Azure Relay: Conexiones híbridas como destino
Validación manual del protocolo de enlace
Compatibilidad con directivas de reintento
Todavía se puede acceder a las características que aún están en versión preliminar (como los dominios de Event
Grid o la compatibilidad con filtros avanzados mediante la versión 3.0.1-preview del SDK.

3.0.1-preview (2018-10)
Dependencia de la versión 10.0.3 del paquete NuGet de Newtonsoft.

3.0.0-preview (2018-10)
Esta versión es un SDK de versión preliminar para las nuevas características introducidas en la versión de API
2018-09-15-preview. Esta versión incluye compatibilidad con:
Dominios y temas de dominio
Presentación de fecha de expiración para la suscripción de eventos
Presentación de filtrado avanzado para suscripciones de eventos
La versión estable del SDK que tiene como destino la versión de API 2018-01-01 sigue existiendo como
versión 1.3.0

Pasos siguientes
Inicio rápido: Enrutamiento de eventos de Blob
Storage a un punto de conexión web personalizado
con Azure Portal
04/08/2020 • 11 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usará Azure Portal para crear una
cuenta de Blob Storage, suscribirse a eventos de Blob Storage y desencadenar un 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.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Cuando haya terminado, verá que los datos del evento se han enviado a la aplicación web.

Crear una cuenta de almacenamiento


1. Inicie sesión en el portal de Azure.
2. Para crear una instancia de Blob Storage, seleccione Crear un recurso .
3. Seleccione Storage para filtrar las opciones disponibles y seleccione Storage account - blob, file, table,
queue (Cuenta de almacenamiento: blob, archivo, tabla, cola).
Para suscribirse a eventos, cree una cuenta de almacenamiento de uso general v2 o una cuenta de Blob
Storage.
4. En la página Crear cuenta de almacenamiento , siga estos pasos:
a. Seleccione su suscripción a Azure.
b. En Grupo de recursos , cree un nuevo grupo de recursos o seleccione uno existente.
c. Escriba el nombre de la cuenta de almacenamiento.
d. Seleccione Revisar + crear .
e. En la página Revisar y crear , examine la configuración y seleccione Crear .

NOTE
Solo las cuentas de almacenamiento de tipo StorageV2 (uso general v2) y BlobStorage admiten la
integración de eventos. Storage (uso general v1) no admite la integración con Event Grid.

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


Antes de suscribirse a los eventos de Blob Storage, vamos a crear el punto de conexión para el mensaje del evento.
Normalmente, el punto de conexión realiza acciones en función de los datos del evento. Para simplificar esta guía
de inicio rápido, se implementa una aplicación web pregenerada 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. Seleccione Deploy to Azure (Implementar en Azure) para implementar la solución en su suscripción.

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


a. En Grupo de recursos , seleccione el grupo de recursos que usó para crear la cuenta de
almacenamiento. Cuando acabe el tutorial elimine el grupo de recursos.
b. En Nombre del sitio , escriba el nombre de la aplicación web.
c. 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.
d. Seleccione la casilla Acepto los términos y condiciones indicados anteriormente .
e. Seleccione Comprar .

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

4. En la página Grupo de recursos , en la lista de recursos, seleccione la aplicación web que ha creado. En esta
lista también se ven el plan de App Service y la cuenta de almacenamiento.
5. En la página App Ser vice de la aplicación web, seleccione la dirección URL para ir al sitio web. La dirección
URL debe tener este formato: [Link] .

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

Habilitación del 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.
En Azure Portal:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración , seleccione Proveedores de recursos .
4. Busque [Link] .
5. Si no está registrado, seleccione Registrar .
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el
estado es Registrado , ya está listo para continuar.
Suscripción a Blob Storage
Suscríbase a un tema que indique a Event Grid los eventos cuyo seguimiento desea realizar y el lugar al que deben
enviarse los eventos.
1. En el portal, vaya a la cuenta de Azure Storage que creó antes. En el menú de la izquierda, seleccione Todos
los recursos y seleccione su cuenta de almacenamiento.
2. En la página Cuenta de almacenamiento , seleccione Eventos en el menú de la izquierda.
3. Seleccione Más opciones y Webhook . Al enviar los eventos a la aplicación de visor, va a usar un webhook
como punto de conexión.

4. En la página Crear suscripción de eventos , realice los siguientes pasos:


a. Escriba un nombre para la suscripción a eventos.
b. Escriba un nombre para el tema del sistema . Para obtener información acerca de los temas del
sistema, consulte Introducción a los temas del sistema.
c. En Webhook , seleccione Tipo de punto de conexión .
5. En Punto de conexión , haga clic en Seleccionar un extremo , escriba la dirección URL de la aplicación
web y agregue api/updates a la dirección URL de la página principal (por ejemplo:
[Link] ) y, después, seleccione Confirmar selección .
6. Ahora, en la página Crear suscripción de eventos , seleccione Crear .
7. 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.
Ahora, vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión.

Envío de un evento al punto de conexión


Desencadenará un evento para Blob Storage mediante la carga de un archivo. El archivo no necesita ningún
contenido específico. En los artículos se da por hecho que tiene un archivo llamado [Link], pero puede usar
cualquier archivo.
1. En Azure Portal, vaya a la cuenta de Blob Storage y seleccione Contenedores en la página de información
general .

2. Seleccione + Contenedor . Asigne un nombre al contenedor, use cualquier nivel de acceso, y seleccione
Crear .

3. Seleccione el nuevo contenedor.

4. Para cargar un archivo, seleccione Cargar . En la página Cargar blob , busque y seleccione el archivo que
desea cargar para las pruebas y, después, seleccione Cargar en la página.

5. Busque el archivo de prueba y cárguelo.


6. Ha desencadenado el evento y Event Grid ha enviado el mensaje al punto de conexión que configuró al
realizar la suscripción. El mensaje está en formato JSON y contiene una matriz con uno o más eventos. En el
ejemplo siguiente, el mensaje JSON contiene una matriz con un evento. Vea la aplicación web y observe que
se ha recibido un evento de blob creado .
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.
Seleccione el grupo de recursos y seleccione Eliminar grupo de recursos .

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:
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
Inicio rápido: Enrutamiento de eventos de
almacenamiento a un punto de conexión web con
la CLI de Azure
04/08/2020 • 11 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usa la CLI de Azure para suscribirse
a los eventos de Blob Storage 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.
Al completar los pasos descritos en este artículo, verá que los datos del evento se han enviado a la aplicación
web.

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

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el
explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar
los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada
en su entorno local.
Para iniciar Azure Cloud Shell:
O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se
copia automáticamente el código en Cloud Shell.

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
Si decide instalar y usar la CLI localmente, para los fines de este artículo, es preciso que ejecute la versión más
reciente de la CLI de Azure (2.0.70 o posterior). Para encontrar la versión, ejecute az --version . Si necesita
instalarla o actualizarla, vea Instalación de la CLI de Azure.
Si no usa Cloud Shell, primero debe iniciar sesión con az login .

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 <resource_group_name> en la ubicación
westcentralus. Reemplace <resource_group_name> por un nombre único para grupo de recursos.

az group create --name <resource_group_name> --location westcentralus

Crear una cuenta de almacenamiento


Los eventos de Blob Storage están disponibles en las cuentas de almacenamiento de uso general v2 y en las
cuentas de Blob Storage. Las cuentas de almacenamiento de uso general v2 admiten todas las características
de todos los servicios de almacenamiento, como blobs, archivos, colas y tablas. Una cuenta de Blob Storage
es una cuenta de almacenamiento especializada para almacenar los datos no estructurados como blobs
(objetos) en Azure Storage. Las cuentas de Blob Storage son similares a las cuentas de almacenamiento de uso
general y comparten las excelentes características de rendimiento, escalabilidad, disponibilidad y durabilidad
que se usan en la actualidad, incluida la coherencia total de la API con blobs en bloques y blobs en anexos. Para
más información, vea Introducción a las cuentas de Azure Storage.
Reemplace <storage_account_name> por el nombre único de la cuenta de almacenamiento y
<resource_group_name> por el grupo de recursos que creó anteriormente.
az storage account create \
--name <storage_account_name> \
--location westcentralus \
--resource-group <resource_group_name> \
--sku Standard_LRS \
--kind BlobStorage \
--access-tier Hot

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


Antes de suscribirse al tema, 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 esta guía de inicio rápido,
se implementa una aplicación web pregenerada 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.
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>

az group deployment create \


--resource-group <resource_group_name> \
--template-uri "[Link]
viewer/master/[Link]" \
--parameters siteName=$sitename hostingPlanName=viewerhost

La implementación puede tardar unos minutos en completarse. 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: [Link]
Debería ver el sitio, que no muestra ningún mensaje actualmente.

Habilitación del 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 [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

az provider show --namespace [Link] --query "registrationState"

Cuando registrationState sea Registered , estará preparado para continuar.

Suscríbase a una cuenta de almacenamiento


Suscríbase a un tema que indique a Event Grid los eventos cuyo seguimiento desea realizar y el lugar al que
deben enviarse dichos eventos. En el ejemplo siguiente se realiza la suscripción a la cuenta de almacenamiento
que ha creado y se pasa la dirección URL de su aplicación web como punto de conexión para la notificación de
eventos. Reemplace <event_subscription_name> por un nombre para la suscripción de eventos. En
<resource_group_name> y <storage_account_name> , use los valores que creó anteriormente.
El punto de conexión de la aplicación web debe incluir el sufijo /api/updates/ .

storageid=$(az storage account show --name <storage_account_name> --resource-group <resource_group_name> --


query id --output tsv)
endpoint=[Link]

az eventgrid event-subscription create \


--source-resource-id $storageid \
--name <event_subscription_name> \
--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.

Desencadenamiento de un evento desde Blob Storage


Ahora, vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión.
En primer lugar, vamos a configurar el nombre y la clave de la cuenta de almacenamiento. Luego, crearemos un
contenedor y, después, crearemos y cargaremos un archivo. De nuevo, utilice los valores
<storage_account_name> y <resource_group_name> que creó anteriormente.

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_ACCESS_KEY="$(az storage account keys list --account-name <storage_account_name> --
resource-group <resource_group_name> --query "[0].value" --output tsv)"

az storage container create --name testcontainer

touch [Link]
az storage blob upload --file [Link] --container-name testcontainer --name [Link]

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.
[{
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx/resourceGroups/myrg/providers/[Link]/storageAccounts/myblobstorageaccount",
"subject": "/blobServices/default/containers/testcontainer/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-08-16T20:33:51.0595757Z",
"id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
"data": {
"api": "PutBlockList",
"clientRequestId": "d65ca2e2-a168-4155-b7a4-2c925c18902f",
"requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
"eTag": "0x8D4E4E61AE038AD",
"contentType": "text/plain",
"contentLength": 0,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000000EB0000000000046199",
"storageDiagnostics": {
"batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Limpieza de recursos
Si planea seguir trabajando con esta cuenta de almacenamiento y suscripción de eventos, no elimine los
recursos creados en este artículo. Si no va a continuar, use el siguiente comando para eliminar los recursos
creados en este artículo.
Sustituya <resource_group_name> por el nombre del grupo de recursos que ha creado.

az group delete --name <resource_group_name>

Pasos siguientes
Ahora que sabe cómo crear suscripciones a temas y eventos, obtenga más información acerca de los eventos de
Blob Storage y lo que Event Grid puede ayudarle a hacer:
Reacción a eventos de Blob Storage
Una introducción a Azure Event Grid
Inicio rápido: Enrutamiento de eventos de
almacenamiento a un punto de conexión web con
PowerShell
04/08/2020 • 10 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, aprenderá a usar Azure PowerShell para
suscribirse a los eventos de Blob Storage, desencadenar un evento y 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.

Configurar
NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.
Para este artículo es necesario ejecutar la versión más reciente de Azure PowerShell. Si necesita instalarlas o
actualizarlas, vea Install and configure Azure PowerShell (Instalación y configuración de Azure PowerShell).

Inicio de sesión en Azure


Inicie sesión en la suscripción de Azure con el comando Connect-AzAccount y siga las instrucciones que aparecen
en pantalla para autenticarse.

Connect-AzAccount

Este ejemplo utiliza westus2 y almacena la selección en una variable que se puede usar en todo momento.

$location = "westus2"

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.
Cree un grupo de recursos con el comando New-AzResourceGroup.
En el ejemplo siguiente, se crea un grupo de recursos denominado gridResourceGroup en la ubicación westus2 .

$resourceGroup = "gridResourceGroup"
New-AzResourceGroup -Name $resourceGroup -Location $location

Crear una cuenta de almacenamiento


Los eventos de Blob Storage están disponibles en las cuentas de almacenamiento de uso general v2 y en las
cuentas de Blob Storage. Las cuentas de almacenamiento de uso general v2 admiten todas las características de
todos los servicios de almacenamiento, como blobs, archivos, colas y tablas. Una cuenta de Blob Storage es una
cuenta de almacenamiento especializada para almacenar los datos no estructurados como blobs (objetos) en Azure
Storage. Las cuentas de Blob Storage son similares a las cuentas de almacenamiento de uso general y comparten
las excelentes características de rendimiento, escalabilidad, disponibilidad y durabilidad que se usan en la
actualidad, incluida la coherencia total de la API con blobs en bloques y blobs en anexos. Para más información, vea
Introducción a las cuentas de Azure Storage.
Cree una cuenta de Blob Storage con la replicación de LRS mediante New-AzStorageAccount. A continuación,
recupere el contexto de la cuenta de almacenamiento que define la cuenta de almacenamiento que se usará.
Cuando actúa en una cuenta de almacenamiento, hace referencia al contexto en lugar de proporcionar varias veces
las credenciales. En este ejemplo, se crea una cuenta de almacenamiento denominada gridstorage con
almacenamiento con redundancia local (LRS).

NOTE
Los nombres de cuenta de almacenamiento están en un espacio de nombres global, por lo que necesita anexar algunos
caracteres aleatorios al nombre que se proporciona en este script.
$storageName = "gridstorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name $storageName `
-Location $location `
-SkuName Standard_LRS `
-Kind BlobStorage `
-AccessTier Hot

$ctx = $[Link]

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


Antes de suscribirse al tema, 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 esta guía de inicio rápido, se
implementa una aplicación web pregenerada 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.
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>"

New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroup `
-TemplateUri "[Link]
viewer/master/[Link]" `
-siteName $sitename `
-hostingPlanName viewerhost

La implementación puede tardar unos minutos en completarse. 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: [Link]
Debería ver el sitio, que no muestra ningún mensaje actualmente.

Habilitación del 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:

Register-AzResourceProvider -ProviderNamespace [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

Get-AzResourceProvider -ProviderNamespace [Link]

Cuando RegistrationStatus sea Registered , estará preparado para continuar.

Suscríbase a una cuenta de almacenamiento


Suscríbase a un tema para indicar a Event Grid los eventos cuyo seguimiento desea realizar. En el ejemplo siguiente
se realiza la suscripción a la cuenta de almacenamiento que ha creado y se pasa la dirección URL de su aplicación
web como punto de conexión para la notificación de eventos. El punto de conexión de la aplicación web debe
incluir el sufijo /api/updates/ .
$storageId = (Get-AzStorageAccount -ResourceGroupName $resourceGroup -AccountName $storageName).Id
$endpoint="[Link]

New-AzEventGridSubscription `
-EventSubscriptionName gridBlobQuickStart `
-Endpoint $endpoint `
-ResourceId $storageId

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.

Desencadenamiento de un evento desde Blob Storage


Ahora, vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. En
primer lugar, vamos a crear un contenedor y un objeto. A continuación, cargaremos el objeto en el contenedor.

$containerName = "gridcontainer"
New-AzStorageContainer -Name $containerName -Context $ctx

echo $null >> [Link]

Set-AzStorageBlobContent -File [Link] -Container $containerName -Context $ctx -Blob [Link]

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.
[{
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx/resourceGroups/myrg/providers/[Link]/storageAccounts/myblobstorageaccount",
"subject": "/blobServices/default/containers/gridcontainer/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-08-16T20:33:51.0595757Z",
"id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
"data": {
"api": "PutBlockList",
"clientRequestId": "Azure-Storage-PowerShell-d65ca2e2-a168-4155-b7a4-2c925c18902f",
"requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
"eTag": "0x8D4E4E61AE038AD",
"contentType": "application/octet-stream",
"contentLength": 0,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000000EB0000000000046199",
"storageDiagnostics": {
"batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Limpieza de recursos
Si planea seguir trabajando con esta cuenta de almacenamiento y suscripción de eventos, no elimine los recursos
creados en este artículo. Si no va a continuar, use el siguiente comando para eliminar los recursos creados en este
artículo.

Remove-AzResourceGroup -Name $resourceGroup

Pasos siguientes
Ahora que sabe cómo crear suscripciones a temas y eventos, obtenga más información acerca de los eventos de
Blob Storage y lo que Event Grid puede ayudarle a hacer:
Reacción a eventos de Blob Storage
Una introducción a Azure Event Grid
Enrutamiento de eventos de almacenamiento de
blobs a un punto de conexión web mediante una
plantilla de Resource Manager
04/08/2020 • 7 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usará una plantilla de Azure Resource
Manager para crear una cuenta de almacenamiento de blobs, suscribirse a eventos de ese almacenamiento de
blobs y desencadenar un 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.
Una plantilla de Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define la
infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa, lo que permite establecer lo que
pretende implementar sin tener que escribir la secuencia de comandos de programación para crearla.
Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de Resource Manager,
seleccione el botón Implementar en Azure . La plantilla se abrirá en Azure Portal.

Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Creación de un punto de conexión de mensaje
Antes de suscribirse a los eventos de Blob Storage, vamos a crear el punto de conexión para el mensaje del evento.
Normalmente, el punto de conexión realiza acciones en función de los datos del evento. Para simplificar esta guía
de inicio rápido, se implementa una aplicación web pregenerada 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. Seleccione Deploy to Azure (Implementar en Azure) para implementar la solución en su suscripción. En
Azure Portal, proporcione valores para los parámetros.
Implementación en Azure
2. La implementación puede tardar unos minutos en completarse. 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: [Link]
3. Verá el sitio, pero aún no se ha publicado en él ningún evento.
Revisión de la plantilla
La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.

{
"$schema": "[Link]
"contentVersion": "[Link]",
"parameters": {
"storageName": {
"type": "string",
"defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Provide a unique name for the Blob Storage account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Provide a location for the Blob Storage account that supports Event Grid."
}
},
"eventSubName": {
"type": "string",
"defaultValue": "subToStorage",
"metadata": {
"description": "Provide a name for the Event Grid subscription."
}
},
"endpoint": {
"type": "string",
"metadata": {
"description": "Provide the URL for the WebHook to receive events. Create your own endpoint
for events."
}
},
"systemTopicName": {
"type": "String",
"defaultValue": "mystoragesystemtopic",
"metadata": {
"description": "Provide a name for the system topic."
}
}
},
"resources": [
{
"name": "[parameters('storageName')]",
"type": "[Link]/storageAccounts",
"apiVersion": "2017-10-01",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"location": "[parameters('location')]",
"tags": {},
"properties": {
"accessTier": "Hot"
}
},
{
"name": "[parameters('systemTopicName')]",
"type": "[Link]/systemTopics",
"apiVersion": "2020-04-01-preview",
"location": "[parameters('location')]",
"dependsOn": [
"[parameters('storageName')]"
],
"properties": {
"source": "[resourceId('[Link]/storageAccounts', parameters('storageName'))]",
"topicType": "[Link]"
}
},
{
"type": "[Link]/systemTopics/eventSubscriptions",
"apiVersion": "2020-04-01-preview",
"name": "[concat(parameters('systemTopicName'), '/', parameters('eventSubName'))]",
"dependsOn": [
"[resourceId('[Link]/systemTopics', parameters('systemTopicName'))]"
],
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"[Link]",
"[Link]"
]
}
}
}
]
}

En la plantilla se definen dos recursos de Azure:


[Link]/storageAccounts : permite crear una cuenta de Azure Storage.
[Link]/systemTopics : cree un tema del sistema con el nombre especificado para la cuenta de
almacenamiento.
[Link]/systemTopics/eventSubscriptions : cree una suscripción de Azure Event Grid para el
tema del sistema.

Implementación de la plantilla
1. Seleccione el vínculo siguiente para iniciar sesión en Azure y abrir una plantilla. La plantilla crea un almacén
de claves y un secreto.

2. Especifique el punto de conexión : proporcione la dirección URL de la aplicación web y agregue


api/updates a la dirección URL de la página principal.

3. Seleccione Comprar para implementar la plantilla.


Azure Portal se usa aquí para implementar la plantilla. También puede usar Azure PowerShell, la CLI de Azure o la
API REST. Para obtener información sobre otros métodos de implementación, consulte Implementación de
plantillas.

NOTE
Puede encontrar aquí más ejemplos de plantillas de Azure Event Grid.

Validación de la implementación
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.

Ahora, vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión.
Desencadenará un evento para Blob Storage mediante la carga de un archivo. El archivo no necesita ningún
contenido específico. En los artículos se da por hecho que tiene un archivo llamado [Link], pero puede usar
cualquier archivo.
Al cargar el archivo en el almacenamiento de blobs de Azure, Event Grid envía un mensaje al punto de conexión
que configuró al suscribirse. El mensaje está en formato JSON y contiene una matriz con uno o más eventos. En el
ejemplo siguiente, el mensaje JSON contiene una matriz con un evento. Vea la aplicación web y observe que se ha
recibido un evento de blob creado.
Limpieza de recursos
Cuando ya no necesite, elimine el grupo de recursos.

Pasos siguientes
Para más información sobre las plantillas de Azure Resource Manager, consulte los artículos siguientes:
Documentación de Azure Resource Manager
Definición de recursos en plantillas de Azure Resource Manager
Plantillas de inicio rápido de Azure
Plantillas de Azure Event Grid
Inicio rápido: Enrutamiento de eventos
personalizados a puntos de conexión web con Azure
Portal y Event Grid
04/08/2020 • 15 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usa Azure Portal para crear un tema
personalizado, suscribirse al tema 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.

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

Habilitación del 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.
En Azure Portal:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración , seleccione Proveedores de recursos .
4. Busque [Link] .
5. Si no está registrado, seleccione Registrar .
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el
estado es Registrado , ya está listo 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.
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.
3. En la página Temas de Event Grid , seleccione + Agregar en la barra de herramientas.

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


a. Selección la suscripción de Azure.
b. Seleccione un grupo de recursos existente o Crear nuevo y escriba un nombre para el grupo de
recursos .
c. 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
"-".
d. Seleccione una ubicación para el tema de Event Grid.
e. En la parte inferior de la página, seleccione Revisar y crear .
f. En la pestaña Revisar y crear de la página Crear tema , seleccione Crear .
5. Una vez finalizada la implementación, escriba Temas de Event Grid en la barra de búsqueda de nuevo y
seleccione Temas de Event Grid en la lista desplegable como hizo anteriormente.
6. Seleccione en la lista el tema que creó.

7. Ahora verá la página Tema de Event Grid del tema. Mantenga esta página abierta. La usará más adelante
en este inicio rápido.

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 esta guía
de inicio rápido, se implementa una aplicación web pregenerada 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.

2. La implementación puede tardar unos minutos en completarse. 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: [Link]
Si se produce un error en la implementación, compruebe el mensaje de error. Puede deberse a que ya se ha
utilizado el nombre del sitio web. Vuelva a implementar la plantilla y elija un nombre diferente para el sitio.
3. Verá el sitio, pero aún no se ha publicado en él ningún evento.

Suscripción a un tema personalizado


Suscríbase a un tema de cuadrícula de eventos que indique a Event Grid los eventos cuyo seguimiento desea
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.

2. En la página Crear suscripción de eventos , siga estos pasos:


a. Escriba un nombre para la suscripción a eventos.
b. Seleccione Webhook como Tipo de punto de conexión .
c. Elija Seleccionar un punto de conexión .
d. 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).

e. 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.
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.

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


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. Publicará 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. Esta 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 [Link] ). Cloud Shell se abre en el
panel inferior del explorador web.

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.

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 ser vicios en el menú de la izquierda y, después, seleccione 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:
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
Inicio rápido: Enrutamiento de eventos
personalizados al punto de conexión de web con la
CLI de Azure y Event Grid
04/08/2020 • 11 minutes to read • Edit Online

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.

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

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el
explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar
los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada
en su entorno local.
Para iniciar Azure Cloud Shell:

O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se
copia automáticamente el código en Cloud Shell.
O P C IÓ N E JEM P LO O VÍN C ULO

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
Si decide instalar y usar la CLI de Azure localmente, para los fines de este artículo, es preciso que ejecute la
versión más reciente (2.0.70 o posterior). Para encontrar la versión, ejecute az --version . Si necesita instalarla
o actualizarla, vea Instalación de la CLI de Azure.
Si no usa Cloud Shell, primero debe iniciar sesión con az login .

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

Habilitación del 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 [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

az provider show --namespace [Link] --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
<your-topic-name> por un nombre único para el tema. El nombre del tema personalizado debe ser único, ya
que es parte de la entrada DNS. Además, debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-
Z, 0-9 y "-".

topicname=<your-topic-name>

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 esta
guía de inicio rápido, se implementa una aplicación web pregenerada 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.
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>

az group deployment create \


--resource-group gridResourceGroup \
--template-uri "[Link]
viewer/master/[Link]" \
--parameters siteName=$sitename hostingPlanName=viewerhost

La implementación puede tardar unos minutos en completarse. 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: [Link]
Debería ver el sitio, que no muestra ningún mensaje actualmente.

Suscripción a un tema personalizado


Suscríbase a un tema de cuadrícula de eventos personalizado para indicar a Event Grid los eventos cuyo
seguimiento desea realizar 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/ .

endpoint=[Link]

az eventgrid event-subscription create \


--source-resource-id "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/topics/$topicname" \
--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.
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/[Link]/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:
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
Inicio rápido: Enrutamiento de eventos
personalizados al punto de conexión web con
PowerShell y Event Grid
04/08/2020 • 9 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. En este artículo, se usa Azure PowerShell para crear un
tema personalizado, suscribirse al tema 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.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Para este artículo es necesario ejecutar la versión más reciente de Azure PowerShell. Si necesita instalarlas o
actualizarlas, vea Install and configure Azure PowerShell (Instalación y configuración de Azure PowerShell).

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.
Cree un grupo de recursos con el comando New-AzResourceGroup.
En el ejemplo siguiente, se crea un grupo de recursos denominado gridResourceGroup en la ubicación westus2.

New-AzResourceGroup -Name gridResourceGroup -Location westus2

Habilitación del 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:

Register-AzResourceProvider -ProviderNamespace [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

Get-AzResourceProvider -ProviderNamespace [Link]

Cuando RegistrationStatus 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
<your-topic-name> por un nombre único para el tema. El nombre del tema debe ser único, ya que es parte de la
entrada DNS. Además, debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-Z, 0-9 y "-".

$topicname="<your-topic-name>"

New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location westus2 -Name $topicname

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


Antes de suscribirse al tema, 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 esta guía de inicio rápido, se
implementa una aplicación web pregenerada 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.
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>"

New-AzResourceGroupDeployment `
-ResourceGroupName gridResourceGroup `
-TemplateUri "[Link]
viewer/master/[Link]" `
-siteName $sitename `
-hostingPlanName viewerhost

La implementación puede tardar unos minutos en completarse. 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: [Link]
Debería ver el sitio, que no muestra ningún mensaje actualmente.

Suscripción a un tema
Suscríbase a un tema que indique a Event Grid los eventos cuyo seguimiento desea realizar y el lugar al que deben
enviarse dichos eventos. En el ejemplo siguiente se suscribirá al tema que ha creado y pasará la dirección URL de la
aplicación web como punto de conexión para la notificación de eventos.
El punto de conexión de la aplicación web debe incluir el sufijo /api/updates/ .

$endpoint="[Link]

New-AzEventGridSubscription `
-EventSubscriptionName demoViewerSub `
-Endpoint $endpoint `
-ResourceGroupName gridResourceGroup `
-TopicName $topicname

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.

Envío de un evento al tema


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.

$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicname).Endpoint


$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicname

Para simplificar este artículo, se van a configurar datos de evento de ejemplo al tema personalizado. Normalmente,
una aplicación o servicio de Azure enviaría los datos del evento. El ejemplo siguiente utiliza una tabla hash para
construir los datos del evento htbody y, a continuación, convertirlos en el objeto de carga JSON $body con un
formato correcto:

$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)+"]"

En $body verá el evento completo. 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.
Ahora, envíe el evento al tema.

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

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": "2018-01-25T15:58:13",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/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.

Remove-AzResourceGroup -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
Inicio rápido: Enrutamiento de eventos
personalizados a una instancia de Azure Functions
con Event Grid
04/08/2020 • 13 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. Azure Functions es uno de los controladores de eventos
compatibles. En este artículo, 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 antes de empezar.

Creación de una función de Azure


Antes de suscribirse al tema personalizado, vamos a crear una función que controle los eventos. En Azure Portal,
haga clic en "Crear un recurso", escriba "function", elija "Function App" y haga clic en Crear. Seleccione "Crear
nuevo" en el grupo de recursos y asígnele un nombre. Lo usará en el resto del tutorial. Asigne un nombre a la
aplicación de funciones, deje el conmutador de alternancia "Publish" en "Código", seleccione cualquier runtime y
región, y pulse Crear.
Una vez que la aplicación de funciones esté lista, vaya a ella y haga clic en "+ Nueva función". Seleccione "En el
portal" para el entorno de desarrollo y pulse Continuar. En Crear una función, elija "Más plantillas" para ver más
plantillas, busque "Azure Event Grid Trigger" (Desencadenador de Azure Event Grid) y selecciónela. Si es la primera
vez que usa este desencadenador, es posible que tenga que hacer clic en "Install" para instalar la extensión.

Una vez que haya instalado la extensión, haga clic en Continuar, asigne un nombre a la función y pulse Crear.

Habilitación del 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.
En Azure Portal:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración , seleccione Proveedores de recursos .
4. Busque [Link] .
5. Si no está registrado, seleccione Registrar .
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el
estado es Registrado , ya está listo 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.
1. Inicie sesión en el portal de Azure.
2. Seleccione Todos los ser vicios en el menú de navegación izquierdo, busque Event Grid y seleccione
Temas de Event Grid .

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


4. En la página Crear tema , siga estos pasos:
a. 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
"-".
b. Selección la suscripción de Azure.
c. Seleccione el mismo grupo de recursos que en los pasos anteriores.
d. Seleccione una ubicación para el tema de Event Grid.
e. Mantenga el valor predeterminado Esquema de Event Grid para el campo Esquema de eventos .
f. Seleccione Crear .
5. Cuando se ha creado el tema personalizado, se ve la notificación de que la operación se ha realizado
correctamente. Seleccione Ir al grupo de recursos .

6. En la página Grupo de recursos , seleccione el tema de Event Grid.


7. Verá la página Tema de Event Grid de la cuadrícula de eventos. Mantenga esta página abierta. La usará
más adelante en este inicio rápido.

Suscripción a un tema personalizado


Suscríbase a un tema de cuadrícula de eventos que indique a Event Grid los eventos cuyo seguimiento desea
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.
2. En la página Crear suscripción de eventos , siga estos pasos:
a. Escriba un nombre para la suscripción a eventos.
b. Seleccione Función de Azure en Tipo de punto de conexión .
c. Elija Seleccionar un punto de conexión .

d. Para el punto de conexión de la función, seleccione la suscripción de Azure y el grupo de recursos en


que está la aplicación de funciones y, después, seleccione la aplicación de funciones y la función que
creó anteriormente. Seleccione Confirm Selection (Confirmar selección).
e. De nuevo en la página Crear suscripción de eventos , seleccione Crear .

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 . Seleccione Bash en la esquina superior izquierda de la ventana
Cloud Shell.
2. 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.

endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --
output tsv)

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

key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output
tsv)

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

5. Ejecute el siguiente comando de CURL para publicar el evento:

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 [Link] ). 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.
2. 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 = <resource group name>


$topicName = <topic name>

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

4. 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)+"]"

5. 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 función desencadenada por Event Grid y abra los registros, donde debería ver una copia de la
carga de datos del evento. Si no la ve, asegúrese de que abre primero los registros, o pulsa Volver a conectar, y
luego intente volver a enviar el evento de prueba.
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 ser vicios en el menú de la izquierda y, después, seleccione 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 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
Inicio rápido: Enrutar eventos personalizados a Azure
Queue Storage con la CLI de Azure y Event Grid
04/08/2020 • 10 minutes to read • Edit Online

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.

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.
Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos
preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:

O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se copia
automáticamente el código en Cloud Shell.

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
Si va a usar la CLI de Azure o Azure PowerShell en la máquina local en lugar de usar Cloud Shell en Azure Portal,
asegúrese de tener las siguientes versiones de la CLI de Azure y Azure PowerShell.
CLI de Azure versión 2.0.56 o posterior. Para instrucciones sobre cómo instalar la versión más reciente de la CLI
de Azure, consulte Instalación de la CLI de Azure.
Azure PowerShell versión 1.1.0 o superior. 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

Habilitación del 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 [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

az provider show --namespace [Link] --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/[Link]/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/[Link]/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.
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
Inicio rápido: Enrutamiento de eventos
personalizados a Azure Event Hubs con la CLI de
Azure y Event Grid
04/08/2020 • 7 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. Azure Event Hubs 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. Los eventos se envían a un centro de eventos.
Si no tiene una suscripción a Azure, cree una cuenta gratuita 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.

az group create --name gridResourceGroup --location westus2

Habilitación del 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 [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

az provider show --namespace [Link] --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
<your-topic-name> por un nombre único para el tema personalizado. El nombre del tema personalizado debe ser
único, ya que se representa mediante una entrada DNS.

topicname=<your-topic-name>
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup

Creación de un centro de eventos


Antes de suscribirse al tema personalizado, vamos a crear el punto de conexión para el mensaje de evento. Cree un
centro de eventos para recopilar los eventos.

namespace=<unique-namespace-name>
hubname=demohub

az eventhubs namespace create --name $namespace --resource-group gridResourceGroup


az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup

Suscripción a un tema personalizado


Suscríbase a un tema de cuadrícula de eventos para indicar a Event Grid los eventos cuyo seguimiento desea
realizar. En el ejemplo siguiente se suscribirá al tema personalizado que creó y usará el identificador del recurso del
centro de eventos en el punto de conexión. El punto de conexión tiene el formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/namespaces/<namespace-name>/eventhubs/<hub-name>

El siguiente script obtiene el identificador del recurso del centro de eventos y se suscribe a un tema de Event Grid.
Establece el tipo de punto de conexión en eventhub y utiliza el identificador del centro de eventos para el punto de
conexión.

hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group


gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \


--topic-name $topicname \
-g gridResourceGroup \
--name subtoeventhub \
--endpoint-type eventhub \
--endpoint $hubid

La cuenta que crea la suscripción de eventos debe tener acceso de escritura al centro de eventos.

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, 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 al centro de eventos del portal y tenga en cuenta que Event Grid ha enviado esos tres eventos al centro de
eventos.

Normalmente, se crea una aplicación que recupera los eventos del centro de eventos. Para crear una aplicación que
reciba mensajes de un centro de eventos, consulte:
Introducción a la recepción de mensajes con el Host del procesador de eventos en .NET Standard
Recepción de eventos desde Azure Event Hubs mediante Java
Recepción de eventos desde Event Hubs mediante Apache Storm

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
Inicio rápido: Envío de eventos de registro de
contenedor privado a Event Grid
04/08/2020 • 14 minutes to read • Edit Online

Azure Event Grid es un servicio de enrutamiento de eventos completamente administrado que ofrece un consumo
de eventos uniforme mediante un modelo de publicación-suscripción. En este tutorial de inicio rápido, usará la CLI
de Azure para crear un registro de contenedor, suscribirse a eventos del registro e implementar una aplicación web
de ejemplo para recibir los eventos. Por último, desencadenará los eventos push y delete de la imagen de
contenedor, y verá la carga del evento en la aplicación de ejemplo.
Después de completar los pasos descritos en este artículo, los eventos enviados desde el registro de contenedor a
Event Grid aparecerán en la aplicación web de ejemplo:

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

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.
Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos
preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:

O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se copia
automáticamente el código en Cloud Shell.
O P C IÓ N E JEM P LO O VÍN C ULO

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
Los comandos de la CLI de Azure que aparecen en este artículo tienen un formato para la shell de Bash . Si usa un
shell diferente, como PowerShell o el símbolo del sistema, puede que tenga que ajustar los caracteres de
continuación de línea o las líneas de asignación de variable según corresponda. En este artículo se usan variables
para minimizar la edición de comandos necesaria.

Crear un grupo de recursos


Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de
Azure. El comando az group create siguiente crea un grupo de recursos denominado myResourceGroup en la
región eastus. Si desea usar otro nombre para el grupo de recursos, establezca RESOURCE_GROUP_NAME en otro valor.

RESOURCE_GROUP_NAME=myResourceGroup

az group create --name $RESOURCE_GROUP_NAME --location eastus

Creación de un Registro de contenedor


A continuación, implemente un registro de contenedor en el grupo de recursos con los siguientes comandos. Antes
de ejecutar el comando az acr create, establezca ACR_NAME en un nombre para el registro. El nombre debe ser único
dentro de Azure y está restringido a entre 5 y 50 caracteres alfanuméricos.

ACR_NAME=<acrName>

az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic

Una vez creado el registro, la CLI de Azure devuelve un resultado similar al siguiente:
{
"adminUserEnabled": false,
"creationDate": "2018-08-16T20:02:46.569509+00:00",
"id": "/subscriptions/<Subscription
ID>/resourceGroups/myResourceGroup/providers/[Link]/registries/myregistry",
"location": "eastus",
"loginServer": "[Link]",
"name": "myregistry",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Basic",
"tier": "Basic"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "[Link]/registries"
}

Creación de un punto de conexión de evento


En esta sección, se usará una plantilla de Resource Manager ubicada en un repositorio de GitHub para implementar
una aplicación web de ejemplo creada previamente en Azure App Service. Posteriormente, se suscribirá a los
eventos de Event Grid del registro y especificará esta aplicación como punto de conexión al que se enviarán los
eventos.
Para implementar la aplicación de ejemplo, establezca SITE_NAME en un nombre único para la aplicación web y
ejecute los comandos siguientes. El nombre del sitio debe ser único dentro de Azure porque forma parte del
nombre de dominio completo (FQDN) de la aplicación web. En una sección posterior, navegará al FQDN de la
aplicación en un explorador web para ver los eventos del registro.

SITE_NAME=<your-site-name>

az group deployment create \


--resource-group $RESOURCE_GROUP_NAME \
--template-uri "[Link]
viewer/master/[Link]" \
--parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan

Una vez que haya realizado correctamente la implementación (podría tardar unos minutos), abra un explorador y
vaya a la aplicación web para asegurarse de que se está ejecutando:
[Link]

Debería ver la aplicación de ejemplo que se representa sin ningún mensaje de evento:
Habilitación del 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 [Link]

Puede tardar unos instantes en finalizarse el registro. Para comprobar el estado, ejecute:

az provider show --namespace [Link] --query "registrationState"

Cuando registrationState sea Registered , estará preparado para continuar.

Suscripción a eventos del registro


En Event Grid, suscríbase a un tema para indicarle a qué eventos desea realizar un seguimiento y adónde enviarlos.
El siguiente comando az eventgrid event-subscription create se suscribe al registro de contenedor que creó y
especifica la dirección URL de la aplicación web como punto de conexión al que deben enviarse los eventos. Las
variables de entorno que rellenó en las secciones anteriores se reutilizan aquí, por lo que no se requiere ninguna
modificación.

ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)


APP_ENDPOINT=[Link]

az eventgrid event-subscription create \


--name event-sub-acr \
--source-resource-id $ACR_REGISTRY_ID \
--endpoint $APP_ENDPOINT

Una vez completada la suscripción, debería ver una salida similar a la siguiente:
{
"destination": {
"endpointBaseUrl": "[Link]
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"All"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/<Subscription
ID>/resourceGroups/myResourceGroup/providers/[Link]/registries/myregistry/providers/Micro
[Link]/eventSubscriptions/event-sub-acr",
"labels": null,
"name": "event-sub-acr",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"topic": "/subscriptions/<Subscription
ID>/resourceGroups/myresourcegroup/providers/[Link]/registries/myregistry",
"type": "[Link]/eventSubscriptions"
}

Desencadenamiento de eventos del registro


Ahora que la aplicación de ejemplo está en funcionamiento y que se suscribió al registro en Event Grid, está listo
para generar algunos eventos. En esta sección, se usa ACR Tasks para compilar e insertar una imagen de
contenedor en el registro. ACR Tasks es una característica de Azure Container Registry que permite crear imágenes
de contenedor en la nube, sin necesidad de que el motor de Docker esté instalado en el equipo local.
Compilación e inserción de la imagen
Ejecute el siguiente comando de CLI de Azure para crear una imagen de contenedor desde el contenido de un
repositorio de GitHub. De forma predeterminada, ACR Tasks inserta automáticamente una imagen compilada
correctamente en el registro, lo que genera el evento ImagePushed .

az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile [Link]


[Link]

Debería ver un resultado similar al siguiente mientras ACR Tasks se compila e inserta la imagen. El resultado de
ejemplo siguiente se ha truncado por razones de espacio.

Sending build context to ACR...


Queued a build with build ID: aa2
Waiting for build agent...
2018/08/16 22:19:38 Using acb_vol_27a2afa6-27dc-4ae4-9e52-6d6c8b7455b2 as the home volume
2018/08/16 22:19:38 Setting up Docker configuration...
2018/08/16 22:19:39 Successfully set up Docker configuration
2018/08/16 22:19:39 Logging in to registry: [Link]
2018/08/16 22:19:55 Successfully logged in
Sending build context to Docker daemon 94.72kB
Step 1/5 : FROM node:9-alpine
...

Para comprobar que la imagen compilada está en el registro, ejecute el siguiente comando para ver las etiquetas
en el repositorio "myimage":
az acr repository show-tags --name $ACR_NAME --repository myimage

La etiqueta "v1" de la imagen que se ha compilado debe aparecer en el resultado, similar al siguiente:

[
"v1"
]

Eliminación de la imagen
Ahora, genere un evento ImageDeleted eliminando la imagen con el comando az acr repository delete:

az acr repository delete --name $ACR_NAME --image myimage:v1

Debería ver un resultado similar al siguiente, que pida confirmación para eliminar el manifiesto y las imágenes
asociadas:

This operation will delete the manifest


'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images:
'myimage:v1'.
Are you sure you want to continue? (y/n):

Visualización de eventos del registro


Ahora ha insertado una imagen en el registro y la ha eliminado. Vaya a la aplicación web de Visor de Event Grid,
debería ver ambos eventos, ImageDeleted y ImagePushed . También puede que vea un evento de validación de
suscripción generado al ejecutar el comando en la sección Suscripción a eventos del registro.
La captura de pantalla siguiente muestra la aplicación de ejemplo con los tres eventos, y el evento ImageDeleted
está expandido para mostrar sus detalles.
Felicidades. Si ve los eventos ImagePushed y ImageDeleted , el registro envía eventos a Event Grid, y Event Grid
reenvía esos eventos al punto de conexión de la aplicación web.

Limpieza de recursos
Una vez que haya terminado con los recursos creados en este inicio rápido, puede eliminarlos todos con el
siguiente comando de la CLI de Azure. Al eliminar un grupo de recursos, se eliminan de manera permanente todos
los recursos que contiene.
ADVERTENCIA : Esta operación es irreversible. Asegúrese de que ya no necesita ninguno de los recursos en el
grupo antes de ejecutar el comando.

az group delete --name $RESOURCE_GROUP_NAME

Esquema de eventos de Event Grid


Puede encontrar la referencia del esquema de mensajes de eventos de Azure Container Registry en la
documentación de Event Grid:
Esquema de eventos de Azure Event Grid para Container Registry
Pasos siguientes
En esta guía de inicio rápido, ha implementado un registro de contenedor, compilado una imagen con ACR Tasks, la
ha eliminado y ha consumido los eventos del registro desde Event Grid con una aplicación de ejemplo. A
continuación, vaya al tutorial de ACR Tasks para más información acerca de la compilación de imágenes de
contenedor en la nube, incluidas compilaciones automatizadas en la actualización de imagen base:
Compilación de imágenes de contenedor en la nube con ACR Tasks
Tutorial: Supervisión de los cambios en las máquinas
virtuales con Azure Event Grid y Logic Apps
04/08/2020 • 24 minutes to read • Edit Online

Para supervisar los eventos específicos que se producen en recursos de Azure o en recursos de terceros y responder a
ellos, puede automatizar y ejecutar tareas como un flujo de trabajo mediante la creación de una aplicación lógica que use
el código mínimo. Estos recursos pueden publicar esos eventos en una instancia de Azure Event Grid. A su vez, la
cuadrícula de eventos envía esos eventos a los suscriptores que tienen colas, webhooks o centros de eventos como
puntos de conexión. Como suscriptor, su aplicación lógica puede esperar esos eventos desde la cuadrícula de eventos
antes de ejecutar flujos de trabajo automatizados para llevar a cabo ciertas tareas.
Por ejemplo, aquí incluimos algunos eventos que los publicadores pueden enviar a los suscriptores a través del servicio
Azure Event Grid:
Crear, leer, actualizar o eliminar un recurso. Por ejemplo, puede supervisar los cambios que podrían incurrir en
gastos en su suscripción de Azure y afectar a la facturación.
Agregar o quitar a una persona de una suscripción de Azure.
La aplicación realiza una acción concreta.
Aparece un nuevo mensaje en una cola.
En este tutorial se crea una aplicación lógica que supervisa los cambios realizados en una máquina virtual y envía
mensajes de correo electrónico sobre dichos cambios. Cuando crea una aplicación lógica con una suscripción a eventos
de un recurso de Azure, los eventos fluyen desde ese recurso a través de una cuadrícula de eventos a la aplicación lógica.
El tutorial le guía en la creación de esta aplicación lógica:

En este tutorial, aprenderá a:


Crear una aplicación lógica que supervisa eventos procedentes de una cuadrícula de eventos.
Incorporar una condición que comprueba específicamente cambios en la máquina virtual.
Enviar un mensaje de correo electrónico cuando la máquina virtual cambia.

Prerrequisitos
Suscripción a Azure. Si no tiene una suscripción de Azure, regístrese para obtener una cuenta gratuita de Azure.
Una cuenta de correo electrónico de cualquier proveedor de correo electrónico que sea compatible con Azure
Logic Apps, como Office 365 Outlook, [Link] o Gmail, para el envío de notificaciones. En el caso de otros
proveedores, consulte la lista de conectores que se muestra aquí.
Este tutorial utiliza una cuenta de Office 365 Outlook. Si utiliza una cuenta de correo electrónico diferente, los
pasos generales siguen siendo los mismos pero la interfaz de usuario podría ser ligeramente distinta.

IMPORTANT
Si quiere usar el conector de Gmail, solo las cuentas empresariales de G-Suite pueden usar este conector sin restricciones en
las aplicaciones lógicas. Si tiene una cuenta de consumidor de Gmail, puede usar este conector solo con servicios específicos
aprobados por Google, o puede crear una aplicación cliente de Google para usarla en la autenticación con el conector de
Gmail. Para más información, consulte Directivas de privacidad y seguridad de datos de los conectores de Google en Azure
Logic Apps.

Una máquina virtual sola en su grupo de recursos de Azure. Si aún no lo ha hecho, cree una máquina virtual
siguiendo un tutorial para crear una máquina virtual. Para hacer que la máquina virtual publique eventos, no es
necesario hacer nada más.

Creación de una aplicación lógica en blanco


1. Inicie sesión en Azure Portal con sus credenciales de su cuenta de Azure.
2. En el menú principal de Azure, seleccione Crear un recurso > Integración > Aplicación lógica .

3. En la aplicación lógica , proporcione información acerca del recurso de aplicación lógica. Seleccione Crear
cuando haya terminado.
P RO P IEDA D O B L IGATO RIO VA L UE DESC RIP C IÓ N

Nombre Sí <nombre-de-la-aplicación- Proporcione un nombre


lógica> único para la aplicación
lógica.

Suscripción Sí <Azure-subscription-name> Seleccione la misma


suscripción de Azure para
todos los servicios de este
tutorial.

Grupos de recursos Sí <Azure-resource-group> Nombre del grupo de


recursos de Azure para la
aplicación lógica, que puede
seleccionar para todos los
servicios de este tutorial.

Ubicación Sí <Azure-region> Seleccione la misma región


para todos los servicios de
este tutorial.

4. Una vez que Azure ha implementado la aplicación lógica, el Diseñador de aplicaciones lógicas muestra una página
con un vídeo de introducción y desencadenadores utilizados frecuentemente. Desplácese más allá del vídeo y los
desencadenadores.
5. En Plantillas , elija Blank Logic App .
El Diseñador de aplicaciones lógicas ahora muestra los desencadenadores que puede usar para iniciar la
aplicación lógica. Cada aplicación lógica debe comenzar con un desencadenador, que se activa cuando sucede un
evento específico o cuando se cumple una condición determinada. Cada vez que el desencadenador se activa,
Azure Logic Apps crea una instancia de flujo de trabajo que ejecuta la aplicación lógica.

Incorporación de un desencadenador de Event Grid


Ahora, agregue el desencadenador de Event Grid que usa para supervisar el grupo de recursos de la máquina virtual.
1. En el cuadro de búsqueda del diseñador, escriba event grid como filtro. En la lista de desencadenadores,
seleccione el desencadenador Cuando se produce un evento de recursos .

2. Cuando se le solicite, inicie sesión en Azure Event Grid con las credenciales de la cuenta de Azure. En la lista
Inquilino , que muestra el inquilino de Azure Active Directory asociado con la suscripción de Azure, compruebe
que aparece al inquilino correcto, por ejemplo:
NOTE
Si inició sesión con una cuenta personal de Microsoft, como @[Link] o @[Link], el desencadenador de Event
Grid podría no aparecer correctamente. Como alternativa, seleccione Conectar con entidad de servicio o autentíquese como
miembro de Azure Active Directory asociado con la suscripción de Azure, por ejemplo,
nombreDeUsuario@[Link].

3. Ahora suscriba la aplicación lógica a los eventos del publicador. Proporcione los detalles de la suscripción a
eventos como se describe en la tabla siguiente, por ejemplo:

P RO P IEDA D O B L IGATO RIO VA L UE DESC RIP C IÓ N

Suscripción Sí <event-publisher-Azure- Seleccione el nombre de la


subscription-name> suscripción de Azure
asociada con el publicador
de eventos. Para este
tutorial, seleccione el
nombre de la suscripción de
Azure de la máquina virtual.
P RO P IEDA D O B L IGATO RIO VA L UE DESC RIP C IÓ N

Tipo de recurso Sí <event-publisher-Azure- Seleccione el tipo de recurso


resource-type> de Azure para el publicador
de eventos. Para más
información sobre los tipos
de recursos de Azure,
consulte Tipos y
proveedores de recursos de
Azure. Para este tutorial,
seleccione el valor
[Link]
para supervisar los grupos
de recursos de Azure.

Nombre de recurso Sí <event-publisher-Azure- Seleccione el nombre de


resource-name> recurso de Azure para el
publicador de eventos. Esta
lista varía según el tipo de
recurso que ha seleccionado.
Para este tutorial, seleccione
el nombre del grupo de
recursos de Azure que
incluye la máquina virtual.

Elemento de tipo de No <event-types> Seleccione uno o varios tipos


evento de evento específicos para
filtrar y enviar a Event Grid.
Por ejemplo, si lo desea
puede agregar estos tipos
de eventos para detectar
cuándo se cambian o
eliminan los recursos:
-
[Link]
-
[Link]
-
[Link]

Para más información,


consulte los temas
siguientes:
- Esquema de eventos
de Azure Event Grid
para grupos de recursos
- Descripción del filtrado
de eventos
- Filtrado de eventos
para Event Grid
P RO P IEDA D O B L IGATO RIO VA L UE DESC RIP C IÓ N

Para agregar propiedades No {ver descripciones} * Filtro de prefijo : En este


opcionales, seleccione tutorial, deje esta propiedad
Agregar nuevo vacía. El comportamiento
parámetro y seleccione las predeterminado coincide
propiedades que desee. con todos los valores. Sin
embargo, puede especificar
una cadena de prefijo como
un filtro, por ejemplo, una
ruta de acceso y un
parámetro para un recurso
concreto.
* Filtro de sufijo : En
este tutorial, deje esta
propiedad vacía. El
comportamiento
predeterminado coincide
con todos los valores.
Sin embargo, puede
especificar una cadena
de sufijo como un filtro,
por ejemplo, una
extensión de nombre de
archivo, si desea solo
determinados tipos de
archivos.
* Nombre de la
suscripción : Para este
tutorial puede
proporcionar un nombre
único para la suscripción
a eventos.

4. Guarde la aplicación lógica. En la barra de herramientas del diseñador, seleccione Save (Guardar). Para contraer y
ocultar los detalles de una acción en la aplicación lógica, seleccione la barra de título de la acción.

Cuando se guarda la aplicación lógica con un desencadenador de Event Grid, Azure crea automáticamente una
suscripción a eventos para la aplicación lógica en el recurso seleccionado. Así, cuando el recurso publica un evento
en la cuadrícula de eventos, esa cuadrícula de eventos inserta automáticamente el evento en la aplicación lógica.
Este evento desencadena la aplicación lógica, que crea y ejecuta una instancia del flujo de trabajo que se define en
los pasos siguientes.
La aplicación lógica ahora está activa y escucha los eventos de Event Grid, pero no hace nada hasta que agregue acciones
al flujo de trabajo.

Agregar una condición


Si desea ejecutar la aplicación lógica solo cuando se produzca un evento u operación específicos, agregue una condición
que compruebe la operación [Link]/virtualMachines/write . Cuando esta condición se cumpla, la aplicación
lógica le enviará un mensaje de correo electrónico con detalles acerca de la máquina virtual actualizada.
1. En el Diseñador de aplicación lógica, bajo el desencadenador de Event Grid, seleccione Nuevo paso .
2. En Elegir una acción , en el cuadro de búsqueda, escriba condition como filtro. En la lista Acciones, seleccione la
acción Condición .

El Diseñador de aplicaciones lógicas agrega una condición vacía al flujo de trabajo, incluidas las rutas de acceso de
la acción que se deben seguir en función de si la condición se cumple o no.

3. Cambie el nombre del título de la condición a If a virtual machine in your resource group has changed . En la
barra de título de la condición, seleccione el botón de los puntos suspensivos ( ... ) y Cambiar nombre .
4. Cree una condición que comprueba el evento body de un objeto data donde la propiedad operationName es
igual a la operación [Link]/virtualMachines/write . Más información sobre el Esquema de eventos de
la cuadrícula de eventos.
a. En la primera fila, debajo de And , haga clic en el cuadro izquierdo. En la lista de contenido dinámico que
aparece, seleccione Expresión .

b. En el editor de expresiones, escriba esta expresión, que devuelve el nombre de la operación del
desencadenador, y seleccione Aceptar :
triggerBody()?['data']['operationName']

Por ejemplo:

c. En el cuadro central, mantenga el operador es igual que .


d. En el cuadro de la derecha, escriba este valor, que es la operación específica que se va a supervisar:
[Link]/virtualMachines/write

Ahora, la condición finalizada se parecerá a este ejemplo:


Si cambia de la vista de diseño a la vista de código y vuelve a la vista de diseño, la expresión que especificó en la
condición se resuelve en el token [Link] :

5. Guarde la aplicación lógica.

Envío de notificaciones por correo electrónico


Ahora, agregue una acción para poder recibir un mensaje de correo electrónico cuando se cumpla la condición
especificada.
1. En el cuadro If true de la condición, seleccione Agregar una acción .

2. En Elegir una acción , en el cuadro de búsqueda, escriba send an email como filtro. En función de su proveedor
de correo electrónico, busque y seleccione el conector correspondiente. A continuación, seleccione la acción
"enviar correo electrónico" para el conector. Por ejemplo:
Para una cuenta profesional o educativa de Azure, seleccione el conector de Office 365 Outlook.
Para las cuentas de Microsoft personales, seleccione el conector de [Link].
Para las cuentas de Gmail, seleccione el conector de Gmail.
Este tutorial continúa con el conector de Office 365 Outlook. Si utiliza un proveedor diferente, los pasos siguen
siendo los mismos, pero la interfaz de usuario podría ser ligeramente diferente.

3. Si ya no tiene una conexión para el proveedor de correo electrónico, inicie sesión en su cuenta de correo
electrónico cuando se le pida que se autentique.
4. Cambie el nombre de la acción del correo electrónico de envío por este título:
Send email when virtual machine updated

5. Proporcione información sobre el correo electrónico como se especifica en la tabla siguiente:


TIP
Para seleccionar salidas de los pasos anteriores del flujo de trabajo, haga clic en un cuadro de edición para que aparezca la
lista de contenido dinámico o seleccione Agregar contenido dinámico . Para más resultados, seleccione Ver más para
cada sección de la lista. Para cerrar la lista de contenido dinámico, seleccione Agregar contenido dinámico de nuevo.

P RO P IEDA D O B L IGATO RIO VA L UE DESC RIP C IÓ N

To Sí <destinatario@dominio> Escriba la dirección de correo


electrónico del destinatario.
Para realizar pruebas, puede
usar su propia dirección de
correo electrónico.

Subject Sí Resource updated: Escriba el contenido del


Asunto asunto del correo
electrónico. Para este
tutorial, escriba el texto
especificado y seleccione el
campo Asunto del evento.
En este caso, el asunto del
correo electrónico incluye el
nombre del recurso
actualizado (máquina
virtual).

Cuerpo Sí Resource: Tema Escriba el contenido del


Event type: Tipo de cuerpo del correo
evento electrónico. Para este
tutorial, escriba el texto
Event ID: ID especificado y seleccione los
campos Tema , Tipo de
Time: Hora del evento , ID y Hora del
evento evento del evento para que
el correo electrónico incluya
el recurso que desencadenó
el evento, el tipo de evento,
la marca de tiempo del
evento y el identificador del
evento de la actualización.
Para este tutorial, el recurso
es el grupo de recursos de
Azure seleccionado en el
desencadenador.
Para agregar líneas en
blanco en el contenido,
presione MAYÚS +
ENTRAR.

NOTE
Si selecciona un campo que representa una matriz, el diseñador agrega automáticamente un bucle For each alrededor de la
acción que haga referencia a la matriz. De este modo, la aplicación lógica realiza la acción en cada elemento de la matriz.

Ahora, la acción de correo electrónico podría parecerse a este ejemplo:


Y la aplicación lógica terminada podría parecerse a este ejemplo:
6. Guarde la aplicación lógica. Para contraer y ocultar los detalles de cada acción en la aplicación lógica, seleccione la
barra de título de la acción.
La aplicación lógica ahora está activa, pero espera a que haya cambios en la máquina virtual antes de hacer algo.
Para probar la aplicación lógica ahora, pase a la sección siguiente.

Comprobación del flujo de trabajo de la aplicación lógica


1. Para comprobar que la aplicación lógica está recibiendo los eventos especificados, actualice la máquina virtual.
Por ejemplo, puede cambiar el tamaño de la máquina virtual en Azure Portal o cambiar el tamaño de la máquina
virtual con Azure PowerShell.
Transcurridos unos instantes, debería recibir un correo electrónico. Por ejemplo:
2. Para revisar el historial de ejecución y desencadenamiento de la aplicación lógica, en el menú de la aplicación
lógica, elija Información general . Para ver más detalles acerca de una ejecución, seleccione la fila
correspondiente a esa ejecución.

3. Para ver las entradas y salidas de cada paso, expanda el paso que desea revisar. Esta información puede ayudarle a
diagnosticar y depurar los problemas de la aplicación lógica.
Enhorabuena, ha creado y ejecutado una aplicación lógica que supervisa los eventos del recurso mediante una cuadrícula
de eventos y le envía por correo electrónico un mensaje cuando se producen esos eventos. También ha aprendido cómo
puede crear fácilmente flujos de trabajo que automatizan los procesos y a integrar sistemas y servicios en la nube.
Puede supervisar otros cambios de configuración con las cuadrículas de eventos y las aplicaciones lógicas, por ejemplo:
Una máquina virtual obtiene derechos de control de acceso basado en roles (RBAC).
Se realizan cambios en un grupo de seguridad de red (NSG) en una interfaz de red (NIC).
Los discos para una máquina virtual se agregan o se quitan.
Se asigna una dirección IP pública a una máquina virtual de NIC.

Limpieza de recursos
Este tutorial utiliza recursos y realiza acciones que generan gastos en su suscripción de Azure. Cuando haya terminado
con el tutorial y las pruebas, asegúrese de deshabilitar o eliminar todos los recursos si no desea que generen gastos.
Para detener la ejecución de la aplicación lógica sin eliminar el trabajo, deshabilítela. En el menú de la aplicación
lógica, seleccione Introducción . En la barra de herramientas, seleccione Deshabilitar .

TIP
Si no ve el menú de la aplicación lógica, intente volver al panel de Azure y vuelva a abrir la aplicación lógica.

Para eliminar la aplicación lógica de forma definitiva, en el menú de la aplicación lógica, seleccione Información
general . En la barra de herramientas, seleccione Eliminar . Confirme que quiere eliminar la aplicación lógica y
seleccione Eliminar .

Pasos siguientes
Creación y enrutamiento de eventos personalizados con Event Grid
Tutorial: Automatizar el cambio de tamaño de
imágenes cargadas mediante Event Grid
04/08/2020 • 19 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. Event Grid permite crear suscripciones a eventos
producidos por servicios de Azure o recursos de terceros.
Este tutorial es la segunda parte de una serie de tutoriales sobre almacenamiento. Amplía el tutorial anterior sobre
almacenamiento para agregar la generación de vistas en miniatura automática sin servidor con Azure Event Grid y
Azure Functions. Event Grid permite que Azure Functions responda a eventos de Azure Blob Storage y genere
vistas en miniatura de imágenes cargadas. Se crea una suscripción de eventos en el evento de creación de Blob
Storage. Cuando se agrega un blob a un contenedor de Blob Storage determinado, se llama a un punto de
conexión de función. Los datos pasados al enlace de función desde Event Grid se usan para acceder al blob y
generar la imagen en miniatura.
Use la CLI de Azure y Azure Portal para agregar la funcionalidad de cambio de tamaño a una aplicación existente
de carga de imágenes.
.SDK de .NET, versión 12
[Link] V10 SDK
En este tutorial, aprenderá a:
Creación de una cuenta de Azure Storage
Implementar código sin servidor con Azure Functions
Crear una suscripción de eventos de Blob Storage en Event Grid

Requisitos previos
NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

Para completar este tutorial:


Debes haber completado el tutorial anterior sobre el almacenamiento de blobs: Carga de datos de imagen en la
nube con Azure Storage.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.
Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos
preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:

O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se copia
automáticamente el código en Cloud Shell.

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
Si decide instalar y usar la CLI de forma local, en este tutorial se necesita la CLI de Azure versión 2.0.14 o posterior.
Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de
Azure.
Si no usa Cloud Shell, primero debe iniciar sesión con az login .
Si anteriormente no ha registrado el proveedor de recursos de Event Grid en su suscripción, asegúrese de que está
registrado.

az provider register --namespace [Link]

az provider register --namespace [Link]

Creación de una cuenta de Azure Storage


Azure Functions necesita una cuenta de almacenamiento general. Además de la cuenta de Blob Storage que creó
en el tutorial anterior, cree una cuenta de almacenamiento general independiente en el grupo de recursos con el
comando az storage account create. Los nombres de las cuentas de almacenamiento deben tener entre 3 y 24
caracteres y solo pueden incluir números y letras en minúscula.
1. Establezca una variable para almacenar el nombre del grupo de recursos que creó en el tutorial anterior.
resourceGroupName="myResourceGroup"

$resourceGroupName="myResourceGroup"

2. Establezca una variable que contenga la ubicación de los recursos que se van a crear.

location="eastus"

$location="eastus"

3. Establezca una variable para el nombre de la nueva cuenta de almacenamiento que requiere Azure
Functions.

functionstorage="<name of the storage account to be used by the function>"

$functionstorage="<name of the storage account to be used by the function>"

4. Cree la cuenta de almacenamiento para la función de Azure.

az storage account create --name $functionstorage --location $location \


--resource-group $resourceGroupName --sku Standard_LRS --kind StorageV2

az storage account create --name $functionstorage --location $location `


--resource-group $resourceGroupName --sku Standard_LRS --kind StorageV2

Creación de una aplicación de función


Debe tener una Function App para hospedar la ejecución de la función. La Function App proporciona un entorno
para la ejecución sin servidor de su código de función. Cree una Function App con el comando az functionapp
create.
En el siguiente comando, proporcione su propio nombre de aplicación de función única. El nombre de la aplicación
de función se usa como dominio DNS predeterminado para la aplicación de función y, por ello, el nombre debe ser
único en todas las aplicaciones de Azure.
1. Especifique un nombre para la aplicación de función que se va a crear.

functionapp="<name of the function app>"

$functionapp="<name of the function app>"

2. Cree la función de Azure.

az functionapp create --name $functionapp --storage-account $functionstorage \


--resource-group $resourceGroupName --consumption-plan-location $location \
--functions-version 2
az functionapp create --name $functionapp --storage-account $functionstorage `
--resource-group $resourceGroupName --consumption-plan-location $location `
--functions-version 2

Ahora configure la aplicación de funciones para conectarse a la cuenta de Blob Storage que creó en el tutorial
anterior.

Configuración de la Function App


La función necesita credenciales para la cuenta de Blob Storage, que se agregan a la configuración de aplicaciones
de la aplicación de función con el comando az functionapp config appsettings set.
.SDK de .NET, versión 12
[Link] V10 SDK

storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName \


--name $blobStorageAccount --query connectionString --output tsv)

az functionapp config appsettings set --name $functionapp --resource-group $resourceGroupName \


--settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails \
THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2

$storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName `


--name $blobStorageAccount --query connectionString --output tsv)

az functionapp config appsettings set --name $functionapp --resource-group $resourceGroupName `


--settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails `
THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2

El valor FUNCTIONS_EXTENSION_VERSION=~2 hace que la aplicación de función se ejecute en la versión 2.x del entorno
de ejecución de Azure Functions.
Ahora puede implementar un proyecto de código de función en esta Function App.

Implementación del código de función


.SDK de .NET, versión 12
[Link] V10 SDK
La función de cambio de tamaño de C# de ejemplo está disponible en GitHub. Implemente este proyecto de código
en la aplicación de función mediante el comando az functionapp deployment source config.

az functionapp deployment source config --name $functionapp --resource-group $resourceGroupName \


--branch master --manual-integration \
--repo-url [Link]

az functionapp deployment source config --name $functionapp --resource-group $resourceGroupName `


--branch master --manual-integration `
--repo-url [Link]

La función de cambio de tamaño de imagen se desencadena mediante solicitudes HTTP que se le envían desde el
servicio Event Grid. Indicará a Event Grid que quiere obtener estas notificaciones en la dirección URL de su función
mediante la creación de una suscripción a evento. En este tutorial se suscribirá a eventos creados por blob.
Los datos pasados a la función desde la notificación de Event Grid incluyen la dirección URL del blob. A su vez, la
dirección URL se pasa al enlace de entrada para obtener la imagen cargada desde Blob Storage. La función genera
una imagen en miniatura y escribe el flujo resultante en un contenedor independiente de Blob Storage.
Este proyecto usa EventGridTrigger para el tipo de desencadenador. Es recomendable usar el desencadenador de
Event Grid antes que desencadenadores HTTP genéricos. Event Grid valida automáticamente los desencadenadores
Function de Event Grid. Con desencadenadores HTTP genéricos, debe implementar la respuesta de validación.
.SDK de .NET, versión 12
[Link] V10 SDK
Para saber más sobre esta función, consulte los archivos [Link] y [Link].
El código de proyecto de función se implementa directamente desde el repositorio público de ejemplo. Para más
información sobre las opciones de implementación de Azure Functions, vea Implementación continua para Azure
Functions.

Creación de una suscripción a evento


Una suscripción de eventos indica los eventos generados por el proveedor que se quieren enviar a un punto de
conexión determinado. En este caso, el punto de conexión se expone mediante la función. Use los pasos siguientes
para crear una suscripción a evento que envíe notificaciones a su función en Azure Portal:
1. En Azure Portal, en la parte superior de la página, busque y seleccione Function App y elija la aplicación de
función recién creada. Seleccione Funciones y elija la función Miniatura .

2. Seleccione Integración , elija el Desencadenador de la cuadrícula de eventos y, después, seleccione


Crear suscripción a Event Grid .

3. Use la configuración de suscripción de eventos que se especifica en la tabla.


C O N F IGURA C IÓ N VA LO R SUGERIDO DESC RIP C IÓ N

Nombre imageresizersub Nombre que identifica a la nueva


suscripción de eventos.

Tipo de tema Cuentas de almacenamiento Elija el proveedor de eventos de las


cuentas de almacenamiento.

Suscripción Su suscripción de Azure De forma predeterminada, se


selecciona la suscripción de Azure
actual.

Grupos de recursos myResourceGroup Seleccione Usar existente y elija el


grupo de recursos que se ha venido
usando en este tutorial.

Recurso La cuenta de Blob Storage Elija la cuenta de Blob Storage que ha


creado.
C O N F IGURA C IÓ N VA LO R SUGERIDO DESC RIP C IÓ N

Nombre del tema del sistema imagestoragesystopic Especifique un nombre para el tema
del sistema. Para obtener información
acerca de los temas del sistema,
consulte Introducción a los temas del
sistema.

Tipos de evento Blob creado Desactive todos los tipos que no


sean Blob creado . Solo los tipos de
evento de
[Link]
se pasan a la función.

Tipo de punto de conexión generado automáticamente Definido previamente como instancia


de Azure Functions .

Punto de conexión generado automáticamente El nombre de la función. En este caso,


es Thumbnail.

4. Cambie a la pestaña Filtros y realice las siguientes acciones:


a. Seleccione la opción Habilitar el filtrado del asunto .
b. En El asunto comienza por , escriba el siguiente valor:
/blobSer vices/default/containers/images/blobs/ .

5. Seleccione Crear para agregar la suscripción de eventos. Se crea una suscripción de eventos que
desencadena la función Thumbnail cuando se agrega un blob al contenedor images . La función cambia el
tamaño de las imágenes y las agrega al contenedor thumbnails .

Ahora que se han configurado los servicios back-end, pruebe la funcionalidad de cambio de tamaño de imagen en
la aplicación web de ejemplo.

Prueba de la aplicación de ejemplo


Para probar el cambio de tamaño de imagen en la aplicación web, vaya a la dirección URL de la aplicación
publicada. La dirección URL predeterminada de la aplicación web es [Link] .
.SDK de .NET, versión 12
[Link] V10 SDK
Haga clic en la región Cargar fotos para seleccionar y cargar un archivo. También puede arrastrar una foto a esta
región.
Observe que después de que la imagen cargada desaparezca, se muestra una copia de ella en el carrusel
Miniaturas generadas . La función ha cambiado el tamaño de la imagen, la imagen se ha agregado al contenedor
thumbnails y el cliente web la ha descargado.

Pasos siguientes
En este tutorial, ha aprendido a:
Crear una cuenta general de Azure Storage
Implementar código sin servidor con Azure Functions
Crear una suscripción de eventos de Blob Storage en Event Grid
Vaya a la tercera parte de la serie de tutoriales sobre almacenamiento para aprender a proteger el acceso a la
cuenta de almacenamiento.
Proteger el acceso a los datos de una aplicación en la nube
Para más información sobre Event Grid, vea Una introducción a Event Grid.
Para probar otro tutorial sobre Azure Functions, vea Creación de una función que se integre con Azure Logic
Apps.
Tutorial: Integración de Azure Automation con Event
Grid y Microsoft Teams
04/08/2020 • 6 minutes to read • Edit Online

En este tutorial, aprenderá a:


Importe un runbook de ejemplo de Event Grid.
Cree un webhook de Microsoft Teams opcional.
Cree un webhook para el runbook.
Cree una suscripción de Event Grid.
Cree una máquina virtual que desencadene el runbook.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Prerrequisitos
IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

Para completar este tutorial, se requiere una cuenta de Azure Automation para contener el runbook que se
desencadena desde la suscripción de Azure Event Grid.
El módulo [Link] tiene que cargarse en su cuenta de Automation, consulte Importación de módulos en
Azure Automation para aprender a importar módulos en Azure Automation.

Importación de un runbook de ejemplo de Event Grid


1. Seleccione la cuenta de Automation y la página Runbooks .
2. Seleccione el botón Examinar galería .
3. Busque Event Grid y seleccione Integración de Azure Automation con Event Grid .

4. Seleccione Impor tar y asígnele el nombre Watch-VMWrite .


5. Después de la importación, seleccione Editar para ver el origen de runbook.
6. Actualice la línea 74 en el script para que utilice Tag en lugar de Tags .

Update-AzureRmVM -ResourceGroupName $VMResourceGroup -VM $VM -Tag $Tag | Write-Verbose

7. Seleccione el botón Publicar .

Creación de un webhook de Microsoft Teams opcional


1. En Microsoft Teams, seleccione Más opciones junto al nombre del canal y, luego, seleccione Conectores .
2. Desplácese por la lista de conectores hasta Webhook de entrada y seleccione Agregar .
3. Escriba AzureAutomationIntegration como el nombre y seleccione Crear .
4. Copie la dirección URL del webhook en el Portapapeles y guárdela. La dirección URL del webhook se usa
para enviar información a Microsoft Teams.
5. Seleccione Hecho para guardar el webhook.

Creación de un webhook para el runbook


1. Abra el runbook Watch-VMWrite.
2. Seleccione Webhooks y el botón Agregar webhook .
3. Escriba WatchVMEventGrid como el nombre. Copie la dirección URL en el Portapapeles y guárdelo.

4. Seleccione Configurar parámetros y ejecutar configuraciones y escriba la dirección URL del webhook
de Microsoft Teams para CHANNELURL . Deje en blanco WEBHOOKDATA .
5. Seleccione Crear para crear el webhook del runbook de Automation.

Creación de una suscripción de Event Grid


1. En la página de información general de la cuenta de Automation , seleccione Event Grid .

2. Haga clic en +Suscripción de eventos .


3. Configure la suscripción con la información siguiente:
a. En Tipo de tema , seleccione Suscripciones de Azure .
b. Desactive la casilla Suscribirse a todos los tipos de evento .
c. Escriba AzureAutomation como el nombre.
d. En la lista desplegable Tipos de evento definidos , desactive todas las opciones excepto Resource
Write Success (Escritura de recursos correcta).

NOTE
Azure Resource Manager no distingue actualmente entre Crear y Actualizar, por lo que la implementación de
este tutorial para todos los eventos [Link] en su suscripción de Azure
podría dar lugar a un gran volumen de llamadas.

e. En Tipo de punto de conexión , seleccione Webhook .


f. Haga clic en Seleccionar un punto de conexión . En la página Seleccionar webhook que se
abre, pegue la dirección URL del webhook que creó para el runbook Watch-VMWrite.
g. En FILTROS , escriba la suscripción y el grupo de recursos en los que desea buscar las nuevas
máquinas virtuales creadas. Debe verse de una manera similar a:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-
name>/providers/[Link]/virtualMachines

4. Seleccione Crear para guardar la suscripción de Event Grid.

Creación de una máquina virtual que desencadena el runbook


1. Cree una máquina virtual nueva en el grupo de recursos que especificó en el filtro de prefijo de la
suscripción de Event Grid.
2. Se debe llamar al runbook Watch-VMWrite y se debe agregar una etiqueta nueva a la máquina virtual.

3. Se envía un mensaje nuevo al canal de Microsoft Teams.

Pasos siguientes
En este tutorial, se configura la integración entre Event Grid y Automation. Ha aprendido a:
Importe un runbook de ejemplo de Event Grid.
Cree un webhook de Microsoft Teams opcional.
Cree un webhook para el runbook.
Cree una suscripción de Event Grid.
Cree una máquina virtual que desencadene el runbook.
Creación y enrutamiento de eventos personalizados con Event Grid
Tutorial: Envío de notificaciones por correo
electrónico sobre eventos de Azure IoT Hub
mediante Event Grid y Logic Apps
04/08/2020 • 16 minutes to read • Edit Online

Azure Event Grid permite reaccionar a los eventos en IoT Hub mediante el desencadenamiento de acciones en las
aplicaciones empresariales de bajada.
En este artículo se ofrece orientación mediante una configuración de ejemplo que usa IoT Hub y Event Grid. Al final,
tendrá una aplicación en Azure Logic Apps configurada para enviar una notificación por correo electrónico cada
vez que se agregue un dispositivo a la instancia de IoT Hub.

Requisitos previos
Una suscripción de Azure activa. Si no tiene una suscripción, puede crear una cuenta gratuita de Azure.
Una cuenta de correo electrónico de cualquier proveedor de correo electrónico que sea compatible con
Azure Logic Apps, como Office 365 Outlook, [Link] o Gmail. Esta cuenta de correo electrónico se usa
para enviar las notificaciones de eventos. Puede encontrar una lista completa de los conectores de Logic
Apps admitidos en Introducción a los conectores.

IMPORTANT
Antes de usar Gmail, compruebe que tenga una cuenta empresarial de G-Suite (dirección de correo electrónico con
un dominio personalizado) o una cuenta de consumidor de Gmail (dirección de correo electrónico con @[Link] o
@[Link]). Solo las cuentas empresariales de G-Suite pueden usar el conector de Gmail con otros conectores
sin restricciones en las aplicaciones lógicas. Si tiene una cuenta de consumidor de Gmail, puede usar el conector de
Gmail solo con servicios específicos aprobados por Google, o puede crear una aplicación cliente de Google para usarla
en la autenticación. Para más información, consulte Directivas de privacidad y seguridad de datos de los conectores
de Google en Azure Logic Apps.

Una instancia de IoT Hub en Azure. Si aún no ha creado ninguna, vea un tutorial en Introducción a Azure IoT
Hub.

Creación de una aplicación lógica


En primer lugar, cree una aplicación lógica y agregue un desencadenador de Event Grid que supervise el grupo de
recursos de la máquina virtual.
Creación de un recurso de aplicación lógica
1. En Azure Portal, seleccione Crear un recurso y, a continuación, escriba "aplicación lógica" en el cuadro de
búsqueda y presione Entrar. Seleccione Aplicación lógica en los resultados.
2. En la pantalla siguiente, seleccione Crear .
3. Asigne un nombre a la aplicación lógica que sea único en su suscripción; a continuación, seleccione la
misma suscripción, el grupo de recursos y la ubicación en que se encuentra la instancia de IoT Hub.

4. Seleccione Crear .
5. Una vez creado el recurso, vaya a la aplicación lógica. Para ello, seleccione Grupos de recursos y, luego, el
grupo de recursos que creó para este tutorial. A continuación, busque la aplicación lógica en la lista de
recursos y selecciónela.
6. En el diseñador de aplicaciones lógicas, desplácese hacia abajo para ver Plantillas . Elija Aplicación lógica
en blanco para que pueda crear la aplicación lógica desde el principio.
Selección de un desencadenador
Un desencadenador es un evento específico que inicia la aplicación lógica. Para este tutorial, el desencadenador
que activa el flujo de trabajo recibe una solicitud a través de HTTP.
1. En la barra de búsqueda de conectores y desencadenadores, escriba HTTP .
2. Seleccione Solicitud: Cuando se recibe una solicitud HTTP como desencadenador.

3. Seleccione Usar una carga de ejemplo para generar el esquema .


4. Pegue el siguiente código JSON de ejemplo en el cuadro de texto y después seleccione Listo :
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group
name>/PROVIDERS/[Link]/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "[Link]",
"eventTime": "2018-01-02T19:17:44.4383997Z",
"data": {
"twin": {
"deviceId": "LogicAppTestDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag": "null",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
}
}
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice"
},
"dataVersion": "1",
"metadataVersion": "1"
}]

5. Puede recibir una notificación emergente que dice: Recuerde incluir un encabezado Content-Type
establecido en application/json en la solicitud. Puede ignorar esta sugerencia sin ningún problema y
pasar a la sección siguiente.
Creación de una acción
Las acciones son los pasos que se producen después de que el desencadenador inicia el flujo de trabajo de la
aplicación lógica. En este tutorial, la acción consiste en enviar una notificación por correo electrónico desde su
proveedor de correo electrónico.
1. Seleccione Nuevo paso . Se abrirá una ventana para elegir una acción .
2. Busque Correo electrónico .
3. En función de su proveedor de correo electrónico, busque y seleccione el conector correspondiente. Este
tutorial usa Office 365 Outlook . Los pasos para otros proveedores de correo electrónico son similares.
4. Seleccione la acción Enviar un correo electrónico .
5. Si se le pide, inicie sesión en la cuenta de correo electrónico.
6. Cree la plantilla de correo electrónico.
Para : escriba la dirección de correo electrónico en la que desea recibir los correos electrónicos de
notificación. Para este tutorial, use una cuenta de correo electrónico a la que pueda acceder para las
pruebas.
Firmante : Rellene el texto del asunto. Al hacer clic en el cuadro de texto Asunto, puede seleccionar
contenido dinámico para incluirlo. Por ejemplo, en este tutorial se usa IoT Hub alert: {event Type} .
Si no puede ver el contenido dinámico, seleccione el hipervínculo Agregar contenido dinámico :
con esto lo puede activar o desactivar.
Cuerpo : escriba el texto del correo electrónico. Seleccione las propiedades JSON de la herramienta
del selector para incluir contenido dinámico basado en los datos de los eventos. Si no puede ver el
contenido dinámico, seleccione el hipervínculo Agregar contenido dinámico situado en el cuadro
de texto Cuerpo . Si no aparecen los campos que desea, haga clic en el signo más en la pantalla
Contenido dinámico para que se incluyan los campos de la acción anterior.
La plantilla de correo electrónico puede tener un aspecto similar al de este ejemplo:
7. Guarde la aplicación lógica.
Copia de la dirección URL HTTP
Antes de cerrar el Diseñador de Logic Apps, copie la dirección URL en la que se realizan las escuchas de un
desencadenador de las aplicaciones lógicas. Use esta dirección URL para configurar Event Grid.
1. Haga clic en el cuadro de configuración del desencadenador Cuando se recibe una solicitud HTTP para
expandirlo.
2. Seleccione el botón de copia que se encuentra junto al valor Dirección URL de HTTP POST para copiarlo.

3. Guarde esta dirección URL para poder hacer referencia a ella en la siguiente sección.

Configurar la suscripción de eventos de IoT Hub


En esta sección, va a configurar IoT Hube para publicar eventos cuando se produzcan.
1. En Azure Portal, vaya hasta el centro de IoT. Para ello, seleccione Grupos de recursos , a continuación,
seleccione el grupo de recursos para este tutorial y, finalmente, seleccione el centro de IoT de la lista de
recursos.
2. Seleccione Eventos .

3. Seleccione Suscripción de eventos .

4. Cree la suscripción de eventos con los siguientes valores:


a. En la sección DETALLES DE SUSCRIPCIONES DE EVENTOS , realice estas tareas:
a. Especifique un nombre para la suscripción de eventos.
b. Seleccione Esquema de Event Grid en Esquema de eventos .
b. En la sección DETALLES DEL TEMA , realice las siguientes tareas:
a. Confirme que en Tipo de tema está seleccionado IoT Hub .
b. Confirme que el nombre del centro de IoT se establece como valor del campo Recurso de
origen .
c. Escriba el nombre del tema del sistema que se creará. Para obtener información acerca de los
temas del sistema, consulte Introducción a los temas del sistema.
c. En la sección TIPOS DE EVENTO , realice las siguientes tareas:
a. En Filtro para tipos de evento , desactive todas las opciones excepto Dispositivo creado .
d. En la sección DETALLES DE PUNTO DE CONEXIÓN , realice las siguientes tareas:
a. En Tipo de punto de conexión , seleccione Webhook .
b. Haga clic en Seleccionar punto de conexión y pegue la dirección URL que copió de la
aplicación lógica y confirme la selección.

Una vez realizadas las acciones anteriores, el panel debe tener un aspecto similar al del ejemplo
siguiente:
5. Puede guardar la suscripción de eventos aquí y recibir notificaciones en todos los dispositivos creados en su
instancia de IoT Hub. En este tutorial, sin embargo, se van a usar los campos opcionales para filtrar por
dispositivos específicos. Seleccione Filtros en la parte superior del panel.
6. Seleccione Agregar nuevo filtro . Rellene los campos con estos valores:
Clave : Seleccione Subject .
Operador : Seleccione String begins with .
Valor : escriba devices/Building1_ para filtrar por los eventos de dispositivos del edificio 1.
Agregue otro filtro con estos valores:
Clave : Seleccione Subject .
Operador : Seleccione String ends with .
Valor : escriba _Temperature para filtrar por los eventos de dispositivo relacionados con la
temperatura.
La pestaña Filtros de la suscripción al evento se debe parecer a esta imagen:

7. Seleccione Crear para guardar la suscripción de eventos.

Creación de un dispositivo
Pruebe la aplicación lógica mediante la creación de un dispositivo para desencadenar un correo electrónico de
notificación de eventos.
1. En IoT Hub, seleccione Dispositivos IoT .
2. Seleccione Nuevo .
3. En Id. de dispositivo , escriba Building1_Floor1_Room1_Light .
4. Seleccione Guardar .
5. Puede agregar varios dispositivos con distintos identificadores de dispositivo para probar los filtros de
suscripción de eventos. Pruebe estos ejemplos:
Building1_Floor1_Room1_Light
Building1_Floor2_Room2_Temperature
Building2_Floor1_Room1_Temperature
Building2_Floor1_Room1_Light
Si ha agregado los cuatro ejemplos, la lista de dispositivos IoT se parecerá a la siguiente imagen:
6. Una vez que haya agregado unos cuantos dispositivos a su instancia de IoT Hub, consulte su correo
electrónico para ver cuáles desencadenaron la aplicación lógica.

Uso de la CLI de Azure


En lugar de usar Azure Portal, puede llevar a cabo los pasos de IoT Hub mediante la CLI de Azure. Para más
información, consulte las páginas de la CLI de Azure para crear una suscripción de eventos y crear un dispositivo
IoT.

Limpieza de recursos
En este tutorial se usaron recursos que generan gastos en su suscripción de Azure. Cuando haya terminado de
probar el tutorial y los resultados de las pruebas, deshabilite o elimine los recursos que no desea conservar.
Para eliminar todos los recursos que ha creado en este tutorial, elimine el grupo de recursos.
1. Seleccione Grupos de recursos y, luego, el grupo de recursos que creó para este tutorial.
2. En la página del grupo de recursos, seleccione Eliminar grupo de recursos . Se le pedirá que escriba el
nombre del grupo de recursos y, a continuación, podrá eliminarlo. También se quitarán todos los recursos
que contiene.
Si no desea quitar todos los recursos, puede administrarlos uno a uno.
Si no desea perder el trabajo realizado en la aplicación lógica, deshabilítela en lugar de eliminarla.
1. Vaya a la aplicación lógica.
2. En la hoja Introducción , seleccione Eliminar o Deshabilitar .
Cada suscripción solo puede tener una instancia de IoT Hub gratuita. Si creó una instancia de IoT Hub gratis para
este tutorial, no es necesario eliminarla para evitar cargos.
1. Vaya a su instancia de IoT Hub.
2. En la página Introducción , seleccione Eliminar .
Aunque conserve la instancia de IoT Hub, puede que desee eliminar la suscripción de eventos que creó.
1. En la instancia de IoT Hub, seleccione Event Grid .
2. Seleccione la suscripción de eventos que desea eliminar.
3. Seleccione Eliminar .

Pasos siguientes
Obtenga más información sobre reacción a eventos de IoT Hub mediante Event Grid para desencadenar
acciones.
Aprenda a ordenar eventos conectados y desconectados de dispositivos
Obtenga información sobre qué más puede hacer con Event Grid.
Tutorial: Respuesta a eventos de Azure Service Bus
recibidos a través de Azure Event Grid con Azure
Functions y Azure Logic Apps
04/08/2020 • 17 minutes to read • Edit Online

En este tutorial, aprenderá a responder a eventos de Azure Service Bus que se reciben a través de Azure Event Grid
con Azure Functions y Azure Logic Apps.
En este tutorial, aprenderá a:
Creación de un espacio de nombres de Service Bus
Preparación de una aplicación de ejemplo para enviar mensajes
Envío de mensaje al tema de Service Bus
Recepción de mensajes mediante Logic Apps
Configuración de una función de prueba en Azure
Conexión de la función y el espacio de nombres mediante Event Grid
Recepción de mensajes mediante Azure Functions

Requisitos previos
Para completar este tutorial, asegúrese de que tiene instalados los siguientes elementos:
Visual Studio 2017 Update 3 (versión 15.3, 26730.01) o posterior.
NET Core SDK, versión 2.0 o posterior.

Creación de un espacio de nombres de Service Bus


Siga las instrucciones de este tutorial: Inicio rápido: Use Azure Portal para crear un tema de Service Bus y
suscripciones al tema para realizar las siguientes tareas:
Cree un espacio de nombres de Service Bus Premium .
Obtenga la cadena de conexión.
Cree un tema de Service Bus.
Cree dos suscripciones al tema.

Preparación de una aplicación de ejemplo para enviar mensajes


Puede usar cualquier método para enviar un mensaje al tema de Service Bus. El ejemplo de código al final de este
procedimiento presupone que usa Visual Studio 2017.
1. Clone el repositorio azure-service-bus de GitHub.
2. En Visual Studio,acuda a la carpeta
\samples\DotNet\[Link]\ServiceBusEventGridIntegration y abra el archivo
[Link].
3. Vaya al proyecto MessageSender y, a continuación, seleccione [Link] .
4. Rellene el nombre del tema de Service Bus y la cadena de conexión que obtuvo en el paso anterior:
const string ServiceBusConnectionString = "YOUR CONNECTION STRING";
const string TopicName = "YOUR TOPIC NAME";

5. Actualice el valor numberOfMessages a 5.


6. Compile y ejecute el programa para enviar mensajes de prueba al tema de Service Bus.

Recepción de mensajes mediante Logic Apps


Conecte una aplicación lógica con Azure Service Bus y Azure Event Grid mediante estos pasos:
1. En Azure Portal, cree una aplicación lógica.
a. Seleccione +Crear un recurso , Integración y, luego, Aplicación lógica .
b. En la página Aplicación lógica: Crear , escriba un nombre para la aplicación lógica.
c. Selección la suscripción de Azure.
d. En Grupo de recursos , seleccione Usar existente y seleccione el grupo de recursos que usó para
otros recursos (por ejemplo, función de Azure, espacio de nombres de Service Bus) que creó
anteriormente.
e. En Ubicación , seleccione la ubicación de la aplicación lógica.
f. Seleccione Crear para crear la aplicación lógica.
2. En la página Diseñador de aplicaciones lógicas , seleccione Aplicación lógica en blanco en
Plantillas .
3. En el diseñador, realice los pasos siguientes:
a. Busque Event Grid .
b. Seleccione When a resource event occurs: Azure Event Grid (Cuando se produzca un evento de
recursos: Azure Event Grid).
4. Seleccione Sign in (Iniciar sesión), escriba sus credenciales de Azure y seleccione Allow Access (Permitir
acceso).
5. En la página When a resource event occurs (Cuando se produce un evento de recurso), realice los
siguientes pasos:
a. Seleccione su suscripción a Azure.
b. En Resource Type (Tipo de recurso), seleccione [Link] [Link] .
c. En Resource Name (Nombre del recurso), seleccione el espacio de nombres de Service Bus.
d. Seleccione Add new parameter (Agregar nuevo parámetro) y Suffix Filter (Filtro de sufijo).
e. En Suffix Filter (Filtro de sufijo), escriba el nombre de la segunda suscripción al tema de Service Bus.
6. En el diseñador, seleccione +New Step (+Nuevo paso) y siga los siguientes pasos:
a. Busque Ser vice Bus .
b. Seleccione Ser vice Bus en la lista.
c. Seleccione Get messages (Obtener mensajes) en la lista Actions (Acciones).
d. Seleccione Get messages from a topic subscription (peek-lock) (Obtener mensajes de una
suscripción de tema [bloque de inspección]).

e. Escriba un nombre para la conexión . Por ejemplo: Obtenga mensajes de la suscripción al


tema y seleccione el espacio de nombres de Service Bus.
f. Seleccione RootManageSharedAccessKey y, luego, Crear .

g. Seleccione su tema y suscripción .

7. Seleccione +New step (+Nuevo paso) y realice los siguientes pasos:


a. Seleccione Ser vice Bus .
b. Seleccione Complete the message in a topic subscription (Completar el mensaje en una
suscripción de tema) en la lista de acciones.
c. Seleccione el tema de Service Bus.
d. Seleccione la segunda suscripción al tema.
e. En Lock token of the message ( Token de bloqueo del mensaje), seleccione Lock Token (Token de
bloqueo) en Dynamic content (Contenido dinámico).
8. Seleccione Save (Guardar) en la barra de herramientas del diseñador de aplicaciones lógicas para guardar
la aplicación lógica.
9. Siga las instrucciones de la sección Envío de mensaje al tema de Service Bus para enviar mensajes al tema.
10. Cambie a la página Información general de la aplicación lógica. Verá que la aplicación lógica se ejecuta en
el historial de ejecuciones de los mensajes enviados.

Configuración de una función de prueba en Azure


Antes de examinar todo el escenario, configure por lo menos una pequeña función de prueba que puede usar para
depurar y ver los eventos que fluyen. Siga las instrucciones del artículo Creación de su primera función en Azure
Portal para realizar las siguientes tareas:
1. Cree una aplicación de función.
2. Cree una función desencadenada mediante HTTP.
Luego, siga estos pasos:
Azure Functions V2
Azure Functions V1
1. Expanda Functions en la vista de árbol y seleccione la función. Reemplace el código de la función por el
código siguiente:

#r "[Link]"

using [Link];
using [Link];
using [Link];
using [Link];

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)


{
[Link]("C# HTTP trigger function processed a request.");
var content = [Link];
string jsonContent = await new StreamReader(content).ReadToEndAsync();
[Link]($"Received Event with payload: {jsonContent}");

IEnumerable<string> headerValues;
headerValues = [Link]("Aeg-Event-Type");

if ([Link]() != 0)
{
var validationHeaderValue = [Link]();
if(validationHeaderValue == "SubscriptionValidation")
{
[Link]("Validating the subscription");
var events = [Link]<GridEvent[]>(jsonContent);
var code = events[0].Data["validationCode"];
[Link]($"Validation code: {code}");
return (ActionResult) new OkObjectResult(new { validationResponse = code });
}
}

return jsonContent == null


? new BadRequestObjectResult("Please pass a name on the query string or in the request body")
: (ActionResult)new OkObjectResult($"Hello, {jsonContent}");
}

public class GridEvent


{
public string Id { get; set; }
public string EventType { get; set; }
public string Subject { get; set; }
public DateTime EventTime { get; set; }
public Dictionary<string, string> Data { get; set; }
public string Topic { get; set; }
}

2. Seleccione Guardar en la barra de herramientas para guardar el código de la función.


3. Seleccione Test/Run (Probar/ejecutar) en la barra de herramientas y haga lo siguiente:
a. Escriba el siguiente código JSON en el cuerpo .

[{
"id": "64ba80ae-9f8e-425f-8bd7-d88d2c0ba3e3",
"topic": "/subscriptions/0000000000-0000-0000-0000-
0000000000000/resourceGroups/spegridsbusrg/providers/[Link]/namespaces/spegridsbusn
s",
"subject": "",
"data": {
"validationCode": "D7D825D4-BD04-4F73-BDE3-70666B149857",
"validationUrl": "[Link]
[Link]/eventsubscriptions/spsbusegridsubscription/validate?id=D7D825D4-
BD04-4F73-BDE3-70666B149857&t=2020-06-09T18:28:51.5724615Z&apiVersion=2020-04-01-preview&[Hidden
Credential]"
},
"eventType": "[Link]",
"eventTime": "2020-06-09T18:28:51.5724615Z",
"metadataVersion": "1",
"dataVersion": "2"
}]

b. Haga clic en Add header (Agregar encabezado) y agregue un encabezado con el nombre
aeg-event-type y el valor SubscriptionValidation .

c. Seleccione Run (Ejecutar).


d. Confirme que ve el código de estado devuelto al hacer clic en OK (Aceptar) y el código de validación
en el cuerpo de la respuesta. Además, consulte la información registrada por la función.

4. Seleccione Get function URL (Obtener la dirección URL de la función) y anote la dirección URL.

5. Seleccione el botón de copiar que se encuentra junto a la dirección URL.


Conexión de la función y el espacio de nombres mediante Event Grid
En esta sección va a asociar la función y el espacio de nombres de Service Bus mediante Azure Portal.
Para crear una suscripción de Azure Event Grid, siga estos pasos:
1. En Azure Portal, vaya a su espacio de nombres y, luego, en el panel izquierdo, seleccione Eventos . Se abre
la ventana del espacio de nombres, con dos suscripciones de Event Grid que se muestran en el panel
derecho.

2. Seleccione +Suscripción de eventos en la barra de herramientas.


3. En la página Crear suscripción de eventos , realice los siguientes pasos:
a. Escriba el nombre de la suscripción.
b. Escriba un nombre para el tema del sistema . Los temas del sistema se crean para los recursos de
Azure, como la cuenta de Azure Storage y Azure Service Bus. Para más información acerca de los
temas del sistema, consulte Introducción a los temas del sistema.
c. En Tipo de punto de conexión , seleccione Webhook .
d. Elija Seleccionar un punto de conexión , pegue la dirección URL de la función y, luego, seleccione
Confirmar selección .
e. Cambie a la pestaña Filtros y realice las siguientes tareas:
a. Seleccione Habilitar el filtrado del asunto .
b. Escriba el nombre de la primera suscripción en el tema de Service Bus que creó
anteriormente.
c. Seleccione el botón Crear .

4. Cambie a la pestaña Suscripciones a eventos de la página Eventos y confirme que ve la suscripción de


eventos en la lista.
Envío de mensaje al tema de Service Bus
1. Ejecute la aplicación de C# para .NET, que envía mensajes al tema de Service Bus.

2. En la página de la aplicación de función de Azure, cambie a la pestaña Super visión en la pestaña Code +
test (Código y prueba). Verá una entrada para cada mensaje publicado en el tema de Service Bus. Si no las
ve, actualice la página al cabo de unos minutos.

También puede usar la pestaña Registros de la página Super visión para ver la información de registro a
medida que se envían los mensajes. Puede que haya algo de retraso, así que espere unos minutos para ver
los mensajes registrados.
Recepción de mensajes mediante Azure Functions
En la sección anterior pudo observar un escenario de prueba y depuración sencillo, y se aseguró de que los
eventos fluían.
En esta sección aprenderá cómo recibir y procesar los mensajes una vez que reciba un evento.
Prueba de una función desde Visual Studio
1. En la misma solución de Visual Studio (SBEventGridIntegration ) que ha abierto, seleccione
[Link] en el proyecto SBEventGridIntegration .
2. Especifique la cadena de conexión de Service Bus en el código siguiente:

const string ServiceBusConnectionString = "YOUR CONNECTION STRING";

3. Descargue el perfil de publicación de la función:


a. Seleccione la aplicación de función.
b. Seleccione la pestaña Información general si no está ya seleccionada.
c. Seleccione Obtener perfil de publicación en la barra de herramientas.

d. Guarde el archivo en la carpeta del proyecto.


4. En Visual Studio, haga clic con el botón derecho en SBEventGridIntegration y seleccione Publicar .
5. En Publicar , siga estos pasos:
a. Seleccione Iniciar en la página Publicar .
b. En Destino , seleccione Impor tar perfil .
c. Seleccione Next (Siguiente).
6. Seleccione el archivo de perfil de publicación que descargó anteriormente y, después, seleccione
Finalizar .

7. En la página Publicar , seleccione Publicar .


8. Confirme que ve la nueva función de Azure ReceiveMessagesOnEvent . Si es necesario, actualice la
página.

9. Obtenga la dirección URL a la nueva función y anótela.


Suscripción a Event Grid
1. Elimine la suscripción a Event Grid existente:
a. En la página Espacio de nombres de Ser vice Bus , seleccione Eventos en el menú izquierdo.
b. Seleccione la pestaña Suscripciones a eventos .
c. Seleccione la suscripción a eventos existente.

d. En la página Suscripción de eventos , seleccione Eliminar . Seleccione Sí para confirmar la


eliminación.
2. Siga las instrucciones de la sección Conexión de la función y el espacio de nombres mediante Event Grid para
crear una suscripción de Event Grid con la nueva dirección URL de función.
3. Siga las instrucciones de la sección Envío de mensaje al tema de Service Bus para enviar mensajes al tema y
supervisar la función.

Pasos siguientes
Más información sobre Azure Event Grid.
Más información acerca de Azure Functions.
Más información acerca de la característica Logic Apps de Azure App Service.
Aprenda más sobre Azure Service Bus.
Tutorial: Transmitir macrodatos a un
almacenamiento de datos
04/08/2020 • 20 minutes to read • Edit Online

Azure Event Grid es un servicio inteligente de enrutamiento de eventos que permite reaccionar ante las
notificaciones (eventos) procedentes de aplicaciones y servicios. Por ejemplo, puede desencadenar una función
de Azure que procese los datos de Event Hubs que se han capturado en una instancia de Azure Blob Storage o
Azure Data Lake Store y migrar esos datos a otros repositorios. En este ejemplo de integración de Event Hubs y
Event Grid se indica cómo usar Event Hubs con Event Grid para migrar datos de Event Hubs capturados
procedentes de Blob Storage a una instancia de SQL Data Warehouse sin ningún tipo de problema.

En este diagrama se muestra el flujo de trabajo de la solución que se compila en este tutorial:
1. Los datos que se envían a un centro de eventos de Azure se capturan en una instancia de Azure Blob Storage.
2. Una vez que se completa la captura de los datos, se genera un evento y se envía a una cuadrícula de eventos
de Azure.
3. La cuadrícula de eventos desvía estos datos de evento a una aplicación de función de Azure.
4. La aplicación de función usa la dirección URL del blob de los datos del evento para recuperar el blob desde el
almacenamiento.
5. La aplicación de función migra los datos del blob a una instancia de Azure SQL Data Warehouse.
En este artículo, podrá llevar a cabo estos pasos:
Usar una plantilla de Azure Resource Manager para implementar la infraestructura: un centro de eventos,
una cuenta de almacenamiento, una aplicación de función, un almacenamiento de datos de SQL.
Crear una tabla en el almacenamiento de datos.
Agregar código a la aplicación de función.
Suscribirse al evento.
Ejecutar una aplicación que envía los datos al centro de eventos.
Ver los datos migrados en el almacenamiento de datos.

Requisitos previos
NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de
AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más
información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure
PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la
instalación del módulo Az, consulte Instalación de Azure PowerShell.
Para realizar este tutorial, necesitará lo siguiente:
Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Visual Studio 2019 con cargas de trabajo para: desarrollo de escritorio de .NET, desarrollo de Azure,
desarrollo web y de [Link], desarrollo de [Link] y desarrollo de Python.
Descargue el proyecto de ejemplo EventHubsCaptureEventGridDemo en su equipo.

Implementar la infraestructura
En este paso, implementará la infraestructura requerida con una plantilla de Resource Manager. Cuando
implemente la plantilla, se crearán estos recursos:
Un centro de eventos con la característica Captura habilitada.
Una cuenta de almacenamiento para los archivos capturados.
Un plan de App Service para hospedar la aplicación de función
Una aplicación de función para procesar el evento
Un servidor SQL Server para hospedar el almacenamiento de datos
Un SQL Data Warehouse para almacenar los datos migrados
Inicio de Azure Cloud Shell en Azure Portal
1. Inicie sesión en Azure Portal.
2. Seleccione el botón Cloud Shell que se encuentra en la parte superior.

3. Verá Cloud Shell abierto en la parte inferior del explorador.


4. En Cloud Shell, si ve una opción para seleccionar entre Bash y PowerShell , seleccione Bash .
5. Si usa Cloud Shell por primera vez, seleccione Crear almacenamiento para crear una cuenta de
almacenamiento. Azure Cloud Shell requiere una cuenta de Azure Storage donde almacenar algunos
archivos.

6. Espere hasta que se inicialice Cloud Shell.


Uso de CLI de Azure
1. Para crear un grupo de recursos de Azure, ejecute el comando de la CLI siguiente:
a. Copie y pegue este comando en la ventana Cloud Shell. Cambie el nombre del grupo de recursos
y su ubicación si lo desea.

az group create -l eastus -n rgDataMigration

b. Presione ENTRAR .
Este es un ejemplo:

user@Azure:~$ az group create -l eastus -n ehubegridgrp


{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/ehubegridgrp",
"location": "eastus",
"managedBy": null,
"name": "ehubegridgrp",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}

2. Para implementar todos los recursos mencionados en la sección anterior (centro de eventos, cuenta de
almacenamiento, aplicación de función, almacenamiento de datos de SQL), ejecute el comando de la CLI
siguiente:
a. Copie y pegue el comando en la ventana Cloud Shell. También puede que quiera copiar y pegar en
el editor que prefiera, establecer valores y luego copiar el comando en Cloud Shell.

az group deployment create \


--resource-group rgDataMigration \
--template-uri [Link]
samples/master/event-grid/[Link] \
--parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration
sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password>
sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-
name>
b. Especifique valores para las entidades siguientes:
a. Nombre del grupo de recursos que creó anteriormente.
b. Nombre del espacio de nombres del centro de eventos.
c. Nombre del centro de eventos. Puede dejar el valor sin modificaciones (hubdatamigration).
d. Nombre del servidor SQL Server.
e. Nombre del usuario y la contraseña de SQL.
f. Nombre del almacenamiento de datos de SQL.
g. Nombre de la cuenta de almacenamiento.
h. Nombre de la aplicación de función.
c. Presione ENTRAR en la ventana Cloud Shell para ejecutar el comando. Este proceso puede tardar
un poco debido a que se están creando varios recursos. En el resultado del comando, asegúrese de
que no se produjo ningún error.
Uso de Azure PowerShell
1. En Azure Cloud Shell, cambie al modo PowerShell. Seleccione la flecha abajo en la esquina superior
izquierda de Azure Cloud Shell y seleccione PowerShell .

2. Para crear un grupo de recursos de Azure, ejecute el comando siguiente:


a. Copie y pegue este comando en la ventana Cloud Shell.

New-AzResourceGroup -Name rgDataMigration -Location eastus

b. Especifique un nombre para el grupo de recursos .


c. Presione ENTRAR.
3. Para implementar todos los recursos mencionados en la sección anterior (centro de eventos, cuenta de
almacenamiento, aplicación de función, almacenamiento de datos de SQL), ejecute el comando siguiente:
a. Copie y pegue el comando en la ventana Cloud Shell. También puede que quiera copiar y pegar en
el editor que prefiera, establecer valores y luego copiar el comando en Cloud Shell.

New-AzResourceGroupDeployment -ResourceGroupName rgDataMigration -TemplateUri


[Link]
grid/[Link] -eventHubNamespaceName <event-hub-namespace> -eventHubName
hubdatamigration -sqlServerName <sql-server-name> -sqlServerUserName <user-name> -
sqlServerDatabaseName <database-name> -storageName <unique-storage-name> -functionAppName
<app-name>

b. Especifique valores para las entidades siguientes:


a. Nombre del grupo de recursos que creó anteriormente.
b. Nombre del espacio de nombres del centro de eventos.
c. Nombre del centro de eventos. Puede dejar el valor sin modificaciones (hubdatamigration).
d. Nombre del servidor SQL Server.
e. Nombre del usuario y la contraseña de SQL.
f. Nombre del almacenamiento de datos de SQL.
g. Nombre de la cuenta de almacenamiento.
h. Nombre de la aplicación de función.
c. Presione ENTRAR en la ventana Cloud Shell para ejecutar el comando. Este proceso puede tardar
un poco debido a que se están creando varios recursos. En el resultado del comando, asegúrese de
que no se produjo ningún error.
Cierre de Cloud Shell
Para cerrar Cloud Shell, seleccione el botón Cloud Shell en el portal (o) el botón X que se encuentra en la
esquina superior derecha de la ventana Cloud Shell.
Comprobación de la creación de los recursos
1. En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
2. Para filtrar la lista de grupos de recursos, escriba el nombre del grupo de recursos en el cuadro de
búsqueda.
3. Seleccione el grupo de recursos en la lista.

4. Confirme que ve los recursos siguientes en el grupo de recursos:

Crear una tabla en SQL Data Warehouse


Para crear una tabla en el almacenamiento de datos, ejecute el script [Link]. Para
ejecutar el script, puede usar Visual Studio o el Editor de consultas en el portal. Estos pasos le muestran cómo
usar el Editor de consultas:
1. En la lista de recursos del grupo de recursos, seleccione el grupo de Synapse SQL (almacenamiento
de datos) .
2. En la página de almacenamiento de datos de SQL, seleccione Editor de consultas (versión
preliminar) en el menú de la izquierda.
3. Escriba el nombre de usuario y la contraseña del servidor SQL Server y seleccione Aceptar . Es posible
que necesite agregar la dirección IP del cliente al firewall para iniciar sesión correctamente en SQL Server.

4. En la ventana de consulta, copie y ejecute el script SQL siguiente:

CREATE TABLE [dbo].[Fact_WindTurbineMetrics] (


[DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[MeasureTime] datetime NULL,
[GeneratedPower] float NULL,
[WindSpeed] float NULL,
[TurbineSpeed] float NULL
)
WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
5. Mantenga abierta esta pestaña o ventana para poder comprobar que los datos se crean al final del
tutorial.
Actualización de la versión del runtime de la función
1. En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
2. Seleccione el grupo de recursos en el que exista la aplicación de funciones.
3. Seleccione la aplicación de funciones del tipo App Ser vice en la lista de recursos del grupo de recursos.
4. Seleccione Configuración en Configuración en el menú de la izquierda.
5. Cambie a la pestaña Configuración del tiempo de ejecución de la función , en el panel derecho.
6. Actualice la versión del runtime a la versión ~3 .

Publicar la aplicación de Azure Functions


1. Inicie Visual Studio.
2. Abra la solución [Link] que descargó de GitHub como parte de los
requisitos previos.
3. En el Explorador de soluciones, haga clic con el botón derecho en FunctionEGDWDumper y seleccione
Publicar .
4. Si ve la pantalla siguiente, seleccione Iniciar .

5. En el cuadro de diálogo Publicar , seleccione Azure en Destino y seleccione Siguiente .


6. Seleccione Azure Function App (Windows) y seleccione Siguiente .

7. En la pestaña Functions instance (Instancia de Functions), seleccione su suscripción de Azure, expanda


el grupo de recursos, seleccione su aplicación de funciones y, después, seleccione Finalizar . Si aún no lo
ha hecho, es preciso que inicie sesión en su cuenta de Azure.
8. En la sección Dependencias de ser vicio , seleccione Configurar .
9. En la página Configure dependency (Configurar dependencia), seleccione la cuenta de
almacenamiento que creó anteriormente y, después, seleccione Siguiente .
10. Mantenga la configuración del nombre y valor de la cadena de conexión y seleccione Siguiente .
11. Desactive la opción Secrets store (Almacén de secretos) y, después, seleccione Finish (Finalizar).
12. Cuando Visual Studio haya configurado el perfil, seleccione Publicar .

Después de publicar la función, estará listo para suscribirse al evento.

Nos suscribiremos al evento.


1. En una pestaña o ventana nueva de un explorador web, vaya a Azure Portal.
2. En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
3. Para filtrar la lista de grupos de recursos, escriba el nombre del grupo de recursos en el cuadro de
búsqueda.
4. Seleccione el grupo de recursos en la lista.

5. Seleccione el plan de App Service (no la instancia de App Service) en la lista de recursos del grupo de
recursos.
6. En la página Plan de App Service, seleccione Aplicaciones en el menú de la izquierda y, luego, la
aplicación de función.

7. Expanda la aplicación de función, expanda las funciones y seleccione la función.


8. Seleccione Agregar suscripción de Event Grid en la barra de herramientas.

9. En la página Creación de una suscripción de Event Grid , haga lo siguiente:


a. En la página DETALLES DE SUSCRIPCIONES DE EVENTOS , escriba un nombre para la
suscripción (por ejemplo, captureEventSub) y seleccione Crear .
b. En la sección DETALLES DEL TEMA , haga lo siguiente:
a. Seleccione Espacios de nombres de Event Hubs en Tipos de temas .
b. Seleccione su suscripción a Azure.
c. Seleccione el grupo de recursos de Azure.
d. Seleccione el espacio de nombres de Event Hubs.
c. En la sección EVENT TYPES (TIPOS DE EVENTO), confirme que Capture File Created (Capturar
archivo creado) está seleccionado en Filter to Event Types (Filtro para tipos de evento).
d. En la sección ENDPOINT DETAILS (Detalles de punto de conexión), confirme que en Endpoint
type (Tipo de punto de conexión) se ha seleccionado Azure Function (Función de Azure) y que
en Endpoint (Punto de conexión) se haya seleccionado una función de Azure.

Ejecutar la aplicación para generar datos


Ya ha terminado de configurar el centro de eventos, SQL Data Warehouse, la aplicación de Azure Functions y la
suscripción a eventos. Hay que configurar algunos valores antes de ejecutar una aplicación que genere los datos
del centro de eventos.
1. En Azure Portal, vaya al grupo de recursos como lo hizo anteriormente.
2. Seleccione el espacio de nombres de Event Hubs.
3. En la página Espacio de nombres de Event Hubs , seleccione Directivas de acceso compar tido en
el menú de la izquierda.
4. Seleccione RootManageSharedAccessKey en la lista de directivas.
5. Seleccione el botón Copiar que está junto al cuadro de texto Cadena de conexión: clave principal .

6. Vuelva a la solución de Visual Studio.


7. En el proyecto WindTurbineDataGenerator, abra [Link] .
8. Reemplace los dos valores constantes. Use el valor copiado en EventHubConnectionString . Use
hubdatamigration como el nombre del concentrador de eventos. Si usó otro nombre para el centro de
eventos, especifíquelo.

private const string EventHubConnectionString =


"Endpoint=sb://[Link]/...";
private const string EventHubName = "hubdatamigration";

9. Compile la solución. Ejecute la aplicación [Link] .


10. Transcurridos unos minutos, realice una consulta en la tabla del almacenamiento de datos relativa a los
datos migrados.

Datos de eventos generados por el centro de eventos


Event Grid distribuye datos del evento a los suscriptores. En el ejemplo siguiente se muestran los datos de
eventos que se generan cuando el flujo de datos a través de un centro de eventos se captura en un blob. En
concreto, observe que la propiedad fileUrl del objeto data apunta al blob en el almacenamiento. La
aplicación de función usa esta dirección URL para recuperar el archivo de blob con los datos capturados.

[
{
"topic":
"/subscriptions/<guid>/resourcegroups/rgDataMigrationSample/providers/[Link]/namespaces/tfdatam
igratens",
"subject": "eventhubs/hubdatamigration",
"eventType": "[Link]",
"eventTime": "2017-08-31T19:12:46.0498024Z",
"id": "14e87d03-6fbf-4bb2-9a21-92bd1281f247",
"data": {
"fileUrl":
"[Link]
/08/31/19/11/[Link]",
"fileType": "AzureBlockBlob",
"partitionId": "1",
"sizeInBytes": 249168,
"eventCount": 1500,
"firstSequenceNumber": 2400,
"lastSequenceNumber": 3899,
"firstEnqueueTime": "2017-08-31T19:12:14.674Z",
"lastEnqueueTime": "2017-08-31T19:12:44.309Z"
}
}
]

Pasos siguientes
Para información sobre las diferencias en los servicios de mensajería de Azure, consulte Elija entre los
servicios de Azure de entrega de mensajes.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para obtener una introducción a la función de captura de Event Hubs, vea Habilitación de la funcionalidad de
captura de Event Hubs mediante Azure Portal.
Para más información sobre cómo configurar y ejecutar el ejemplo, vea el ejemplo de la función de captura
de Event Hubs y Event Grid.
Crear y supervisar eventos de Media Services con
Event Grid mediante la CLI de Azure
04/08/2020 • 8 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. Este servicio usa las suscripciones a eventos para enrutar
los mensajes de eventos a los suscriptores. Los eventos de Media Services contienen toda la información necesaria
para responder a cualquier cambio que se produzca en los datos. Puede identificar un evento de Media Services
porque la propiedad eventType comienza por "[Link]". Para más información, consulte el artículo sobre
los esquemas de eventos de Media Services.
En este artículo se usa la CLI de Azure para suscribirse a eventos para su cuenta de Azure Media Services. A
continuación, deberá desencadenar esos eventos 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. En este artículo, los eventos se envían a una
aplicación web que recopila y muestra los mensajes.

Prerrequisitos
Una suscripción de Azure activa. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de
empezar.
Instale y use la CLI localmente, para este artículo es preciso usar la CLI de Azure versión 2.0 o posterior.
Ejecute az --version para encontrar la versión que tiene. Si necesita instalarla o actualizarla, consulte
Instalación de la CLI de Azure.
Actualmente no todos los comandos de la CLI de Media Services v3 funcionan en Azure Cloud Shell. Se
recomienda usar la CLI localmente.
Cree una cuenta de Media Services.
Asegúrese de recordar los valores que usó para el nombre de la cuenta de Media Services y el nombre del
grupo de recursos.

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


Antes de suscribirse a los eventos de la cuenta de Media Services, vamos a crear el punto de conexión para el
mensaje del evento. Normalmente, el punto de conexión realiza acciones en función de los datos del evento. En
este artículo debe implementar una aplicación web precompilada que muestre 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. Seleccione Deploy to Azure (Implementar en Azure) para implementar la solución en su suscripción. En
Azure Portal, proporcione valores para los parámetros.

2. La implementación puede tardar unos minutos en completarse. 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: [Link]
Si cambia al sitio "Visor de Azure Event Grid", verá que no tiene todavía ningún evento.
Habilitación del 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.
En Azure Portal:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración , seleccione Proveedores de recursos .
4. Busque [Link] .
5. Si no está registrado, seleccione Registrar .
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el
estado es Registrado , ya está listo para continuar.

Establecimiento de la suscripción de Azure


En el siguiente comando, proporcione el identificador de suscripción de Azure que quiere usar para la cuenta de
Media Services. Para ver una lista de las suscripciones a las que tiene acceso, vaya a Suscripciones.

az account set --subscription mySubscriptionId

Suscribirse a los eventos de Media Services


Suscríbase a un artículo para indicar a Event Grid los eventos cuyo seguimiento desea realizar. En el ejemplo
siguiente se realiza la suscripción a la cuenta de Media Services que creó y se pasa la dirección URL del sitio web
que creó como punto de conexión para la notificación de eventos.
Reemplace <event_subscription_name> por un nombre único para la suscripción de eventos. Para
<resource_group_name> y <ams_account_name> , use los valores que usó al crear la cuenta de Media Services. En el
caso de api/updates , especifique la dirección URL de la aplicación web y agregue <endpoint_URL> a la dirección
URL de la página principal. Al especificar el punto de conexión cuando se realiza la suscripción, Event Grid controla
el enrutamiento de los eventos a dicho punto de conexión.
1. Obtenga el identificador del recurso

amsResourceId=$(az ams account show --name <ams_account_name> --resource-group <resource_group_name> --


query id --output tsv)

Por ejemplo:

amsResourceId=$(az ams account show --name amsaccount --resource-group amsResourceGroup --query id --


output tsv)

2. Suscríbase a los eventos

az eventgrid event-subscription create \


--source-resource-id $amsResourceId \
--name <event_subscription_name> \
--endpoint <endpoint_URL>

Por ejemplo:
az eventgrid event-subscription create --source-resource-id $amsResourceId --name
amsTestEventSubscription --endpoint [Link]

TIP
Es posible que reciba una advertencia del protocolo de enlace de validación. Espere unos minutos y el protocolo de
enlace debería realizar la validación.

A continuación, desencadenaremos algunos eventos para ver cómo Event Grid distribuye el mensaje al punto de
conexión.

Envío de un evento al punto de conexión


Puede desencadenar eventos de la cuenta de Media Services si ejecuta un trabajo de codificación. Puede seguir
este inicio rápido para codificar un archivo y empezar a enviar eventos.
Vuelva a la aplicación web y observe que se ha enviado un evento de validación de suscripción. Event Grid envía el
evento de validación para que el punto de conexión pueda verificar que desea recibir datos de eventos. El punto de
conexión debe establecer validationResponse en validationCode . Para más información, vea Event Grid security
and authentication (Seguridad y autenticación de Event Grid). Puede ver el código de la aplicación web para ver
cómo valida la suscripción.

TIP
Seleccione el icono del ojo para expandir los datos del evento. No actualice la página si quiere ver todos los eventos.
Pasos siguientes
Carga, codificación y streaming
Tutorial: Enrutar eventos personalizados a
Conexiones híbridas de Azure Relay con la CLI de
Azure y Event Grid
04/08/2020 • 9 minutes to read • Edit Online

Azure Event Grid es un servicio de eventos para la nube. La solución Conexiones híbridas de Azure Relay es uno de
los controladores de eventos compatibles. Las conexiones híbridas se usan como el controlador de eventos cuando
es necesario procesar los eventos de las aplicaciones que no tienen un punto de conexión público. Estas
aplicaciones pueden estar dentro de la red empresarial corporativa. 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. Los eventos se envían
a la conexión híbrida.

Prerrequisitos
En este artículo, se presupone que ya tiene una conexión híbrida y una aplicación de escucha. Para empezar a
trabajar con las conexiones híbridas, consulte Introducción a Conexiones híbridas de Relay: .NET o Introducción a
Conexiones híbridas de Relay: nodo.

Uso de Azure Cloud Shell


En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.
Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos
preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:

O P C IÓ N E JEM P LO O VÍN C ULO

Seleccione Pruébelo en la esquina superior derecha de un


bloque de código. Solo con seleccionar Pruébelo no se copia
automáticamente el código en Cloud Shell.

Vaya a [Link] o seleccione el botón Iniciar


Cloud Shell para abrir Cloud Shell en el explorador.

Seleccione el botón Cloud Shell en la barra de menús de la


esquina superior derecha de Azure Portal.

Para ejecutar el código de este artículo en Azure Cloud Shell:


1. Inicie Cloud Shell.
2. Seleccione el botón Copiar de un bloque de código para copiar el código.
3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl +Mayús +V en Windows y Linux, o
bien seleccione Cmd +Mayús +V en macOS.
4. Seleccione Entrar para ejecutar el código.
NOTE
Si usa la CLI de Azure en la máquina local, utilice la versión 2.0.56 o superior. Para instrucciones sobre cómo instalar la versión
más reciente de la CLI de Azure, consulte Instalación de 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

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

Suscripción a un tema personalizado


Suscríbase a un tema de cuadrícula de eventos 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 de recurso de
la conexión híbrida al punto de conexión. El identificador de conexión híbrida tiene el formato siguiente:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>

En el siguiente script, el identificador de recurso se obtiene del espacio de nombres de Relay. Se genera el
identificador de la conexión híbrida y se suscribe a un tema de la cuadrícula de eventos. El script establece el tipo
de punto de conexión en hybridconnection y se usa el identificador de conexión híbrida para el punto de conexión.

relayname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>

relayid=$(az resource show --name $relayname --resource-group $relayrg --resource-type


[Link]/namespaces --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
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 hybridconnection \
--endpoint $hybridid \
--expiration-date "<yyyy-mm-dd>"

Tenga en cuenta que se ha establecido una fecha de expiración para la suscripción.


Creación de una aplicación para procesar eventos
Necesita una aplicación que puede recuperar eventos desde la conexión híbrida. El ejemplo de consumidor de
conexión híbrida de Microsoft Azure Event Grid para C# ejecuta esa operación. Ya completó los pasos de requisitos
previos.
1. Asegúrese de que tiene Visual Studio 2019 o posterior.
2. Clone el repositorio en la máquina local.
3. Cargue el proyecto HybridConnectionConsumer en Visual Studio.
4. En [Link], reemplace <relayConnectionString> y <hybridConnectionName> por la cadena de conexión de
Relay y el nombre de la conexión híbrida que creó.
5. Compile y ejecute la aplicación desde Visual Studio.

Envío de un evento al tema


Vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. En este
artículo se muestra cómo usar la CLI de Azure para desencadenar el evento. De manera alternativa, puede usar la
aplicación de publicador de Event Grid.
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.

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

La aplicación de agente de escucha debe recibir el mensaje de evento.

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
Ejemplos de la CLI de Azure para Event Grid
04/08/2020 • 2 minutes to read • Edit Online

En la tabla siguiente se incluyen vínculos a ejemplos de la CLI de Azure para Event Grid.

Suscripciones de Event Grid


Suscripción a una suscripción de Azure: crea una suscripción a eventos de una suscripción de Azure.
Suscripción a Blob Storage: crea una suscripción a eventos de una cuenta de Blob Storage.
Suscripción a un tema personalizado: crea una suscripción a eventos de un tema personalizado.
Suscripción a un grupo de recursos: crea una suscripción a eventos de un grupo de recursos.
Suscripción a un grupo de recursos y filtro por un recurso: crea una suscripción a eventos de un grupo de
recursos y filtra los eventos de un recurso.

Temas de Event Grid


Creación de un tema personalizado: crea un tema personalizado de Event Grid y devuelve el punto de conexión
y la clave.
Creación de un tema personalizado de Event Grid
con la CLI de Azure
04/08/2020 • 2 minutes to read • Edit Online

Este script crea un tema personalizado de Event Grid.


Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Script de ejemplo
#!/bin/bash

# Give your custom topic a unique name


myTopic=demoContosoTopic

# Provice name for resource group


myResourceGroup=demoResourceGroup

# Select the Azure subscription to contain the custom topic.


az account set --subscription "<name or ID of the subscription>"

# Create resource group


az group create --name $myResourceGroup --location westus2

# Create custom topic


az eventgrid topic create --resource-group $myResourceGroup --name $myTopic --location westus2

# Retrieve endpoint and key to use when publishing to the topic


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

echo $endpoint
echo $key

Explicación del script


Este script usa los siguientes comandos para crear el tema personalizado. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid topic create Permite crear un tema personalizado de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Suscripción a eventos de una suscripción de Azure
con la CLI de Azure
04/08/2020 • 2 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de una suscripción de Azure.
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere la extensión de Event Grid. Para instalarla, ejecute
az extension add --name eventgrid .

Script de ejemplo: estable


#!/bin/bash

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Select the Azure subscription you want to subscribe to.


az account set --subscription "<name or ID of the subscription>"

# Subscribe to the Azure subscription. The command creates the subscription for the currently selected Azure
subscription.
az eventgrid event-subscription create --name demoSubscriptionToAzureSub --endpoint $myEndpoint

Script de ejemplo: extensión de la versión preliminar


#!/bin/bash

# You must have the latest version of the Event Grid preview extension.
# If you have not installed previously:
# az extension add -n eventgrid
# If you have installed previously:
# az extension update -n eventgrid

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Select the Azure subscription you want to subscribe to.


az account set --subscription "<name or ID of the subscription>"

# Get the subscription ID


subID=$(az account show --query id --output tsv)

# Subscribe to the Azure subscription. The command creates the subscription for the currently selected Azure
subscription.
az eventgrid event-subscription create --name demoSubscriptionToAzureSub --endpoint $myEndpoint --source-
resource-id /subscriptions/$subID
Explicación del script
Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid event-subscription create Cree una suscripción de Event Grid.

az eventgrid event-subscription create: versión de la extensión Cree una suscripción de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Suscripción a eventos de una cuenta de Blob Storage
con la CLI de Azure
04/08/2020 • 2 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de una cuenta de Blob Storage.
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Script de ejemplo
#!/bin/bash

# You must have the latest version of the Azure CLI

# Provide a unique name for the Blob storage account.


storageName="<Name of the storage account>"

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Provide the name of the resource group to contain the storage account.
myResourceGroup="<resource group name>"

# Select the Azure subscription to contain the storage account and event subscription.
az account set --subscription "<name or ID of the subscription>"

# Create resource group


az group create --name $myResourceGroup --location westus2

# Create the Blob storage account.


az storage account create \
--name $storageName \
--location westus2 \
--resource-group $myResourceGroup \
--sku Standard_LRS \
--kind BlobStorage \
--access-tier Hot

# Get the resource ID of the Blob storage account.


storageid=$(az storage account show --name $storageName --resource-group $myResourceGroup --query id --output
tsv)

# Subscribe to the Blob storage account.


az eventgrid event-subscription create \
--source-resource-id $storageid \
--name demoSubToStorage \
--endpoint $myEndpoint

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid event-subscription create Cree una suscripción de Event Grid.

az eventgrid event-subscription create: versión de la extensión Cree una suscripción de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Suscripción a eventos de un tema personalizado con
la CLI de Azure
04/08/2020 • 3 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un tema personalizado.
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere la extensión de Event Grid. Para instalarla, ejecute
az extension add --name eventgrid .

Script de ejemplo: estable


#!/bin/bash

# Provide the name of the topic you are subscribing to


myTopic=demoContosoTopic

# Provide the name of the resource group containing the custom topic
resourceGroup=demoResourceGroup

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Select the Azure subscription that contains the custom topic.


az account set --subscription "<name or ID of the subscription>"

# Subscribe to the custom event. Include the resource group that contains the custom topic.
az eventgrid event-subscription create \
--resource-group $resourceGroup \
--topic-name $myTopic \
--name demoSubscription \
--endpoint $myEndpoint

Script de ejemplo: extensión de la versión preliminar


#!/bin/bash

# You must have the latest version of the Event Grid preview extension.
# If you have not installed previously:
# az extension add -n eventgrid
# If you have installed previously:
# az extension update -n eventgrid

# Provide the name of the topic you are subscribing to


myTopic=demoContosoTopic

# Provide the name of the resource group containing the custom topic
resourceGroup=demoResourceGroup

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Select the Azure subscription that contains the custom topic.


az account set --subscription "<name or ID of the subscription>"

# Get the resource ID of the custom topic


topicID=$(az eventgrid topic show --name $myTopic -g $resourceGroup --query id --output tsv)

# Subscribe to the custom event. Include the resource group that contains the custom topic.
az eventgrid event-subscription create \
--source-resource-id $topicID \
--name demoSubscription \
--endpoint $myEndpoint

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid event-subscription create Cree una suscripción de Event Grid.

az eventgrid event-subscription create: versión de la extensión Cree una suscripción de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Suscripción a eventos de un grupo de recursos con la
CLI de Azure
04/08/2020 • 2 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un grupo de recursos.
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere la extensión de Event Grid. Para instalarla, ejecute
az extension add --name eventgrid .

Script de ejemplo: estable


#!/bin/bash

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Provide the name of the resource group to subscribe to.


myResourceGroup="<resource group name>"

# Select the Azure subscription that contains the resource group.


az account set --subscription "<name or ID of the subscription>"

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--resource-group $myResourceGroup \
--endpoint $myEndpoint

Script de ejemplo: extensión de la versión preliminar


#!/bin/bash

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Provide the name of the resource group to subscribe to.


myResourceGroup="<resource group name>"

# Select the Azure subscription that contains the resource group.


az account set --subscription "<name or ID of the subscription>"

# Get resource ID of the resource group.


resourceGroupID=$(az group show --name $myResourceGroup --query id --output tsv)

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--source-resource-id $resourceGroupID \
--endpoint $myEndpoint

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid event-subscription create Cree una suscripción de Event Grid.

az eventgrid event-subscription create: versión de la extensión Cree una suscripción de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Suscripción a eventos de un grupo de recursos y
filtrado de los eventos de un recurso con la CLI de
Azure
04/08/2020 • 3 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un grupo de recursos. Utiliza un filtro para obtener
solo los eventos de un recurso especificado en el grupo de recursos.
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login para
crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash . Para ejecutar este ejemplo en Windows
PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del script.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere la extensión de Event Grid. Para instalarla, ejecute
az extension add --name eventgrid .

Script de ejemplo: estable


#!/bin/bash

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Select the Azure subscription that contains the resource group.


az account set --subscription "<name or ID of the subscription>"

# Get the resource ID to filter events


resourceId=$(az resource show --name demoSecurityGroup --resource-group myResourceGroup --resource-type
[Link]/networkSecurityGroups --query id --output tsv)

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--resource-group myResourceGroup \
--endpoint $myEndpoint \
--subject-begins-with $resourceId

Script de ejemplo: extensión de la versión preliminar


#!/bin/bash

# Provide an endpoint for handling the events.


myEndpoint="<endpoint URL>"

# Provide the name of the custom topic to create


topicName=<your-topic-name>

# Provide the name of the resource group to contain the custom topic
myResourceGroup=demoResourceGroup

# Select the Azure subscription that contains the resource group.


az account set --subscription "<name or ID of the subscription>"

# Create the resource group


az group create -n $myResourceGroup -l eastus2

# Create custom topic


az eventgrid topic create --name $topicName -l eastus2 -g $myResourceGroup

# Get resource ID of custom topic


topicid=$(az eventgrid topic show --name $topicName -g $myResourceGroup --query id --output tsv)

# Subscribe to the custom topic. Filter based on a value in the event data.
az eventgrid event-subscription create \
--source-resource-id $topicid \
-n demoAdvancedFilterSub \
--advanced-filter [Link] stringin blue red green \
--endpoint $endpointURL

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

az eventgrid event-subscription create Cree una suscripción de Event Grid.

az eventgrid event-subscription create: versión de la extensión Cree una suscripción de Event Grid.

Pasos siguientes
Para información sobre la consulta de suscripciones, consulte Consulta de suscripciones de Event Grid.
Para más información sobre la CLI de Azure, consulte la documentación de la CLI de Azure.
Ejemplos de Azure PowerShell para Event Grid
04/08/2020 • 2 minutes to read • Edit Online

En la tabla siguiente se incluyen vínculos a ejemplos de Azure PowerShell para Event Grid.

Suscripciones de Event Grid


Suscripción a una suscripción de Azure: crea una suscripción a eventos de una suscripción de Azure.
Suscripción a Blob Storage: crea una suscripción a eventos de una cuenta de Blob Storage.
Suscripción a un tema personalizado: crea una suscripción a eventos de un tema personalizado.
Suscripción a un grupo de recursos: crea una suscripción a eventos de un grupo de recursos.
Suscripción a un grupo de recursos y filtro por un recurso: crea una suscripción a eventos de un grupo de
recursos y filtra los eventos de un recurso.

Temas de Event Grid


Creación de un tema personalizado: crea un tema personalizado de Event Grid y devuelve el punto de conexión
y la clave.
Creación de un tema personalizado de Event Grid
con PowerShell
21/05/2020 • 2 minutes to read • Edit Online

Este script crea un tema personalizado de Event Grid.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

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

Script de ejemplo
# Give your custom topic a unique name
$myTopic = "<your-custom-topic-name>"

# Provide a name for resource group to create. It will contain the custom event.
$myResourceGroup = "<resource-group-name>"

# Create resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create custom topic


New-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $myTopic -Location westus2

# Retrieve endpoint and key to use when publishing to the topic


$endpoint = (Get-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $myTopic).Endpoint
$key = (Get-AzEventGridTopicKey -ResourceGroupName $myResourceGroup -Name $myTopic).Key1

$endpoint
$key

Explicación del script


Este script usa los siguientes comandos para crear el tema personalizado. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

New-AzEventGridTopic Permite crear un tema personalizado de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Suscripción a eventos de una suscripción de Azure
con PowerShell
04/08/2020 • 3 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de una suscripción de Azure.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Script de ejemplo: estable


NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Select the Azure subscription you want to subscribe to. You need this command only if the
# current subscription is not the one you wish to subscribe to.
Set-AzContext -Subscription "<subscription-name-or-ID>"

# Subscribe to the Azure subscription. The command creates the subscription for the currently selected Azure
subscription.
New-AzEventGridSubscription -Endpoint $myEndpoint -EventSubscriptionName demoSubscriptionToAzureSub

Script de ejemplo: módulo de la versión preliminar


Este script de ejemplo de la versión preliminar requiere el módulo de Event Grid. Para instalarlo, ejecute
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.
# You must have the latest version of the Event Grid PowerShell module.
# To install:
# Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Get the subscription ID


$subID = (Get-AzureRmSubscription -SubscriptionName "<subscription-name>").Id

# Subscribe to the Azure subscription. The command creates the subscription for the currently selected Azure
subscription.
New-AzureRmEventGridSubscription -ResourceId "/subscriptions/$subID" -Endpoint $myEndpoint -
EventSubscriptionName demoSubscriptionToAzureSub

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

New-AzEventGridSubscription Cree una suscripción de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Suscripción a eventos de una cuenta de Blob Storage
con PowerShell
04/08/2020 • 2 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de una cuenta de Blob Storage.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

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

Script de ejemplo: estable


# Provide a unique name for the Blob storage account.
$storageName = "<your-unique-storage-name>"

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create. It will contain the storage account.
$myResourceGroup="<resource-group-name>"

# Create resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create the Blob storage account.


New-AzStorageAccount -ResourceGroupName $myResourceGroup `
-Name $storageName `
-Location westus2 `
-SkuName Standard_LRS `
-Kind BlobStorage `
-AccessTier Hot

# Get the resource ID of the Blob storage account.


$storageId = (Get-AzStorageAccount -ResourceGroupName $myResourceGroup -AccountName $storageName).Id

# Subscribe to the Blob storage account.


New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint $myEndpoint `
-ResourceId $storageId

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.
GET - H EL P N OTA S

New-AzEventGridSubscription Cree una suscripción de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Suscripción a eventos de un tema personalizado con
PowerShell
04/08/2020 • 3 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un tema personalizado.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere el módulo de Event Grid. Para instalarlo, ejecute
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Script de ejemplo: estable


NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

# Provide the name of the topic you are subscribing to


$myTopic = "<your-custom-topic-name>"

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide a name for resource group to create. It will contain the custom event.
$myResourceGroup = "<resource-group-name>"

# Create resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create custom topic


New-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $myTopic -Location westus2

# Subscribe to the custom event. Include the resource group that contains the custom topic.
New-AzEventGridSubscription `
-EventSubscriptionName demoSubscription `
-Endpoint $myEndpoint `
-ResourceGroupName $myResourceGroup `
-TopicName $myTopic

Script de ejemplo: módulo de la versión preliminar


IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

# You must have the latest version of the Event Grid PowerShell module.
# To install:
# Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

# Provide the name of the topic you are subscribing to


$myTopic = "<your-custom-topic-name>"

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create. It will contain the custom topic.
$myResourceGroup = "<resource-group-name>"

# Create resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create custom topic and get its resource ID.


$topicID = (New-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $myTopic -Location westus2).Id

# Subscribe to the custom event. Include the resource group that contains the custom topic.
New-AzEventGridSubscription `
-ResourceId $topicID `
-EventSubscriptionName demoSubscription `
-Endpoint $myEndpoint

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

New-AzEventGridSubscription Cree una suscripción de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Suscripción a eventos de un grupo de recursos con
PowerShell
04/08/2020 • 3 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un grupo de recursos.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
El script de ejemplo de la versión preliminar requiere el módulo de Event Grid. Para instalarlo, ejecute
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Script de ejemplo: estable


NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create and subscribe to.
$myResourceGroup="<resource-group-name>"

# Create resource grroup


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
New-AzEventGridSubscription `
-Endpoint $myEndpoint `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName $myResourceGroup

Script de ejemplo: módulo de la versión preliminar


IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.
# You must have the latest version of the Event Grid PowerShell module.
# To install:
# Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create and subscribe to.
$myResourceGroup = "<resource-group-name>"

# Create resource group


$resourceGroupID = (New-AzResourceGroup -Name $myResourceGroup -Location westus2).ResourceId

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
New-AzEventGridSubscription `
-ResourceId $resourceGroupID `
-Endpoint $myEndpoint `
-EventSubscriptionName demoSubscriptionToResourceGroup

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

New-AzEventGridSubscription Cree una suscripción de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Suscripción a eventos de un grupo de recursos y
filtrado de un recurso con PowerShell
04/08/2020 • 4 minutes to read • Edit Online

Este script crea una suscripción de Event Grid a los eventos de un grupo de recursos. Utiliza un filtro para obtener
solo los eventos de un recurso especificado en el grupo de recursos.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Script de ejemplo: estable


NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación
del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az, consulte
Instalación de Azure PowerShell.

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create. It will contain the network security group.
# You will subscribe to events for this resource group.
$myResourceGroup = "<resource-group-name>"

# Provide a name for the network security group to create.


$nsgName = "<your-nsg-name>"

# Create the resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create a network security group. You will filter events to only those that are related to this resource.
New-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $myResourceGroup -Location westus2

# Get the resource ID to filter events. The name of the network security group must not be the same as the
other resource names.
$resourceId = (Get-AzResource -ResourceName $nsgName -ResourceGroupName $myResourceGroup).ResourceId

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
New-AzEventGridSubscription `
-Endpoint $myEndpoint `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName $myResourceGroup `
-SubjectBeginsWith $resourceId

Script de ejemplo: módulo de la versión preliminar


IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

El script de ejemplo de la versión preliminar requiere el módulo de Event Grid. Para instalarlo, ejecute
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

# You must have the latest version of the Event Grid PowerShell module.
# To install:
# Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

# Provide an endpoint for handling the events. Must be formatted "[Link]


$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the custom topic to create


$topicName = "<your-topic-name>"

# Provide the name of the resource group to create. It will contain the custom topic.
$myResourceGroup= "<resource-group-name>"

# Create the resource group


New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create custom topic


New-AzEventGridTopic -ResourceGroupName $myResourceGroup -Location westus2 -Name $topicName

# Get resource ID of custom topic


$topicid = (Get-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $topicName).Id

# Set the operator type, field and values for the filtering
$AdvFilter1=@{operator="StringIn"; key="[Link]"; Values=@('blue', 'red', 'green')}

# Subscribe to the custom topic. Filter based on a value in the event data.
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName demoSubWithFilter `
-Endpoint $myEndpoint `
-AdvancedFilter @($AdvFilter1)

Explicación del script


Este script usa el siguiente comando para crear la suscripción de eventos. Cada comando de la tabla crea un
vínculo a documentación específica del comando.

GET - H EL P N OTA S

New-AzEventGridSubscription Cree una suscripción de Event Grid.

Pasos siguientes
Para una introducción a las aplicaciones administradas, consulte la introducción a las aplicaciones
administradas de Azure.
Para más información sobre PowerShell, consulte la documentación de Azure PowerShell.
Plantillas de Azure Resource Manager para Event
Grid
04/08/2020 • 2 minutes to read • Edit Online

Para la sintaxis y las propiedades de JSON que se usan en una plantilla, consulte Tipos de recursos de
[Link]. En la tabla siguiente se incluyen vínculos a plantillas de Azure Resource Manager para Event
Grid.

Suscripciones de Event Grid


Tema personalizado y suscripción con el punto de conexión de WebHook: implementa un tema personalizado
de Event Grid. Crea una suscripción a ese tema personalizado que usa un punto de conexión de WebHook.
Suscripción a un tema personalizado con el punto de conexión de EventHub: crea una suscripción de Event Grid
a un tema personalizado. La suscripción usa un centro de eventos para el punto de conexión.
Suscripción a Azure o suscripción al grupo de recursos: se suscribe a los eventos para una suscripción al grupo
de recursos o a Azure. El grupo de recursos que especifique como destino durante la implementación es el
origen de los eventos. La suscripción usa Webhook para el punto de conexión.
Cuenta y suscripción de Blob Storage: implementa una cuenta de Azure Blob Storage y crea una suscripción a
eventos de dicha cuenta.

Pasos siguientes
Consulte los ejemplos siguientes:
Ejemplos de PowerShell
Ejemplos de CLI
Definiciones integradas de Azure Policy para Azure
Event Grid
04/08/2020 • 2 minutes to read • Edit Online

Esta página es un índice de las definiciones de directivas integradas de Azure Policy en Azure Event Grid. Puede
encontrar elementos integrados adicionales de Azure Policy para otros servicios en Definiciones de elementos
integrados de Azure Policy.
El nombre de cada definición de directiva integrada se vincula a la definición de directiva en Azure Portal. Use el
vínculo de la columna Versión para ver el origen en el repositorio de GitHub de Azure Policy.

Azure Event Grid


N O M B RE VERSIÓ N
( A ZURE PO RTA L) DESC RIP C IÓ N EF EC TO S ( GIT HUB)

Los dominios de Azure Event Audite los dominios de Audit, Disabled 1.0.0
Grid deben usar vínculos Azure Event Grid que no
privados tengan al menos una
conexión de punto de
conexión privada aprobada.
Los clientes de una red
virtual pueden acceder de
forma segura a los recursos
que tengan conexiones de
punto de conexión privadas
mediante vínculos privados.
Para más información, visite
[Link]
nts.

Los temas de Azure Event Audite los temas de Azure Audit, Disabled 1.0.0
Grid deben usar vínculos Event Grid que no tengan al
privados. menos una conexión de
punto de conexión privada
aprobada. Los clientes de
una red virtual pueden
acceder de forma segura a
los recursos que tengan
conexiones de punto de
conexión privadas mediante
vínculos privados. Para más
información, visite
[Link]
nts.

Pasos siguientes
Los elementos integrados se pueden encontrar en el repositorio de GitHub de Azure Policy.
Revise la estructura de definición de Azure Policy.
Vea la Descripción de los efectos de directivas.
Concepts de Azure Event Grid
04/08/2020 • 10 minutes to read • Edit Online

En este artículo se describen los principales conceptos de Azure Event Grid.

Eventos
Una evento es la cantidad mínima de información que describe completamente algo que se ha producido en el
sistema. Todos los eventos tienen información común, como: origen del evento, hora en que el evento ha tenido
lugar e identificador único. Cada evento tiene además información específica que solo es relevante para el tipo de
evento concreto. Por ejemplo, un evento sobre un nuevo archivo que se crea en Azure Storage contiene detalles
sobre el archivo, como el valor lastTimeModified . O bien, un evento de Event Hubs tiene la dirección URL del
archivo de captura.
Los eventos con un tamaño de hasta 64 KB están cubiertos por el Acuerdo de Nivel de Servicio de disponibilidad
general (GA). La compatibilidad de un evento con un tamaño de hasta 1 MB se encuentra actualmente en versión
preliminar. Los eventos de más de 64 KB se cobran en incrementos de 64 KB.
Para obtener las propiedades que se envían en un evento, vea Esquema de eventos de Azure Event Grid.

Publicadores
Un publicador es el usuario o la organización que decide enviar eventos a Event Grid. Microsoft publica eventos
para varios servicios de Azure. Puede publicar eventos desde su propia aplicación. Las organizaciones que
hospedan servicios fuera de Azure pueden publicar eventos a través de Event Grid.

Orígenes de eventos
Un origen de evento es donde se produce el evento. Cada origen de evento está relacionado con uno o más tipos
de eventos. Por ejemplo, Azure Storage es el origen de evento de los eventos creados por blob. IoT Hub es el
origen de evento de los eventos creados por dispositivo. La aplicación es el origen de evento de los eventos
personalizados que defina. Los orígenes de evento son responsables de enviar eventos a Event Grid.
Para información sobre la implementación de cualquiera de los orígenes de Event Grid admitidos, consulte Event
sources in Azure Event Grid (Orígenes de eventos en Azure Event Grid).

Temas
En el tema de Event Grid se proporciona un punto de conexión al que el origen envía los eventos. El publicador
crea el tema de Event Grid y decide si un origen de evento necesita un tema o más de un tema. Un tema se usa
para una colección de eventos relacionados. Para responder a determinados tipos de eventos, los suscriptores
deciden los temas a los que se suscriben.
Los temas del sistema son temas integrados que proporcionan los servicios de Azure, como Azure Storage, Azure
Event Hubs y Azure Service Bus. Puede crear temas del sistema en su suscripción de Azure y suscribirse a ellos.
Para obtener más información, consulte Información general sobre los temas del sistema.
Los temas personalizados son temas de terceros y de aplicación. Cuando cree un tema personalizado, o se le
asigne acceso al mismo, verá ese tema personalizado en su suscripción. Para obtener más información, consulte
Temas personalizados.
Cuando diseñe la aplicación, tiene flexibilidad al decidir cuántos temas se crean. Para soluciones grandes, cree un
tema personalizado para cada categoría de eventos relacionados. Por ejemplo, considere una aplicación que envía
eventos relacionados con la modificación de las cuentas de usuario y el procesamiento de pedidos. Es poco
probable que algún controlador de eventos quiera ambas categorías de eventos. Cree dos temas personalizados y
deje que los controladores de eventos se suscriban a uno que les interese. Para soluciones pequeñas, puede que
prefiera enviar todos los eventos a un solo tema. Los suscriptores de eventos se pueden filtrar por los tipos de
evento que desean.

Suscripciones a eventos
Las suscripciones le indican a Event Grid qué eventos de un tema les interesa recibir. Al crear la suscripción,
proporciona un punto de conexión para controlar el evento. Puede filtrar los eventos que se envían al punto de
conexión. Puede filtrar por tipo de evento o por patrón de asunto. Para más información, vea Esquema de
suscripción de Event Grid.
Para obtener ejemplos de creación de suscripciones, vea:
Ejemplos de la CLI de Azure para Event Grid
Ejemplos de Azure PowerShell para Event Grid
Plantillas de Azure Resource Manager para Event Grid
Para obtener información sobre las suscripciones de Event Grid actuales, vea Consulta de suscripciones de Event
Grid.

Caducidad de la suscripción de eventos


La suscripción de eventos expira automáticamente después de esa fecha. Establezca una fecha de expiración para
las suscripciones de eventos que solamente son necesarias durante un tiempo limitado y de cuya limpieza no
quiere preocuparse. Por ejemplo, es posible que, al crear una suscripción de eventos para probar un escenario,
desee establecer una fecha de expiración.
Para ver un ejemplo acerca de cómo se establece una fecha de expiración, consulte Suscripción con filtros
avanzados.

Controladores de eventos
Desde la perspectiva de Event Grid, un controlador de eventos es el lugar al que se envía el evento. El controlador
realiza alguna acción adicional para procesar el evento. Event Grid admite varios tipos de controladores. Puede
usar un servicio de Azure admitido o su propio webhook como controlador. Según el tipo de controlador, Event
Grid sigue distintos procedimientos para garantizar la entrega del evento. En el caso de los controladores de
eventos de webhook HTTP, el evento se reintenta hasta que el controlador devuelve un código de estado de
200 – OK . En Azure Storage Queue, los eventos se reintentan hasta que Queue service procesa correctamente la
inserción de mensajes en la cola.
Para información sobre cómo implementar cualquiera de los controladores admitidos de Event Grid, consulte
Event handlers in Azure Event Grid (Controladores de eventos en Azure Event Grid).

Seguridad
Event Grid proporciona seguridad para suscribirse a temas y publicarlos. Para suscribirse, debe tener los permisos
adecuados en el recurso o el tema de Event Grid. Para publicar, debe tener un token de SAS o autenticación de
clave para el tema. Para más información, vea Event Grid security and authentication (Seguridad y autenticación de
Event Grid).

Entrega de eventos
Si Event Grid no puede confirmar que un evento se ha recibido en el punto de conexión del suscriptor, vuelve a
entregarlo. Para más información, vea Entrega y reintento de entrega de mensajes de Event Grid.

Lotes
Cuando se usa un tema personalizado, los eventos siempre se deben publicar en una matriz. En los escenarios de
bajo rendimiento, puede utilizarse un lote con un único evento; sin embargo, en los casos de uso de gran volumen,
se recomienda agrupar varios eventos en cada publicación para lograr una mayor eficacia. Los lotes pueden tener
hasta 1 MB. Cada evento no debe ser superior a 64 KB (Disponibilidad general) o 1 MB (Versión preliminar).

NOTE
Los eventos con un tamaño de hasta 64 KB están cubiertos por el Acuerdo de Nivel de Servicio de disponibilidad general
(GA). La compatibilidad de un evento con un tamaño de hasta 1 MB se encuentra actualmente en versión preliminar. Los
eventos de más de 64 KB se cobran en incrementos de 64 KB.

Pasos siguientes
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Temas personalizados en Azure Event Grid
04/08/2020 • 5 minutes to read • Edit Online

En un tema de Event Grid se proporciona un punto de conexión al que el origen envía los eventos. El publicador
crea el tema de Event Grid y decide si un origen de evento necesita un tema o más de un tema. Un tema se usa
para una colección de eventos relacionados. Para responder a determinados tipos de eventos, los suscriptores
deciden los temas a los que se suscriben.
Los temas personalizados son temas de terceros y de aplicación. Cuando cree un tema personalizado, o se le
asigne acceso al mismo, verá ese tema personalizado en su suscripción.
Cuando diseñe la aplicación, tiene flexibilidad al decidir cuántos temas se crean. Para soluciones grandes, cree un
tema personalizado para cada categoría de eventos relacionados . Por ejemplo, considere una aplicación
que envía eventos relacionados con la modificación de las cuentas de usuario y el procesamiento de pedidos. Es
poco probable que algún controlador de eventos quiera ambas categorías de eventos. Cree dos temas
personalizados y deje que los controladores de eventos se suscriban a uno que les interese. Para soluciones
pequeñas, puede que prefiera enviar todos los eventos a un solo tema. Los suscriptores de eventos se pueden
filtrar por los tipos de evento que desean.

Esquema del evento


Para información detallada sobre el esquema de eventos, consulte Esquema de eventos de Azure Event Grid. En el
caso de los temas personalizados, el publicador de eventos determina el objeto data . Los datos de nivel superior
deben tener los mismos campos que los eventos estándar definidos por recursos.

[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]

En las secciones siguientes se proporcionan vínculos a tutoriales para crear temas personalizados mediante
Azure Portal, la CLI, PowerShell y plantillas de Azure Resource Manager (ARM).

Tutoriales de Azure Portal


T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: creación y enrutamiento de eventos Muestra cómo utilizar Azure Portal para enviar eventos
personalizados con Azure Portal personalizados.

Guía de inicio rápido: enrutamiento de eventos personalizados Describe cómo enviar eventos personalizados a una instancia
a Azure Queue Storage de Queue Storage.
T ÍT ULO DESC RIP C IÓ N

Publicación en tema personalizado Se describe cómo publicar un evento en un tema


personalizado.

Tutoriales de la CLI de Azure


T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: creación y enrutamiento de eventos Muestra cómo utilizar la CLI de Azure para enviar eventos
personalizados con la CLI de Azure personalizados.

CLI de Azure: creación de un tema personalizado de Event Script de ejemplo que crea un tema personalizado. El script
Grid recupera el punto de conexión y una clave.

CLI de Azure: suscripción a eventos de un tema personalizado Script de ejemplo que crea una suscripción a un tema
personalizado. Envía eventos a un webhook.

Tutoriales de Azure PowerShell


T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: creación y enrutamiento de eventos Muestra cómo utilizar Azure PowerShell para enviar eventos
personalizados con Azure PowerShell personalizados.

PowerShell: Creación de un tema personalizado de Event Grid Script de ejemplo que crea un tema personalizado. El script
recupera el punto de conexión y una clave.

PowerShell: suscripción a eventos de un tema personalizado Script de ejemplo que crea una suscripción a un tema
personalizado. Envía eventos a un webhook.

Tutoriales de plantillas de ARM


T ÍT ULO DESC RIP C IÓ N

Plantilla de Resource Manager: tema personalizado y punto de Plantilla de Resource Manager que crea un tema
conexión del webhook personalizado y una suscripción a ese tema personalizado.
Envía eventos a un webhook.

Plantilla de Resource Manager: tema personalizado y punto de Plantilla de Resource Manager que crea una suscripción a un
conexión a Event Hubs tema personalizado. Envía eventos a una instancia de Azure
Event Hubs.

Pasos siguientes
Vea los artículos siguientes:
Temas del sistema
Dominios
Temas del sistema en Azure Event Grid
04/08/2020 • 7 minutes to read • Edit Online

Un tema del sistema en Event Grid representa uno o varios eventos publicados por los servicios de Azure,
como Azure Storage y Azure Event Hubs. Por ejemplo, un tema del sistema puede representar todos los
eventos de blobs o solo los eventos de blob creado y blobs eliminado publicados para una cuenta de
almacenamiento específica . En este ejemplo, cuando se carga un blob en la cuenta de almacenamiento, el
servicio de Azure Storage publica un evento de blob creado en el tema del sistema en Event Grid, que luego
reenvía el evento a los suscriptores del tema que reciben y procesan el evento.

NOTE
Solo los servicios de Azure pueden publicar eventos en los temas del sistema. Por lo tanto, no se obtiene un punto de
conexión ni claves de acceso que se pueden usar para publicar eventos como en el caso de los temas o dominios
personalizados.

Servicios de Azure que admiten temas del sistema


Esta es la lista actual de los servicios de Azure que admiten la creación de temas del sistema.
Azure App Configuration
Azure App Service
Azure Blob Storage
Azure Container Registry
Azure Event Hubs
Azure IoT Hub
Azure Key Vault
Azure Machine Learning
Azure Maps
Azure Media Services
Grupos de recursos de Azure
Azure Service Bus
Azure SignalR
Suscripciones de Azure

Temas del sistema como recursos de Azure


Anteriormente, un tema del sistema estaba implícito y no se exponía para simplificar. Los temas del sistema
ahora están visibles como recursos de Azure y proporcionan las siguientes funcionalidades:
Ver los temas del sistema en Azure Portal
Exportar plantillas de Resource Manager para los temas del sistema y las suscripciones de eventos en
Azure Portal
Configurar registros de diagnóstico para los temas del sistema
Configurar alertas sobre los errores de publicación y entrega

Ciclo de vida de los temas del sistema


Puede crear un tema del sistema de dos maneras:
Cree una suscripción de eventos en un recurso de Azure como recurso de extensión, que crea
automáticamente un tema del sistema con un nombre en el formato: <Azure resource name>-<GUID> . El
tema del sistema que se creó de esta manera se elimina automáticamente cuando se elimine la última
suscripción de eventos para el tema.
Cree un tema del sistema para un recurso de Azure y, después, cree una suscripción de eventos para
ese tema del sistema. Cuando use este método, puede especificar un nombre para el tema del sistema.
El tema del sistema no se elimina automáticamente cuando se elimina la última suscripción de eventos.
Debe eliminarlo manualmente.
Cuando se usa Azure Portal, siempre se aplica este método. Cuando se crea una suscripción de eventos
mediante la página Eventos de un recurso de Azure, primero se crea el tema del sistema y, a
continuación, se crea la suscripción para el tema. Puede crear explícitamente un tema del sistema
primero mediante la página Temas del sistema de Event Grid y, a continuación, puede crear una
suscripción para ese tema.
Cuando se usa la CLI, REST o una plantilla de Azure Resource Manager, puede elegir cualquiera de los
métodos anteriores. Se recomienda crear primero un tema del sistema y, a continuación, crear una suscripción
en el tema, ya que esta es la forma más reciente para crear temas del sistema.
Se producirá un error en la creación del tema del sistema si ha configurado las directivas de Azure de forma
que el servicio Event Grid no pueda crear al tema. Por ejemplo, puede tener una directiva que permita la
creación de solo determinados tipos de recursos (por ejemplo: Azure Storage, Azure Event Hubs, etc.) en la
suscripción.

Ubicación y grupo de recursos para un tema del sistema


En el caso de los orígenes del evento de Azure que se encuentran en una región o ubicación específica, el
tema del sistema se crea en la misma ubicación que el origen del evento de Azure. Por ejemplo, si crea una
suscripción de evento para un almacenamiento de blobs de Azure en la región Este de EE. UU., el tema del
sistema se crea en Este de EE. UU. En el caso de los orígenes del evento globales de Azure, como las
suscripciones y grupos de recursos de Azure o Azure Maps, Event Grid crea el tema del sistema en una
ubicación global .
En general, el tema del sistema se crea en el mismo grupo de recursos en el que se encuentra el origen del
evento de Azure. En el caso de las suscripciones de evento creadas en el ámbito de la suscripción de Azure, el
tema del sistema se crea en el grupo de recursos Default-EventGrid . Si el grupo de recursos no existe, Azure
Event Grid lo crea antes de crear el tema del sistema.

Pasos siguientes
Vea los artículos siguientes:
Creación, visualización y administración de temas del sistema mediante Azure Portal
Creación, visualización y administración de temas del sistema de Event Grid mediante la CLI de Azure
Creación de temas del sistema de Event Grid mediante plantillas de Azure Resource Manager
Azure App Configuration como origen de Event Grid
04/08/2020 • 4 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Azure App Configuration. Para
una introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid. También
proporciona una lista de inicios rápidos y tutoriales para usar Azure App Configuration como origen de eventos.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
La configuración de Azure App Configuration emite los siguientes tipos de evento:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se crea o se sustituye un valor de clave.

[Link] Se genera cuando se elimina un valor de clave.

Evento de ejemplo
En el siguiente ejemplo se muestra el esquema de un evento modificado de valor clave:

[{
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"topic": "/subscriptions/00000000-0000-0000-0000-
000000000000/resourceGroups/testrg/providers/[Link]/configurationstores/contoso",
"subject": "[Link]
"data": {
"key": "Foo",
"label": "FizzBuzz",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
},
"eventType": "[Link]",
"eventTime": "2019-05-31T20:05:03Z",
"dataVersion": "1",
"metadataVersion": "1"
}]

El esquema para un evento de eliminación de valor clave es similar:

[{
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"topic": "/subscriptions/00000000-0000-0000-0000-
000000000000/resourceGroups/testrg/providers/[Link]/configurationstores/contoso",
"subject": "[Link]
"data": {
"key": "Foo",
"label": "FizzBuzz",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
},
"eventType": "[Link]",
"eventTime": "2019-05-31T20:05:03Z",
"dataVersion": "1",
"metadataVersion": "1"
}]
Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos del evento de App Configuration.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

key string Clave del valor clave que se ha


modificado o eliminado.

etiqueta string Etiqueta, si procede, del valor clave que


se ha modificado o eliminado.

ETag string Para KeyValueModified , la etag del


nuevo valor clave. Para
KeyValueDeleted , la etag del valor
clave que se ha eliminado.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Reacción a eventos de Azure App Configuration con Event Información general de la integración de Azure App
Grid Configuration con Event Grid.
T ÍT ULO DESC RIP C IÓ N

Inicio rápido: Enrutamiento de eventos de Azure App Muestra cómo utilizar la CLI de Azure para enviar eventos de
Configuration a un punto de conexión web personalizado con Azure App Configuration a un webhook.
la CLI de Azure

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Para una introducción a cómo trabajar con eventos de Azure App Configuration, consulte Enrutamiento de
eventos de Azure App Configuration con la CLI de Azure.
Azure App Service como origen de Event Grid
04/08/2020 • 12 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Azure App Service. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid. También proporciona
una lista de inicios rápidos y tutoriales para usar Azure App Service como origen de eventos.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Azure App Service emite los siguientes tipos de eventos:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link]/[Link] Se desencadena cuando se inicia una copia de seguridad.

[Link]/[Link] Se desencadena cuando se completa una copia de seguridad.

[Link]/[Link] Se desencadena cuando una copia de seguridad devuelve un


error.

[Link]/[Link] Se desencadena cuando se inicia una restauración a partir de


una copia de seguridad.

[Link]/[Link] Se desencadena cuando se completa una restauración a partir


de una copia de seguridad.

[Link]/[Link] Se desencadena cuando una restauración a partir de una


copia de seguridad devuelve un error.

[Link]/[Link] Se desencadena cuando se inicia un cambio de espacio.

[Link]/[Link] Se desencadena cuando se completa un cambio de espacio.

[Link]/[Link] Se desencadena cuando un cambio de espacio devuelve un


error.

[Link]/[Link] Se desencadena cuando se inicia un cambio de espacio con


una vista previa.

[Link]/[Link] Se desencadena cuando se cancela un cambio de espacio con


una vista previa.

[Link]/[Link] Se desencadena cuando se reinicia un sitio.

[Link]/[Link] Se desencadena cuando se detiene un sitio.

[Link]/[Link] Se desencadena cuando cambia la configuración de la


aplicación de un sitio.
T IP O DE EVEN TO DESC RIP C IÓ N

[Link]/[Link] Se desencadena cuando se actualiza un plan de App Service

El contenido de una respuesta de evento


Cuando se desencadena un evento, el servicio Event Grid envía datos sobre ese evento al punto de conexión
correspondiente. Esta sección contiene un ejemplo del aspecto que deben tener los datos para cada evento. Cada
evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa al origen del


evento. En este campo no se puede
escribir. Event Grid proporciona este
valor.

subject string Ruta de acceso al asunto del evento


definido por el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de Blob Storage.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

BackupOperationStarted, BackupOperationCompleted, BackupOperationFailed


{
id:'7c5d6de5-eb70-4de2-b788-c52a544e68b8',
subject:'/[Link]/sites/<site-name>',
eventType:'[Link]',
eventTime:'2020-01-28T18:26:51.7194887Z',
data: {
"appEventTypeDetail": { "action": "Started" },
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
}
topic:'/subscriptions/<id>/resourceGroups/<rg>/providers/[Link]/sites/<site-name>',
dataVersion:'1',
metaDataVersion:'1'
}

El objeto de datos contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appEventTypeDetail object Detalles de la acción en la aplicación

action string Tipo de acción de la operación

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación

RestoreOperationStarted, RestoreOperationCompleted, RestoreOperationFailed


{
id: '7c5d6de5-eb70-4de2-b788-c52a544e68b8',
subject: '/[Link]/sites/<site-name>',
eventType: '[Link]',
eventTime: '2020-01-28T18:26:51.7194887Z',
data: {
appEventTypeDetail: {
action: "Started"
},
siteName: "<site-name>",
clientRequestId: "None",
correlationRequestId: "None",
requestId: "292f499d-04ee-4066-994d-c2df57b99198",
address: "None",
verb: "POST"
}
topic: '/subscriptions/<id>/resourceGroups/<rg>/providers/[Link]/sites/<site-name>',
dataVersion: '1',
metaDataVersion: '1'
}

El objeto de datos contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appEventTypeDetail object Detalles de la acción en la aplicación

action string Tipo de acción de la operación

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación

SlotSwapStarted, SlotSwapCompleted, SlotSwapFailed


{
id: '7c5d6de5-eb70-4de2-b788-c52a544e68b8',
subject: '/[Link]/sites/<site-name>',
eventType: '[Link]',
eventTime: '2020-01-28T18:26:51.7194887Z',
data: {
appEventTypeDetail: null,
siteName: '<site-name>',
clientRequestId: '922f4841-20d9-4dd6-8c5b-23f0d85e5592',
correlationRequestId: '9ac46505-2b8a-4e06-834c-05ffbe2e8c3a',
requestId: '765117aa-eaf8-4bd2-a644-1dbf69c7b0fd',
address: '/websystems/WebSites/web/subscriptions/<id>/webspaces/<webspace>/sites/<site-name>/slots?
Command=SWAP&targetSlot=production',
verb: 'POST'
sourceSlot: "staging",
targetSlot: "production"
},
topic: '/subscriptions/<id>/resourceGroups/<rg>/providers/[Link]/sites/<site-name>',
dataVersion: '1',
metaDataVersion: '1'
}

El objeto de datos contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appEventTypeDetail object Detalles de la acción en la aplicación

action string Tipo de acción de la operación

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación

sourceSlot string Espacio de origen del cambio

SlotSwapWithPreviewStarted, SlotSwapWithPreviewCancelled
{
id: '7c5d6de5-eb70-4de2-b788-c52a544e68b8',
subject: '/[Link]/sites/<site-name>',
eventType: '[Link]',
eventTime: '2020-01-28T18:26:51.7194887Z',
data: {
appEventTypeDetail: null,
siteName: '<site-name>',
clientRequestId: '922f4841-20d9-4dd6-8c5b-23f0d85e5592',
correlationRequestId: '9ac46505-2b8a-4e06-834c-05ffbe2e8c3a',
requestId: '765117aa-eaf8-4bd2-a644-1dbf69c7b0fd',
address: '/websystems/WebSites/web/subscriptions/<id>/webspaces/<webspace>/sites/<site-name>/slots?
Command=SWAP&targetSlot=production',
verb: 'POST'
sourceSlot: "staging",
targetSlot: "production"
},
topic: '/subscriptions/<id>/resourceGroups/<rg>/providers/[Link]/sites/<site-name>',
dataVersion: '1',
metaDataVersion: '1'
}

El objeto de datos contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appEventTypeDetail object Detalles de la acción en la aplicación

action string Tipo de acción de la operación

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación

[Link], [Link], [Link]


{
id: 'b74ea56b-2a3f-4de5-a5d7-38e60c81cf23',
subject: '/[Link]/sites/<site-name>',
eventType: '[Link]',
eventTime: '2020-01-28T18:22:30.2760952Z',
data: {
appEventTypeDetail: {
action: 'Stopped'
},
siteName: '<site-name>',
clientRequestId: '64a5e0aa-7cee-4ff1-9093-b9197b820014',
correlationRequestId: '25bb36a5-8f6c-4f04-b615-e9a0ee045756',
requestId: 'f2e8eb3f-b190-42de-b99e-6acefe587374',
address: '/websystems/WebSites/web/subscriptions/<id>/webspaces/<webspace>/sites/<site-name>/stop',
verb: 'POST'
},
topic: '/subscriptions/<id>/resourceGroups/<group>/providers/[Link]/sites/<site-name>',
dataVersion: '1',
metaDataVersion: '1'
}

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appEventTypeDetail object Detalles de la acción en la aplicación

action string Tipo de acción de la operación

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación

[Link]
{
id: "56501672-9150-40e1-893a-18420c7fdbf7",
subject: "/[Link]/serverfarms/<plan-name>",
eventType: "[Link]",
eventTime: "2020-01-28T18:22:23.5516004Z",
data: {
serverFarmEventTypeDetail: {
stampKind: "Public",
action: "Updated",
status: "Started"
},
serverFarmId: "0",
sku: {
name: "P1v2",
tier: "PremiumV2",
size: "P1v2",
family: "Pv2",
capacity: 1
},
clientRequestId: "8f880321-a991-45c7-b743-6ff63fe4c004",
correlationRequestId: "1995c3be-ba7f-4ccf-94af-516df637ec8a",
requestId: "b973a8e6-6949-4783-b44c-ac778be831bb",
address: "/websystems/WebSites/serverfarms/subscriptions/<id>/webspaces/<webspace-
id>/serverfarms/<plan-name>/async",
verb: "PUT"
},
topic: "/subscriptions/<id>/resourceGroups/<rg>/providers/[Link]/serverfarms/<serverfarm-name>",
dataVersion: "1",
metaDataVersion: "1"
}

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

appServicePlanEventTypeDetail object Detalles de la acción del plan de App


Service

stampKind string Tipo de entorno en que se encuentra el


plan de App Service

action string Tipo de acción del plan de App Service

status string Estado de la operación del plan de App


Service

sku object SKU del plan de App Service.

name string Nombre del plan de App Service

Nivel string Nivel del plan de App Service

Size string Tamaño del plan de App Service

Familia string Familia del plan de App Service

Capacity string Capacidad del plan de App Service

action string Tipo de acción de la operación


P RO P IEDA D T IP O DESC RIP C IÓ N

name string Nombre del sitio web que tenía este


evento

clientRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

correlationRequestId string Identificador de solicitud de cliente


generado por App Service para la
operación de API de sitio que
desencadenó este evento.

requestId string Identificador de solicitud generado por


App Service para la operación de API de
sitio que desencadenó este evento.

address string Dirección URL de la solicitud HTTP de


esta operación

Verbo string Verbo URL de esta operación


Azure Blob Storage como origen de Event Grid
04/08/2020 • 17 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Blob Storage. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid. También proporciona
una lista de inicios rápidos y tutoriales para usar Azure Blob Storage como un origen de eventos.

NOTE
Solo las cuentas de almacenamiento de tipo StorageV2 (uso general v2) , BlockBlobStorage y BlobStorage admiten la
integración de eventos. Storage (uso general v1) no admite la integración con Event Grid.

Esquema de eventos de Event Grid


Lista de eventos para las API REST de Blob
Estos eventos se desencadenan cuando un cliente crea, reemplaza o elimina un blob mediante una llamada a las
API REST de Blob.

N O M B RE DEL EVEN TO DESC RIP C IÓ N

[Link] Se desencadena cuando se crea o se sustituye un blob.


En concreto, este evento se desencadena cuando los clientes
usan las operaciones PutBlob , PutBlockList o CopyBlob
que están disponibles en la API REST de Blob.

[Link] Se desencadena cuando se elimina un blob.


En concreto, este evento se desencadena cuando los clientes
usan la operación DeleteBlob que está disponibles en la API
REST de Blob.

NOTE
Si quiere asegurarse de que el evento [Link] se desencadena únicamente cuando un blob en
bloques está completamente confirmado, filtre el evento para las llamadas de API REST CopyBlob , PutBlob y
PutBlockList . Estas llamadas API desencadenan el evento [Link] únicamente después de que
los datos se hayan confirmado en un blob en bloques. Para información sobre cómo crear un filtro, consulte Filtrado de
eventos para Event Grid.

Lista de los eventos para las API REST de Azure Data Lake Storage Gen 2
Estos eventos se desencadenan si habilita un espacio de nombres jerárquico en la cuenta de almacenamiento y los
clientes llaman a la API REST de Azure Data Lake Storage Gen2. Para más información sobre Azure Data Lake
Storage Gen2, consulte Introducción a Azure Data Lake Storage Gen2.

N O M B RE DEL EVEN TO DESC RIP C IÓ N


N O M B RE DEL EVEN TO DESC RIP C IÓ N

[Link] Se desencadena cuando se crea o se sustituye un blob.


En concreto, este evento se desencadena cuando los clientes
usan las operaciones CreateFile y FlushWithClose que
están disponibles en la API REST de Azure Data Lake Storage
Gen2.

[Link] Se desencadena cuando se elimina un blob.


En concreto, este evento también se desencadena cuando los
clientes llaman a la operación DeleteFile que está
disponible en la API REST de Azure Data Lake Storage Gen2.

[Link] Se desencadena cuando se cambia el nombre de un blob.


En concreto, este evento se desencadena cuando los clientes
usan la operación RenameFile que está disponible en la API
REST de Azure Data Lake Storage Gen2.

[Link] yCreated Se desencadena cuando se crea un directorio.


En concreto, este evento se desencadena cuando los clientes
usan la operación CreateDirectory que está disponible en
la API REST de Azure Data Lake Storage Gen2.

[Link] yRenamed Se desencadena cuando se cambia el nombre de un directorio.


En concreto, este evento se desencadena cuando los clientes
usan la operación RenameDirectory que está disponible en
la API REST de Azure Data Lake Storage Gen2.

[Link] yDeleted Se desencadena cuando se elimina un directorio.


En concreto, este evento se desencadena cuando los clientes
usan la operación DeleteDirectory que está disponible en
la API REST de Azure Data Lake Storage Gen2.

NOTE
Si quiere asegurarse de que el evento [Link] se desencadena únicamente cuando un blob en
bloques está completamente confirmado, filtre el evento para la llamada de API REST FlushWithClose . Esta llamada API
desencadena el evento [Link] únicamente después de que los datos se hayan confirmado en un
blob en bloques. Para información sobre cómo crear un filtro, consulte Filtrado de eventos para Event Grid.

El contenido de una respuesta de evento


Cuando se desencadena un evento, el servicio Event Grid envía datos sobre ese evento al punto de conexión
correspondiente.
Esta sección contiene un ejemplo del aspecto que deben tener los datos para cada evento de blob de
almacenamiento.
Evento [Link]
[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/test-container/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "\"0x8D4BCC2E4835CD0\"",
"contentType": "text/plain",
"contentLength": 524288,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Evento [Link] (Data Lake Storage Gen2)


Si la cuenta de almacenamiento de blobs tiene un espacio de nombres jerárquico, los datos tendrán un aspecto
similar al ejemplo anterior con la excepción de estos cambios:
La clave dataVersion tiene un valor de 2 .
La clave [Link] está establecida en la cadena CreateFile o FlushWithClose .
La clave contentOffset está incluida en el conjunto de datos.

NOTE
Si las aplicaciones utilizan la operación PutBlockList para cargar un blob nuevo a la cuenta, los datos no contendrán estos
cambios.
[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "CreateFile",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "\"0x8D4BCC2E4835CD0\"",
"contentType": "text/plain",
"contentLength": 0,
"contentOffset": 0,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "2",
"metadataVersion": "1"
}]

Evento [Link]

[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/testcontainer/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-11-07T20:09:22.5674003Z",
"id": "4c2359fe-001e-00ba-0e04-58586806d298",
"data": {
"api": "DeleteBlob",
"requestId": "4c2359fe-001e-00ba-0e04-585868000000",
"contentType": "text/plain",
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "0000000000000281000000000002F5CA",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Evento [Link] (Data Lake Storage Gen2)


Si la cuenta de almacenamiento de blobs tiene un espacio de nombres jerárquico, los datos tendrán un aspecto
similar al ejemplo anterior con la excepción de estos cambios:
La clave dataVersion tiene un valor de 2 .
La clave [Link] está establecida en la cadena DeleteFile .
La clave url contiene la ruta de acceso [Link] .
NOTE
Si las aplicaciones utilizan la operación DeleteBlob para eliminar un blob de la cuenta, los datos no contendrán estos
cambios.

[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "DeleteFile",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"contentType": "text/plain",
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "2",
"metadataVersion": "1"
}]

Evento [Link]

[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "RenameFile",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"destinationUrl": "[Link]
"sourceUrl": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Evento [Link]
[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/my-new-directory",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "CreateDirectory",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"url": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Evento [Link]

[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/my-renamed-directory",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "RenameDirectory",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"destinationUrl": "[Link]
"sourceUrl": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Evento [Link]
[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/my-file-system/blobs/directory-to-delete",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "DeleteDirectory",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"url": "[Link]
"recursive": "true",
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de Blob Storage.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:


P RO P IEDA D T IP O DESC RIP C IÓ N

api string Operación que desencadenó el evento.

clientRequestId string Identificador de solicitud que


proporciona el cliente para la operación
de la API de Storage. Dicho identificador
se puede usar para establecer la
correlación con los registros de
diagnóstico de Azure Storage que usan
el campo "client-request-id" en los
registros y se puede proporcionar en las
solicitudes de los clientes que usan el
encabezado "x-ms-client-request-id".
Consulte Storage Analytics Log Format
(Formato de registro de Storage
Analytics).

requestId string Identificador de solicitud generado por


el servicio para la operación de la API
de Storage. Se puede usar para
establecer la correlación con los
registros de diagnóstico de Azure
Storage que usan el campo "request-id-
header" en los registros y se devuelve
cuando se inicia la llamada API en el
encabezado "x-ms-request-id". Consulte
Storage Analytics Log Format (Formato
de registro de Storage Analytics).

eTag string Valor que puede usar para realizar


operaciones de manera condicional.

contentType string Tipo de contenido especificado para el


blob.

contentLength integer Tamaño del blob en bytes.

blobType string El tipo de blob. Los valores válidos son


"BlockBlob" o "PageBlob".

contentOffset number Desplazamiento en bytes de una


operación de escritura realizada en el
punto en el que la aplicación de
desencadenamiento de eventos
completa la escritura del archivo.
Solo aparece para los eventos
desencadenados en las cuentas de
almacenamiento de blobs que tienen un
espacio de nombres jerárquico.
P RO P IEDA D T IP O DESC RIP C IÓ N

destinationUrl string Dirección URL del archivo que existirá


una vez completada la operación. Por
ejemplo, si se cambia el nombre de un
archivo, la propiedad destinationUrl
contiene la dirección URL del nuevo
nombre de archivo.
Solo aparece para los eventos
desencadenados en las cuentas de
almacenamiento de blobs que tienen un
espacio de nombres jerárquico.

sourceUrl string Dirección URL del archivo que existe


antes de la operación. Por ejemplo, si se
cambia el nombre de un archivo,
sourceUrl contiene la dirección URL
del nombre de archivo original antes de
la operación de cambio de nombre.
Solo aparece para los eventos
desencadenados en las cuentas de
almacenamiento de blobs que tienen un
espacio de nombres jerárquico.

url string Ruta de acceso al blob.


Si el cliente usa una API de REST de
Blob, la dirección URL tiene esta
estructura: <storage-account-
name>.[Link]/<contain
er-name>/<file-name> .
Si el cliente usa una API de REST de
Data Lake Storage, la dirección URL
tiene esta estructura: <storage-
account-
name>.[Link]/<file-
system-name>/<file-name> .

recursive string True para realizar la operación en


todos los directorios secundarios; en
caso contrario, False .
Solo aparece para los eventos
desencadenados en las cuentas de
almacenamiento de blobs que tienen un
espacio de nombres jerárquico.

sequencer string Un valor de cadena opaco que


representa la secuencia lógica de
eventos para cualquier nombre de blob
concreto. Los usuarios pueden usar una
comparación de cadenas estándar para
conocer la secuencia relativa de dos
eventos que estén en el mismo nombre
de blob.

storageDiagnostics object Datos de diagnóstico que, en ocasiones,


incluye el servicio Azure Storage.
Cuando están presentes, los
consumidores de eventos deben
ignorarlos.
Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: enrutamiento de eventos de Blob Muestra cómo utilizar la CLI de Azure para enviar eventos de
Storage a un punto de conexión web personalizado con la CLI Blob Storage a un webhook.
de Azure

Guía de inicio rápido: enrutamiento de eventos de Blob Muestra cómo utilizar Azure PowerShell para enviar eventos
Storage a un punto de conexión web personalizado con de Blob Storage a un webhook.
PowerShell

Guía de inicio rápido: creación y enrutamiento de eventos de Muestra cómo utilizar el portal para enviar eventos de Blob
Blob Storage con Azure Portal Storage a un webhook.

CLI de Azure: suscripción a eventos de una cuenta de Blob Script de ejemplo que se suscribe a un evento para una
Storage cuenta de Blob Storage. Envía el evento a un webhook.

PowerShell: suscripción a eventos de una cuenta de Blob Script de ejemplo que se suscribe a un evento para una
Storage cuenta de Blob Storage. Envía el evento a un webhook.

Plantilla de Resource Manager: Creación de almacenamiento y Implementa una cuenta de Azure Blob Storage y crea una
suscripción de blobs suscripción a eventos de dicha cuenta. Envía eventos a un
webhook.

Introducción: reacción ante eventos de Blob Storage Información general de la integración de Blob Storage con
Event Grid.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Para obtener una introducción acerca del trabajo con eventos de Blob Storage, consulte Enrutamiento de
eventos de Blob Storage: CLI de Azure.
Azure Container Registry como origen de Event Grid
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Container Registry. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Azure Container Registry emite los siguientes tipos de evento:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se inserta una imagen.

[Link] Se genera cuando se elimina una imagen.

[Link] Se genera cuando se inserta un gráfico Helm.

[Link] Se genera cuando se elimina un gráfico Helm.

Evento de ejemplo
En el ejemplo siguiente, se muestra el esquema de un evento de inserción de una imagen:

[{
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/registries/<name>",
"subject": "aci-helloworld:v1",
"eventType": "ImagePushed",
"eventTime": "2018-04-25T21:39:47.6549614Z",
"data": {
"id": "31c51664-e5bd-416a-a5df-e5206bc47ed0",
"timestamp": "2018-04-25T21:39:47.276585742Z",
"action": "push",
"target": {
"mediaType": "application/[Link].v2+json",
"size": 3023,
"digest": "sha256:213bbc182920ab41e18edc2001e06abcca6735d87782d9cef68abd83941cf0e5",
"length": 3023,
"repository": "aci-helloworld",
"tag": "v1"
},
"request": {
"id": "7c66f28b-de19-40a4-821c-6f5f6c0003a4",
"host": "[Link]",
"method": "PUT",
"useragent": "docker/18.03.0-ce go/go1.9.4 git-commit/0520e24 os/windows arch/amd64
UpstreamClient(Docker-Client/18.03.0-ce \\\\(windows\\\\))"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
El esquema para un evento de eliminación de una imagen es similar:

[{
"id": "f06e3921-301f-42ec-b368-212f7d5354bd",
"topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/registries/<name>",
"subject": "aci-helloworld",
"eventType": "ImageDeleted",
"eventTime": "2018-04-26T17:56:01.8211268Z",
"data": {
"id": "f06e3921-301f-42ec-b368-212f7d5354bd",
"timestamp": "2018-04-26T17:56:00.996603117Z",
"action": "delete",
"target": {
"mediaType": "application/[Link].v2+json",
"digest": "sha256:213bbc182920ab41e18edc2001e06abcca6735d87782d9cef68abd83941cf0e5",
"repository": "aci-helloworld"
},
"request": {
"id": "aeda5b99-4197-409f-b8a8-ff539edb7de2",
"host": "[Link]",
"method": "DELETE",
"useragent": "python-requests/2.18.4"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

El esquema para un evento que se inserta en un gráfico es similar al esquema de un evento con imágenes
insertadas, pero no incluye un objeto de solicitud:

[{
"id": "ea3a9c28-5b17-40f6-a500-3f02b6829277",
"topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/registries/<name>",
"subject": "mychart:1.0.0",
"eventType": "[Link]",
"eventTime": "2019-03-12T22:16:31.5164086Z",
"data": {
"id":"ea3a9c28-5b17-40f6-a500-3f02b682927",
"timestamp":"2019-03-12T22:16:31.0087496+00:00",
"action":"chart_push",
"target":{
"mediaType":"application/[Link]",
"size":25265,
"digest":"sha256:7f060075264b5ba7c14c23672698152ae6a3ebac1c47916e4efe19cd624d5fab",
"repository":"repo",
"tag":"[Link]",
"name":"mychart",
"version":"1.0.0"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

El esquema para un evento que se elimina de un gráfico es similar al esquema de un evento con imágenes
eliminadas, pero no incluye un objeto de solicitud:
[{
"id": "39136b3a-1a7e-416f-a09e-5c85d5402fca",
"topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/registries/<name>",
"subject": "mychart:1.0.0",
"eventType": "[Link]",
"eventTime": "019-03-12T22:42:08.7034064Z",
"data": {
"id":"ea3a9c28-5b17-40f6-a500-3f02b682927",
"timestamp":"2019-03-12T22:42:08.3783775+00:00",
"action":"chart_delete",
"target":{
"mediaType":"application/[Link]",
"size":25265,
"digest":"sha256:7f060075264b5ba7c14c23672698152ae6a3ebac1c47916e4efe19cd624d5fab",
"repository":"repo",
"tag":"[Link]",
"name":"mychart",
"version":"1.0.0"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo
no se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de Blob Storage.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:


P RO P IEDA D T IP O DESC RIP C IÓ N

id string El identificador de evento.

timestamp string La hora a la que se produjo el evento.

action string La acción que abarca el evento


proporcionado.

Destino object El destino del evento.

request object La solicitud que generó el evento.

El objeto target tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

mediaType string El tipo MIME del objeto al que se hace


referencia.

tamaño integer El número de bytes del contenido. Igual


que el campo de longitud.

digest string El resumen del contenido, de acuerdo


con la especificación de API HTTP V2
del registro.

length integer El número de bytes del contenido. Igual


que el campo de tamaño.

repository string El nombre del repositorio.

etiqueta string El nombre de la etiqueta.

name string El nombre del gráfico.

version string La versión del gráfico.

El objeto request tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

id string El identificador de la solicitud que inició


el evento.

addr string La dirección IP o nombre de host y,


posiblemente, el puerto de la conexión
de cliente que inició el evento. Este
valor es RemoteAddr de la solicitud http
estándar.
P RO P IEDA D T IP O DESC RIP C IÓ N

host string El nombre de host accesible desde el


exterior de la instancia del registro,
según lo especificado por el encabezado
de host http en las solicitudes
entrantes.

method string El método de la solicitud que generó el


evento.

useragent string El encabezado de agente de usuario de


la solicitud.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: Envío de eventos de Container Registry Explica cómo utilizar la CLI de Azure para enviar eventos de
Container Registry.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Azure Event Hubs como origen de Event Grid
04/08/2020 • 3 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Event Hubs. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Event Hubs emite el tipo de evento [Link] cuando se crea un archivo de
captura.
Evento de ejemplo
Este evento de ejemplo muestra el esquema de un evento de Event Hubs que se genera cuando la característica de
captura almacena un archivo:

[
{
"topic":
"/subscriptions/<guid>/resourcegroups/rgDataMigrationSample/providers/[Link]/namespaces/tfdatamigr
atens",
"subject": "eventhubs/hubdatamigration",
"eventType": "[Link]",
"eventTime": "2017-08-31T19:12:46.0498024Z",
"id": "14e87d03-6fbf-4bb2-9a21-92bd1281f247",
"data": {
"fileUrl":
"[Link]
/31/19/11/[Link]",
"fileType": "AzureBlockBlob",
"partitionId": "1",
"sizeInBytes": 249168,
"eventCount": 1500,
"firstSequenceNumber": 2400,
"lastSequenceNumber": 3899,
"firstEnqueueTime": "2017-08-31T19:12:14.674Z",
"lastEnqueueTime": "2017-08-31T19:12:44.309Z"
},
"dataVersion": "",
"metadataVersion": "1"
}
]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.
P RO P IEDA D T IP O DESC RIP C IÓ N

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos del evento de Event Hubs.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

fileUrl string Ruta de acceso al archivo de captura.

fileType string Tipo del archivo de captura.

partitionId string Identificador de partición.

sizeInBytes integer Tamaño del archivo.

eventCount integer Número de eventos en el archivo.

firstSequenceNumber integer Menor número de secuencia de la cola.

lastSequenceNumber integer Último número de secuencia de la cola.

firstEnqueueTime string Primera vez desde la cola.

lastEnqueueTime string Última vez desde la cola.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N
T ÍT ULO DESC RIP C IÓ N

Tutorial: transmisión de macrodatos a un almacén de datos Cuando Event Hubs crea un archivo de captura, Event Grid
envía un evento a una aplicación de función. La aplicación
recupera el archivo de captura y migra los datos a un
almacenamiento de datos.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Para obtener información sobre el control de los eventos de Event Hubs, vea Transmitir macrodatos a un
almacenamiento de datos.
Azure IoT Hub como origen de Event Grid
04/08/2020 • 12 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Azure IoT Hub. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Azure IoT Hub emite los siguientes tipos de eventos:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se publica cuando se registra un dispositivo en una instancia


de IoT Hub.

[Link] Se publica cuando se elimina un dispositivo de una instancia


de IoT Hub.

[Link] Se publica cuando se conecta un dispositivo a una instancia de


IoT Hub.

[Link] Se publica cuando se desconecta un dispositivo de una


instancia de IoT Hub.

[Link] Se publica cuando se envía un mensaje de telemetría a un


centro de IoT.

Todos los eventos del dispositivo, excepto los eventos de telemetría del dispositivo, están disponibles con carácter
general en todas las regiones admitidas por Event Grid. El evento de telemetría del dispositivo está en versión
preliminar pública y está disponible en todas las regiones, excepto en Este de EE. UU., Oeste de EE. UU., Oeste de
Europa, Azure Government, Azure China 21Vianet y Azure Alemania.
Evento de ejemplo
El esquema para los eventos de dispositivo conectado y dispositivo desconectado tiene la misma estructura. Este
evento de ejemplo muestra el esquema de un evento que se genera cuando se conecta un dispositivo a una
instancia de IoT Hub:
[{
"id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group
name>/PROVIDERS/[Link]/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "[Link]",
"eventTime": "2018-06-02T19:17:44.4383997Z",
"data": {
"deviceConnectionStateEventInfo": {
"sequenceNumber":
"000000000000000001D4132452F67CE200000002000000000000000000000001"
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice",
"moduleId" : "DeviceModuleID"
},
"dataVersion": "1",
"metadataVersion": "1"
}]

El evento DeviceTelemetry se genera cuando se envía un evento de telemetría a IoT Hub. A continuación se
muestra un esquema de ejemplo de este evento.

[{
"id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group
name>/PROVIDERS/[Link]/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "[Link]",
"eventTime": "2019-01-07T20:58:30.48Z",
"data": {
"body": {
"Weather": {
"Temperature": 900
},
"Location": "USA"
},
"properties": {
"Status": "Active"
},
"systemProperties": {
"iothub-content-type": "application/json",
"iothub-content-encoding": "utf-8",
"iothub-connection-device-id": "d1",
"iothub-connection-auth-method": "
{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"iothub-connection-auth-generation-id": "123455432199234570",
"iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
"iothub-message-source": "Telemetry"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Los esquemas de los eventos DeviceCreated y DeviceDeleted tienen la misma estructura. Este evento de ejemplo
muestra el esquema de un evento que se genera cuando se registra un dispositivo en una instancia de IoT Hub:
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group
name>/PROVIDERS/[Link]/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "[Link]",
"eventTime": "2018-01-02T19:17:44.4383997Z",
"data": {
"twin": {
"deviceId": "LogicAppTestDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag": "null",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
}
}
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice"
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Propiedades de evento
Todos los eventos contienen los mismos datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

id string Identificador único para el evento

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.
P RO P IEDA D T IP O DESC RIP C IÓ N

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

datos object Datos del evento de IoT Hub.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

Para todos los eventos de IoT Hub, el objeto de datos contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

hubName string Nombre de la instancia de IoT Hub en


que se creó o eliminó el dispositivo.

deviceId string Identificador único del dispositivo. Una


cadena que distingue mayúsculas de
minúsculas puede tener una longitud
de hasta 128 caracteres alfanuméricos
ASCII de 7 bits más los siguientes
caracteres especiales:
- : . + % _ # * ? ! ( ) , = @ ; $
'
.

El contenido del objeto de datos es diferente para cada publicador de eventos.


Para los eventos de IoT Hub de Dispositivo conectado y Dispositivo desconectado , el objeto de datos
contiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

moduleId string Identificador único del módulo. Este


campo solo es la salida de los
dispositivos del módulo. Una cadena
que distingue mayúsculas de
minúsculas puede tener una longitud
de hasta 128 caracteres alfanuméricos
ASCII de 7 bits más los siguientes
caracteres especiales:
- : . + % _ # * ? ! ( ) , = @ ; $
'
.

deviceConnectionStateEventInfo object Información de evento del estado de


conexión del dispositivo
P RO P IEDA D T IP O DESC RIP C IÓ N

sequenceNumber string Un número que indica el orden de los


eventos de dispositivo conectado o
dispositivo desconectado. El evento más
reciente tendrá un número de secuencia
mayor que el del evento anterior. Este
número puede variar en más de 1, pero
el orden es siempre ascendente.
Consulte cómo usar el número de
secuencia.

En el caso del evento de Azure IoT Hub Telemetría de dispositivo , el objeto de datos contiene el mensaje del
dispositivo a nube en formato de mensaje de IoT Hub y tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

body string El contenido del mensaje del dispositivo.

properties string Las propiedades de la aplicación son


cadenas definidas por el usuario que se
pueden agregar al mensaje. Estos
campos son opcionales.

system properties string Las propiedades del sistema ayudan a


identificar el contenido y el origen de
los mensajes. El mensaje de telemetría
del dispositivo debe estar en un
formato JSON válido, el valor de
contentType debe ser JSON y el de
contentEncoding debe ser UTF-8 en las
propiedades del sistema del mensaje. Si
no es así, IoT Hub escribirá los mensajes
en formato codificado de base 64.

Para los eventos de IoT Hub de Dispositivo creado y Dispositivo eliminado , el objeto de datos contiene las
siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

twin object Información acerca del dispositivo


gemelo, que es la representación en la
nube de los metadatos del dispositivo
de la aplicación.

deviceID string Identificador único del dispositivo


gemelo.

ETag string Un validador para garantizar la


coherencia de las actualizaciones de un
dispositivo gemelo. Se garantiza que
cada etiqueta de entidad sea exclusiva
de cada dispositivo gemelo.
P RO P IEDA D T IP O DESC RIP C IÓ N

deviceEtag string Un validador para garantizar la


coherencia de las actualizaciones de un
registro de dispositivo. Se garantiza que
cada deviceEtag sea exclusiva de cada
registro de dispositivo.

status string Si el dispositivo gemelo está habilitado


o deshabilitado.

statusUpdateTime string La marca de tiempo ISO8601 de la


última actualización de estado del
dispositivo gemelo.

connectionState string Si el dispositivo está conectado o


desconectado.

lastActivityTime string La marca de tiempo ISO8601 de la


última actividad.

cloudToDeviceMessageCount integer Número de mensajes de la nube al


dispositivo enviados a este dispositivo.

authenticationType string Tipo de autenticación usado para este


dispositivo: SAS , SelfSigned o
CertificateAuthority .

x509Thumbprint string La huella digital es un valor exclusivo


del certificado x509, que suele usarse
para buscar un certificado concreto en
un almacén de certificados. La huella
digital se genera de forma dinámica con
el algoritmo SHA1 y no existe
físicamente en el certificado.

primaryThumbprint string Huella digital principal del certificado


x509.

secondaryThumbprint string Huella digital secundaria del certificado


x509.

version integer Un entero que se incrementa en uno


cada vez que se actualiza el dispositivo
gemelo.

desired object Una parte de las propiedades que solo


el back-end de la aplicación puede
escribir y que el dispositivo puede leer.

reported object Una parte de las propiedades que solo


el dispositivo puede escribir y que el
back-end de la aplicación puede leer.

lastUpdated string La marca de tiempo ISO8601 de la


última actualización de propiedades del
dispositivo gemelo.
Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Envío de notificaciones por correo electrónico sobre eventos Una aplicación lógica envía un correo electrónico de
de Azure IoT Hub mediante Logic Apps notificación cada vez que se agrega un dispositivo a IoT Hub.

Reacción a eventos de IoT Hub usando Event Grid para Información general sobre la integración de IoT Hub con
desencadenar acciones Event Grid.

Ordenación de los eventos de dispositivo conectado y Muestra cómo ordenar los eventos de estado de conexión del
dispositivo desconectado dispositivo.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información sobre cómo IoT Hub y Event Grid funcionan de forma conjunta, vea Reacción a eventos
de IoT Hub mediante Event Grid para desencadenar acciones.
Azure Key Vault como origen de Event Grid
04/08/2020 • 5 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y el esquema de los eventos en Azure Key Vault, actualmente en
versión preliminar. Para una introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event
Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Una cuenta Azure Key Vault genera los siguientes tipos de eventos:

N O M B RE C O M P L ETO DEL EVEN TO N O M B RE PA RA M O ST RA R DEL EVEN TO DESC RIP C IÓ N

[Link] Nueva versión de certificado creada Se desencadena cuando se crea un


nCreated nuevo certificado o una nueva versión
de certificado.

[Link] El certificado está a punto de expirar Se desencadena cuando la versión


actual del certificado está a punto de
expirar. (El evento se desencadena
30 días antes de la fecha de expiración).

[Link] Certificado expirado Se desencadena cuando el certificado


ha expirado.

[Link] Nueva versión de clave creada Se desencadena cuando se crea una


ed nueva clave o nueva versión de clave.

[Link] La clave está a punto de expirar Se desencadena cuando la versión


actual de una clave está a punto de
expirar. (El evento se desencadena
30 días antes de la fecha de expiración).

[Link] Clave expirada Se desencadena cuando una clave ha


expirado.

[Link] Secreto nueva versión creada Se desencadena cuando se crea una


eated nueva versión de secreto o secreto
nuevo.

[Link] El secreto está a punto de expirar Se desencadena cuando la versión


actual de un secreto está a punto de
expirar. (El evento se desencadena
30 días antes de la fecha de expiración).

[Link] Secreto expirado Se desencadena cuando un secreto ha


expirado.

Ejemplos de eventos
En el ejemplo siguiente se muestra el esquema para [Link] :
[
{
"id":"00eccf70-95a7-4e7c-8299-2eb17ee9ad64",
"topic":"/subscriptions/{subscription-id}/resourceGroups/sample-
rg/providers/[Link]/vaults/sample-kv",
"subject":"newsecret",
"eventType":"[Link]",
"eventTime":"2019-07-25T01:08:33.1036736Z",
"data":{
"Id":"[Link]
"vaultName":"sample-kv",
"objectType":"Secret",
"objectName ":"newsecret",
"version":" ee059b2bb5bc48398a53b168c6cdcb10",
"nbf":"1559081980",
"exp":"1559082102"
},
"dataVersion":"1",
"metadataVersion":"1"
}
]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

id string El identificador del objeto que


desencadenó este evento

vaultName string Nombre del almacén de claves del


objeto que desencadenó este evento

objectType string El tipo del objeto que desencadenó este


evento

objectName string El nombre del objeto que desencadenó


este evento

version string La versión del objeto que desencadenó


este evento

nbf number La fecha no antes de segundos desde


1970-01-01T00:00:00Z del objeto que
desencadenó este evento

exp number Fecha de expiración en segundos desde


1970-01-01T00:00:00Z del objeto que
desencadenó este evento

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Supervisión de eventos de Key Vault con Azure Event Grid Información general sobre la integración de Key Vault con
Event Grid.
T ÍT ULO DESC RIP C IÓ N

Tutorial: Creación y supervisión de eventos de Key Vault con Obtenga información sobre cómo configurar notificaciones de
Event Grid Event Grid para Key Vault.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte el artículo de introducción a Event Grid.
Para más información sobre cómo crear una suscripción de Azure Event Grid, consulte Esquema de suscripción
de Event Grid.
Para más información sobre la integración de Key Vault con Event Grid, consulte la Key Vault de supervisión con
Azure Event Grid (versión preliminar).
Para ver un tutorial sobre la integración de Key Vault con Event Grid, consulte Recibir y responder a las
notificaciones del almacén de claves con Azure Event Grid (versión preliminar).
Para instrucciones adicionales sobre Key Vault y Azure Automation, consulte:
¿Qué es Azure Key Vault?
Supervisión de Key Vault con Azure Event Grid (versión preliminar)
Recibir y responder a las notificaciones del almacén de claves con Azure Event Grid (versión preliminar)
Información general sobre Azure Automation
Azure Machine Learning como origen de Event Grid
04/08/2020 • 8 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los eventos del área de trabajo de aprendizaje automático. Para
una introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Azure Machine Learning emite los tipos de eventos siguientes:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se ha registrado correctamente un modelo


nuevo o una versión de modelo nueva.

[Link] Se genera cuando los modelos se han implementado


correctamente en un punto de conexión.

[Link] Se genera cuando una ejecución se ha completado


correctamente.

[Link] Se genera cuando un monitor de desfase de datos detecta el


desfase.

[Link] Se genera cuando el estado de ejecución cambia.

El contenido de una respuesta de evento


Cuando se desencadena un evento, el servicio Event Grid envía datos sobre ese evento al punto de conexión
correspondiente.
Esta sección contiene un ejemplo del aspecto que deben tener los datos para cada evento.
Evento [Link]
[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/workspaces/{workspace-name}",
"subject": "models/sklearn_regression_model:20",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"ModelName": "sklearn_regression_model",
"ModelVersion": 20,
"ModelTags": {
"area": "diabetes",
"type": "regression"
},
"ModelProperties": {
"type": "test"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Evento [Link]

[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/workspaces/{workspace-name}",
"subject": "endpoints/my-sklearn-service",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"ServiceName": "my-sklearn-service",
"ServiceComputeType": "ACI",
"ModelIds": "sklearn_regression_model:1,sklearn_regression_model:2",
"ServiceTags": {
"area": "diabetes",
"type": "regression"
},
"ServiceProperties": {
"type": "test"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Evento [Link]
[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/workspaces/{workspace-name}",
"subject": "experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"ExperimentId": "0fa9dfaa-cba3-4fa7-b590-23e48548f5c1",
"ExperimentName": "automl-local-regression",
"RunId": "AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc_5",
"RunType": null,
"RunTags": {},
"RunProperties": {
"runTemplate": "automl_child",
"pipeline_id": "5adc0a4fe02504a586f09a4fcbb241f9a4012062",
"pipeline_spec": "{\"objects\": [{\"class_name\": \"StandardScaler\", \"module\":
\"[Link]\", \"param_args\": [], \"param_kwargs\": {\"with_mean\": true, \"with_std\": false},
\"prepared_kwargs\": {}, \"spec_class\": \"preproc\"}, {\"class_name\": \"LassoLars\", \"module\":
\"sklearn.linear_model\", \"param_args\": [], \"param_kwargs\": {\"alpha\": 0.001, \"normalize\": true},
\"prepared_kwargs\": {}, \"spec_class\": \"sklearn\"}], \"pipeline_id\":
\"5adc0a4fe02504a586f09a4fcbb241f9a4012062\"}",
"training_percent": "100",
"predicted_cost": "0.062226144097381045",
"iteration": "5",
"run_template": "automl_child",
"run_preprocessor": "StandardScalerWrapper",
"run_algorithm": "LassoLars",
"conda_env_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/conda_env_v_1_0_0.yml",
"model_name": "AutoMLad912b2d65",
"scoring_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/scoring_file_v_1_0_0.py",
"model_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/[Link]"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Evento [Link]

[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/workspaces/{workspace-name}",
"subject": "datadrifts/{}/runs/{}",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"DataDriftId": "01d29aa4-e6a4-470a-9ef3-66660d21f8ef",
"DataDriftName": "myDriftMonitor",
"RunId": "01d29aa4-e6a4-470a-9ef3-66660d21f8ef_1571590300380",
"BaseDatasetId": "3c56d136-0f64-4657-a0e8-5162089a88a3",
"TargetDatasetId": "d7e74d2e-c972-4266-b5fb-6c9c182d2a74",
"DriftCoefficient": 0.83503490684792081,
"StartTime": "2019-07-04T00:00:00+00:00",
"EndTime": "2019-07-05T00:00:00+00:00"
},
"dataVersion": "",
"metadataVersion": "1"
}]
Evento [Link]

[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/workspaces/{workspace-name}",
"subject": "experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"ExperimentId": "0fa9dfaa-cba3-4fa7-b590-23e48548f5c1",
"ExperimentName": "automl-local-regression",
"RunId": "AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc_5",
"RunType": null,
"RunTags": {},
"RunProperties": {
"runTemplate": "automl_child",
"pipeline_id": "5adc0a4fe02504a586f09a4fcbb241f9a4012062",
"pipeline_spec": "{\"objects\": [{\"class_name\": \"StandardScaler\", \"module\":
\"[Link]\", \"param_args\": [], \"param_kwargs\": {\"with_mean\": true, \"with_std\": false},
\"prepared_kwargs\": {}, \"spec_class\": \"preproc\"}, {\"class_name\": \"LassoLars\", \"module\":
\"sklearn.linear_model\", \"param_args\": [], \"param_kwargs\": {\"alpha\": 0.001, \"normalize\": true},
\"prepared_kwargs\": {}, \"spec_class\": \"sklearn\"}], \"pipeline_id\":
\"5adc0a4fe02504a586f09a4fcbb241f9a4012062\"}",
"training_percent": "100",
"predicted_cost": "0.062226144097381045",
"iteration": "5",
"run_template": "automl_child",
"run_preprocessor": "StandardScalerWrapper",
"run_algorithm": "LassoLars",
"conda_env_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/conda_env_v_1_0_0.yml",
"model_name": "AutoMLad912b2d65",
"scoring_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/scoring_file_v_1_0_0.py",
"model_data_location": "aml://artifact/ExperimentRun/dcid.AutoML_ad912b2d-6467-4f32-a616-
dbe4af6dd8fc_5/outputs/[Link]"
},
"RunStatus": "failed"
},
"dataVersion": "",
"metadataVersion": "1"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.
P RO P IEDA D T IP O DESC RIP C IÓ N

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de Blob Storage.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto de datos tiene las siguientes propiedades para cada tipo de evento:
[Link]
P RO P IEDA D T IP O DESC RIP C IÓ N

ModelName string Nombre del modelo que se ha


registrado.

ModelVersion string Versión del modelo que se ha


registrado.

ModelTags object Etiquetas del modelo que se ha


registrado.

ModelProperties object Propiedades del modelo que se ha


registrado.

[Link]
P RO P IEDA D T IP O DESC RIP C IÓ N

ServiceName string Nombre del servicio implementado.

ServiceComputeType string Tipo de proceso (por ejemplo, ACI, AKS)


del servicio implementado.

ModelIds string Lista de identificadores de modelo


separados por comas. Identificadores de
los modelos implementados en el
servicio.

ServiceTags object Etiquetas del servicio implementado.

ServiceProperties object Propiedades del servicio implementado.

[Link]
P RO P IEDA D T IP O DESC RIP C IÓ N

ExperimentId string Identificador del experimento al que


pertenece la ejecución.

ExperimentName string Nombre del experimento al que


pertenece la ejecución.

RunId string Identificador de la ejecución que se ha


completado.

RunType string Tipo de ejecución de la ejecución


completada.

RunTags object Etiquetas de la ejecución completada.

RunProperties object Propiedades de la ejecución


completada.

[Link]
P RO P IEDA D T IP O DESC RIP C IÓ N

DataDriftId string Identificador del monitor de desfase de


datos que ha desencadenado el evento.

DataDriftName string Nombre del monitor de desfase de


datos que ha desencadenado el evento.

RunId string Identificador de la ejecución que ha


detectado el desfase de datos.

BaseDatasetId string Identificador del conjunto de datos base


que se ha usado para detectar el
desfase de datos.

TargetDatasetId string Identificador del conjunto de datos de


destino que se ha usado para detectar
el desfase de datos.

DriftCoefficient double Resultado del coeficiente que ha


desencadenado el evento.

StartTime datetime Hora de inicio de la serie temporal del


conjunto de datos de destino que ha
dado como resultado la detección del
desfase de datos.

EndTime datetime Hora de finalización de la serie temporal


del conjunto de datos de destino que
ha dado como resultado la detección
del desfase de datos.

[Link]
P RO P IEDA D T IP O DESC RIP C IÓ N

ExperimentId string Identificador del experimento al que


pertenece la ejecución.

ExperimentName string Nombre del experimento al que


pertenece la ejecución.

RunId string Identificador de la ejecución que se ha


completado.

RunType string Tipo de ejecución de la ejecución


completada.

RunTags object Etiquetas de la ejecución completada.

RunProperties object Propiedades de la ejecución


completada.

RunStatus string Estado de la ejecución.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Consumo de eventos de Azure Machine Learning Información general de la integración de Azure Machine
Learning con Event Grid.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para obtener más información sobre la creación de una suscripción de Azure Event Grid, vea Esquema de
suscripción de Event Grid.
Para obtener una introducción sobre cómo usar Azure Event Grid con Azure Machine Learning, vea Consumo
de eventos de Azure Machine Learning.
Para obtener un ejemplo de cómo usar Azure Event Grid con Azure Machine Learning, vea Creación de flujos de
trabajo de aprendizaje automático basados en eventos.
Azure Maps como origen de Event Grid
04/08/2020 • 9 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Azure Maps. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid. También proporciona
una lista de inicios rápidos y tutoriales para usar Azure Maps como un origen de eventos.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Una cuenta de Azure Maps emite los siguientes tipos de eventos:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se mueven las coordenadas recibidas desde


fuera de una determinada geovalla a dentro

[Link] Se genera cuando se mueven las coordenadas recibidas desde


dentro de una determinada geovalla a fuera

[Link] Se genera cada vez que una consulta de geovalla devuelve un


resultado, independientemente del estado

Ejemplos de eventos
En el ejemplo siguiente, se muestra el esquema de un evento GeofenceEntered

{
"id":"7f8446e2-1ac7-4234-8425-303726ea3981",
"topic":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/[Link]/accounts/{acc
ountName}",
"subject":"/spatial/geofence/udid/{udid}/id/{eventId}",
"data":{
"geometries":[
{
"deviceId":"device_1",
"udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169",
"geometryId":"2",
"distance":-999.0,
"nearestLat":47.618786,
"nearestLon":-122.132151
}
],
"expiredGeofenceGeometryId":[
],
"invalidPeriodGeofenceGeometryId":[
]
},
"eventType":"[Link]",
"eventTime":"2018-11-08T00:54:17.6408601Z",
"metadataVersion":"1",
"dataVersion":"1.0"
}

En el ejemplo siguiente, se muestra el esquema de un evento GeofenceResult


{
"id":"451675de-a67d-4929-876c-5c2bf0b2c000",
"topic":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/[Link]/accounts/{acc
ountName}",
"subject":"/spatial/geofence/udid/{udid}/id/{eventId}",
"data":{
"geometries":[
{
"deviceId":"device_1",
"udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169",
"geometryId":"1",
"distance":999.0,
"nearestLat":47.609833,
"nearestLon":-122.148274
},
{
"deviceId":"device_1",
"udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169",
"geometryId":"2",
"distance":999.0,
"nearestLat":47.621954,
"nearestLon":-122.131841
}
],
"expiredGeofenceGeometryId":[
],
"invalidPeriodGeofenceGeometryId":[
]
},
"eventType":"[Link]",
"eventTime":"2018-11-08T00:52:08.0954283Z",
"metadataVersion":"1",
"dataVersion":"1.0"
}

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de geovalla.


P RO P IEDA D T IP O DESC RIP C IÓ N

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

apiCategory string Categoría de API del evento.

apiName string Nombre de API del evento.

issues object Se enumeran los problemas que se


encontraron durante el procesamiento.
Si se devuelve algún problema, no se
devolverán geometrías con la respuesta.

responseCode number Código de respuesta HTTP

geometries object Muestra las geometrías de valla que


contienen la posición de la coordenada
o superpone searchBuffer en torno a
esa posición.

Se devuelve el objeto de error cuando se produce un error en la API de Maps. El objeto de error tiene las siguientes
propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

error ErrorDetails Se devuelve este objeto cuando se


produce un error en la API de Maps

Se devuelve el objeto ErrorDetails cuando se produce un error en la API de Maps. El objeto ErrorDetails tiene las
siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

código string El código de estado HTTP.

message string Si está disponible, una descripción


legible del error.

innererror InnerError Si está disponible, un objeto que


contiene información específica del
servicio sobre el error.

InnerError es un objeto que contiene información específica del servicio sobre el error. El objeto InnerError tiene
las siguientes propiedades:
P RO P IEDA D T IP O DESC RIP C IÓ N

código string El mensaje de error.

El objeto "geometries" muestra los identificadores de geometría de las geovallas que han expirado en relación con
la hora que especificó el usuario en la solicitud. El objeto "geometries" tiene elementos de geometría con las
siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

deviceid string Identificador del dispositivo.

distancia string Distancia entre la coordenada y el


borde más cercano de la geovalla.
Un número positivo significa que la
coordenada está fuera de la
geovalla. Si la coordenada está
fuera de la geovalla, pero es
superior al valor de la distancia de
searchBuffer al borde más cercano
de la geovalla, el valor es 999. Un
número negativo significa que la
coordenada está dentro de la
geovalla. Si la coordenada está
dentro del polígono, pero es
superior al valor de la distancia de
searchBuffer al borde más cercano
de la geovalla, el valor es -999. Un
valor de 999 significa que hay una
gran confianza en que la
coordenada está fuera de la
geovalla. Un valor de 999 significa
que hay una gran confianza en que
la coordenada está dentro de la
geovalla.

geometryid string El identificador único identifica la


geometría de la geovalla.

nearestlat number Latitud del punto más cercano de la


geometría.

nearestlon number Longitud del punto más cercano de la


geometría.

udId string El identificador único devuelto desde el


servicio de carga del usuario al cargar
una geovalla. No se incluirá en la API
POST de geovalla.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N


P RO P IEDA D T IP O DESC RIP C IÓ N

expiredGeofenceGeometryId string[] Muestra el identificador de geometría


de la geovalla que ha expirado en
relación con la hora que especificó el
usuario en la solicitud.

geometries geometries[] Muestra las geometrías de valla que


contienen la posición de la coordenada
o superpone searchBuffer en torno a
esa posición.

invalidPeriodGeofenceGeometryId string[] Muestra el identificador de geometría


de la geovalla que está en un período
no válido en relación con la hora que
especificó el usuario en la solicitud.

isEventPublished boolean El valor es "true" si se publica al menos


un evento en el suscriptor de eventos
de Azure Maps y "false" en caso
contrario.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Reaccionar a eventos de Azure Maps mediante Event Grid Información general de la integración de Azure Maps con
Event Grid.

Tutorial: configuración de una geovalla Este tutorial le guiará por los pasos básicos para configurar la
geovalla con Azure Maps. Usará Azure Event Grid para
transmitir los resultados de la geovalla y establecer una
notificación basada en los resultados de esa geovalla.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Azure Media Services como origen de Event Grid
04/08/2020 • 25 minutes to read • Edit Online

En este artículo se proporcionan los esquemas y las propiedades para los eventos de Media Services.

Tipos de eventos relacionados con el trabajo


Media Services emite los tipos de eventos relacionados con el trabajo que se describen a continuación. Existen
dos categorías para los eventos relacionados con el trabajo : "supervisión de cambios de estado de trabajo" y
"supervisión de cambios de estado de salida de trabajo".
Para registrarse para todos los eventos, puede suscribirse al evento JobStateChange. O bien, puede suscribirse solo
a eventos específicos (por ejemplo, estados finales como JobErrored, JobFinished y JobCanceled).
Supervisión de cambios de estado de trabajo
T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Permite obtener un evento para todos los cambios de estado


del trabajo.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado programado.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado de procesamiento en curso.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado de cancelación en curso.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado finalizado. Se trata de un estado final que
incluye las salidas del trabajo.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado cancelado. Se trata de un estado final que
incluye las salidas del trabajo.

[Link] Permite obtener un evento cuando el trabajo realiza la


transición al estado de error. Se trata de un estado final que
incluye las salidas del trabajo.

Consulte los Ejemplos de esquema siguientes.


Supervisión de cambios de estado de salida de trabajo
Un trabajo puede contener varias salidas de trabajo (si ha configurado la transformación para que tenga varias
salidas de trabajo) Si quiere realizar el seguimiento de los detalles de salida de un trabajo individual, escuche un
evento de cambio de salida del trabajo.
Cada elemento Job estará en un nivel superior al de JobOutput , por lo que los eventos de salida de trabajo se
activan dentro de un trabajo correspondiente.
Los mensajes de error de JobFinished , JobCanceled , JobError muestran los resultados agregados para cada
salida de trabajo, cuando todos han finalizado. Por su parte, los eventos de salida de trabajo se activan cuando
finaliza cada tarea. Por ejemplo, si tiene una salida de codificación, seguida de una de análisis de vídeo, obtendría
dos eventos que se desencadenan como eventos de salida de trabajo antes de que el evento JobFinished final se
desencadene con los datos agregados.

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Permite obtener un evento para todos los cambios de estado


de salida del trabajo.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado programado.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado de procesamiento en curso.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado de cancelación en curso.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado finalizado.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado cancelado.

[Link] Permite obtener un evento cuando la salida del trabajo realiza


la transición al estado de error.

Consulte los Ejemplos de esquema siguientes.


Supervisión del progreso de salida del trabajo
T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Este evento refleja el progreso del procesamiento de trabajo


del 0 % al 100 %. El servicio intenta enviar un evento si se ha
producido un aumento del 5 % o mayor en el valor de
progreso o han pasado más de 30 segundos desde el último
evento (latido). No se garantiza que el valor de progreso se
inicie en el 0 %, o que alcance el 100 %, ni tampoco que
aumente a una velocidad constante a lo largo del tiempo. No
debe utilizar este evento para determinar si se ha completado
el procesamiento; en su lugar, utilice los eventos de cambio de
estado.

Consulte los Ejemplos de esquema siguientes.

Tipos de eventos en directo


Media Services emite los tipos de eventos en directo que se describen a continuación. Existen dos categorías para
los eventos en directo : eventos a nivel de transmisión y eventos a nivel de pista.
Eventos de nivel de transmisión
Los eventos de nivel de transmisión se generan en función de la transmisión o conexión. Cada evento tiene un
parámetro StreamId que identifica la conexión o la transmisión. Cada transmisión o conexión tiene una o más
pistas de diferentes tipos. Por ejemplo, una conexión de un codificador puede tener una pista de audio y cuatro
pistas de vídeo. Los tipos de evento de transmisión son:
T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se rechazó el intento de conexión del codificador.

[Link] El codificador se conectó al evento en directo.

[Link] El codificador se desconecta.

Consulte los Ejemplos de esquema siguientes.


Eventos de nivel de seguimiento
Los eventos de nivel de seguimiento se generan por pista.

NOTE
Todos los eventos de nivel de seguimiento se generan después de conectarse un codificador en directo.

Los tipos de evento de nivel de seguimiento son:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] El servidor multimedia elimina el fragmento de datos porque


es demasiado tarde o porque tiene una marca de tiempo
superpuesta (la marca de tiempo del nuevo fragmento de
datos es menor que el tiempo de finalización del fragmento de
datos anterior).

[Link] El servidor multimedia recibe el primer fragmento de datos de


cada pista en la transmisión o la conexión.

[Link] El servidor multimedia detecta que las transmisiones de audio


y vídeo no están sincronizadas. Se usa como advertencia
porque la experiencia del usuario no se verá afectada.

[Link] El servidor multimedia detecta que cualquiera de las dos


transmisiones de vídeo provenientes del codificador externo
no está sincronizada. Se usa como advertencia porque la
experiencia del usuario no se verá afectada.

[Link] Se publica cada 20 segundos para cada pista cuando se está


ejecutando el evento en directo. Proporciona resumen de
mantenimiento de la ingesta.

Después de conectarse inicialmente el codificador, el evento de


latido continúa emitiéndose cada 20 seg. independientemente
de si el codificador sigue conectado o no.

[Link] El servidor multimedia detecta una discontinuidad en la pista


entrante.

Consulte los Ejemplos de esquema siguientes.

Ejemplos de esquema de eventos


JobStateChange
En el ejemplo siguiente, se muestra el esquema de un evento JobStateChange :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "[Link]",
"eventTime": "2018-04-20T21:26:13.8978772",
"id": "b9d38923-9210-4c2b-958f-0054467d4dd7",
"data": {
"previousState": "Processing",
"state": "Finished"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

previousState string El estado del trabajo antes del evento.

state string El nuevo estado del trabajo que se


notifica en este evento. Por ejemplo,
"Programado: el trabajo está listo para
comenzar" o "Finalizado: el trabajo ha
finalizado".

Donde el estado del trabajo puede ser uno de los valores siguientes: Queued, Scheduled, Processing, Finished,
Error, Canceled, Canceling.

NOTE
Queued solo estará presente en la propiedad previousState pero no en la propiedad state.

JobScheduled, JobProcessing, JobCanceling


Para cada cambio de estado de trabajo no final (por ejemplo, JobScheduled, JobProcessing y JobCanceling), el
esquema de ejemplo tiene un aspecto similar al siguiente:

[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "[Link]",
"eventTime": "2018-10-12T16:12:18.0839935",
"id": "a0a6efc8-f647-4fc2-be73-861fa25ba2db",
"data": {
"previousState": "Scheduled",
"state": "Processing",
"correlationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
JobFinished, JobCanceled, JobErrored
Para cada cambio de estado de trabajo final (por ejemplo, JobFinished, JobCanceled y JobErrored), el esquema de
ejemplo tiene un aspecto similar al siguiente:

[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "[Link]",
"eventTime": "2018-10-12T16:25:56.4115495",
"id": "9e07e83a-dd6e-466b-a62f-27521b216f2a",
"data": {
"outputs": [
{
"@[Link]": "#[Link]",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 100,
"state": "Finished"
}
],
"previousState": "Processing",
"state": "Finished",
"correlationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

outputs Array Permite obtener las salidas del trabajo.

JobOutputStateChange
En este ejemplo se muestra el esquema del evento JobOutputStateChange :
[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "[Link]",
"eventTime": "2018-10-12T16:25:56.0242854",
"id": "dde85f46-b459-4775-b5c7-befe8e32cf90",
"data": {
"previousState": "Processing",
"output": {
"@[Link]": "#[Link]",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 100,
"state": "Finished"
},
"jobCorrelationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

JobOutputScheduled, JobOutputProcessing, JobOutputFinished, JobOutputCanceling, JobOutputCanceled,


JobOutputErrored
Para cada cambio de estado JobOutput, el esquema de ejemplo tiene un aspecto similar al siguiente:

[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "[Link]",
"eventTime": "2018-10-12T16:12:18.0061141",
"id": "f1fd5338-1b6c-4e31-83c9-cd7c88d2aedb",
"data": {
"previousState": "Scheduled",
"output": {
"@[Link]": "#[Link]",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 0,
"state": "Processing"
},
"jobCorrelationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

JobOutputProgress
El esquema de ejemplo es similar al siguiente:
[{
"topic": "/subscriptions/<subscription-
id>/resourceGroups/belohGroup/providers/[Link]/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/job-5AB6DE32",
"eventType": "[Link]",
"eventTime": "2018-12-10T18:20:12.1514867",
"id": "00000000-0000-0000-0000-000000000000",
"data": {
"jobCorrelationData": {
"TestKey1": "TestValue1",
"testKey2": "testValue2"
},
"label": "VideoAnalyzerPreset_0",
"progress": 86
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

LiveEventConnectionRejected
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventConnectionRejected :

[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaServices/<account-name>",
"subject": "/LiveEvents/MyLiveEvent1",
"eventType": "[Link]",
"eventTime": "2018-01-16T01:57:26.005121Z",
"id": "b303db59-d5c1-47eb-927a-3650875fded1",
"data": {
"streamId":"Mystream1",
"ingestUrl": "[Link]
"encoderIp": "[Link]",
"encoderPort": 52859,
"resultCode": "MPE_INGEST_CODEC_NOT_SUPPORTED"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

streamId string Identificador de la transmisión o la


conexión. El codificador o el cliente es
responsable de agregar este id. en la
URL de introducción.

ingestUrl string Introducir la dirección URL que


proporcionó el evento en directo.

encoderIp string Dirección IP del codificador.

encoderPort string Puerto del codificador de donde


procede esta transmisión.
P RO P IEDA D T IP O DESC RIP C IÓ N

resultCode string El motivo por el que se rechazó la


conexión. En la tabla siguiente se
muestran los códigos de resultados:

Puede encontrar los códigos de resultado de error en Códigos de error de eventos en directo de Media Services.
LiveEventEncoderConnected
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventEncoderConnected :

[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-07T23:08:09.1710643",
"id": "<id>",
"data": {
"ingestUrl": "[Link]
"streamId": "15864-stream0",
"encoderIp": "[Link]",
"encoderPort": "27485"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

streamId string Identificador de la transmisión o la


conexión. El codificador o el cliente es
responsable de proporcionar este id. en
la URL de introducción.

ingestUrl string Introducir la dirección URL que


proporcionó el evento en directo.

encoderIp string Dirección IP del codificador.

encoderPort string Puerto del codificador de donde


procede esta transmisión.

LiveEventEncoderDisconnected
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventEncoderDisconnected :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-07T23:08:09.1710872",
"id": "<id>",
"data": {
"ingestUrl": "[Link]
"streamId": "15864-stream0",
"encoderIp": "[Link]",
"encoderPort": "27485",
"resultCode": "S_OK"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

streamId string Identificador de la transmisión o la


conexión. El codificador o el cliente es
responsable de agregar este id. en la
URL de introducción.

ingestUrl string Introducir la dirección URL que


proporcionó el evento en directo.

encoderIp string Dirección IP del codificador.

encoderPort string Puerto del codificador de donde


procede esta transmisión.

resultCode string La razón por la cual el codificador se


desconecta. Podría ser un cierre estable
o un error. En la tabla siguiente se
muestran los códigos de resultados:

Puede encontrar los códigos de resultado de error en Códigos de error de eventos en directo de Media Services.
Los códigos de resultado del cierre estable son:

C Ó DIGO DE RESULTA DO DESC RIP C IÓ N

S_OK El codificador se desconectó correctamente.

MPE_CLIENT_TERMINATED_SESSION Codificador desconectado (RTMP).

MPE_CLIENT_DISCONNECTED Codificador desconectado (FMP4).

MPI_REST_API_CHANNEL_RESET Se recibió el comando de restablecimiento de canal.

MPI_REST_API_CHANNEL_STOP Se recibió el comando de parada de canal.


C Ó DIGO DE RESULTA DO DESC RIP C IÓ N

MPI_REST_API_CHANNEL_STOP Canal en mantenimiento.

MPI_STREAM_HIT_EOF La transmisión EOF que envía el codificador.

LiveEventIncomingDataChunkDropped
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventIncomingDataChunkDropped :

[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaServices/<account-name>",
"subject": "/LiveEvents/MyLiveEvent1",
"eventType": "[Link]",
"eventTime": "2018-01-16T01:57:26.005121Z",
"id": "03da9c10-fde7-48e1-80d8-49936f2c3e7d",
"data": {
"trackType": "Video",
"trackName": "Video",
"bitrate": 300000,
"timestamp": 36656620000,
"timescale": 10000000,
"resultCode": "FragmentDrop_OverlapTimestamp"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

trackType string Tipo de pista (audio/vídeo).

trackName string Nombre de la pista.

bitrate integer Velocidad de bits de la pista.

timestamp string Marca de tiempo del fragmento de


datos proporcionado.

timescale string Escala temporal de la marca de tiempo.

resultCode string Razón del fragmento de datos


proporcionado.
FragmentDrop_OverlapTimestamp
o
FragmentDrop_NonIncreasingTime
stamp .

LiveEventIncomingStreamReceived
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventIncomingStreamReceived :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-07T23:08:10.5069288Z",
"id": "7f939a08-320c-47e7-8250-43dcfc04ab4d",
"data": {
"ingestUrl": "[Link]
[Link]/[Link]/Streams(15864-stream0)15864-stream0",
"trackType": "video",
"trackName": "video",
"bitrate": 2962000,
"encoderIp": "[Link]",
"encoderPort": "27485",
"timestamp": "15336831655032322",
"duration": "20000000",
"timescale": "10000000"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

trackType string Tipo de pista (audio/vídeo).

trackName string Nombre de la pista (lo puede


proporcionar el codificador o, en el caso
de RTMP, el servidor se genera en
formato TrackType_Bitrate).

bitrate integer Velocidad de bits de la pista.

ingestUrl string Introducir la dirección URL que


proporcionó el evento en directo.

encoderIp string Dirección IP del codificador.

encoderPort string Puerto del codificador de donde


procede esta transmisión.

timestamp string Primera marca de tiempo del fragmento


de datos recibido.

timescale string Escala temporal en la que se representa


la marca de tiempo.

LiveEventIncomingStreamsOutOfSync
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventIncomingStreamsOutOfSync :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-10T02:26:20.6269183Z",
"id": "b9d38923-9210-4c2b-958f-0054467d4dd7",
"data": {
"minLastTimestamp": "319996",
"typeOfStreamWithMinLastTimestamp": "Audio",
"maxLastTimestamp": "366000",
"typeOfStreamWithMaxLastTimestamp": "Video",
"timescaleOfMinLastTimestamp": "10000000",
"timescaleOfMaxLastTimestamp": "10000000"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

minLastTimestamp string Mínimo de las últimas marcas de


tiempo entre todas las pistas (audio o
vídeo).

typeOfTrackWithMinLastTimestamp string Tipo de pista (audio o vídeo) con la


última marca de tiempo mínima.

maxLastTimestamp string Máximo de las todas las marcas de


tiempo entre todas las pistas (audio o
vídeo).

typeOfTrackWithMaxLastTimestamp string Tipo de pista (audio o vídeo) con la


última marca de tiempo máxima.

timescaleOfMinLastTimestamp string Permite obtener la escala temporal en la


que se representa “MinLastTimestamp”.

timescaleOfMaxLastTimestamp string Permite obtener la escala temporal en la


que se representa “MaxLastTimestamp”.

LiveEventIncomingVideoStreamsOutOfSync
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventIncomingVideoStreamsOutOfSync :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaServices/<account-name>",
"subject": "/LiveEvents/LiveEvent1",
"eventType": "[Link]",
"eventTime": "2018-01-16T01:57:26.005121Z",
"id": "6dd4d862-d442-40a0-b9f3-fc14bcf6d750",
"data": {
"firstTimestamp": "2162058216",
"firstDuration": "2000",
"secondTimestamp": "2162057216",
"secondDuration": "2000",
"timescale": "10000000"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

firstTimestamp string Marca de tiempo recibida para una de


las pistas o niveles de calidad de tipo de
vídeo.

firstDuration string Duración del fragmento de datos con la


primera marca de tiempo.

secondTimestamp string Marca de tiempo recibida para algún


otro nivel de pista o calidad del tipo de
vídeo.

secondDuration string Duración del fragmento de datos con la


segunda marca de tiempo.

timescale string Escala de tiempo de marcas de tiempo y


duración.

LiveEventIngestHeartbeat
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventIngestHear tbeat :
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-07T23:17:57.4610506",
"id": "7f450938-491f-41e1-b06f-c6cd3965d786",
"data": {
"trackType": "audio",
"trackName": "audio",
"bitrate": 160000,
"incomingBitrate": 155903,
"lastTimestamp": "15336837535253637",
"timescale": "10000000",
"overlapCount": 0,
"discontinuityCount": 0,
"nonincreasingCount": 0,
"unexpectedBitrate": false,
"state": "Running",
"healthy": true
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

trackType string Tipo de pista (audio/vídeo).

trackName string Nombre de la pista (lo puede


proporcionar el codificador o, en el caso
de RTMP, el servidor se genera en
formato TrackType_Bitrate).

bitrate integer Velocidad de bits de la pista.

incomingBitrate integer Velocidad de bits calculada en función


de los fragmentos de datos
procedentes del codificador.

lastTimestamp string Última marca de tiempo recibida para


una pista en los últimos 20 segundos.

timescale string Escala temporal en la que se expresan


las marcas de tiempo.

overlapCount integer Número de fragmentos de datos que


tienen marcas de tiempo superpuestas
en los últimos 20 segundos.

discontinuityCount integer Número de interrupciones observada


en los últimos 20 segundos.
P RO P IEDA D T IP O DESC RIP C IÓ N

nonIncreasingCount integer Número de fragmentos de datos con


marcas de tiempo en el pasado que se
recibieron en los últimos 20 segundos.

unexpectedBitrate bool Si las velocidades de bits esperadas y


reales superan el límite permitido en los
últimos 20 segundos. Es "true" si, y solo
si, la velocidad de bits incomingBitrate
>= 2* O incomingBitrate <= bitrate/2
O IncomingBitrate = 0.

state string Estado del evento en directo.

healthy bool Indica si la ingesta está en buen estado


según los recuentos y las marcas. Estará
en buen estado si este tiene el valor
"true" y si overlapCount = 0 &&
discontinuityCount = 0 &&
nonIncreasingCount = 0 &&
unexpectedBitrate = false.

LiveEventTrackDiscontinuityDetected
En el ejemplo siguiente, se muestra el esquema de un evento LiveEventTrackDiscontinuityDetected :

[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-
name>/providers/[Link]/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"eventType": "[Link]",
"eventTime": "2018-08-07T23:18:06.1270405Z",
"id": "5f4c510d-5be7-4bef-baf0-64b828be9c9b",
"data": {
"trackName": "video",
"previousTimestamp": "15336837615032322",
"trackType": "video",
"bitrate": 2962000,
"newTimestamp": "15336837619774273",
"discontinuityGap": "575284",
"timescale": "10000000"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

trackType string Tipo de pista (audio/vídeo).

trackName string Nombre de la pista (lo puede


proporcionar el codificador o, en el caso
de RTMP, el servidor se genera en
formato TrackType_Bitrate).
P RO P IEDA D T IP O DESC RIP C IÓ N

bitrate integer Velocidad de bits de la pista.

previousTimestamp string Marca de tiempo del fragmento


anterior.

newTimestamp string Marca de tiempo del fragmento actual.

discontinuityGap string Intervalo entre las dos marcas de


tiempo anteriores.

timescale string Escala temporal en la que se


representan tanto la marca de tiempo
como el intervalo de discontinuidad.

Propiedades personalizadas del evento


Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string El tema EventGrid. Esta propiedad tiene


el id. de recurso de la cuenta de Media
Services.

subject string La ruta de acceso del recurso del canal


de Media Services en la cuenta de
Media Services. Al concatenar los
temas, obtendrá la identificación del
recurso para el trabajo.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos. Por
ejemplo,
"[Link]".

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos del evento de Media Services.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

Pasos siguientes
Regístrese para los eventos de cambio de estado del trabajo
Consulte también
EventGrid .NET SDK that includes Media Service events (SDK de .NET en EventGrid que incluye eventos de
Media Services)
Definitions of Media Services events (Definición de eventos de Media Services)
Códigos de error de eventos en directo de Media Services
Grupo de recursos de Azure como origen de Event
Grid
04/08/2020 • 11 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de grupo de recursos. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.
Las suscripciones y los grupos de recursos de Azure emiten los mismos tipos de eventos. Los tipos de evento
están relacionados con acciones o cambios en los recursos. La diferencia principal es que los grupos de recursos
emiten eventos para los recursos en el grupo de recursos y las suscripciones de Azure emiten eventos para los
recursos a través de la suscripción.
Los eventos de recursos se crean para las operaciones PUT, PATCH, POST y DELETE que se envían a
[Link] . Las operaciones GET no crean eventos. Las operaciones enviadas al plano de datos (como
[Link] ) no crean eventos. Los eventos de acción proporcionan datos de evento para
operaciones como enumerar las claves para un recurso.
Cuando se suscribe a eventos para un grupo de recursos, el punto de conexión recibe todos los eventos de ese
grupo de recursos. Los eventos pueden incluir el evento que desea ver, como la actualización de una máquina
virtual, pero también los eventos que quizá no son importantes para usted, como escribir una nueva entrada en el
historial de implementación. Puede recibir todos los eventos en el punto de conexión y escribir código que
procese los eventos que quiere administrar. O bien, puede establecer un filtro al crear la suscripción al evento.
Para controlar los eventos mediante programación, puede ordenarlos examinando el valor operationName . Por
ejemplo, el punto de conexión de eventos podría procesar solamente eventos para las operaciones que son
iguales a [Link]/virtualMachines/write o [Link]/storageAccounts/write .
El asunto del evento es el identificador de recurso correspondiente al recurso que es el destino de la operación.
Para filtrar eventos para un recurso, proporcione ese identificador de recurso creando la suscripción de eventos.
Para filtrar por un tipo de recurso, use un valor en el formato siguiente:
/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/[Link]/virtualMachines

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Los grupos de recursos emiten eventos de administración desde Azure Resource Manager, como cuando se crea
una máquina virtual o se elimina una cuenta de almacenamiento.

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se cancela la acción en el recurso.

[Link] Se genera cuando hay un error en la acción en el recurso.

[Link] Se genera cuando la acción en el recurso es correcta.

[Link] Se genera cuando se cancela la operación de eliminación. Este


evento sucede cuando se cancela la implementación de una
plantilla.
T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando hay un error en la operación de


eliminación.

[Link] Se genera cuando la operación de eliminación es correcta.

[Link] Se genera cuando se cancela la operación de creación o


actualización.

[Link] Se genera cuando hay un error en la operación de creación o


actualización.

[Link] Se genera cuando la operación de creación o actualización es


correcta.

Evento de ejemplo
En el ejemplo siguiente se muestra el esquema para un evento ResourceWriteSuccess . Se usa el mismo
esquema para eventos ResourceWriteFailure y ResourceWriteCancel con valores diferentes para eventType .
[{
"subject": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"eventType": "[Link]",
"eventTime": "2018-07-19T18:38:04.6117357Z",
"id": "4db48cba-50a2-455a-93b4-de41a3b5b7f6",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"action": "[Link]/storageAccounts/write",
"evidence": {
"role": "Subscription Admin"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"_claim_names": "{\"groups\":\"src1\"}",
"_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
"[Link] "1",
"aio": "{token}",
"[Link] "rsa,mfa",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{ID}",
"e_exp": "{expiration}",
"[Link] "{last-name}",
"[Link] "{first-name}",
"ipaddr": "{IP-address}",
"name": "{full-name}",
"[Link] "{ID}",
"onprem_sid": "{ID}",
"puid": "{ID}",
"[Link] "user_impersonation",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{user-name}",
"[Link] "{user-name}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"operationName": "[Link]/storageAccounts/write",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}"
}]

En el ejemplo siguiente se muestra el esquema para un evento ResourceDeleteSuccess . Se usa el mismo


esquema para eventos ResourceDeleteFailure y ResourceDeleteCancel con valores diferentes para
eventType .
[{
"subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"eventType": "[Link]",
"eventTime": "2018-07-19T19:24:12.763881Z",
"id": "19a69642-1aad-4a96-a5ab-8d05494513ce",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"action": "[Link]/storageAccounts/delete",
"evidence": {
"role": "Subscription Admin"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"_claim_names": "{\"groups\":\"src1\"}",
"_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
"[Link] "1",
"aio": "{token}",
"[Link] "rsa,mfa",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{ID}",
"e_exp": "262800",
"[Link] "{last-name}",
"[Link] "{first-name}",
"ipaddr": "{IP-address}",
"name": "{full-name}",
"[Link] "{ID}",
"onprem_sid": "{ID}",
"puid": "{ID}",
"[Link] "user_impersonation",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{user-name}",
"[Link] "{user-name}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"httpRequest": {
"clientRequestId": "{ID}",
"clientIpAddress": "{IP-address}",
"method": "DELETE",
"url": "[Link]
group}/providers/[Link]/storageAccounts/{storage-name}?api-version=2018-02-01"
},
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"operationName": "[Link]/storageAccounts/delete",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}"
}]
En el ejemplo siguiente se muestra el esquema para un evento ResourceActionSuccess . Se usa el mismo
esquema para eventos ResourceActionFailure y ResourceActionCancel con valores diferentes para
eventType .

[{
"subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"eventType": "[Link]",
"eventTime": "2018-10-08T22:46:22.6022559Z",
"id": "{ID}",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"action": "[Link]/namespaces/AuthorizationRules/listKeys/action",
"evidence": {
"role": "Contributor",
"roleAssignmentScope": "/subscriptions/{subscription-id}",
"roleAssignmentId": "{ID}",
"roleDefinitionId": "{ID}",
"principalId": "{ID}",
"principalType": "ServicePrincipal"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"aio": "{token}",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{URL}",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{ID}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"httpRequest": {
"clientRequestId": "{ID}",
"clientIpAddress": "{IP-address}",
"method": "POST",
"url": "[Link]
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey/listKe
ys?api-version=2017-04-01"
},
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"operationName": "[Link]/namespaces/AuthorizationRules/listKeys/action",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:
P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo
no se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de grupo de recursos.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

authorization object Autorización solicitada para la


operación.

claims object Propiedades de las notificaciones. Para


más información, consulte la
especificación de JWT.

correlationId string Identificador de operación para


solucionar el problema.

httpRequest object Detalles de la operación. Este objeto


solo se incluye al actualizar un recurso
existente o eliminar un recurso.

resourceProvider string Proveedor de recursos para la


operación.

resourceUri string URI del recurso en la operación.

operationName string Operación que se realizó.

status string Estado de la operación.


P RO P IEDA D T IP O DESC RIP C IÓ N

subscriptionId string Identificador de suscripción del recurso.

tenantId string Identificador de inquilino del recurso.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Tutorial: supervisión de los cambios en máquinas virtuales con Una aplicación lógica supervisa los cambios realizados en una
Azure Event Grid y Logic Apps máquina virtual y envía mensajes de correo electrónico sobre
dichos cambios.

CLI de Azure: suscripción a eventos para un grupo de Script de ejemplo que se suscribe a eventos para un grupo de
recursos recursos. Envía eventos a un webhook.

CLI de Azure: suscripción a eventos de un grupo de recursos Script de ejemplo que se suscribe a eventos para un grupo de
y filtrado de los eventos de un recurso recursos y filtra los eventos para un recurso.

PowerShell: suscripción a eventos para un grupo de recursos Script de ejemplo que se suscribe a eventos para un grupo de
recursos. Envía eventos a un webhook.

PowerShell: suscripción a eventos para un grupo de recursos y Script de ejemplo que se suscribe a eventos para un grupo de
filtrado de los eventos para un recurso recursos y filtra los eventos para un recurso.

Plantilla de Resource Manager: suscripción de recursos Se suscribe a eventos para una suscripción o grupo de
recursos de Azure. Envía eventos a un webhook.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Azure Service Bus como origen de Event Grid
04/08/2020 • 5 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de Service Bus. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Service Bus emite los siguientes tipos de eventos:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Este evento se genera si hay mensajes activos en una cola o


suscripción y no hay receptores a la escucha.

[Link] Este evento se genera si hay mensajes activos en una cola de


ener mensajes fallidos y no hay receptores a la escucha.

Evento de ejemplo
En el ejemplo siguiente se muestra el esquema de mensajes activos sin ningún evento de agentes de escucha:

[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-
rg}/providers/[Link]/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "[Link]",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "[Link]
topic}/subscriptions/{your-service-bus-subscription}/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]

El esquema para un evento de cola de mensajes fallidos es similar:


[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-
rg}/providers/[Link]/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "[Link]",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "[Link]
topic}/subscriptions/{your-service-bus-subscription}/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de Blob Storage.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N


P RO P IEDA D T IP O DESC RIP C IÓ N

namespaceName string El espacio de nombres de Service Bus


donde se encuentra el recurso.

requestUri string El URI en el que la cola específica o


suscripción específicos emite el evento.

entityType string El tipo de entidad de Service Bus que


emite eventos (cola o suscripción).

queueName string La cola con mensajes activos si se


suscribe a una cola. El valor null si se
usan temas o suscripciones.

topicName string El tema al que pertenece la suscripción


de Service Bus con mensajes activos. El
valor null si se usa una cola.

subscriptionName string La suscripción de Service Bus con


mensajes activos. El valor null si se usa
una cola.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Tutorial: Ejemplos de integración de Azure Service Bus en Event Grid envía mensajes de temas de Service Bus a la
Azure Event Grid aplicación de función y a la aplicación lógica.

Integración de Azure Service Bus en Event Grid Información general de la integración de Service Bus con
Event Grid.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Para obtener más información sobre cómo usar Azure Event Grid con Service Bus, consulte Introducción a la
integración de Azure Service Bus en Azure Event Grid.
Pruebe a recibir eventos de Service Bus con Functions o Logic Apps.
Esquema de eventos de Azure Event Grid para
SignalR Service
04/08/2020 • 4 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de SignalR Service. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid. También proporciona
una lista de inicios rápidos y tutoriales para usar Azure SignalR como un origen de eventos.

Esquema de eventos de Event Grid


Tipos de eventos disponibles
SignalR Service emite los siguientes tipos de eventos:

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando una conexión de cliente está conectada.

[Link] Se genera cuando una conexión de cliente está desconectada.

Evento de ejemplo
En el ejemplo siguiente, se muestra el esquema de un evento de dispositivo conectado en la conexión de cliente:

[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/signalr-
rg/providers/[Link]/SignalR/signalr-resource",
"subject": "/hub/chat",
"eventType": "[Link]",
"eventTime": "2019-06-10T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"timestamp": "2019-06-10T18:41:00.9584103Z",
"hubName": "chat",
"connectionId": "crH0uxVSvP61p5wkFY1x1A",
"userId": "user-eymwyo23"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

El esquema de un evento de dispositivo desconectado en la conexión de cliente es parecido:


[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/signalr-
rg/providers/[Link]/SignalR/signalr-resource",
"subject": "/hub/chat",
"eventType": "[Link]",
"eventTime": "2019-06-10T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"timestamp": "2019-06-10T18:41:00.9584103Z",
"hubName": "chat",
"connectionId": "crH0uxVSvP61p5wkFY1x1A",
"userId": "user-eymwyo23",
"errorMessage": "Internal server error."
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:

P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos de eventos de SignalR Service.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

timestamp string La hora de generación del evento en


función de la hora UTC del proveedor.
P RO P IEDA D T IP O DESC RIP C IÓ N

hubName string El centro al que pertenece la conexión


de cliente.

connectionId string El identificador único de la conexión de


cliente.

userId string El identificador de usuario definido en la


notificación.

errorMessage string El error que provoca el evento de


dispositivo desconectado de la
conexión.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Reaccionar a eventos de Azure SignalR Service mediante Event Información general sobre la integración de Azure SignalR
Grid Service con Event Grid.

Cómo enviar eventos de Azure SignalR Service a Event Grid Muestra cómo enviar eventos de Azure SignalR Service a una
aplicación a través de Event Grid.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Suscripción de Azure como origen de Event Grid
04/08/2020 • 10 minutes to read • Edit Online

En este artículo se proporcionan las propiedades y los esquemas de los eventos de suscripción de Azure. Para una
introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.
Las suscripciones y los grupos de recursos de Azure emiten los mismos tipos de eventos. Los tipos de evento están
relacionados con acciones o cambios en los recursos. La diferencia principal es que los grupos de recursos emiten
eventos para los recursos en el grupo de recursos y las suscripciones de Azure emiten eventos para los recursos a
través de la suscripción.
Los eventos de recursos se crean para las operaciones PUT, PATCH, POST y DELETE que se envían a
[Link] . Las operaciones GET no crean eventos. Las operaciones enviadas al plano de datos (como
[Link] ) no crean eventos. Los eventos de acción proporcionan datos de evento para
operaciones como enumerar las claves para un recurso.
Cuando se suscribe a eventos para una suscripción de Azure, el punto de conexión recibe todos los eventos de esa
suscripción. Los eventos pueden incluir el evento que desea ver, como la actualización de una máquina virtual,
pero también los eventos que quizá no son importantes para usted, como escribir una nueva entrada en el
historial de implementación. Puede recibir todos los eventos en el punto de conexión y escribir código que procese
los eventos que quiere administrar. O bien, puede establecer un filtro al crear la suscripción al evento.
Para controlar los eventos mediante programación, puede ordenarlos examinando el valor operationName . Por
ejemplo, el punto de conexión de eventos podría procesar solamente eventos para las operaciones que son iguales
a [Link]/virtualMachines/write o [Link]/storageAccounts/write .
El asunto del evento es el identificador de recurso correspondiente al recurso que es el destino de la operación.
Para filtrar eventos para un recurso, proporcione ese identificador de recurso creando la suscripción de eventos.
Para filtrar por un tipo de recurso, use un valor en el formato siguiente:
/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/[Link]/virtualMachines

Esquema de eventos de Event Grid


Tipos de eventos disponibles
Las suscripciones de Azure emiten eventos de administración desde Azure Resource Manager, como cuando se
crea una máquina virtual o se elimina una cuenta de almacenamiento.

T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando se cancela la acción en el recurso.

[Link] Se genera cuando hay un error en la acción en el recurso.

[Link] Se genera cuando la acción en el recurso es correcta.

[Link] Se genera cuando se cancela la operación de eliminación. Este


evento sucede cuando se cancela la implementación de una
plantilla.

[Link] Se genera cuando hay un error en la operación de eliminación.


T IP O DE EVEN TO DESC RIP C IÓ N

[Link] Se genera cuando la operación de eliminación es correcta.

[Link] Se genera cuando se cancela la operación de creación o


actualización.

[Link] Se genera cuando hay un error en la operación de creación o


actualización.

[Link] Se genera cuando la operación de creación o actualización es


correcta.

Evento de ejemplo
En el ejemplo siguiente se muestra el esquema para un evento ResourceWriteSuccess . Se usa el mismo
esquema para eventos ResourceWriteFailure y ResourceWriteCancel con valores diferentes para eventType .
[{
"subject": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"eventType": "[Link]",
"eventTime": "2018-07-19T18:38:04.6117357Z",
"id": "4db48cba-50a2-455a-93b4-de41a3b5b7f6",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"action": "[Link]/storageAccounts/write",
"evidence": {
"role": "Subscription Admin"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"_claim_names": "{\"groups\":\"src1\"}",
"_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
"[Link] "1",
"aio": "{token}",
"[Link] "rsa,mfa",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{ID}",
"e_exp": "{expiration}",
"[Link] "{last-name}",
"[Link] "{first-name}",
"ipaddr": "{IP-address}",
"name": "{full-name}",
"[Link] "{ID}",
"onprem_sid": "{ID}",
"puid": "{ID}",
"[Link] "user_impersonation",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{user-name}",
"[Link] "{user-name}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourcegroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"operationName": "[Link]/storageAccounts/write",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}"
}]

En el ejemplo siguiente se muestra el esquema para un evento ResourceDeleteSuccess . Se usa el mismo


esquema para eventos ResourceDeleteFailure y ResourceDeleteCancel con valores diferentes para
eventType .
[{
"subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"eventType": "[Link]",
"eventTime": "2018-07-19T19:24:12.763881Z",
"id": "19a69642-1aad-4a96-a5ab-8d05494513ce",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"action": "[Link]/storageAccounts/delete",
"evidence": {
"role": "Subscription Admin"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"_claim_names": "{\"groups\":\"src1\"}",
"_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
"[Link] "1",
"aio": "{token}",
"[Link] "rsa,mfa",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{ID}",
"e_exp": "262800",
"[Link] "{last-name}",
"[Link] "{first-name}",
"ipaddr": "{IP-address}",
"name": "{full-name}",
"[Link] "{ID}",
"onprem_sid": "{ID}",
"puid": "{ID}",
"[Link] "user_impersonation",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{user-name}",
"[Link] "{user-name}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"httpRequest": {
"clientRequestId": "{ID}",
"clientIpAddress": "{IP-address}",
"method": "DELETE",
"url": "[Link]
group}/providers/[Link]/storageAccounts/{storage-name}?api-version=2018-02-01"
},
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-name}",
"operationName": "[Link]/storageAccounts/delete",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}"
}]
En el ejemplo siguiente se muestra el esquema para un evento ResourceActionSuccess . Se usa el mismo
esquema para eventos ResourceActionFailure y ResourceActionCancel con valores diferentes para
eventType .

[{
"subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"eventType": "[Link]",
"eventTime": "2018-10-08T22:46:22.6022559Z",
"id": "{ID}",
"data": {
"authorization": {
"scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"action": "[Link]/namespaces/AuthorizationRules/listKeys/action",
"evidence": {
"role": "Contributor",
"roleAssignmentScope": "/subscriptions/{subscription-id}",
"roleAssignmentId": "{ID}",
"roleDefinitionId": "{ID}",
"principalId": "{ID}",
"principalType": "ServicePrincipal"
}
},
"claims": {
"aud": "{audience-claim}",
"iss": "{issuer-claim}",
"iat": "{issued-at-claim}",
"nbf": "{not-before-claim}",
"exp": "{expiration-claim}",
"aio": "{token}",
"appid": "{ID}",
"appidacr": "2",
"[Link] "{URL}",
"[Link] "{ID}",
"[Link] "{ID}",
"[Link] "{ID}",
"uti": "{ID}",
"ver": "1.0"
},
"correlationId": "{ID}",
"httpRequest": {
"clientRequestId": "{ID}",
"clientIpAddress": "{IP-address}",
"method": "POST",
"url": "[Link]
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey/listKe
ys?api-version=2017-04-01"
},
"resourceProvider": "[Link]",
"resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
"operationName": "[Link]/namespaces/AuthorizationRules/listKeys/action",
"status": "Succeeded",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}"
},
"dataVersion": "2",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}"
}]

Propiedades de evento
Un evento tiene los siguientes datos de nivel superior:
P RO P IEDA D T IP O DESC RIP C IÓ N

topic string Ruta de acceso completa a los recursos


del origen del evento. En este campo no
se puede escribir. Event Grid
proporciona este valor.

subject string Ruta al asunto del evento definida por


el anunciante.

eventType string Uno de los tipos de eventos registrados


para este origen de eventos.

eventTime string La hora de generación del evento en


función de la hora UTC del proveedor.

id string Identificador único para el evento

datos object Datos del evento de suscripción.

dataVersion string Versión del esquema del objeto de


datos. El publicador define la versión del
esquema.

metadataVersion string Versión del esquema de los metadatos


del evento. Event Grid define el
esquema de las propiedades de nivel
superior. Event Grid proporciona este
valor.

El objeto data tiene las siguientes propiedades:

P RO P IEDA D T IP O DESC RIP C IÓ N

authorization object Autorización solicitada para la


operación.

claims object Propiedades de las notificaciones. Para


más información, consulte la
especificación de JWT.

correlationId string Identificador de operación para


solucionar el problema.

httpRequest object Detalles de la operación. Este objeto


solo se incluye al actualizar un recurso
existente o eliminar un recurso.

resourceProvider string Proveedor de recursos para la


operación.

resourceUri string URI del recurso en la operación.

operationName string Operación que se realizó.

status string Estado de la operación.


P RO P IEDA D T IP O DESC RIP C IÓ N

subscriptionId string Identificador de suscripción del recurso.

tenantId string Identificador de inquilino del recurso.

Tutoriales y procedimientos
T ÍT ULO DESC RIP C IÓ N

Tutorial: Integración de Azure Automation con Event Grid y Cree una máquina virtual, que envía un evento. El evento
Microsoft Teams desencadena un runbook de Automation que etiqueta la
máquina virtual y genera un mensaje que se envía a un canal
de Equipos de Microsoft.

Suscripción a eventos mediante el portal Uso del portal para la suscripción a eventos desde una
suscripción de Azure.

CLI de Azure: suscripción a eventos desde una suscripción de Script de ejemplo que crea una suscripción de Event Grid para
Azure una suscripción de Azure y envía eventos a un webhook.

PowerShell: suscripción a eventos desde una suscripción de Script de ejemplo que crea una suscripción de Event Grid para
Azure una suscripción de Azure y envía eventos a un webhook.

Pasos siguientes
Para una introducción a Azure Event Grid, consulte el artículo de introducción a Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Temas del asociado en Azure Event Grid (versión
preliminar)
04/08/2020 • 2 minutes to read • Edit Online

Mediante el uso de los temas del asociado, puede conectar orígenes de eventos de terceros directamente a Azure
Event Grid. Esta integración le permite suscribirse a eventos de los asociados de la misma manera que se suscribe
a los eventos de los servicios de Azure.

Asociados disponibles
El primer asociado disponible mediante los temas del asociado de Event Grid es Auth0. El tema de asociado Auth0
se puede usar para conectar las cuentas de Auth0 y de Azure. La integración permite reaccionar a eventos de
Auth0 en tiempo real, así como registrarlos y supervisarlos.
Para probarlo, inicie sesión en su cuenta de Auth0 y cree una integración de Event Grid. Después de hacer clic en
Crear en Auth0, verá un tema Auth0 pendiente en su cuenta de Azure. Seleccione Activar y podrá crear
suscripciones a Event Grid para enrutar, filtrar y enviar los eventos de la misma manera que con cualquier otro
origen de eventos.

Precios
Los temas del asociado se cobran con la misma tarifa de operación que los temas del sistema.

Límites
Los temas del asociado se encuentran en versión preliminar pública. Durante la versión preliminar pública, los
temas del asociado están sujetos a los mismos límites que los temas del sistema y los temas personalizados.

¿Cómo ser un asociado de Event Grid?


La infraestructura creada para admitir esta versión hace que los nuevos asociados puedan integrar de forma fácil
y rápida sus funcionalidades de generación de eventos con Event Grid. Para más información, consulte la
documentación de incorporación de asociados.

Pasos siguientes
Tema del asociado Auth0
Cómo usar el tema del asociado Auth0
Convertirse en asociado de Event Grid
Temas de asociados de Auth0
04/08/2020 • 3 minutes to read • Edit Online

Auth0, la plataforma de identidad para desarrolladores de aplicaciones, proporciona a los desarrolladores y a las
empresas los pilares que necesitan para proteger sus aplicaciones.
El tema de asociados de Auth0 permite usar eventos que emite el sistema de Auth0 para llevar a cabo una serie de
tareas. Interactúe con los usuarios de maneras significativas después de la autenticación o automatice las tareas de
infraestructura y seguridad.
La integración le permite transmitir por secuencias los eventos de registro de Auth0 con alta confiabilidad en
Azure. Allí, puede consumir los eventos con sus recursos de Azure favoritos. Esta integración le permite reaccionar
a eventos, obtener información, supervisar problemas de seguridad e interactuar con otras canalizaciones de
datos eficaces.
En el caso de las organizaciones que usan Auth0 y Azure, esta integración permite integrar sin problemas los
datos en toda la pila.

Tipos de eventos disponibles


Encontrará la lista completa de los tipos de eventos disponibles de Auth0 y sus descripciones en este sitio web.

Casos de uso
Interacción con los usuarios
Proporcionar una experiencia de usuario segura es fundamental para reducir el abandono de clientes y
mantenerlos. Ofrezca experiencias de aplicación más personalizadas mediante eventos de Auth0 con Azure
Functions y Azure Logic Apps.
Descripción del comportamiento del usuario
Comprenda cuándo los usuarios acceden al producto, desde dónde inician sesión y los dispositivos que usan.
Desarrolle una descripción de las áreas del producto que más interesan realizando un seguimiento de estas
señales. Estas señales ayudan a determinar lo siguiente:
Los exploradores y dispositivos que se van a admitir.
Los idiomas en los que se va a localizar la aplicación.
Cuándo se producen los momentos máximos de tráfico.
Administración de datos del usuario
Mantener y auditar las acciones del usuario resulta fundamental para mantener la seguridad y cumplir las
siguientes normas del sector. La capacidad de editar, quitar o exportar los datos de usuario es cada vez más
importante para seguir las leyes de privacidad, como el Reglamento general de protección de datos (RGPD) de la
Unión Europea.
Protección de la aplicación
La combinación de procedimientos de supervisión de seguridad y respuesta a incidentes es importante cuando se
protege un sistema distribuido. Por este motivo, es importante mantener todos los datos en un mismo lugar y
supervisar toda la pila.

Pasos siguientes
Introducción a los temas de asociados
Procedimientos para usar el tema de asociado de Auth0
Documentación de Auth0
Convertirse en asociado de Event Grid
Incorporación como asociado de Azure Event Grid
04/08/2020 • 11 minutes to read • Edit Online

En este artículo se describe cómo usar de forma privada los recursos de asociados de Azure Event Grid y cómo
hacer que un tipo de tema de asociado esté disponible públicamente.
No necesita permisos especiales para empezar a usar los tipos de recursos de Event Grid asociados a la
publicación de eventos como asociado de Event Grid. De hecho, puede usarlos hoy mismo para publicar eventos
de forma privada en sus propias suscripciones a Azure, así como para probar el modelo de recursos si está
pensando en convertirse en asociado.

Convertirse en asociado de Event Grid


Si está interesado en convertirse en un asociado público de Event Grid, comience por rellenar este formulario. A
continuación, póngase en contacto con el equipo de Event Grid en GridPartner@[Link].

Funcionamiento de los temas de asociados


En los temas de asociados se toma la arquitectura existente que Event Grid ya utiliza para publicar eventos de
recursos de Azure, como Azure Storage y Azure IoT Hub, y hacer que esas herramientas estén disponibles
públicamente para que las use cualquier persona. De manera predeterminada, el uso de estas herramientas es
privado solo para su suscripción a Azure. Si quiere que los eventos estén disponibles públicamente, rellene el
formulario y póngase en contacto con el equipo de Event Grid.
Los temas de asociados le permiten publicar eventos en Azure Event Grid para el consumo multiinquilino.
Introducción a la incorporación y publicación de eventos
Flujo de asociados
1. Cree un inquilino de Azure si aún no tiene ninguno.
2. Use la CLI de Azure para crear una nueva instancia de Event Grid partnerRegistration . Este recurso incluye
información como el nombre para mostrar, la descripción, el URI de configuración, etc.

3. Cree uno o varios espacios de nombres de asociados en cada región en la que quiera publicar eventos. El
servicio Event Grid aprovisiona un punto de conexión de publicación (por ejemplo,
[Link] ) y las claves de acceso.

4. Proporcione una manera para que los clientes se registren en el sistema en el que quieran un tema de
asociado.
5. Póngase en contacto con el equipo de Event Grid si quiere que su tipo de tema de asociado pase a estar
disponible públicamente.
Flujo de clientes
1. El cliente visita Azure Portal para tomar nota del grupo de recursos y el identificador de la suscripción de
Azure en los que le gustaría que se creara el tema del asociado.
2. El cliente solicita un tema de asociado a través del sistema. En respuesta a esto, puede crear un túnel de
eventos para el espacio de nombres del asociado.
3. Event Grid crea un tema de asociado pendiente en el grupo de recursos y la suscripción de Azure del
cliente.

4. El cliente activa el tema de asociado a través de Azure Portal. Los eventos ahora podrán fluir desde su
servicio a la suscripción de Azure del cliente.
Modelo de recursos
El siguiente modelo de recursos es para los temas de asociados.
Registros de dispositivos
Recurso: partnerRegistrations
Usado por: Asociados
Descripción: captura los metadatos globales del asociado de software como servicio (por ejemplo, el
nombre, nombre para mostrar, descripción y URI de configuración).
La creación o actualización de un registro de asociado es una operación de autoservicio para los asociados.
Esta capacidad de autoservicio permite a los asociados compilar y probar el flujo completo.
Los clientes solo pueden detectar los registros de asociados aprobados por Microsoft.
Ámbito: creado en la suscripción de Azure del asociado. Los metadatos son visibles para los clientes
después de hacerse públicos.
Espacios de nombres de los asociados
Recurso: partnerNamespaces
Usado por: Asociados
Descripción: proporciona un recurso regional en el que publicar eventos de los clientes. Cada espacio de
nombres asociado tiene un punto de conexión de publicación y claves de autenticación. El espacio de nombres
también es la forma en que el asociado solicita un tema de asociado para un cliente determinado y enumera a
los clientes activos.
Ámbito: reside en la suscripción del asociado.
Canal de eventos
Recurso: partnerNamespaces/eventChannels
Usado por: Asociados
Descripción: los túneles de eventos son un reflejo del tema de asociado del cliente. Mediante la creación de un
túnel de eventos y la especificación del grupo de recursos y la suscripción a Azure del cliente en los metadatos,
indica a Event Grid que cree un tema de asociado para el cliente. Event Grid emitirá una llamada a ARM para
crear el elemento partnerTopic correspondiente en la suscripción del cliente. El tema del asociado se crea con
un estado "pendiente". Hay un vínculo uno a uno entre cada túnel de eventos y cada tema de asociado.
Ámbito: reside en la suscripción del asociado.
Temas de asociados
Recurso: partnerTopics
Usado por: Clientes
Descripción: los temas de asociados son similares a los temas personalizados y del sistema en Event Grid.
Cada tema de asociado está relacionado con un origen específico (por ejemplo, Contoso:myaccount ) y un
tipo de tema de asociado específico (por ejemplo, Contoso). Los clientes crean suscripciones a eventos en el
tema de asociado a fin de enrutar eventos a varios controladores de eventos.
Los clientes no pueden crear directamente este recurso. La única forma de crear un tema de asociado es a
través de una operación de asociado que crea un túnel de eventos.
Ámbito: reside en la suscripción del cliente.
Tipos de temas de asociado
Recurso: partnerTopicTypes
Usado por: Clientes
Descripción: los tipos de temas de asociados son tipos de recursos de todo el inquilino que permiten a los
clientes detectar la lista de tipos de temas de asociados aprobados. La dirección URL tiene el aspecto siguiente:
[Link]
Ámbito: Global

Publicación de eventos en Event Grid


Cuando crea un elemento de espacio de nombres de asociado en una región de Azure, obtiene un punto de
conexión regional y las claves de autenticación correspondientes. Publique lotes de eventos en este punto de
conexión para todos los túneles de eventos de cliente de ese espacio de nombres. Según el campo de origen del
evento, Azure Event Grid asigna cada evento con los temas de asociados correspondientes.
Esquema del evento: CloudEvents v1.0
Publique eventos en Azure Event Grid mediante el esquema CloudEvents 1.0. Event Grid admite el modo
estructurado y por lotes. CloudEvents 1.0 es el único esquema de eventos que se admite para los espacios de
nombres de los asociados.
Ejemplo de flujo
1. El servicio de publicación realiza una solicitud HTTP POST para
[Link] .
2. En la solicitud, incluya un valor de encabezado denominado aeg-sas-key que contenga una clave para la
autenticación. Esta clave se aprovisiona durante la creación del espacio de nombres del asociado. Por ejemplo,
un valor de encabezado válido es aeg-sas-key:
VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==.
3. Establezca el encabezado Content-Type en "application/cloudevents-batch+json; charset=UTF-8a".
4. Realice una solicitud HTTP POST a la dirección URL de publicación con el lote de eventos correspondiente a esa
región. Por ejemplo:
[
{
"specversion" : "1.0-rc1",
"type" : "[Link]",
"source" : " [Link].account1",
"subject" : "tickets/123",
"id" : "A234-1234-1234",
"time" : "2019-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
object-unique-to-each-publisher
}
},
{
"specversion" : "1.0-rc1",
"type" : "[Link]",
"source" : "[Link]
"subject" : "tickets/456",
"id" : "A234-1234-1234",
"time" : "2019-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
object-unique-to-each-publisher
}
}
]

Después de realizar una publicación en el punto de conexión partnerNamespace, recibirá una respuesta. La
respuesta es un código de respuesta HTTP estándar. Algunas respuestas comunes son:

RESULTA DO RESP O N SE

Correcto 200 OK

Los datos del evento tienen un formato incorrecto 400 - Solicitud incorrecta

Clave de acceso no válida 401 No autorizado

Punto de conexión incorrecto 404 No encontrado

La matriz o el evento superan los límites de tamaño 413 Carga demasiado grande

Referencias
Swagger
Plantilla ARM
Esquema de plantilla de ARM
API de REST
Extensión de la CLI
SDK
.NET
Python
Java
Ruby
JS
Go

Pasos siguientes
Introducción a los temas de asociados
Formulario de incorporación de temas de asociados
Tema de asociado de Auth0
Procedimientos para usar el tema de asociado de Auth0
Dominios de eventos para administrar temas de
Event Grid
04/08/2020 • 9 minutes to read • Edit Online

En este artículo se describe cómo usar dominios de eventos para administrar el flujo de eventos personalizados a
sus diversas organizaciones empresariales, clientes o aplicaciones. Use dominios de eventos para:
Administrar arquitecturas de eventos multiinquilino a escala.
Administrar la autenticación y la autorización.
Crear particiones de los temas sin tener que administrar cada uno individualmente.
Evitar la publicación individual en cada uno de los puntos de conexión del tema.

Información general sobre dominios de eventos


Un dominio de eventos es una herramienta de administración para un gran número de temas de Event Grid
relacionados con la misma aplicación. Se puede considerar un metatema que puede contener miles de temas
individuales.
Los dominios de eventos ponen a su disposición la misma arquitectura que usan los servicios de Azure (por
ejemplo, Storage e IoT Hub) para publicar sus eventos. Le permiten publicar eventos en miles de temas. Los
dominios también proporcionan control de autenticación y autorización sobre cada tema para que pueda dividir
los inquilinos.
Ejemplo de caso de uso
Los dominios de eventos se explican más fácilmente con un ejemplo. Supongamos que dirige Contoso
Construction Machinery, donde se encarga de fabricar tractores, equipos de excavación y otra maquinaria
pesada. Entre las tareas de la empresa se incluye el envío de información en tiempo real a los clientes sobre el
mantenimiento de los equipos, el estado de los sistemas y las actualizaciones de contratos. Toda esta información
llega a diferentes puntos de conexión, entre los que están su aplicación, los puntos de conexión de los clientes y
otras infraestructuras que estos han configurado.
Los dominios de eventos le permiten modelar Contoso Construction Machinery como una única entidad de
creación de eventos. Cada uno de los clientes se representa como un tema dentro del dominio. La autenticación y
la autorización se controlan mediante Azure Active Directory. Cada uno de los clientes puede suscribirse a su
tema para recibir eventos relacionados. El acceso administrado a través del dominio de eventos garantiza que
solo pueden acceder a su tema.
También le ofrece un punto de conexión único, en el que puede publicar todos sus eventos de cliente. Event Grid
se encarga de asegurarse de que cada tema solo esté al tanto de los eventos asignados a su inquilino.
Administración de acceso
Con un dominio, obtendrá un mayor control de la autenticación y la autorización sobre cada tema a través del
Control de acceso basado en rol (RBAC) de Azure. Estos roles pueden usarse para restringir cada arrendatario de
la aplicación únicamente a los temas a los que desea concederle acceso.
RBAC en dominios de eventos funciona del mismo modo que lo hace el control de acceso administrado en el
resto de Event Grid y Azure. Use RBAC para crear y aplicar definiciones de roles personalizados en dominios de
eventos.
Roles integrados
Event Grid tiene dos definiciones de roles integradas que facilitan el trabajo de RBAC con dominios de eventos.
Estos roles son los de colaborador de EventGrid EventSubscription (versión preliminar) y lector de
EventGrid EventSubscription (versión preliminar) . Estos roles se asignan a los usuarios que necesitan
suscribirse a temas en el dominio de eventos. El ámbito de la asignación de roles se limita a solo el tema al que
necesitan suscribirse los usuarios.
Para información sobre estos roles, consulte Roles integrados para Event Grid.

Suscribirse a temas
Suscribirse a eventos de un tema dentro de un dominio de eventos es lo mismo que crear una suscripción a
eventos en un tema personalizado o suscribirse a un evento desde un servicio de Azure.
Suscripciones del ámbito de dominio
Los dominios de eventos también permiten suscripciones de ámbito de dominio. Una suscripción a eventos en
un dominio de eventos recibirá todos los eventos enviados al dominio, independientemente del tema al que se
envían los eventos. Las suscripciones del ámbito de dominio pueden ser útiles para la administración y la
auditoría.

Publicación en un dominio de eventos


Cuando se crea un dominio de eventos, se le asigna un punto de conexión de publicación igual que si hubiera
creado un tema de Event Grid.
Para publicar eventos en cualquier tema en un dominio de eventos, inserte los eventos en el punto de conexión
del dominio como haría para un tema personalizado. La única diferencia es que debe especificar el tema en el
que quiere que se entregue el evento.
Por ejemplo, la siguiente matriz de eventos de publicación enviará eventos con "id": "1111" al tema foo ,
mientras que el evento con "id": "2222" se enviaría al tema bar :

[{
"topic": "foo",
"id": "1111",
"eventType": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"eventTime": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"dataVersion": "1.0"
},
{
"topic": "bar",
"id": "2222",
"eventType": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"eventTime": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"dataVersion": "1.0"
}]

Los dominios de eventos controlan la publicación de temas por usted. En lugar de publicar los eventos en cada
tema que administra individualmente, puede publicar todos los eventos en el punto de conexión del dominio.
Event Grid garantiza que cada evento se envía al tema correcto.

Límites y cuotas
Estos son los límites y cuotas relacionados con los dominios de eventos:
100 000 temas por dominio de eventos
100 dominios de eventos por suscripción de Azure
500 suscripciones a eventos por tema en un dominio de eventos
50 suscripciones del ámbito de dominio
5000 eventos por tasa de ingesta por segundo (en un dominio)
Si estos límites no son los adecuados para usted, póngase en contacto con el equipo del producto. Para ello, abra
una incidencia de soporte técnico o envíe un correo electrónico a askgrid@[Link].

Precios
Los dominios de eventos usan el mismo precio por operaciones que el resto de características de Event Grid.
Las operaciones funcionan igual en dominios de eventos que en temas personalizados. Cada entrada de un
evento a un dominio de eventos es una operación, y cada intento de entrega de un evento es una operación.
Pasos siguientes
Para información acerca de cómo configurar dominios de eventos, crear temas, crear suscripciones a eventos
y publicar eventos, consulte Administración de dominios de eventos.
Esquema de eventos de Azure Event Grid
04/08/2020 • 7 minutes to read • Edit Online

En este artículo se describen las propiedades y el esquema que están presentes para todos los
eventos. Los eventos constan de un conjunto de cinco propiedades de cadena y un objeto de datos
obligatorios. Las propiedades son comunes a todos los eventos de cualquier anunciante. El objeto de
datos tiene propiedades específicas de cada publicador. Para los temas de sistema, estas propiedades son
específicas del proveedor de recursos, como Azure Storage o Azure Event Hubs.
Los orígenes de eventos envían eventos a Azure Event Grid en una matriz que puede tener varios objetos
de evento. Al publicar eventos en un tema de Event Grid, la matriz puede tener un tamaño total de hasta
1 MB. Cada evento de la matriz tiene 1 MB, como máximo. Si un evento o la matriz superan los límites de
tamaño, recibirá la respuesta 413 Payload Too Large (Carga útil demasiado grande). No obstante, las
operaciones se cobran en incrementos de 64 KB. Por lo tanto, los eventos de más de 64 KB incurrirán en
cargos de operaciones como si fueran varios eventos. Por ejemplo, un evento que tenga 130 KB incurrirá
en operaciones como si fueran tres eventos independientes.
Event Grid envía los eventos a los suscriptores en una matriz que tiene un solo evento. Este
comportamiento puede cambiar en el futuro.
Puede encontrar el esquema JSON para el evento de Event Grid y cada carga de datos del publicador de
Azure en el almacén de esquemas de eventos.

Esquema del evento


En el ejemplo siguiente se muestran las propiedades que todos los publicadores de eventos usan:

[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]

Por ejemplo, el esquema publicado para un evento de Azure Blob Storage es:
[
{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/xstoretestaccount",
"subject":
"/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "0x8D4BCC2E4835CD0",
"contentType": "application/octet-stream",
"contentLength": 524288,
"blobType": "BlockBlob",
"url":
"[Link]
",
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}
]

Propiedades de evento
Todos los eventos tienen los mismos datos de nivel superior, que son los siguientes:

P RO P IEDA D T IP O O B L IGATO RIO DESC RIP C IÓ N

topic string No, pero si se incluye, Ruta de acceso completa


debe coincidir a los recursos del origen
exactamente con el del evento. En este campo
identificador de Azure no se puede escribir. Event
Resource Manager del Grid proporciona este
tema Event Grid. Si no se valor.
incluye, Event Grid se
marcará en el evento.

subject string Sí Ruta al asunto del evento


definida por el anunciante.

eventType string Sí Uno de los tipos de


eventos registrados para
este origen de eventos.

eventTime string Sí La hora de generación del


evento en función de la
hora UTC del proveedor.

id string Sí Identificador único para el


evento
P RO P IEDA D T IP O O B L IGATO RIO DESC RIP C IÓ N

datos object No Los datos del evento


específicos del proveedor
de recursos.

dataVersion string No, pero se marcará con Versión del esquema del
un valor vacío. objeto de datos. El
publicador define la
versión del esquema.

metadataVersion string No es necesario, pero si se Versión del esquema de


incluye, debe coincidir los metadatos del evento.
exactamente con el Event Grid define el
esquema esquema de las
metadataVersion de propiedades de nivel
Event Grid (actualmente, superior. Event Grid
solo 1 ). Si no se incluye, proporciona este valor.
Event Grid se marcará en
el evento.

Para aprender acerca de las propiedades del objeto de datos, vea el origen del evento:
Suscripciones de Azure (operaciones de administración)
Container Registry
Blob Storage
Event Hubs
IoT Hub
Media Services
Grupos de recursos (operaciones de administración)
Service Bus
Azure SignalR
Azure Machine Learning
Para temas personalizados, el publicador de eventos determina el objeto de datos. Los datos de nivel
superior deben tener los mismos campos que los eventos estándar definidos por recursos.
Al publicar eventos en temas personalizados, cree asuntos para los eventos que faciliten que los
suscriptores sepan si les interesa el evento. Los suscriptores usan el asunto para filtrar y redirigir eventos.
Considere la posibilidad de proporcionar la ruta de acceso de donde se produjo el evento, para que los
suscriptores pueden filtrar por los segmentos de esa ruta de acceso. La ruta de acceso permite que los
suscriptores filtren eventos de una manera más amplia o más restringida. Por ejemplo, si se proporciona
una ruta de acceso de tres segmentos como /A/B/C en el asunto, los suscriptores pueden filtrar por el
primer segmento /A para obtener un amplio conjunto de eventos. Esos suscriptores obtienen eventos
con asuntos como /A/B/C o /A/D/E . Otros suscriptores pueden filtrar por /A/B para obtener un
conjunto de eventos más reducido.
A veces el asunto necesita información más detallada sobre qué ocurrió. Por ejemplo, el publicador de
cuentas de almacenamiento proporciona el asunto
/blobServices/default/containers/<container-name>/blobs/<file> cuando se agrega un archivo a un
contenedor. Un suscriptor puede filtrar por la ruta de acceso
/blobServices/default/containers/testcontainer para obtener todos los eventos de ese contenedor, pero
no otros contenedores en la cuenta de almacenamiento. Un suscriptor también puede filtrar o redirigir
por el sufijo .txt para que funcione solo con archivos de texto.
Pasos siguientes
Para una introducción a Azure Event Grid, consulte Introducción a Azure Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema
de suscripción de Event Grid.
Esquema CloudEvents v1.0 con Azure Event Grid
04/08/2020 • 3 minutes to read • Edit Online

Además de su esquema de eventos predeterminado, Azure Event Grid admite de forma nativa eventos de la
implementación de JSON de CloudEvents v1.0 y el enlace del protocolo HTTP. CloudEvents es una especificación
abierta para la descripción de datos de eventos.
CloudEvents simplifica la interoperabilidad al proporcionar un esquema de eventos común para la publicación y el
consumo de eventos basados en la nube. Este esquema permite herramientas uniformes, formas estándar de
enrutar y administrar eventos y formas universales de deserializar el esquema de eventos externo. Con un
esquema común, puede integrar más fácilmente el trabajo entre plataformas.
En la compilación de CloudEvents participan varios colaboradores, entre ellos Microsoft, mediante Cloud Native
Compute Foundation. Actualmente está disponible en versión 1.0.
En este artículo se describe el esquema CloudEvents con Event Grid.

Evento de ejemplo con el esquema CloudEvents


Este es un ejemplo de un evento de Azure Blob Storage en formato de CloudEvents:

{
"specversion": "1.0",
"type": "[Link]",
"source": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-account}",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
"time": "2019-11-18T15:13:39.4589254Z",
"subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
"dataschema": "#",
"data": {
"api": "PutBlockList",
"clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
"requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
"eTag": "0x8D76C39E4407333",
"contentType": "image/png",
"contentLength": 30699,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "000000000000000000000000000099240000000000c41c18",
"storageDiagnostics": {
"batchId": "681fe319-3006-00a8-0022-9e7cde000000"
}
}
}

Una descripción detallada de los campos disponibles, sus tipos y definiciones en CloudEvents v1.0 se encuentra
disponible aquí.
Los valores de encabezados de los eventos proporcionados en el esquema de CloudEvents y el esquema de Event
Grid son los mismos excepto para content-type . En el esquema de CloudEvents, ese valor de encabezado es
"content-type":"application/cloudevents+json; charset=utf-8" . En el esquema de Event Grid, ese valor de
encabezado es "content-type":"application/json; charset=utf-8" .

Event Grid para CloudEvents


Puede usar Event Grid con eventos de entrada y salida de esquema CloudEvents. CloudEvents se puede usar con
eventos del sistema, como eventos de Blob Storage y eventos de IoT Hub, y con eventos personalizados. También
pueden transformar esos eventos en la red de un formato a otro.

ESQ UEM A DE EN T RA DA ESQ UEM A DE SA L IDA

Formato de CloudEvents Formato de CloudEvents

Formato de Event Grid Formato de CloudEvents

Formato de Event Grid Formato de Event Grid

Con todos los esquemas de eventos, Event Grid requiere validación al publicar en un tema de Event Grid y al crear
una suscripción de eventos. Para más información, vea Event Grid security and authentication (Seguridad y
autenticación de Event Grid).

Pasos siguientes
Consulte Uso del esquema CloudEvents v1.0 con Event Grid.
Controladores de eventos de Azure Event Grid
04/08/2020 • 2 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza alguna acción adicional
para procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos.
También puede usar cualquier webhook para controlar los eventos. El webhook no necesita estar hospedado en
Azure para controlar los eventos. Event Grid solo admite puntos de conexión de webhook HTTPS.

Controladores de evento admitidos


Estos son los controladores de eventos admitidos:
Webhooks. Los runbooks y aplicaciones lógicas de Azure Automation se admiten a través de webhooks.
Azure Functions
Event Hubs
Retransmisión de conexiones híbridas
Colas y temas de Service Bus
Colas de almacenamiento

Pasos siguientes
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Webhooks, runbooks de Automation, aplicaciones
lógicas como controladores de eventos para eventos
de Azure Event Grid
04/08/2020 • 4 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza alguna acción adicional para
procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos. También
puede usar cualquier webhook para controlar los eventos. El webhook no necesita estar hospedado en Azure para
controlar los eventos. Event Grid solo admite puntos de conexión de webhook HTTPS.

NOTE
Los runbooks y aplicaciones lógicas de Azure Automation se admiten como controladores de eventos a través de webhooks.

webhooks
Consulte los artículos siguientes para obtener información general y ejemplos de uso de webhooks como
controladores de eventos.

T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: Creación y enrutamiento de eventos Explica cómo enviar eventos personalizados a un webhook.
personalizados con la CLI de Azure, PowerShell y Azure Portal.

Guía de inicio rápido: Enrutamiento de eventos de Blob Explica cómo enviar eventos de Blob Storage a un webhook.
Storage a un punto de conexión web personalizado con la CLI
de Azure, PowerShell y Azure Portal.

Guía de inicio rápido: Envío de eventos de Container Registry Explica cómo utilizar la CLI de Azure para enviar eventos de
Container Registry.

Introducción: Recepción de eventos en un punto de conexión Se describe cómo validar un punto de conexión de HTTP para
de HTTP recibir eventos de una suscripción a eventos y, a continuación,
recibir y deserializar los eventos.

Azure Automation
Puede procesar eventos mediante runbooks de Azure Automation. El procesamiento de eventos mediante
runbooks automatizados se admite a través de webhooks. Cree un webhook para el runbook y luego use el
controlador de webhook. Consulte el siguiente tutorial para obtener un ejemplo:

T ÍT ULO DESC RIP C IÓ N

Tutorial: Integración de Azure Automation con Event Grid y Cree una máquina virtual, que envía un evento. El evento
Microsoft Teams desencadena un runbook de Automation que etiqueta la
máquina virtual y genera un mensaje que se envía a un canal
de Equipos de Microsoft.
Logic Apps
Use Logic Apps para implementar procesos empresariales y así poder procesar eventos de Event Grid. En este
ejemplo no se crea un webhook explícitamente. El webhook se crea automáticamente cuando se configura la
aplicación lógica para que controle los eventos de Event Grid. Consulte los siguientes tutoriales para obtener
ejemplos:

T ÍT ULO DESC RIP C IÓ N

Tutorial: Monitor virtual machine changes with Azure Event Una aplicación lógica supervisa los cambios realizados en una
Grid and Logic Apps (Tutorial: Supervisión de los cambios en máquina virtual y envía mensajes de correo electrónico sobre
máquinas virtuales con Azure Event Grid y Logic Apps) dichos cambios.

Tutorial: envío de notificaciones por correo electrónico sobre Una aplicación lógica envía un correo electrónico de
eventos de Azure IoT Hub mediante Logic Apps. notificación cada vez que se agrega un dispositivo al centro de
IoT.

Tutorial: respuesta a eventos de Azure Service Bus recibidos a Event Grid envía mensajes de temas de Service Bus a la
través de Azure Event Grid con Azure Functions y Azure Logic aplicación de función y a la aplicación lógica.
Apps.

Ejemplo de REST (para PUT)


{
"properties":
{
"destination":
{
"endpointType": "WebHook",
"properties":
{
"endpointUrl": "<WEB HOOK URL>",
"maxEventsPerBatch": 1,
"preferredBatchSizeInKilobytes": 64
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Azure Functions como controlador de eventos para
eventos de Event Grid
04/08/2020 • 2 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza una acción para procesar el
evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos y Azure Functions
es uno de ellos.
Use Azure Functions en una arquitectura sin servidor para responder a eventos de Event Grid. Cuando use Azure
Functions como controlador, utilice el desencadenador de Event Grid en lugar del desencadenador HTTP genérico.
Event Grid valida automáticamente los desencadenadores de Event Grid. Con los desencadenadores HTTP
genéricos, debe implementar la respuesta de validación usted mismo.
Para obtener más información, consulte Desencadenador de Event Grid para Azure Functions para obtener
información general sobre el uso del desencadenador Event Grid en la instancia de Functions.

Tutoriales
T ÍT ULO DESC RIP C IÓ N

Inicio rápido: Control de eventos con una función Envía un evento personalizado a una función para su
procesamiento.

Tutorial: Automatización del cambio de tamaño de las Los usuarios cargan imágenes a través de la aplicación web en
imágenes cargadas mediante Event Grid la cuenta de almacenamiento. Cuando se crea un blob de
almacenamiento, Event Grid envía un evento a la aplicación de
función, que cambia el tamaño de la imagen cargada.

Tutorial: transmisión de macrodatos a un almacén de datos Cuando Event Hubs crea un archivo de captura, Event Grid
envía un evento a una aplicación de función. La aplicación
recupera el archivo de captura y migra los datos a un
almacenamiento de datos.

Tutorial: Ejemplos de integración de Azure Service Bus en Event Grid envía mensajes de temas de Service Bus a la
Azure Event Grid aplicación de funciones y a la aplicación lógica.

Ejemplo de REST (para PUT)


{
"properties":
{
"destination":
{
"endpointType": "AzureFunction",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
"maxEventsPerBatch": 1,
"preferredBatchSizeInKilobytes": 64
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Centro de eventos como controlador de eventos
para eventos de Azure Event Grid
04/08/2020 • 3 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza una acción para procesar el
evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos y Azure Event Hubs
es uno de ellos.
Use Event Hubs cuando la solución obtenga eventos de Event Grid más rápido de lo que puede procesarlos. Una
vez que los eventos se encuentren en un centro de eventos, la aplicación puede procesar los eventos del centro de
eventos en su propia programación. Puede escalar el procesamiento de eventos para controlar los eventos
entrantes.

Tutoriales
Consulte los siguientes ejemplos:

T ÍT ULO DESC RIP C IÓ N

Inicio rápido: enrutamiento de eventos personalizados a Azure Envía un evento personalizado a un centro de eventos para
Event Hubs con la CLI de Azure que lo procese una aplicación.

Plantilla de Resource Manager: creación de un tema Plantilla de Resource Manager que crea una suscripción a un
personalizado Event Grid y envío de eventos a un centro de tema personalizado. Envía eventos a una instancia de Azure
eventos Event Hubs.

Propiedades del mensaje


Si usa un centro de eventos como controlador de eventos para eventos de Event Grid, establezca los siguientes
encabezados de mensaje:

N O M B RE DE P RO P IEDA D DESC RIP C IÓ N

aeg-subscription-name Nombre de la suscripción de eventos.

aeg-delivery-count Número de intentos realizados para el evento.


Ejemplo: "1"

aeg-event-type Tipo de evento.


Ejemplo: "[Link]"
N O M B RE DE P RO P IEDA D DESC RIP C IÓ N

aeg-metadata-version Versión de metadatos del evento.


Ejemplo: "1".
Esta propiedad representa la versión de los metadatos en
el esquema de eventos de Event Grid y la versión
de la especificación en el esquema de eventos en la
nube .

aeg-data-version Versión de datos del evento.


Ejemplo: "1".
Esta propiedad representa la versión de los datos en el
esquema de eventos de Event Grid y la no se aplica
en el esquema de eventos en la nube .

aeg-output-event-id Id. del evento de Event Grid.

Ejemplos de REST (para PUT)


Centro de eventos

{
"properties":
{
"destination":
{
"endpointType": "EventHub",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<EVENT HUBS NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Centro de eventos: con identidad administrada


{
"properties": {
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "EventHub",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<EVENT HUBS NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Colas y temas de Service Bus como controladores de
eventos para eventos de Azure Event Grid
04/08/2020 • 5 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza alguna acción adicional para
procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar eventos y Azure
Ser vice Bus es uno de ellos.
Puede usar una cola o un tema de Service como un controlador para los eventos de Event Grid.

Colas de Service Bus


Puede redirigir los eventos de Event Grid directamente a las colas de Service Bus para usarlos en escenarios de
almacenamiento en búfer o comando y control en aplicaciones empresariales.
En Azure Portal, al crear una suscripción de eventos, seleccione Cola de Ser vice Bus como tipo de punto de
conexión y, a continuación, haga clic en Seleccionar un punto de conexión para elegir una cola de Service Bus.
Uso de la CLI para agregar un controlador de colas de Service Bus
Para la CLI de Azure, en el siguiente ejemplo, se suscribe un tema y conecta un tema de Event Grid a una cola de
Service Bus:

az eventgrid event-subscription create \


--name <my-event-subscription> \
--source-resource-id
/subscriptions/{SubID}/resourceGroups/{RG}/providers/[Link]/topics/topic1 \
--endpoint-type servicebusqueue \
--endpoint
/subscriptions/{SubID}/resourceGroups/TestRG/providers/[Link]/namespaces/ns1/queues/queue1

Temas de Service Bus


Puede enrutar los eventos de Event Grid directamente a los temas de Service Bus para controlar los eventos del
sistema de Azure con temas de Service Bus o para escenarios de mensajería de comando y control.
En Azure Portal, al crear una suscripción de eventos, seleccione Tema de Ser vice Bus como tipo de punto de
conexión y, a continuación, haga clic en Seleccionar un punto de conexión para elegir un tema de Service Bus.
Uso de la CLI para agregar un controlador de temas de Service Bus
Para la CLI de Azure, en el siguiente ejemplo, se suscribe un tema y conecta un tema de Event Grid a una cola de
Service Bus:

az eventgrid event-subscription create \


--name <my-event-subscription> \
--source-resource-id
/subscriptions/{SubID}/resourceGroups/{RG}/providers/[Link]/topics/topic1 \
--endpoint-type servicebustopic \
--endpoint
/subscriptions/{SubID}/resourceGroups/TestRG/providers/[Link]/namespaces/ns1/topics/topic1
Propiedades del mensaje
Si utiliza un tema o cola de Ser vice Bus como controlador de eventos para eventos de Event Grid, establezca
los siguientes encabezados de mensaje:

N O M B RE DE P RO P IEDA D DESC RIP C IÓ N

aeg-subscription-name Nombre de la suscripción de eventos.

aeg-delivery-count Número de intentos realizados para el evento.


Ejemplo: "1"

aeg-event-type Tipo de evento.


Ejemplo: "[Link]"

aeg-metadata-version Versión de metadatos del evento.


Ejemplo: "1".
Esta propiedad representa la versión de los metadatos en
el esquema de eventos de Event Grid y la versión
de la especificación en el esquema de eventos en
la nube .

aeg-data-version Versión de datos del evento.


Ejemplo: "1".
Esta propiedad representa la versión de los datos en el
esquema de eventos de Event Grid y la no se aplica
en el esquema de eventos en la nube .

Encabezados de mensaje
Cuando se envía un evento a una cola o un tema de Service Bus como un mensaje asincrónico, el valor de
messageid del mensaje asincrónico es el id. del evento .

El id. de evento se mantendrá cuando se vuelva a entregar el evento, para que pueda evitar entregas duplicadas;
para ello, active la detección de duplicados en la entidad de Service Bus. Le recomendamos que habilite la
duración de la detección de duplicados en la entidad Service Bus para que sea el período de vida (TTL) del evento
o la duración máxima de reintentos, lo que sea más largo.

Ejemplos de REST (para PUT)


Cola de Service Bus
{
"properties":
{
"destination":
{
"endpointType": "ServiceBusQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Cola de Service Bus: entrega con identidad administrada

{
"properties": {
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "ServiceBusQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Tema de Service Bus

{
"properties":
{
"destination":
{
"endpointType": "ServiceBusTopic",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Tema de Service Bus: entrega con identidad administrada


{
"properties":
{
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "ServiceBusTopic",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Conexión híbrida de Relay como controlador de
eventos para eventos de Azure Event Grid
04/08/2020 • 2 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza alguna acción adicional para
procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos y Azure
Relay es uno de ellos.
Use las conexiones híbridas de Azure Relay para enviar eventos a las aplicaciones que están dentro de una
red empresarial y que no tienen un punto de conexión de acceso público.

Tutoriales
Consulte el siguiente tutorial para obtener un ejemplo del uso de una conexión híbrida de Azure Relay como un
controlador de eventos.

T ÍT ULO DESC RIP C IÓ N

Tutorial: Envío de eventos a una conexión híbrida Envía un evento personalizado a una conexión híbrida
existente para su procesamiento mediante una aplicación de
escucha.

Ejemplo de REST (para PUT)


{
"properties":
{
"destination":
{
"endpointType": "HybridConnection",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/namespaces/<RELAY NAMESPACE NAME>/hybridconnections/<HYBRID CONNECTION NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Cola de Storage como controlador de eventos para
eventos de Azure Event Grid
04/08/2020 • 2 minutes to read • Edit Online

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza alguna acción adicional para
procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar eventos y Azure
Queue Storage es uno de ellos.
Use Queue Storage para recibir los eventos que deben extraerse. Puede usar Queue Storage cuando tenga un
proceso de ejecución prolongada que tarde demasiado tiempo en responder. Al enviar eventos a Queue Storage, la
aplicación puede extraer y procesar eventos siguiendo su propia programación.

Tutoriales
Consulte el siguiente tutorial para obtener un ejemplo del uso de Queue Storage como un controlador de eventos.

T ÍT ULO DESC RIP C IÓ N

Guía de inicio rápido: Enrutamiento de eventos personalizados Describe cómo enviar eventos personalizados a una instancia
a Azure Queue Storage con la CLI de Azure y Event Grid de Queue Storage.

Ejemplos de REST (para PUT)


Cola de almacenamiento como el controlador de eventos

{
"properties":
{
"destination":
{
"endpointType": "StorageQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<STORAGE ACCOUNT NAME>",
"queueName": "<QUEUE NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Cola de almacenamiento como el controlador de eventos: entrega con identidad administrada


{
"properties":
{
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "StorageQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<STORAGE ACCOUNT NAME>",
"queueName": "<QUEUE NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}

Cola de almacenamiento como destino de mensajes fallidos

{
"name": "",
"properties":
{
"destination":
{
"endpointType": "StorageQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<DESTINATION STORAGE>",
"queueName": "queue1"
}
},
"eventDeliverySchema": "EventGridSchema",
"deadLetterDestination":
{
"endpointType": "StorageBlob",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<DEADLETTER STORAGE>",
"blobContainerName": "test"
}
}
}
}

Cola de almacenamiento como destino de mensajes fallidos: identidad administrada


{
"properties":
{
"destination":
{
"endpointType": "StorageQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<DESTINATION STORAGE>",
"queueName": "queue1"
}
},
"eventDeliverySchema": "EventGridSchema",
"deadLetterWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"deadLetterDestination":
{
"endpointType": "StorageBlob",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/storageAccounts/<DEADLETTER STORAGE>",
"blobContainerName": "test"
}
}
}
}
}

Pasos siguientes
Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.
Descripción del filtrado de eventos para
suscripciones de Event Grid
04/08/2020 • 7 minutes to read • Edit Online

En este artículo se describen las distintas formas de filtrar los eventos que se envían al punto de conexión. Al crear
una suscripción de eventos, se le presentan tres opciones de filtrado:
Tipos de eventos
El asunto empieza o termina con
Operadores y campos avanzados

Filtrado de tipos de evento


De forma predeterminada, todos los tipos de evento del origen de eventos se envían al punto de conexión. Puede
decidir enviar solo determinados tipos de eventos al punto de conexión. Por ejemplo, puede recibir una
notificación de las actualizaciones de sus recursos pero no de otras operaciones, como las eliminaciones. En ese
caso, filtre por el tipo de evento [Link] . Proporcione una matriz con los tipos
de eventos, o especifique All para obtener todos los tipos de evento para el origen del evento.
La sintaxis JSON para el filtrado por tipo de evento es:

"filter": {
"includedEventTypes": [
"[Link]",
"[Link]"
]
}

Filtrado de asunto
Para filtrar solo por asunto, especifique un valor inicial o final para el asunto. Por ejemplo, puede especificar que el
asunto termina con .txt para obtener solo los eventos relacionados con la carga de un archivo de texto a la
cuenta de almacenamiento. O bien, puede filtrar que el sujeto empieza por
/blobServices/default/containers/testcontainer para obtener todos los eventos de ese contenedor, pero no otros
contenedores en la cuenta de almacenamiento.
Al publicar eventos en temas personalizados, cree asuntos para los eventos que faciliten que los suscriptores
sepan si les interesa el evento. Los suscriptores usan la propiedad del asunto para filtrar y redirigir eventos.
Considere la posibilidad de agregar la ruta de acceso de donde se produjo el evento, para que los suscriptores
pueden filtrar por los segmentos de esa ruta de acceso. La ruta de acceso permite que los suscriptores filtren
eventos de una manera más amplia o más restringida. Si proporciona una ruta de acceso de tres segmentos como
/A/B/C en el asunto, los suscriptores pueden filtrar por el primer segmento /A para obtener un amplio conjunto
de eventos. Esos suscriptores obtienen eventos con asuntos como /A/B/C o /A/D/E . Otros suscriptores pueden
filtrar por /A/B para obtener un conjunto de eventos más reducido.
La sintaxis JSON para el filtrado por asunto es:
"filter": {
"subjectBeginsWith": "/blobServices/default/containers/mycontainer/log",
"subjectEndsWith": ".jpg"
}

Filtrado avanzado
Para filtrar por valores en los campos de datos y especificar el operador de comparación, use la opción de filtrado
avanzada. En el filtrado avanzado, se especifica lo siguiente:
tipo de operador: el tipo de comparación.
clave: el campo de datos de evento que se usa para filtrar. Puede ser un número, un booleano o una cadena.
valores: el valor o los valores que se compararán con la clave.
Si especifica un único filtro con varios valores, se realiza una operación OR , por lo que el valor del campo de clave
debe ser uno de estos valores. Este es un ejemplo:

"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/[Link]/",
"/providers/[Link]/virtualMachines/"
]
}
]

Si especifica varios filtros diferentes, se realiza una operación AND , por lo que se debe cumplir cada condición de
filtro. Este es un ejemplo:

"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/[Link]/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/[Link]/virtualMachines/"
]
}
]

Operadores
Los operadores disponibles para los números son:
NumberGreaterThan
NumberGreaterThanOrEquals
NumberLessThan
NumberLessThanOrEquals
NumberIn
NumberNotIn
El operador disponible para los booleanos es:
BoolEquals
Los operadores disponibles para las cadenas son:
StringContains
StringBeginsWith
StringEndsWith
StringIn
StringNotIn
Todas las comparaciones de cadenas no distinguen mayúsculas de minúsculas.
Clave
Para los eventos en el esquema de Event Grid, use los siguientes valores para la clave:
ID
Tema
Asunto
EventType
DataVersion
Datos del evento (por ejemplo, Data.key1)
Para los eventos en el esquema de Cloud Events, use los siguientes valores para la clave:
EventId
Source
EventType
EventTypeVersion
Datos del evento (por ejemplo, Data.key1)
Para el esquema de entrada personalizado, use los campos de datos de evento (por ejemplo, Data.key1).
Valores
Los valores pueden ser:
number
string
boolean
array
Limitaciones
El filtrado avanzado tiene las siguientes limitaciones:
5 filtros avanzados y 25 valores de filtro en todos los filtros por suscripción de Event Grid
512 caracteres por valor de cadena
5 valores para los operadores in y not in
Claves que incluyen el carácter . (punto) . Por ejemplo,
[Link] o [Link]@[Link] . Actualmente, las claves no
admiten caracteres de escape.
La misma clave se puede usar en más de un filtro.
Ejemplos
StringContains

"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]

StringBeginsWith

"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"grid"
]
}]

StringEndsWith

"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]

StringIn

"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"exact",
"string",
"matches"
]
}]

StringNotIn

"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]

NumberIn
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "[Link]",
"values": [
5,
1
]
}]

NumberNotIn

"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "[Link]",
"values": [
41,
0,
0
]
}]

NumberLessThan

"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "[Link]",
"value": 100
}]

NumberGreaterThan

"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "[Link]",
"value": 20
}]

NumberLessThanOrEquals

"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "[Link]",
"value": 100
}]

NumberGreaterThanOrEquals

"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "[Link]",
"value": 30
}]

BoolEquals
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "[Link]",
"value": true
}]

Pasos siguientes
Para obtener información sobre el filtrado de eventos con PowerShell y la CLI de Azure, consulte Filter events
for Event Grid (Filtrado de eventos para Event Grid).
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Entrega y reintento de entrega de mensajes de
Event Grid
04/08/2020 • 12 minutes to read • Edit Online

En este artículo se describe cómo Azure Event Grid administra los eventos cuando no se confirma la entrega.
Event Grid ofrece entrega duradera. Entrega cada mensaje por lo menos una vez en cada suscripción. Los
eventos se envían inmediatamente al punto de conexión registrado de cada suscripción. Si un punto de conexión
no acusa recibo de un evento, Event Grid reintenta la entrega del evento.

Entrega de eventos por lotes


De forma predeterminada, Event Grid envía cada evento individualmente a los suscriptores. El suscriptor recibe
una matriz con un solo evento. Puede configurar Event Grid para procesar por lotes los eventos para su entrega
con el fin de mejorar el rendimiento HTTP en escenarios de alto rendimiento.
La entrega por lotes tiene dos opciones:
Número máximo de eventos por lote : es el número máximo de eventos que Event Grid entregará por
lote. No se superará nunca este número; sin embargo, se pueden entregar menos eventos si no hay otros
eventos disponibles en el momento de la publicación. Event Grid no retrasa los eventos para crear un lote si
hay menos eventos disponibles. Debe estar entre 1 y 5 000.
Tamaño de lote preferido en kilobytes : es el límite superior de destino para el tamaño de lote en
kilobytes. Al igual que el número máximo de eventos, el tamaño del lote puede ser menor si no hay más
eventos disponibles en el momento de la publicación. Es posible que un lote sea mayor que el tamaño de lote
preferido si un solo evento es mayor que el tamaño preferido. Por ejemplo, si el tamaño preferido es 4 KB y
se inserta un evento de 10 KB en Event Grid, el evento de 10 KB se seguirá entregando en su propio lote en
lugar de ser eliminado.
La entrega por lotes se configura en función de una suscripción por evento mediante el portal, la CLI, PowerShell
o los SDK.
Azure Portal:

Azure CLI
Al crear una suscripción a eventos, use los parámetros siguientes:
max-events-per-batch : número máximo de eventos en un lote. Debe ser un número entre 1 y 5000.
preferred-batch-size-in-kilobytes : tamaño de lote preferido en kilobytes. Debe ser un número entre 1 y
1024.
storageid=$(az storage account show --name <storage_account_name> --resource-group <resource_group_name> --
query id --output tsv)
endpoint=[Link]

az eventgrid event-subscription create \


--resource-id $storageid \
--name <event_subscription_name> \
--endpoint $endpoint \
--max-events-per-batch 1000 \
--preferred-batch-size-in-kilobytes 512

Para más información sobre el uso de la CLI de Azure con Event Grid, consulte Enrutamiento de eventos de
almacenamiento a un punto de conexión web con la CLI de Azure.

Programación y duración de los reintentos


Event Grid espera 30 segundos para obtener una respuesta después de entregar un mensaje. Después de 30
segundos, si el punto de conexión no ha respondido, el mensaje se pone en cola para volver a intentarlo. Event
Grid usa una directiva de reintentos de retroceso exponencial para la entrega de eventos. Event Grid reintenta la
entrega en el siguiente horario y cuando sea el mejor momento:
10 segundos
30 segundos
1 minuto.
5 minutos
10 minutos
30 minutos
1 hora
Cada hora, hasta 24 horas
Si el punto de conexión responde en 3 minutos, Event Grid intentará eliminar el evento de la cola de reintentos
en el mejor momento posible, pero aún se pueden recibir duplicados.
Event Grid agrega una pequeña selección aleatoria en todos los pasos de reintento y puede omitir
oportunamente ciertos reintentos si un punto de conexión es incorrecto, está inactivo durante un largo período
o parece estar demasiado ocupado.
Para un comportamiento determinista, establezca el tiempo que estará activo el evento y los intentos de entrega
máximos en las directivas de reintentos de suscripción.
De forma predeterminada, Event Grid expira todos los eventos que no se entregan en 24 horas. Puede
personalizar la directiva de reintentos al crear una suscripción al evento. Proporcione el número máximo de
intentos de entrega (el valor predeterminado es 30) y el periodo de vida de los eventos (el valor predeterminado
es 1440 minutos).

Entrega retrasada
Cuando un punto de conexión experimenta errores de entrega, Event Grid comienza a retrasar la entrega y a
reintentar los eventos a ese punto de conexión. Por ejemplo, si se produce un error en los 10 primeros eventos
publicados en un punto de conexión, Event Grid asumirá que el punto de conexión está experimentando
problemas y retrasará todos los reintentos posteriores y las nuevas entregas durante algún tiempo; en algunos
casos, hasta varias horas.
El propósito funcional de la entrega retrasada es proteger los puntos de conexión incorrectos, así como el
sistema Event Grid. Sin los mecanismos de retroceso y el retraso de la entrega a puntos de conexión incorrectos,
la directiva de reintentos de Event Grid y las funcionalidades del volumen pueden sobrecargar fácilmente un
sistema.

Eventos fallidos
Si Event Grid no puede entregar un evento, puede enviar el evento no entregado a una cuenta de
almacenamiento. Este proceso se conoce como colas de eventos fallidos. De forma predeterminada, Event Grid
no tiene activada esta opción. Para habilitarla, debe especificar una cuenta de almacenamiento para contener los
eventos no entregados al crear la suscripción a eventos. Puede extraer eventos de esta cuenta de
almacenamiento para resolver las entregas.
Event Grid envía un evento a la ubicación de la cola de mensajes fallidos cuando ha intentado todos los
reintentos. Si Event Grid recibe un código de respuesta 400 (solicitud incorrecta) o 413 (entidad de solicitud
demasiado grande), envía inmediatamente el evento al punto de conexión de la cola de mensajes fallidos. Estos
códigos de respuesta indican que la entrega del evento nunca se realizará correctamente.
Hay un retraso de cinco minutos entre el último intento de entregar un evento y su entrega a la ubicación de
mensajes fallidos. Este retraso está pensado para reducir el número de operaciones de almacenamiento de
blobs. Si la ubicación de la cola de mensajes fallidos no está disponible durante cuatro horas, se elimina el
evento.
Antes de establecer la ubicación de mensajes fallidos, debe tener una cuenta de almacenamiento con un
contenedor. Puede proporcionar el punto de conexión de este contenedor al crear la suscripción a eventos. El
punto de conexión tiene este formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-
name>/providers/[Link]/storageAccounts/<storage-name>/blobServices/default/containers/<container-
name>

Es posible que desee recibir una notificación cuando un evento se envía a la ubicación de la cola de mensajes
fallidos. Para utilizar Event Grid para responder a eventos no entregados, cree una suscripción a eventos para el
almacenamiento de blobs de los eventos fallidos. Cada vez que el almacenamiento de blobs de eventos fallidos
recibe un evento no entregado, Event Grid lo notifica al controlador. El controlador responderá con las acciones
que debe realizar para conciliar los eventos no entregados.
Para obtener un ejemplo de cómo configurar una ubicación de la cola de mensajes fallidos, consulte Cola de
mensajes fallidos y directivas de reintento.

Estado de entrega de mensajes


Event Grid usa códigos de respuesta HTTP para acusar recibo de eventos.
Códigos de éxito
Event Grid solo considera entregas correctas los siguientes códigos de respuesta HTTP. El resto de los códigos
de estado se consideran entregas con errores y se reintentarán o procesarán como entregas devueltas. Al recibir
un código de estado correcto, Event Grid considera que la entrega ha finalizado.
200 OK
201 Creado
202 - Aceptado
203 Información no autoritativa
204 No Content
Códigos de error
Todos los demás códigos que no están en el conjunto anterior (200-204) se consideran errores y se reintentarán.
Algunos tienen directivas de reintento específicas, que se describen a continuación y todos las demás siguen el
modelo de interrupción exponencial estándar. Es importante recordar que, debido a la naturaleza altamente
paralela de la arquitectura de Event Grid, el comportamiento de reintento no es determinista.

STAT US C O DE C O M P O RTA M IEN TO DE REIN T EN TO

400 - Solicitud incorrecta Reintentar después de 5 minutos o más (procesar


inmediatamente como entrega devuelta si está configurada)

401 No autorizado Reintentar después de 5 minutos o más

403 Prohibido Reintentar después de 5 minutos o más

404 No encontrado Reintentar después de 5 minutos o más

Tiempo de espera de solicitud 408 Reintentar después de 2 minutos o más

413 Entidad de solicitud demasiado larga Reintentar después de 10 segundos o más (procesar
inmediatamente como entrega devuelta si está configurada)

Servicio no disponible 503 Reintentar después de 30 segundos o más

Todos los demás Reintentar después de 10 segundos o más

Pasos siguientes
Para ver el estado de las entregas de eventos, consulte Supervisar la entrega de mensajes de Event Grid.
Para personalizar las opciones de entrega de eventos, consulte Cola de mensajes fallidos y directivas de
reintento.
Entrega de eventos de webhook
04/08/2020 • 9 minutes to read • Edit Online

Los webhooks son una de las muchas maneras de recibir eventos de Azure Event Grid. Cuando un nuevo evento
está preparado, el servicio EventGrid publica una solicitud HTTP en el punto de conexión configurado con el
evento en el cuerpo de la solicitud.
Al igual que muchos otros servicios que admiten webhooks, EventGrid requiere que demuestre la propiedad de
su punto de conexión de Webhook antes de que comience a entregar eventos a ese punto de conexión. Este
requisito evita que un usuario malintencionado sature el punto de conexión con eventos. Cuando utiliza
cualquiera de los tres servicios de Azure enumerados a continuación, la infraestructura de Azure controla
automáticamente esta validación:
Azure Logic Apps con el conector de Event Grid
Azure Automation a través de webhook
Azure Functions con el desencadenador de Event Grid

Validación de puntos de conexión con eventos de Event Grid


Si utiliza cualquier otro tipo de punto de conexión, como una función de Azure basada en un desencadenador
HTTP, el código del punto de conexión debe participar en un protocolo de enlace de validación con EventGrid.
Event Grid admite dos formas de validar la suscripción.
1. Enlace sincrónico : En el momento de crear la suscripción a eventos, Event Grid envía un evento de
validación de suscripción en su punto de conexión. El esquema de este evento es similar a cualquier otro
evento de Event Grid. La parte de datos de este evento incluye una propiedad validationCode . La
aplicación comprueba que la solicitud de validación es para una suscripción a un evento esperado, y
devuelve el código de validación en la respuesta de forma sincrónica. Este mecanismo del protocolo de
enlace se admite en todas las versiones de EventGrid.
2. Enlace asincrónico : En algunos casos, no se puede devolver ValidationCode en la respuesta de forma
sincrónica. Por ejemplo, si usa un servicio de terceros (como Zapier o IFTTT), no puede responder con el
código de validación mediante programación.
A partir de la versión 2018-05-01-preview, EventGrid admite un protocolo de enlace de validación
manual. Si va a crear una suscripción de eventos mediante el SDK o la herramienta que usa la versión de
API 2018-05-01-preview, EventGrid envía una propiedad validationUrl en los datos del evento de
validación de suscripción. Para completar el protocolo de enlace, busque esa dirección URL en los datos
del evento y envíele una solicitud GET. Puede usar un cliente de REST o el explorador web.
La dirección URL proporcionada es válida durante 5 minutos . Durante ese tiempo, el estado de
aprovisionamiento de la suscripción al eventos es AwaitingManualAction . Si no ha completado la
validación manual en 5 minutos, el estado de aprovisionamiento se establece en Failed . Tendrá que
crear la suscripción de eventos de nuevo antes de intentar la validación manual.
Este mecanismo de autenticación también requiere el punto de conexión de webhook para devolver un
código de estado HTTP de 200 para que sepa que se aceptó el objeto POST para el evento de validación
antes de se pueda colocar en el modo de validación manual. Es decir, si el punto de conexión devuelve
200, pero no devuelve una respuesta de validación de forma sincrónica, el modo se cambia al modo de
validación manual. Si hay una operación GET en la dirección URL de validación dentro de un plazo de
cinco minutos, se considera el protocolo de enlace de validación se realizó correctamente.
NOTE
Para la validación no se admite el uso de certificados autofirmados. En su lugar, use un certificado firmado de una entidad
de certificación (CA) comercial.

Detalles de la validación
En el momento de crear o actualizar la suscripción a eventos, Event Grid publica un evento de validación de
suscripción en el punto de conexión de destino.
El evento contiene un valor de encabezado "aeg-event-type: SubscriptionValidation".
El cuerpo del evento tiene el mismo esquema que otros eventos de Event Grid.
La propiedad eventType del evento es [Link] .
La propiedad de datos del evento incluye una propiedad validationCode con una cadena generada
aleatoriamente. Por ejemplo, "validationCode: acb13…".
Los datos del evento también incluyen una propiedad validationUrl con una dirección URL para validar
manualmente la suscripción.
La matriz contiene solo el evento de validación. Otros eventos se envían en una solicitud aparte después de
devolver el código de validación.
Los SDK de EventGrid DataPlane tienen clases que corresponden a los datos de evento de validación de
suscripción y a la respuesta de validación de suscripción.
En el siguiente ejemplo se muestra un evento SubscriptionValidationEvent de ejemplo:

[
{
"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subject": "",
"data": {
"validationCode": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6",
"validationUrl": "[Link]
id=512d38b6-c7b8-40c8-89fe-f46f9e9622b6&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-
preview&token=1A1A1A1A"
},
"eventType": "[Link]",
"eventTime": "2018-01-25T22:12:19.4556811Z",
"metadataVersion": "1",
"dataVersion": "1"
}
]

Para comprobar la propiedad del punto de conexión, devuelva el código de validación en la propiedad
validationResponse, como se muestra en el siguiente ejemplo:

{
"validationResponse": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
}

Debe devolver un código de estado de respuesta HTTP 200 OK. HTTP 202 Aceptado no se reconoce como una
respuesta válida de validación de suscripción a Event Grid. La solicitud http debe completarse en 30 segundos. Si
la operación no finaliza en 30 segundos, se cancelará y puede que se vuelva a intentar pasados cinco segundos.
Si se producen errores en todos los intentos, se tratará como un error de protocolo de enlace de validación.
O bien, puede enviar una solicitud GET a la dirección URL de validación para validar la suscripción manualmente.
La suscripción a eventos permanece en estado pendiente hasta que se valida. La dirección URL de validación usa
el puerto 553. Si las reglas de firewall bloquean el puerto 553, puede que sea necesario actualizarlas para aplicar
el protocolo de enlace manual de forma satisfactoria.
Para ver un ejemplo del tratamiento del protocolo de enlace de validación de suscripción, consulte un ejemplo
de C#.

Validación de puntos de conexión con CloudEvents v1.0


Si ya está familiarizado con Event Grid, es posible que conozca el protocolo de enlace de validación de punto de
conexión de Event Grid para evitar el uso inapropiado. CloudEvents v1.0 implementa su propia semántica de
protección contra abusos mediante el método HTTP OPTIONS. Puede leer más sobre este tema aquí. Al usar el
esquema de CloudEvents para la salida, Event Grid lo hace con la protección contra abusos de CloudEvents v1.0
en lugar del mecanismo de eventos de validación de Event Grid.

Pasos siguientes
Consulte el siguiente artículo para saber cómo solucionar problemas con las validaciones de suscripciones a
eventos:
Solución de problemas de validación de suscripciones a eventos
Recuperación ante desastres geográfica del servidor
en Azure Event Grid
04/08/2020 • 3 minutes to read • Edit Online

Ahora, Event Grid incluye una recuperación ante desastres geográfica (GeoDR) automática de metadatos, en que
no solo se recuperan las suscripciones a eventos, los temas y los dominios nuevos, sino también todos los
existentes. Si deja de funcionar toda una región de Azure, Event Grid ya tendrá todos los metadatos de
infraestructura relacionados con el evento sincronizados en una región emparejada. Los nuevos eventos
empezarán a fluir de nuevo sin intervención del usuario.
La recuperación ante desastres se mide con dos métricas:
Objetivo de punto de recuperación (RPO): minutos u horas de datos que se pueden perder.
Objetivo de tiempo de recuperación (RTO): minutos u horas que el servicio puede estar inactivo.
La conmutación automática por error de Event Grid tiene diferentes RPO y RTO para los metadatos (suscripciones a
eventos, etc.) y los datos (eventos). Si necesita una especificación distinta a las siguientes, siempre puede
implementar su propia conmutación por error del lado cliente con las API de estado de temas.

Objetivo de punto de recuperación (RPO)


RPO de metadatos : cero minutos. Cada vez que se crea un recurso en Event Grid, se replica al instante en
otras regiones. Cuando se produce una conmutación por error, no se pierde ningún metadato.
RPO de datos : si el sistema funciona correctamente y tenía controlado el tráfico en el momento de la
conmutación por error regional, el RPO para eventos es de unos 5 minutos.

Objetivo de tiempo de recuperación (RTO)


RTO de metadatos : aunque esto suele ocurrir con mucha más rapidez, en 60 minutos, Event Grid empezará a
aceptar llamadas de creación, actualización y eliminación en los temas y las suscripciones.
RTO de datos : al igual que con los metadatos, esto suele ocurrir mucho más rápido, pero, en un plazo de 60
minutos, Event Grid comenzará a aceptar el tráfico nuevo después de una conmutación por error regional.

NOTE
El costo de GeoDR de metadatos en Event Grid es de 0 USD.

Pasos siguientes
Si quiere implementar la lógica de conmutación por error del lado cliente, consulte # Creación de una recuperación
ante desastres propia para temas personalizados en Event Grid.
Autenticación de la entrega de eventos en los
controladores de eventos (Azure Event Grid).
04/08/2020 • 5 minutes to read • Edit Online

En este artículo se proporciona información sobre cómo autenticar la entrega de eventos a los controladores
de eventos. También muestra como proteger los puntos de conexión de webhook que se usan para recibir
eventos de Event Grid mediante Azure Active Directory (Azure AD) o un secreto compartido.

Usar identidades asignadas por el sistema para la entrega de


eventos.
Puede habilitar una identidad administrada asignada por el sistema para un tema o dominio y usar la identidad
para reenviar eventos a destinos compatibles, como colas y temas de Service Bus, centros de eventos y cuentas
de almacenamiento.
He aquí los pasos:
1. Cree un tema o un dominio con una identidad asignada por el sistema, o bien actualice un tema o dominio
existente para habilitar la identidad.
2. Agregue la identidad a un rol adecuado (por ejemplo, Remitente de los datos de Service Bus) en el destino
(por ejemplo, una cola de Service Bus).
3. Al crear suscripciones de eventos, habilite el uso de la identidad para enviar eventos al destino.
Para obtener instrucciones paso a paso detalladas, consulte Entrega de eventos con una identidad
administrada.

Autenticación de la entrega de eventos a los puntos de conexión de


webhook
En las secciones siguientes se describe cómo autenticar la entrega de eventos a los puntos de conexión de
webhook. Debe usar un mecanismo de protocolo de enlace de validación con independencia del método que
use. Consulte Entrega de eventos de webhook para detalles.
Uso de Azure Active Directory (Azure AD)
Puede proteger el punto de conexión de webhook que se usa para recibir eventos de Event Grid mediante
Azure AD. Tendrá que crear una aplicación de Azure AD, crear un rol y una entidad de servicio en la aplicación
que autorice a Event Grid, y configurar la suscripción de eventos para usar la aplicación de Azure AD. Obtenga
información sobre cómo configurar Azure Active Directory con Event Grid.
Uso del secreto de cliente como parámetro de consulta
Además, puede proteger el punto de conexión del webhook mediante la incorporación de parámetros de
consulta a la dirección URL de destino del webhook, especificada como parte de la creación de una suscripción
de eventos. Establezca uno de los parámetros de consulta para que sea un secreto de cliente, como un token de
acceso o un secreto compartido. El servicio Event Grid incluye todos los parámetros de consulta en cada
solicitud de entrega de eventos al webhook. El servicio de webhook puede recuperar y validar el secreto. Si se
actualiza el secreto de cliente, también debe actualizarse la suscripción de eventos. Para evitar errores de
entrega durante la rotación del secreto, haga que el webhook acepte tanto los secretos antiguos como los
nuevos durante un plazo limitado antes de actualizar la suscripción de eventos con el nuevo secreto.
Como los parámetros de consulta pueden contener secretos de cliente, se controlan con más cuidado. Se
almacenan como cifrados y no son accesibles para los operadores del servicio. No se registran como parte de
los registros o seguimientos de servicio. Al recuperar las propiedades de la suscripción de eventos, los
parámetros de la consulta de destino no se devuelven de forma predeterminada. Por ejemplo: el parámetro --
include-full-endpoint-url se usará en la CLI de Azure.
Para más información sobre cómo entregar eventos a webhooks, consulte Entrega de eventos de webhook.

IMPORTANT

Azure Event Grid solo admite puntos de conexión de webhook HTTPS .

Pasos siguientes
Consulte autenticación de publicación de clientes para obtener información sobre la autenticación de clientes
que publican eventos en temas o dominios.
Autenticación de clientes que hacen publicaciones
(Azure Event Grid).
04/08/2020 • 3 minutes to read • Edit Online

En este artículo se proporciona información sobre la autenticación de clientes que publican eventos en temas o
dominios de Azure Event Grid mediante clave de acceso o token de Firma de acceso compar tido (SAS) . Se
recomienda el uso de SAS, pero la autenticación de clave proporciona programación simple y es compatible con
muchos editores de webhook existentes.

Autenticación mediante una clave de acceso


La autenticación de clave es la forma más sencilla de autenticación. Puede pasar la clave de acceso como un
encabezado HTTP o un parámetro de consulta de dirección URL.
Clave de acceso en un encabezado HTTP
Pase la clave de acceso como un valor para el encabezado HTTP: aeg-sas-key .

aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Clave de acceso como parámetro de consulta


También puede especificar aeg-sas-key como parámetro de consulta.

[Link]
key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Para obtener instrucciones sobre cómo obtener las claves de acceso para un tema o un dominio, consulte Obtener
claves de acceso.

Autenticación mediante un token de SAS


Los tokens de SAS para Event Grid incluyen el recurso, un tiempo de expiración y una firma. El formato del token
de SAS es: r={resource}&e={expiration}&s={signature} .
El recurso es la ruta de acceso del tema de Event Grid al que envía los eventos. Por ejemplo, una ruta de acceso de
recurso válida es: [Link] .
Para ver todas las versiones de API compatibles, vea Tipos de recursos de [Link].
En primer lugar, genere un token de SAS mediante programación y, a continuación, use el encabezado de
aeg-sas-token o el encabezado de Authorization SharedAccessSignature para autenticarse con Event Grid.

Generar tokens de SAS mediante programación


En el ejemplo siguiente se crea un token de SAS para su uso con Event Grid:
static string BuildSharedAccessSignature(string resource, DateTime expirationUtc, string key)
{
const char Resource = 'r';
const char Expiration = 'e';
const char Signature = 's';

string encodedResource = [Link](resource);


var culture = [Link]("en-US");
var encodedExpirationUtc = [Link]([Link](culture));

string unsignedSas = $"{Resource}={encodedResource}&{Expiration}={encodedExpirationUtc}";


using (var hmac = new HMACSHA256(Convert.FromBase64String(key)))
{
string signature = Convert.ToBase64String([Link]([Link](unsignedSas)));
string encodedSignature = [Link](signature);
string signedSas = $"{unsignedSas}&{Signature}={encodedSignature}";

return signedSas;
}
}

Uso del encabezado de token AEG -SAS


Este es un ejemplo de cómo pasar el token de SAS como un valor para el encabezado aeg-sas-toke .

aeg-sas-token:
r=https%3a%2f%[Link]%2feventGrid%2fapi%2fevent&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXX
XXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d

Uso del encabezado de autorización


Este es un ejemplo de cómo pasar el token de SAS como un valor para el encabezado Authorization .

Authorization: SharedAccessSignature
r=https%3a%2f%[Link]%2feventGrid%2fapi%2fevent&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXX
XXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d

Pasos siguientes
Consulte Autenticación de entrega de eventos para obtener información sobre la autenticación con controladores
de eventos para entregar eventos.
Autorización de acceso a recursos de Event Grid
04/08/2020 • 6 minutes to read • Edit Online

Azure Event Grid permite controlar el nivel de acceso dado a distintos usuarios para realizar diversas operaciones
de administración, como enumerar las suscripciones a eventos, crear otras nuevas y generar claves. Event Grid usa
el control de acceso basado en rol (RBAC) de Azure.

Tipos de operación
Event Grid admite las siguientes acciones:
[Link]/*/read
[Link]/*/write
[Link]/*/delete
[Link]/eventSubscriptions/getFullUrl/action
[Link]/topics/listKeys/action
[Link]/topics/regenerateKey/action
Las tres últimas operaciones devuelven información potencialmente confidencial, la cual se filtra de las
operaciones de lectura normales. Se recomienda restringir el acceso a estas operaciones.

Roles integrados
Event Grid proporciona dos roles integrados para administrar las suscripciones de eventos. Son importantes al
implementar dominios de eventos porque proporcionan a los usuarios los permisos que necesitan para suscribirse
a temas en el dominio del evento. Estos roles se centran en las suscripciones de eventos y no conceden acceso
para acciones como la creación de temas.
También puede asignar estos roles a un usuario o grupo.
Colaborador de EventGrid EventSubscription : administre las operaciones de suscripción de Event Grid.
[
{
"Description": "Lets you manage EventGrid event subscription operations.",
"IsBuiltIn": true,
"Id": "428e0ff05e574d9ca2212c70d0e0a443",
"Name": "EventGrid EventSubscription Contributor",
"IsServiceRole": false,
"Permissions": [
{
"Actions": [
"[Link]/*/read",
"[Link]/eventSubscriptions/*",
"[Link]/topicTypes/eventSubscriptions/read",
"[Link]/locations/eventSubscriptions/read",
"[Link]/locations/topicTypes/eventSubscriptions/read",
"[Link]/alertRules/*",
"[Link]/deployments/*",
"[Link]/subscriptions/resourceGroups/read",
"[Link]/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"Condition": null
}
],
"Scopes": [
"/"
]
}
]

Lector de EventGrid EventSubscription : lea las suscripciones de Event Grid.

[
{
"Description": "Lets you read EventGrid event subscriptions.",
"IsBuiltIn": true,
"Id": "2414bbcf64974faf8c65045460748405",
"Name": "EventGrid EventSubscription Reader",
"IsServiceRole": false,
"Permissions": [
{
"Actions": [
"[Link]/*/read",
"[Link]/eventSubscriptions/read",
"[Link]/topicTypes/eventSubscriptions/read",
"[Link]/locations/eventSubscriptions/read",
"[Link]/locations/topicTypes/eventSubscriptions/read",
"[Link]/subscriptions/resourceGroups/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": []
}
],
"Scopes": [
"/"
]
}
]

Roles personalizados
Si tiene que especificar permisos distintos a los de los roles integrados, puede crear roles personalizados.
Las siguientes son definiciones de roles de Event Grid de ejemplo que permiten a los usuarios realizar distintas
acciones. Estos roles personalizados son diferentes de los roles integrados, ya que conceden acceso más amplio
que las suscripciones a eventos.
[Link] : Únicamente se permiten operaciones de solo lectura.

{
"Name": "Event grid read only role",
"Id": "7C0B6B59-A278-4B62-BA19-411B70753856",
"IsCustom": true,
"Description": "Event grid read only role",
"Actions": [
"[Link]/*/read"
],
"NotActions": [
],
"AssignableScopes": [
"/subscriptions/<Subscription Id>"
]
}

[Link] : permitir acciones de publicación restringidas pero denegar acciones de


eliminación.

{
"Name": "Event grid No Delete Listkeys role",
"Id": "B9170838-5F9D-4103-A1DE-60496F7C9174",
"IsCustom": true,
"Description": "Event grid No Delete Listkeys role",
"Actions": [
"[Link]/*/write",
"[Link]/eventSubscriptions/getFullUrl/action"
"[Link]/topics/listkeys/action",
"[Link]/topics/regenerateKey/action"
],
"NotActions": [
"[Link]/*/delete"
],
"AssignableScopes": [
"/subscriptions/<Subscription id>"
]
}

[Link] : Permite todas las acciones de Event Grid.


{
"Name": "Event grid contributor role",
"Id": "4BA6FB33-2955-491B-A74F-53C9126C9514",
"IsCustom": true,
"Description": "Event grid contributor role",
"Actions": [
"[Link]/*/write",
"[Link]/*/delete",
"[Link]/topics/listkeys/action",
"[Link]/topics/regenerateKey/action",
"[Link]/eventSubscriptions/getFullUrl/action"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/<Subscription id>"
]
}

Puede crear roles personalizados con PowerShell, la CLI de Azure o REST.


Cifrado en reposo
Todos los eventos o datos escritos en el disco por el servicio Event Grid se cifran mediante una clave administrada
por Microsoft, lo que garantiza que se cifran en reposo. Además, el período máximo que se conservan los eventos
o los datos es de 24 horas, conforme a la directiva de reintentos de Event Grid. Event Grid elimina
automáticamente todos los eventos o datos tras 24 horas, o el período de vida del evento, lo que sea menor.

Permisos para suscripciones a eventos


Si usa un controlador de eventos que no sea un WebHook (como un almacenamiento de cola o un centro de
eventos), necesita acceso de escritura a ese recurso. Esta comprobación de permisos impide que un usuario no
autorizado envíe eventos al recurso.
Debe tener el permiso [Link]/EventSubscriptions/Write en el recurso que constituya el origen
del evento. Necesita este permiso porque está escribiendo una nueva suscripción en el ámbito del recurso. El
recurso requerido difiere en función de si se suscribe a un tema del sistema o a un tema personalizado. Ambos
tipos se describen en esta sección.
Temas del sistema (editores del servicio de Azure )
Para temas del sistema, necesita permiso para escribir una nueva suscripción a eventos en el ámbito del recurso
que publica el evento. El formato del recurso es:
/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider}/{resource-
type}/{resource-name}

Por ejemplo, para suscribirse a un evento en una cuenta de almacenamiento denominada myacct , necesita el
permiso [Link]/EventSubscriptions/Write en:
/subscriptions/####/resourceGroups/testrg/providers/[Link]/storageAccounts/myacct

Temas personalizados
Para temas personalizados, necesita permiso para escribir una nueva suscripción a eventos en el ámbito del tema
de Event Grid. El formato del recurso es:
/subscriptions/{subscription-id}/resourceGroups/{resource-group-
name}/providers/[Link]/topics/{topic-name}

Por ejemplo, para suscribirse a un tema personalizado denominado mytopic , necesita el permiso
[Link]/EventSubscriptions/Write en:
/subscriptions/####/resourceGroups/testrg/providers/[Link]/topics/mytopic
Pasos siguientes
Para obtener una introducción a Event Grid, vea About Event Grid (Acerca de Event Grid).
Seguridad de red para recursos de Azure Event Grid
04/08/2020 • 12 minutes to read • Edit Online

En este artículo se describe cómo usar las siguientes características de seguridad con Azure Event Grid:
Etiquetas de servicio para salida
Reglas de firewall de IP para entrada (versión preliminar)
Puntos de conexión privados para entrada

Etiquetas de servicio
Una etiqueta de servicio representa un grupo de prefijos de direcciones IP de un servicio de Azure determinado.
Microsoft administra los prefijos de direcciones que la etiqueta de servicio incluye y actualiza automáticamente dicha
etiqueta a medida que las direcciones cambian, lo que minimiza la complejidad de las actualizaciones frecuentes en las
reglas de seguridad de red. Para obtener más información sobre las etiquetas de servicio, consulte Introducción a las
etiquetas de servicio.
Puede usar etiquetas de servicio para definir controles de acceso a la red en grupos de seguridad de red o
Azure Firewall. Utilice etiquetas de servicio en lugar de direcciones IP específicas al crear reglas de seguridad. Al
especificar el nombre de la etiqueta de servicio (por ejemplo, AzureEventGrid ) en el campo de
origen o destino apropiado de una regla, puede permitir o denegar el tráfico para el servicio correspondiente.

¿SE P UEDE USA R PA RA


ET IQ UETA DE T RÁ F IC O EN T RA N T E O ¿P UEDE SER ¿SE P UEDE USA R C O N
SERVIC IO P RO P Ó SITO SA L IEN T E? REGIO N A L? A Z URE F IREWA L L?

AzureEventGrid Azure Event Grid. Ambos No No

Firewall de dirección IP
Azure Event Grid admite controles de acceso basados en IP para la publicación en temas y dominios. Con los controles
basados en IP, puede limitar los publicadores de un tema o dominio a solo un conjunto aprobado de máquinas y
servicios en la nube. Esta característica complementa los mecanismos de autenticación compatibles con Event Grid.
De forma predeterminada, el tema y el dominio son accesibles desde Internet siempre que la solicitud venga con una
autenticación y una autorización válidas. Con el firewall de IP, puede restringirlo aún más a solo un conjunto de
direcciones IP o intervalos de direcciones IP en la notación CIDR (Enrutamiento de interdominios sin clases). Los
publicadores que se originen desde cualquier otra dirección IP se rechazarán y recibirán una respuesta 403 (Prohibido).
A fin de obtener instrucciones paso a paso para configurar el firewall de IP para temas y dominios, consulte configurar
el firewall de IP.

Puntos de conexión privados


Puede usar puntos de conexión privados para permitir la entrada de eventos directamente desde su red virtual a sus
temas y dominios de forma segura a través de un vínculo privado sin tener que ir a la red pública de Internet. Un punto
de conexión privado es una interfaz de red especial para un servicio de Azure de una red virtual. Cuando se crea un
punto de conexión privado para un tema o dominio, este proporciona conectividad segura entre los clientes de la red
virtual y el recurso de Event Grid. Al punto de conexión privado se le asigna una dirección IP del intervalo de
direcciones IP de la red virtual. La conexión entre el punto de conexión privado y el servicio de Event Grid usa un
vínculo privado seguro.
El uso de puntos de conexión privados en un recurso de Event Grid permite:
Proteger el acceso a su tema o dominio desde una red virtual a través de la red troncal de Microsoft en oposición a
la red pública de Internet.
Conectarse de forma segura desde las redes locales que se conectan a la red virtual mediante VPN o instancias de
ExpressRoute con emparejamiento privado.
Cuando se crea un punto de conexión privado para un tema o dominio en la red virtual, se envía una solicitud de
consentimiento para su aprobación al propietario del recurso. Si el usuario que solicita la creación del punto de
conexión privado también es propietario del recurso, esta solicitud de consentimiento se aprueba automáticamente. De
lo contrario, la conexión está en estado pendiente hasta que se aprueba. Las aplicaciones de la red virtual se pueden
conectar al servicio de Event Grid a través del punto de conexión privado sin problemas, ya que se usan las mismas
cadenas de conexión y mecanismos de autorización que se usarían en cualquier otro caso. Los propietarios del recurso
pueden administrar las solicitudes de consentimiento y los puntos de conexión privados desde la pestaña Puntos de
conexión privados del recurso en Azure Portal.
Conexión a puntos de conexión privados
Los publicadores de una red virtual que usan el punto de conexión privado deben usar la misma cadena de conexión
para el tema o dominio que aquellos clientes que se conectan mediante el punto de conexión público. La resolución
DNS enruta automáticamente conexiones desde la red virtual al tema o dominio a través de un vínculo privado. De
forma predeterminada, Event Grid crea una zona DNS privada conectada a la red virtual con la actualización necesaria
para los puntos de conexión privados. Sin embargo, si usa su propio servidor DNS, puede que tenga que realizar
cambios adicionales en la configuración de DNS.
Cambios de DNS en puntos de conexión privados
Al crear un punto de conexión privado, el registro del recurso CNAME de DNS del recurso se actualiza a un alias de un
subdominio con el prefijo privatelink . De forma predeterminada, se crea una zona DNS privada que corresponde al
subdominio del vínculo privado.
Cuando se resuelve la dirección URL del punto de conexión del tema o dominio desde fuera de la red virtual con el
punto de conexión privado, se resuelve en el punto de conexión público del servicio. Los registros de recursos DNS de
'topicA', cuando se resuelven desde fuera de la red vir tual que hospeda el punto de conexión privado, serán:

N O M B RE T IP O VA L UE

[Link] CNAME [Link]

CNAME
[Link] <Azure traffic manager profile>

Puede denegar o controlar el acceso de un cliente de fuera de la red virtual a través del punto de conexión público
mediante el firewall de IP.
Cuando se resuelve desde la red virtual que hospeda el punto de conexión privado, la dirección URL del punto de
conexión del tema o dominio se resuelve en la dirección IP del punto de conexión privado. Los registros de recursos
DNS del tema 'topicA', cuando se resuelven desde dentro de la red vir tual que hospeda el punto de conexión
privado, serán:

N O M B RE T IP O VA L UE

[Link] CNAME [Link]

A
[Link] [Link]

Este enfoque permite el acceso al tema o dominio mediante la misma cadena de conexión para los clientes de la red
virtual que hospeda los puntos de conexión privados y los clientes que están fuera de esta.
Si va a usar un servidor DNS personalizado en la red, los clientes pueden resolver el FQDN del punto de conexión del
tema o dominio en la dirección IP del punto de conexión privado. Configure el servidor DNS para delegar el
subdominio del vínculo privado en la zona DNS privada de la red virtual o configure los registros A para
[Link] con la dirección IP del punto de conexión privado.

El nombre de zona DNS recomendado es [Link] .


Puntos de conexión privados y publicación
En la tabla siguiente se describen los distintos estados de la conexión del punto de conexión privado y los efectos en la
publicación:

ESTA DO DE C O N EXIÓ N P UB L IC A C IÓ N C O RREC TA ( SÍ/ N O )

Aprobado Sí

Rechazada No

Pending No

Escenario desconectado No

Para que la publicación se realice correctamente, el estado de conexión del punto de conexión privado debe
aprobarse . Si se rechaza una conexión, no se puede aprobar mediante Azure Portal. La única posibilidad es eliminar la
conexión y crear una nueva en su lugar.

Precios y cuotas
Los puntos de conexión privados están disponible en los niveles Básico y Premium de Event Grid. Event Grid
permite crear hasta 64 conexiones del punto de conexión privado por tema o dominio.
La característica Firewall de IP está disponible en los niveles Básico y Premium de Event Grid. Permitimos crear hasta
16 reglas de firewall de IP por tema o dominio.

Pasos siguientes
Puede configurar el firewall de IP para el recurso de Event Grid con el fin de restringir el acceso a través de Internet
público desde únicamente un conjunto seleccionado de direcciones IP o intervalos de direcciones IP. Para obtener
instrucciones paso a paso, consulte Configuración del firewall de IP.
Puede configurar puntos de conexión privados para restringir el acceso solo desde redes virtuales seleccionadas. Para
obtener instrucciones detalladas, consulte Configuración de puntos de conexión privados.
Para solucionar problemas de conectividad de red, consulte Solucionar problemas de conectividad de red.
Registros de diagnóstico de temas o dominios de Azure
Event Grid
04/08/2020 • 2 minutes to read • Edit Online

La configuración de diagnóstico permite a los usuarios de Event Grid capturar y ver los registros de errores de publicación y
entrega en una cuenta de almacenamiento, un centro de eventos o un área de trabajo de Log Analytics. En este artículo se
proporciona un esquema para los registros y una entrada de registro de ejemplo.

Esquema para registros de errores de publicación y entrega


N O M B RE DE P RO P IEDA D T IP O DE DATO S DESC RIP C IÓ N

Time DateTime Hora a la que se generó la entrada de


registro
Valor de ejemplo: 01-29-2020
09:52:02.700

EventSubscriptionName String El nombre de la suscripción de eventos


Valor de ejemplo: "EVENTSUB1"
Esta propiedad solo existe para los
registros de errores de entrega.

Category String Nombre de la categoría del registro.


Valores de ejemplo: "DeliveryFailures"
o "PublishFailures"

OperationName String Nombre de la operación realizada al


encontrar el error.
Valores de ejemplo: "Deliver" para
errores de entrega.

Message String Mensaje de registro para el usuario que


explica el motivo del error y otros detalles
adicionales.

ResourceId String El identificador de recurso para el recurso de


tema/dominio
Valores de ejemplo:
/SUBSCRIPTIONS/SAMPLE-SUBSCRIPTION-
ID/RESOURCEGROUPS/SAMPLE-
RESOURCEGROUP/PROVIDERS/[Link]/TOPICS/TOPI

Ejemplo
{
"time": "2019-11-01T00:17:13.4389048Z",
"resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID /RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-
NAME/PROVIDERS/[Link]/TOPICS/SAMPLE-TOPIC-NAME ",
"eventSubscriptionName": "SAMPLEDESTINATION",
"category": "DeliveryFailures",
"operationName": "Deliver",
"message": "Message:outcome=NotFound, latencyInMs=2635, systemId=17284f7c-0044-46fb-84b7-59fda5776017,
state=FilteredFailingDelivery, deliveryTime=11/1/2019 12:17:10 AM, deliveryCount=0, probationCount=0,
deliverySchema=EventGridEvent, eventSubscriptionDeliverySchema=EventGridEvent, fields=InputEvent, EventSubscriptionId,
DeliveryTime, State, Id, DeliverySchema, LastDeliveryAttemptTime, SystemId, fieldCount=, requestExpiration=1/1/0001 12:00:00
AM, delivered=False publishTime=11/1/2019 12:17:10 AM, eventTime=11/1/2019 12:17:09 AM, eventType=Type,
deliveryTime=11/1/2019 12:17:10 AM, filteringState=FilteredWithRpc, inputSchema=EventGridEvent, publisher=DIAGNOSTICLOGSTEST-
[Link], size=363, fields=Id, PublishTime, SerializedBody, EventType, Topic, Subject,
FilteringHashCode, SystemId, Publisher, FilteringTopic, TopicCategory, DataVersion, MetadataVersion, InputSchema, EventTime,
fieldCount=15, url=sb://[Link]/, deliveryResponse=NotFound: The messaging entity
'sb://[Link]/eh-diagnosticlogstest' could not be found. TrackingId:c98c5af6-
11f0-400b-8f56-c605662fb849_G14, SystemTracker:[Link]:eh-diagnosticlogstest,
Timestamp:2019-11-01T00:17:13, referenceId: ac141738a9a54451b12b4cc31a10dedc_G14:"
}

Pasos siguientes
Para aprender a habilitar registros de diagnóstico de temas o dominios, consulte Habilitación de registros de diagnóstico.
Métricas compatibles con Azure Event Grid
04/08/2020 • 7 minutes to read • Edit Online

En este artículo se proporcionan listas de métricas de Event Grid clasificadas por espacios de nombres.

[Link]/domains
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

PublishSuccessCo Eventos Count Total Número total de Tema


unt publicados eventos
publicados en
este tema

PublishFailCount Eventos no Count Total Número total de Topic,ErrorType,Er


publicados eventos que no ror
se han podido
publicar en este
tema

PublishSuccessLa Latencia de Milisegundos Total Latencia de None


tencyInMs publicación publicación
correcta correcta en
milisegundos

MatchedEventCo Eventos Count Total Número total de Topic,EventSubscr


unt coincidentes eventos que iptionName,Dom
coinciden con ainEventSubscript
esta suscripción ionName
de eventos

DeliveryAttemptF Eventos de error Count Total Número total de Topic,EventSubscr


ailCount en la entrega eventos que no iptionName,Dom
se han podido ainEventSubscript
entregar a esta ionName,Error,Err
suscripción de orType
eventos

DeliverySuccessC Eventos Count Total Número total de Topic,EventSubscr


ount entregados eventos que se iptionName,Dom
han entregado a ainEventSubscript
esta suscripción ionName
de eventos

DestinationProce Duración del Milisegundos Average Duración del Topic,EventSubscr


ssingDurationIn procesamiento procesamiento de iptionName,Dom
Ms de destino destino en ainEventSubscript
milisegundos ionName
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

DroppedEventCo Eventos quitados Count Total Número total de Topic,EventSubscr


unt eventos quitados iptionName,Dom
que coinciden ainEventSubscript
con esta ionName,DropRe
suscripción de ason
eventos

DeadLetteredCou Eventos en la Count Total Número total de Topic,EventSubscr


nt cola de mensajes eventos en la cola iptionName,Dom
fallidos de eventos ainEventSubscript
fallidos que ionName,DeadLet
coinciden con terReason
esta suscripción
de eventos

[Link]/topics
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

PublishSuccessCo Eventos Count Total Número total de None


unt publicados eventos
publicados en
este tema

PublishFailCount Eventos no Count Total Número total de ErrorType,Error


publicados eventos que no
se han podido
publicar en este
tema

UnmatchedEvent Eventos no Count Total Número total de None


Count coincidentes eventos que no
coinciden con
ninguna de las
suscripciones de
eventos de este
tema

PublishSuccessLa Latencia de Milisegundos Total Latencia de None


tencyInMs publicación publicación
correcta correcta en
milisegundos

MatchedEventCo Eventos Count Total Número total de EventSubscription


unt coincidentes eventos que Name
coinciden con
esta suscripción
de eventos
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

DeliveryAttemptF Eventos de error Count Total Número total de Error,ErrorType,Ev


ailCount en la entrega eventos que no entSubscriptionN
se han podido ame
entregar a esta
suscripción de
eventos

DeliverySuccessC Eventos Count Total Número total de EventSubscription


ount entregados eventos que se Name
han entregado a
esta suscripción
de eventos

DestinationProce Duración del Milisegundos Average Duración del EventSubscription


ssingDurationIn procesamiento procesamiento de Name
Ms de destino destino en
milisegundos

DroppedEventCo Eventos quitados Count Total Número total de DropReason,


unt eventos quitados EventSubscription
que coinciden Name
con esta
suscripción de
eventos

DeadLetteredCou Eventos en la Count Total Número total de DeadLetterReaso


nt cola de mensajes eventos en la cola n,
fallidos de eventos EventSubscription
fallidos que Name
coinciden con
esta suscripción
de eventos

[Link]/systemTopics
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

PublishSuccessCo Eventos Count Total Número total de None


unt publicados eventos
publicados en
este tema

PublishFailCount Eventos no Count Total Número total de ErrorType, Error


publicados eventos que no
se han podido
publicar en este
tema
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

UnmatchedEvent Eventos no Count Total Número total de None


Count coincidentes eventos que no
coinciden con
ninguna de las
suscripciones de
eventos de este
tema

PublishSuccessLa Latencia de Milisegundos Total Latencia de None


tencyInMs publicación publicación
correcta correcta en
milisegundos

MatchedEventCo Eventos Count Total Número total de EventSubscription


unt coincidentes eventos que Name
coinciden con
esta suscripción
de eventos

DeliveryAttemptF Eventos de error Count Total Número total de Error,ErrorType,Ev


ailCount en la entrega eventos que no entSubscriptionN
se han podido ame
entregar a esta
suscripción de
eventos

DeliverySuccessC Eventos Count Total Número total de EventSubscription


ount entregados eventos que se Name
han entregado a
esta suscripción
de eventos

DestinationProce Duración del Milisegundos Average Duración del EventSubscription


ssingDurationIn procesamiento procesamiento de Name
Ms de destino destino en
milisegundos

DroppedEventCo Eventos quitados Count Total Número total de DropReason,


unt eventos quitados EventSubscription
que coinciden Name
con esta
suscripción de
eventos

DeadLetteredCou Eventos en la Count Total Número total de DeadLetterReaso


nt cola de mensajes eventos en la cola n,
fallidos de eventos EventSubscription
fallidos que Name
coinciden con
esta suscripción
de eventos

[Link]/eventSubscriptions
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

MatchedEventCo Eventos Count Total Número total de None


unt coincidentes eventos que
coinciden con
esta suscripción
de eventos

DeliveryAttemptF Eventos de error Count Total Número total de Error, ErrorType


ailCount en la entrega eventos que no
se han podido
entregar a esta
suscripción de
eventos

DeliverySuccessC Eventos Count Total Número total de None


ount entregados eventos que se
han entregado a
esta suscripción
de eventos

DestinationProce Duración del Milisegundos Average Duración del None


ssingDurationIn procesamiento procesamiento de
Ms de destino destino en
milisegundos

DroppedEventCo Eventos quitados Count Total Número total de DropReason


unt eventos quitados
que coinciden
con esta
suscripción de
eventos

DeadLetteredCou Eventos en la Count Total Número total de DeadLetterReaso


nt cola de mensajes eventos en la cola n
fallidos de eventos
fallidos que
coinciden con
esta suscripción
de eventos

[Link]/extensionTopics
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

PublishSuccessCo Eventos Count Total Número total de None


unt publicados eventos
publicados en
este tema

PublishFailCount Eventos no Count Total Número total de ErrorType, Error


publicados eventos que no
se han podido
publicar en este
tema
N O M B RE DE
M ÉT RIC A PA RA T IP O DE
M ÉT RIC A M O ST RA R UN IDA D A GREGA C IÓ N DESC RIP C IÓ N DIM EN SIO N S

UnmatchedEvent Eventos no Count Total Número total de None


Count coincidentes eventos que no
coinciden con
ninguna de las
suscripciones de
eventos de este
tema

PublishSuccessLa Latencia de Milisegundos Total Latencia de None


tencyInMs publicación publicación
correcta correcta en
milisegundos

Pasos siguientes
Consulte el artículo siguiente: Registros de diagnóstico
Creación, visualización y administración de temas del
sistema de Event Grid en Azure Portal
04/08/2020 • 7 minutes to read • Edit Online

En este artículo se muestra cómo crear y administrar temas del sistema en Azure Portal. Para ver un resumen de
los temas del sistema, consulte Temas del sistema.

Creación de un tema del sistema


Puede crear un tema del sistema para un recurso de Azure (cuenta de almacenamiento, espacio de nombres de
Event Hubs, etc.) de dos maneras:
Mediante la página Eventos de un recurso, por ejemplo, la cuenta de almacenamiento o el espacio de nombres
de Event Hubs. Cuando use la página Eventos en Azure Portal para crear una suscripción de eventos para un
evento generado por un origen de Azure (por ejemplo: cuenta de Azure Storage), el portal crea un tema del
sistema para el recurso de Azure y, después, crea una suscripción para el tema del sistema. Especifique el
nombre del tema del sistema si va a crear una suscripción de eventos en el recurso de Azure por primera vez. A
partir de la segunda vez en adelante, el nombre del tema del sistema se muestra automáticamente en modo de
solo lectura. Consulte Quickstart: Enrutamiento de eventos de Blob Storage a un punto de conexión web
personalizado con Azure Portal para ver los pasos detallados.
Mediante la página Event Grid System Topics (Temas del sistema de Event Grid). Los siguientes pasos son
para crear un tema del sistema mediante la página Event Grid System Topics (Temas del sistema de Event
Grid).
1. Inicie sesión en el portal de Azure.
2. En el cuadro de búsqueda de la parte superior, escriba Event Grid System Topics (Temas del sistema de
Event Grid) y, luego, presione Entrar .
3. En la página Event Grid System Topics (Temas del sistema de Event Grid), seleccione + Add (+Agregar)
en la barra de herramientas.

4. En la página Create Event Grid System Topic (Crear tema del sistema de Event Grid), siga estos pasos:
a. Seleccione el tipo de tema . En el ejemplo siguiente, se selecciona la opción Storage Accounts
(Cuentas de almacenamiento).
b. Seleccione la suscripción de Azure que tiene el recurso de cuenta de almacenamiento.
c. Seleccione el grupo de recursos que tiene la cuenta de almacenamiento.
d. Seleccione la cuenta de almacenamiento .
e. Escriba un nombre para el tema del sistema que se va a crear.
NOTE
Puede usarlo para realizar búsquedas en métricas y registros de diagnóstico.

f. Seleccione Revisar + crear .

g. Revise la configuración y seleccione Create (Crear).


h. Una vez que la implementación se haya realizado correctamente, seleccione Ir al recurso para ver la
página Event Grid System Topic (Tema del sistema de Event Grid) correspondiente al tema del
sistema que ha creado.

Visualización de todos los temas del sistema


Siga estos pasos para ver todos los temas del sistema de Event Grid.
1. Inicie sesión en el portal de Azure.
2. En el cuadro de búsqueda de la parte superior, escriba Event Grid System Topics (Temas del sistema de
Event Grid) y, luego, presione Entrar .
3. En la página Event Grid System Topics (Temas del sistema de Event Grid), verá todos los temas del
sistema.

4. Seleccione un tema del sistema de la lista para ver detalles sobre él.
Esta página muestra detalles sobre el tema del sistema, como la siguiente información:
Origen. Nombre del recurso en el que se creó el tema del sistema.
Tipo de origen. Tipo de recurso. Por ejemplo, [Link] ,
[Link] , [Link] , etc.
Todas las suscripciones creadas para el tema del sistema.
Esta página permite operaciones como las siguientes:
Crear una suscripción a eventos. Seleccione +Event Subscription (+Suscripción a evento) en la barra
de herramientas.
Eliminar una suscripción a eventos. Seleccione Delete (Eliminar) en la barra de herramientas.
Agregar etiquetas para el tema del sistema. Seleccione Tags (Etiquetas) en el menú de la izquierda y
especifique los nombres y valores de las etiquetas.

Elimina un tema del sistema.


1. Siga las instrucciones de la sección Visualización de temas del sistema para ver todos los temas del sistema
y seleccione el tema del sistema que quiera eliminar de la lista.
2. En la página Event Grid System Topic (Tema del sistema de Event Grid), seleccione Delete (Eliminar) en la
barra de herramientas.

3. En la página de confirmación, seleccione OK (Aceptar) para confirmar la eliminación. El tema del sistema se
elimina y también todas las suscripciones de eventos relacionadas con él.

Creación de una suscripción a evento


1. Siga las instrucciones de la sección Visualización de temas del sistema para ver todos los temas del sistema
y seleccione el tema del sistema que quiera eliminar de la lista.
2. En la página Event Grid System Topic (Tema del sistema de Event Grid), seleccione + Event
Subscription (+Suscripción a evento) en la barra de herramientas.

3. Confirme que los campos Topic Type (Tipo de tema), Source Resource (Recurso de origen) y Topic
Name (Nombre del tema) se rellenan automáticamente. Escriba un nombre, seleccione un valor para
Endpoint Type (Tipo de punto de conexión) y especifique el punto de conexión . Seleccione Create
(Crear) para guardar la suscripción de eventos.

Pasos siguientes
Consulte los temas del sistema de Azure Event Grid para más información sobre los temas del sistema y los tipos
de temas admitidos en Azure Event Grid.
Creación, visualización y administración de temas del
sistema de Event Grid en la CLI de Azure
04/08/2020 • 4 minutes to read • Edit Online

En este artículo se muestra cómo crear y administrar temas del sistema con la CLI de Azure. Para una introducción
a los temas del sistema, consulte Temas del sistema.

Instalación de la extensión para la CLI de Azure


Para la CLI de Azure, necesita la extensión de Event Grid.
En Cloud Shell:
Si ha instalado la extensión anteriormente, actualícela: az extension update -n eventgrid
Si no ha instalado la extensión anteriormente, instálela: az extension add -n eventgrid
Para una instalación local:
1. Instalación de la CLI de Azure. Asegúrese de que tiene la última versión. Para ello, debe comprobarlo con
az --version .
2. Desinstale las versiones anteriores de la extensión: az extension remove -n eventgrid
3. Instale la extensión eventgrid con az extension add -n eventgrid

Creación de un tema del sistema


Para crear un tema del sistema en un origen de Azure en primer lugar y después una suscripción de
eventos para ese tema, consulte los temas de referencia siguientes:
az eventgrid system-topic create

# Get the ID of the Azure source (for example: Azure Storage account)
storageid=$(az storage account show \
--name <AZURE STORAGE ACCOUNT NAME> \
--resource-group <AZURE RESOURCE GROUP NAME> \
--query id --output tsv)

# Create the system topic on the Azure source (example: Azure Storage account)
az eventgrid system-topic create \
-g <AZURE RESOURCE GROUP NAME> \
--name <SPECIFY SYSTEM TOPIC NAME> \
--location <LOCATION> \
--topic-type [Link] \
--source $storageid

Para obtener una lista de los valores de topic-type que puede usar para crear un tema del sistema,
ejecute el comando siguiente. Estos valores de tipo de tema representan los orígenes de eventos que
admiten la creación de temas del sistema. Pase por alto [Link] y
[Link] de la lista.

az eventgrid topic-type list --output json | grep -w id


az eventgrid system-topic event-subscription create

az eventgrid system-topic event-subscription create --name <SPECIFY EVENT SUBSCRIPTION NAME> \


-g rg1 --system-topic-name <SYSTEM TOPIC NAME> \
--endpoint <ENDPOINT URL>

Para crear un tema del sistema (implícitamente) al crear una suscripción de eventos para un origen de
Azure, use el método az eventgrid event-subscription create. Este es un ejemplo:

storageid=$(az storage account show --name <AZURE STORAGE ACCOUNT NAME> --resource-group <AZURE
RESOURCE GROUP NAME> --query id --output tsv)
endpoint=<ENDPOINT URL>

az eventgrid event-subscription create \


--source-resource-id $storageid \
--name <EVENT SUBSCRIPTION NAME> \
--endpoint $endpoint

Para ver un tutorial con instrucciones paso a paso, consulte Suscripción a la cuenta de almacenamiento.

Visualización de todos los temas del sistema


Para ver todos los temas del sistema y los detalles de uno seleccionado, use los comandos siguientes:
az eventgrid system-topic list

az eventgrid system-topic list

az eventgrid system-topic show

az eventgrid system-topic show -g <AZURE RESOURCE GROUP NAME> -n <SYSTEM TOPIC NAME>

Elimina un tema del sistema.


Para eliminar un tema del sistema, use el comando siguiente:
az eventgrid system-topic delete

az eventgrid system-topic delete -g <AZURE RESOURCE GROUP NAME> --name <SYSTEM TOPIC NAME>

Pasos siguientes
Consulte los temas del sistema de Azure Event Grid para más información sobre los temas del sistema y los tipos
de temas admitidos en Azure Event Grid.
Creación de temas del sistema en Azure Event Grid
con plantillas de Resource Manager
04/08/2020 • 3 minutes to read • Edit Online

En este artículo se muestra cómo crear y administrar temas del sistema con plantillas de Resource Manager. Para
ver un resumen de los temas del sistema, consulte Temas del sistema.

Creación del tema del sistema primero y después la suscripción de


eventos
Para crear un tema del sistema en un origen de Azure en primer lugar y después crear una suscripción de eventos
para ese tema, puede usar una plantilla como la siguiente:

{
"$schema": "[Link]
"contentVersion": "[Link]",
"parameters": {
"storageName": {
"type": "string",
"defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Provide a unique name for the Blob Storage account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Provide a location for the Blob Storage account that supports Event Grid."
}
},
"eventSubName": {
"type": "string",
"defaultValue": "subToStorage",
"metadata": {
"description": "Provide a name for the Event Grid subscription."
}
},
"endpoint": {
"type": "string",
"metadata": {
"description": "Provide the URL for the WebHook to receive events. Create your own endpoint
for events."
}
},
"systemTopicName": {
"type": "String",
"defaultValue": "mystoragesystemtopic",
"metadata": {
"description": "Provide a name for the system topic."
}
}
},
"resources": [
{
"name": "[parameters('storageName')]",
"type": "[Link]/storageAccounts",
"apiVersion": "2017-10-01",
"sku": {
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"location": "[parameters('location')]",
"tags": {},
"properties": {
"accessTier": "Hot"
}
},
{
"name": "[parameters('systemTopicName')]",
"type": "[Link]/systemTopics",
"apiVersion": "2020-04-01-preview",
"location": "[parameters('location')]",
"dependsOn": [
"[parameters('storageName')]"
],
"properties": {
"source": "[resourceId('[Link]/storageAccounts', parameters('storageName'))]",
"topicType": "[Link]"
}
},
{
"type": "[Link]/systemTopics/eventSubscriptions",
"apiVersion": "2020-04-01-preview",
"name": "[concat(parameters('systemTopicName'), '/', parameters('eventSubName'))]",
"dependsOn": [
"[resourceId('[Link]/systemTopics', parameters('systemTopicName'))]"
],
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"[Link]",
"[Link]"
]
}
}
}
]
}

Consulte Enrutamiento de eventos de almacenamiento de blobs a un punto de conexión web mediante una
plantilla de Azure Resource Manager para obtener instrucciones sobre cómo crear temas del sistema y
suscripciones con plantillas de Resource Manager.

Creación de un tema del sistema al crear una suscripción de eventos


Para crear un tema del sistema implícitamente, al crear una suscripción de eventos en un origen de Azure, puede
usar la siguiente plantilla:

{
"$schema": "[Link]
"contentVersion": "[Link]",
"parameters": {
"storageName": {
"type": "string",
"defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Provide a unique name for the Blob Storage account."
"description": "Provide a unique name for the Blob Storage account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Provide a location for the Blob Storage account that supports Event Grid."
}
},
"eventSubName": {
"type": "string",
"defaultValue": "subToStorage",
"metadata": {
"description": "Provide a name for the Event Grid subscription."
}
},
"endpoint": {
"type": "string",
"metadata": {
"description": "Provide the URL for the WebHook to receive events. Create your own endpoint
for events."
}
}
},
"resources": [
{
"name": "[parameters('storageName')]",
"type": "[Link]/storageAccounts",
"apiVersion": "2017-10-01",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"location": "[parameters('location')]",
"tags": {},
"properties": {
"accessTier": "Hot"
}
},
{
"type": "[Link]/storageAccounts/providers/eventSubscriptions",
"name": "[concat(parameters('storageName'), '/[Link]/',
parameters('eventSubName'))]",
"apiVersion": "2018-01-01",
"dependsOn": [
"[parameters('storageName')]"
],
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [
"All"
]
}
}
}
]
}
Pasos siguientes
Consulte los temas del sistema de Azure Event Grid para más información sobre los temas del sistema y los tipos
de temas admitidos en Azure Event Grid.
Obtención de claves de acceso para recursos de
Event Grid (temas o dominios)
04/08/2020 • 2 minutes to read • Edit Online

Las claves de acceso se utilizan para autenticar los eventos de publicación de una aplicación en recursos de Azure
Event Grid (temas y dominios). Se recomienda regenerar las claves periódicamente y almacenarlas de forma
segura. Como se le proporcionan dos claves de acceso, puede mantener las conexiones con una mientras se
regenera la otra.
En este artículo se describe cómo obtener las claves de acceso de un recurso de Event Grid (tema o dominio)
mediante Azure Portal, PowerShell o la CLI.

Azure portal
En Azure Portal, cambie a la pestaña Claves de acceso de la página Tema de Event Grid o Dominio de Event
Grid para su tema o dominio.

Azure PowerShell
Use el comando Get-AzEventGridTopicKey para obtener claves de acceso para los temas.

Get-AzEventGridTopicKey -ResourceGroup <RESOURCE GROUP NAME> -Name <TOPIC NAME>

Use el comando Get-AzEventGridDomainKey para obtener claves de acceso para los dominios.

Get-AzEventGridDomainKey -ResourceGroup <RESOURCE GROUP NAME> -Name <DOMAIN NAME>

Azure CLI
Use la lista de claves del tema az eventgrid para obtener las claves de acceso para los temas.

az eventgrid topic key list --resource-group <RESOURCE GROUP NAME> --name <TOPIC NAME>

Use la lista de claves del dominio az eventgrid para obtener las claves de acceso para los dominios.
az eventgrid domain key list --resource-group <RESOURCE GROUP NAME> --name <DOMAIN NAME>

Pasos siguientes
Consulte el artículo siguiente: Autenticación de clientes de publicación.
Publicación en un tema personalizado de Azure
Event Grid
04/08/2020 • 5 minutes to read • Edit Online

En este artículo se describe cómo publicar un evento en un tema personalizado. Muestra el formato de los datos
de publicación y eventos. El Acuerdo de Nivel de Servicio (SLA) solo se aplica a las publicaciones que coinciden
con el formato esperado.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module
(Presentación del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az,
consulte Instalación de Azure PowerShell.

Punto de conexión
Al enviar el método HTTP POST a un tema personalizado, use el formato del URI:
[Link] .

Por ejemplo, un URI válido es:


[Link] .
Para obtener el punto de conexión de un tema personalizado con la CLI de Azure, use:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Para obtener el punto de conexión de un tema personalizado con Azure PowerShell, use:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

En la solicitud, incluya un valor de encabezado denominado aeg-sas-key que contenga una clave para la
autenticación.
Por ejemplo, un valor de encabezado válido es
aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg== .
Para obtener la clave de un tema personalizado con la CLI de Azure, use:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

Para obtener la clave de un tema personalizado con PowerShell, use:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

Datos de evento
Para los temas personalizados, los datos de nivel superior contienen los mismos campos que los eventos estándar
definidos por los recursos. Una de esas propiedades es una propiedad de datos que contiene propiedades únicas
del tema personalizado. Como publicador de eventos, debe determinar las propiedades del objeto de datos. Use
el esquema siguiente:

[
{
"id": string,
"eventType": string,
"subject": string,
"eventTime": string-in-date-time-format,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string
}
]

Para obtener una descripción de estas propiedades, vea Esquema de eventos de Azure Event Grid. Al publicar
eventos en un tema de Event Grid, la matriz puede tener un tamaño total de hasta 1 MB. Cada evento en la matriz
se limita a 64 KB (disponibilidad general) o 1 MB (versión preliminar).

NOTE
Los eventos con un tamaño de hasta 64 KB están cubiertos por el Acuerdo de Nivel de Servicio de disponibilidad general
(GA). La compatibilidad de un evento con un tamaño de hasta 1 MB se encuentra actualmente en versión preliminar. Los
eventos de más de 64 KB se cobran en incrementos de 64 KB.

Por ejemplo, un esquema de datos de evento válido es:

[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0"
}]

Response
Después de publicar en el punto de conexión del tema, recibirá una respuesta. La respuesta es un código de
respuesta HTTP estándar. Algunas respuestas comunes son:

RESULTA DO RESP O N SE

Correcto 200 OK

Los datos del evento tienen un formato incorrecto 400 - Solicitud incorrecta

Clave de acceso no válida 401 No autorizado

Punto de conexión incorrecto 404 No encontrado


RESULTA DO RESP O N SE

La matriz o el evento superan los límites de tamaño 413 Carga demasiado grande

Si hay errores, el cuerpo del mensaje tiene el formato siguiente:

{
"error": {
"code": "<HTTP status code>",
"message": "<description>",
"details": [{
"code": "<HTTP status code>",
"message": "<description>"
}]
}
}

Pasos siguientes
Para información sobre la supervisión de las entregas de eventos, consulte Supervisar la entrega de mensajes
de Event Grid.
Para más información sobre la clave de autenticación, vea Seguridad y autenticación de Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Integración de Azure Event Grid con Auth0
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se describe cómo conectar sus cuentas de Auth0 y Azure al crear un tema de asociado de Event
Grid.
Consulte los códigos de tipo de evento de Auth0 para obtener una lista completa de los eventos compatibles con
Auth0.

Envío de eventos de Auth0 a Azure Event Grid


Para enviar eventos de Auth0 a Azure, haga lo siguiente:
1. Habilitación del proveedor de recursos de Event Grid
2. Configuración de un tema de asociado de Auth0 en el panel de Auth0
3. Activación del tema de asociado en Azure
4. Suscripción a eventos de Auth0
Para más información acerca de estos conceptos, consulte los conceptos de Event Grid.
Habilitación 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:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración, seleccione Proveedores de recursos.
4. Busque [Link].
5. Seleccione Registrar.
6. Actualice la vista para asegurarse de que el estado se cambie a Registrado.
Configuración de un tema de asociado de Auth0
Una parte del proceso de integración consiste en configurar Auth0 para usarse como un origen de eventos (este
paso se realiza en el panel de Auth0).
1. Inicie sesión en el panel de Auth0.
2. Vaya a Logs > Streams (Registros > Flujos).
3. Haga clic en + Create Stream (Crear flujo).
4. Seleccione Azure Event Grid y escriba un nombre único para el nuevo flujo.
5. Proporcione el id. de suscripción a Azure, la región de Azure y un nombre de grupo de recursos para crear el
origen del evento.
6. Haga clic en Guardar.
Activación del tema de asociado de Auth0 en Azure
La activación del tema de Auth0 en Azure permite que los eventos fluyan de Auth0 a Azure.
1. Inicie sesión en el Portal de Azure.
2. Busque Partner Topics en la parte superior y haga clic en Event Grid Partner Topics debajo de Servicios.
3. Haga clic en el tema que coincida con el flujo que creó en el panel de Auth0.
4. Confirme que el campo Source coincide con su cuenta de Auth0.
5. Haga clic en Activate (Activar).
Suscripción a eventos de Auth0
Creación de un controlador de eventos
Necesitará un controlador de eventos para probar un tema de asociado. Diríjase a su suscripción a Azure y
arranque un servicio que se admita como controlador de eventos, como una instancia de Azure Functions.
Suscripción al tema de asociado de Auth0
Suscribirse al tema de asociado de Auth0 le permite informarle a Event Grid sobre la ubicación a la que quiere
enviar los eventos de Auth0.
1. En la hoja del tema del asociado de la integración de Auth0, seleccione + Suscripción de eventos en la parte
superior.
2. En la página Crear suscripción de eventos, haga lo siguiente:
a. Escriba un nombre para la suscripción a eventos.
b. Seleccione el servicio o webhook de Azure que creó para el tipo de punto de conexión.
c. Siga las instrucciones del servicio en cuestión.
d. Haga clic en Crear.

Prueba
La integración del tema de asociado de Auth0 con Azure debería estar lista para usarse.
Comprobación de la integración
Para comprobar que la integración funciona según lo esperado:
1. Inicie sesión en el panel de Auth0.
2. Vaya a Logs > Streams (Registros > Flujos).
3. Haga clic en el flujo de Event Grid.
4. Una vez dentro del flujo, haga clic en la pestaña de estado. El flujo debe estar activo y, siempre y cuando no vea
ningún error, funciona.
Intente invocar cualquiera de las acciones de Auth0 que desencadenan un evento que se publicará para ver el flujo
de eventos.

Intentos de entrega y reintentos


Los eventos de Auth0 se entregan a Azure a través de un mecanismo de transmisión. Cada evento se envía a
medida que se desencadena en Auth0. Si Event Grid no puede recibir el evento, Auth0 intentará realizar el envío
del evento hasta tres veces. De lo contrario, Auth0 registrará el error de entrega en su sistema.

Pasos siguientes
Tema de asociado de Auth0
Introducción a los temas de asociados
Convertirse en asociado de Event Grid
Recepción de eventos en un punto de conexión de
HTTP
04/08/2020 • 11 minutes to read • Edit Online

En este artículo se describe cómo validar un punto de conexión de HTTP para recibir eventos de una suscripción a
eventos y, a continuación, recibir y deserializar los eventos. En este artículo se utiliza una función de Azure para
fines de demostración; sin embargo, se aplican los mismos conceptos con independencia de dónde se hospede la
aplicación.

NOTE
Se recomienda encarecidamente que use un desencadenador de la cuadrícula de eventos al desencadenar una función de
Azure con Event Grid. Aquí se usa un desencadenador de Webhook genérico con fines ilustrativos.

Prerrequisitos
Necesita una aplicación de función con una función desencadenada por HTTP.

Adición de dependencias
Si está desarrollando en .NET, agregue una dependencia a la función para el [Link] paquete de
NuGet. Los ejemplos de este artículo requieren la versión 1.4.0 o posterior.
Hay SDK para otros lenguajes disponibles a través de la referencia SDK de publicación. Estos paquetes contienen
los modelos para los tipos de evento nativos, como EventGridEvent , StorageBlobCreatedEventData y
EventHubCaptureFileCreatedEventData .

Haga clic en el vínculo "Ver archivos" de la función de Azure (panel más a la derecha del portal de funciones de
Azure) y cree un archivo denominado [Link]. Agregue el siguiente contenido al archivo [Link] y
guárdelo:

{
"frameworks": {
"net46":{
"dependencies": {
"[Link]": "2.0.0"
}
}
}
}
Validación de punto de conexión
Lo primero que querrá hacer es controlar eventos [Link] . Cada vez que
alguien se suscribe a un evento, Event Grid envía un evento de validación al punto de conexión con
validationCode en la carga de datos. El punto de conexión debe reproducirlo en el cuerpo de la respuesta para
demostrar que el punto de conexión es válido y le pertenece. Si usa un desencadenador de Event Grid en lugar de
una función desencadenada por WebHook, la validación del punto de conexión se completa de manera
automática. Si usa un servicio de API de terceros (como Zapier o IFTTT), puede que no sea capaz de reflejar el
código de validación mediante programación. Con esos servicios, puede validar manualmente la suscripción
mediante una dirección URL de validación que se envía en el evento de validación de la suscripción. Copie esa
dirección URL en la propiedad validationUrl y envíe una solicitud GET mediante un cliente de REST o el
explorador web.
En C#, la función DeserializeEventGridEvents() deserializa los eventos de Event Grid. Deserializa los datos del
evento en el tipo adecuado, como StorageBlobCreatedEventData. Use la clase
[Link] para obtener los nombres y tipos de eventos compatibles.

Para reflejar el código de validación mediante programación, use el código siguiente. Encontrará ejemplos
relacionados en el ejemplo de consumidor de Event Grid.
using [Link];
using [Link];
using [Link];
using [Link];

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)


{
[Link]($"C# HTTP trigger function begun");
string response = [Link];

string requestContent = await [Link]();


[Link]($"Received events: {requestContent}");

EventGridSubscriber eventGridSubscriber = new EventGridSubscriber();

EventGridEvent[] eventGridEvents = [Link](requestContent);

foreach (EventGridEvent eventGridEvent in eventGridEvents)


{
if ([Link] is SubscriptionValidationEventData)
{
var eventData = (SubscriptionValidationEventData)[Link];
[Link]($"Got SubscriptionValidation event data, validation code: {[Link]},
topic: {[Link]}");
// Do any additional validation (as required) and then return back the below response

var responseData = new SubscriptionValidationResponse()


{
ValidationResponse = [Link]
};

return [Link]([Link], responseData);


}
}

return [Link]([Link], response);


}

[Link] = function (context, req) {


[Link]('JavaScript HTTP trigger function begun');
var validationEventType = "[Link]";

for (var events in [Link]) {


var body = [Link][events];
// Deserialize the event data into the appropriate type based on event type
if ([Link] && [Link] == validationEventType) {
[Link]("Got SubscriptionValidation event data, validation code: " + [Link]
+ " topic: " + [Link]);

// Do any additional validation (as required) and then return back the below response
var code = [Link];
[Link] = { status: 200, body: { "ValidationResponse": code } };
}
}
[Link]();
};

Prueba de respuesta de validación


Pruebe la función de la respuesta de validación pegando el evento de ejemplo en el campo de prueba para la
función:
[{
"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subject": "",
"data": {
"validationCode": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
},
"eventType": "[Link]",
"eventTime": "2018-01-25T22:12:19.4556811Z",
"metadataVersion": "1",
"dataVersion": "1"
}]

Al hacer clic en Ejecutar, el resultado debería ser 200 OK y


{"ValidationResponse":"512d38b6-c7b8-40c8-89fe-f46f9e9622b6"} en el cuerpo:

Control de eventos de Blob Storage


Ahora, se puede ampliar la función para controlar [Link] :
using [Link];
using [Link];
using [Link];
using [Link];

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)


{
[Link]($"C# HTTP trigger function begun");
string response = [Link];

string requestContent = await [Link]();


[Link]($"Received events: {requestContent}");

EventGridSubscriber eventGridSubscriber = new EventGridSubscriber();

EventGridEvent[] eventGridEvents = [Link](requestContent);

foreach (EventGridEvent eventGridEvent in eventGridEvents)


{
if ([Link] is SubscriptionValidationEventData)
{
var eventData = (SubscriptionValidationEventData)[Link];
[Link]($"Got SubscriptionValidation event data, validation code: {[Link]},
topic: {[Link]}");
// Do any additional validation (as required) and then return back the below response

var responseData = new SubscriptionValidationResponse()


{
ValidationResponse = [Link]
};

return [Link]([Link], responseData);


}
else if ([Link] is StorageBlobCreatedEventData)
{
var eventData = (StorageBlobCreatedEventData)[Link];
[Link]($"Got BlobCreated event data, blob URI {[Link]}");
}
}

return [Link]([Link], response);


}
[Link] = function (context, req) {
[Link]('JavaScript HTTP trigger function begun');
var validationEventType = "[Link]";
var storageBlobCreatedEvent = "[Link]";

for (var events in [Link]) {


var body = [Link][events];
// Deserialize the event data into the appropriate type based on event type
if ([Link] && [Link] == validationEventType) {
[Link]("Got SubscriptionValidation event data, validation code: " + [Link]
+ " topic: " + [Link]);

// Do any additional validation (as required) and then return back the below response
var code = [Link];
[Link] = { status: 200, body: { "ValidationResponse": code } };
}

else if ([Link] && [Link] == storageBlobCreatedEvent) {


var blobCreatedEventData = [Link];
[Link]("Relaying received blob created event payload:" +
[Link](blobCreatedEventData));
}
}
[Link]();
};

Prueba del control de evento creado por blob


Pruebe la nueva funcionalidad de la función; para ello, coloque un evento de Blob Storage en el campo de prueba y
ejecute:

[{
"topic": "/subscriptions/{subscription-
id}/resourceGroups/Storage/providers/[Link]/storageAccounts/xstoretestaccount",
"subject": "/blobServices/default/containers/testcontainer/blobs/[Link]",
"eventType": "[Link]",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "0x8D4BCC2E4835CD0",
"contentType": "text/plain",
"contentLength": 524288,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]

Debería ver el resultado de la dirección URL del blob en el registro de la función:


También puede probar esta salida mediante la creación de una cuenta de Blob Storage o una cuenta de
almacenamiento de uso general V2 (GPv2), la adición de una suscripción de eventos y la configuración del punto
de conexión a la dirección URL de la función:

Control de eventos personalizados


Por último, ampliemos una vez más la función para que también pueda controlar eventos personalizados.
En C#, el SDK admite la asignación de un nombre de tipo de evento al tipo de datos de evento. Use la función
AddOrUpdateCustomEventMapping() para asignar el evento personalizado.

Agregue una comprobación para el evento [Link] . El código final debe tener el aspecto
siguiente:
using [Link];
using [Link];
using [Link];
using [Link];

class ContosoItemReceivedEventData
{
[JsonProperty(PropertyName = "itemSku")]
public string ItemSku { get; set; }
}

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)


{
[Link]($"C# HTTP trigger function begun");
string response = [Link];

string requestContent = await [Link]();


[Link]($"Received events: {requestContent}");

EventGridSubscriber eventGridSubscriber = new EventGridSubscriber();


[Link]("[Link]",
typeof(ContosoItemReceivedEventData));
EventGridEvent[] eventGridEvents = [Link](requestContent);

foreach (EventGridEvent eventGridEvent in eventGridEvents)


{
if ([Link] is SubscriptionValidationEventData)
{
var eventData = (SubscriptionValidationEventData)[Link];
[Link]($"Got SubscriptionValidation event data, validation code: {[Link]},
topic: {[Link]}");
// Do any additional validation (as required) and then return back the below response

var responseData = new SubscriptionValidationResponse()


{
ValidationResponse = [Link]
};

return [Link]([Link], responseData);


}
else if ([Link] is StorageBlobCreatedEventData)
{
var eventData = (StorageBlobCreatedEventData)[Link];
[Link]($"Got BlobCreated event data, blob URI {[Link]}");
}
else if ([Link] is ContosoItemReceivedEventData)
{
var eventData = (ContosoItemReceivedEventData)[Link];
[Link]($"Got ContosoItemReceived event data, item SKU {[Link]}");
}
}

return [Link]([Link], response);


}
[Link] = function (context, req) {
[Link]('JavaScript HTTP trigger function begun');
var validationEventType = "[Link]";
var storageBlobCreatedEvent = "[Link]";
var customEventType = "[Link]";

for (var events in [Link]) {


var body = [Link][events];
// Deserialize the event data into the appropriate type based on event type
if ([Link] && [Link] == validationEventType) {
[Link]("Got SubscriptionValidation event data, validation code: " + [Link]
+ " topic: " + [Link]);

// Do any additional validation (as required) and then return back the below response
var code = [Link];
[Link] = { status: 200, body: { "ValidationResponse": code } };
}

else if ([Link] && [Link] == storageBlobCreatedEvent) {


var blobCreatedEventData = [Link];
[Link]("Relaying received blob created event payload:" +
[Link](blobCreatedEventData));
}

else if ([Link] && [Link] == customEventType) {


var payload = [Link];
[Link]("Relaying received custom payload:" + [Link](payload));
}
}
[Link]();
};

Prueba del control de eventos personalizados


Por último, pruebe que la función ahora pueda controlar el tipo de evento personalizado:

[{
"subject": "Contoso/foo/bar/items",
"eventType": "[Link]",
"eventTime": "2017-08-16T01:57:26.005121Z",
"id": "602a88ef-0001-00e6-1233-1646070610ea",
"data": {
"itemSku": "Standard"
},
"dataVersion": "",
"metadataVersion": "1"
}]

También puede probar esta funcionalidad en vivo mediante el envío de un evento personalizado con CURL desde
Portal o la publicación en un tema personalizado con cualquier servicio o aplicación que pueda ejecutar POST en
un punto de conexión, como Postman. Cree un tema y una suscripción a eventos personalizados con el punto de
conexión establecido como dirección URL de la función.

Pasos siguientes
Explore los SDK de Event Grid para administración y publicación.
Obtenga información acerca de cómo publicar en un tema personalizado.
Pruebe uno de los tutoriales detallados sobre Event Grid y funciones, como el cambio de tamaño de imágenes
cargadas a Blob Storage.
Mensajes fallidos y directivas de reintento
04/08/2020 • 7 minutes to read • Edit Online

Cuando crea una suscripción a eventos, puede personalizar la configuración de entrega de estos. Este artículo
muestra cómo configurar una ubicación de la cola de mensajes fallidos y personalizar la configuración de
reintentos. Para obtener información acerca de estas características, consulte Entrega y reintento de entrega de
mensajes de Event Grid.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module
(Presentación del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az,
consulte Instalación de Azure PowerShell.

Establecimiento de una ubicación para los eventos fallidos


Para establecer una ubicación de la cola de mensajes fallidos, se necesita una cuenta de almacenamiento para
mantener los eventos que no se pueden entregar a un punto de conexión. Los ejemplos obtienen el identificador
de recurso de una cuenta de almacenamiento existente. Crean una suscripción de eventos que usa un
contenedor en esa cuenta de almacenamiento para el punto de conexión de mensajes con problemas de entrega.

NOTE
Cree una cuenta de almacenamiento y un contenedor de blobs en el almacenamiento antes de ejecutar los comandos
de este artículo.
El servicio Event Grid crea blobs en este contenedor. Los nombres de los blobs tendrán el nombre de la suscripción de
Event Grid con todas las letras en mayúsculas. Por ejemplo, si el nombre de la suscripción es My-Blob-Subscription, los
nombres de los blobs de mensajes con problemas de entrega tendrán MY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/[Link]). Este
comportamiento sirve para proteger contra las diferencias en el control de las mayúsculas y minúsculas entre servicios
de Azure.

Azure CLI

containername=testcontainer

topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --
output tsv)

az eventgrid event-subscription create \


--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--deadletter-endpoint $storageid/blobServices/default/containers/$containername

Para desactivar las colas de mensajes fallidos, vuelva a ejecutar el comando para crear la suscripción de eventos,
pero no proporcione un valor para deadletter-endpoint . No es necesario eliminar la suscripción de eventos.
NOTE
Si usa la CLI de Azure en la máquina local, utilice la versión 2.0.56 o superior. Para instrucciones sobre cómo instalar la
versión más reciente de la CLI de Azure, consulte Instalación de la CLI de Azure.

PowerShell

$containername = "testcontainer"

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id


$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id

New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"

Para desactivar las colas de mensajes fallidos, vuelva a ejecutar el comando para crear la suscripción de eventos,
pero no proporcione un valor para DeadLetterEndpoint . No es necesario eliminar la suscripción de eventos.

NOTE
Si usa Azure PowerShell en la máquina local, use Azure PowerShell versión 1.1.0 o superior. Descargue e instale la última
versión de Azure PowerShell desde las descargas de Azure.

Establecimiento de la directiva de reintentos


Al crear una suscripción a Event Grid, puede establecer durante cuanto tiempo debe intentar Event Grid entregar
el evento. De manera predeterminada, Event Grid lo intenta durante 24 horas (1440 minutos), o 30 veces. Puede
establecer cualquiera de estos valores para la suscripción a Event Grid. El valor del período de vida del evento
debe ser un entero entre 1 y 1440. El valor de reintentos máximos debe ser un entero entre 1 y 30.
No se puede configurar la programación de reintentos.
Azure CLI
Para establecer el período de vida del evento en otro valor distinto de 1440 minutos, use:

az eventgrid event-subscription create \


-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--event-ttl 720

Para establecer el número máximo de reintentos en otro valor distinto a 30, use:

az eventgrid event-subscription create \


-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--max-delivery-attempts 18

Si establece event-ttl y max-deliver-attempts , Event Grid usa la primera opción más próxima a la expiración
para determinar cuándo se debe detener la entrega de eventos.
PowerShell
Para establecer el período de vida del evento en otro valor distinto de 1440 minutos, use:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-EventTtl 720

Para establecer el número máximo de reintentos en otro valor distinto a 30, use:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18

Si establece EventTtl y MaxDeliveryAttempt , Event Grid usa la primera opción más próxima a la expiración para
determinar cuándo se debe detener la entrega de eventos.

Pasos siguientes
Para una aplicación de ejemplo que usa una aplicación de función de Azure para procesar los eventos de
mensajes fallidos, consulte Ejemplos de mensajes fallidos de Azure Event Grid para .NET.
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Filtrado de eventos para Event Grid
04/08/2020 • 9 minutes to read • Edit Online

En este artículo se muestra cómo filtrar eventos al crear una suscripción de Event Grid. Para obtener información
sobre las opciones de filtrado de eventos, consulte Understand event filtering for Event Grid subscriptions
(Descripción del filtrado de events para suscripciones de Event Grid).

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de AzureRM
que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más información acerca del
nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module
(Presentación del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la instalación del módulo Az,
consulte Instalación de Azure PowerShell.

Filtrar por tipo de evento


Al crear una suscripción de Event Grid, puede especificar qué tipos de evento se envían al punto de conexión. En
los ejemplos de esta sección se crean suscripciones de eventos para un grupo de recursos, pero se limitan los
eventos que se envían a [Link] y [Link] . Si
necesita más flexibilidad al filtrar eventos por tipos de eventos, consulte Filtrado por operadores avanzados y
campos de datos.
Para PowerShell, use el parámetro -IncludedEventType al crear la suscripción.

$includedEventTypes = "[Link]", "[Link]"

New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes

Para la CLI de Azure, use el parámetro --included-event-types . En el ejemplo siguiente se usa la CLI de Azure en
un shell de Bash:

includedEventTypes="[Link] [Link]"

az eventgrid event-subscription create \


--name demoSubToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--included-event-types $includedEventTypes

Para una plantilla de Resource Manager, use la propiedad includedEventTypes .


"resources": [
{
"type": "[Link]/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [
"[Link]",
"[Link]"
]
}
}
}
]

Filtrar por asunto


Puede filtrar eventos por el asunto de los datos del evento. Puede especificar un valor que debe coincidir con el
principio o el final del asunto. Si necesita más flexibilidad al filtrar eventos por asunto, consulte Filtrado por
operadores avanzados y campos de datos.
En el siguiente ejemplo de PowerShell, se crea una suscripción de eventos que filtra por el principio del asunto. Se
usa el parámetro -SubjectBeginsWith para limitar los eventos a aquellos de un recurso específico. Se pasa el
identificador de recurso de un grupo de seguridad de red.

$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId

New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId

En el siguiente ejemplo de PowerShell se crea una suscripción para un almacenamiento de blobs. Se limitan los
eventos a aquellos con un asunto que termina por .jpg .

$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id

New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"

En el siguiente ejemplo de la CLI de Azure, se crea una suscripción de eventos que filtra por el principio del asunto.
Se usa el parámetro --subject-begins-with para limitar los eventos a aquellos de un recurso específico. Se pasa el
identificador de recurso de un grupo de seguridad de red.
resourceId=$(az resource show --name demoSecurityGroup --resource-group myResourceGroup --resource-type
[Link]/networkSecurityGroups --query id --output tsv)

az eventgrid event-subscription create \


--name demoSubscriptionToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--subject-begins-with $resourceId

En el siguiente ejemplo de la CLI de Azure se crea una suscripción para un almacenamiento de blobs. Se limitan
los eventos a aquellos con un asunto que termina por .jpg .

storageid=$(az storage account show --name $storageName --resource-group myResourceGroup --query id --output
tsv)

az eventgrid event-subscription create \


--resource-id $storageid \
--name demoSubToStorage \
--endpoint <endpoint-URL> \
--subject-ends-with ".jpg"

En el siguiente ejemplo de plantilla de Resource Manager, se crea una suscripción de eventos que filtra por el
principio del asunto. Se usa la propiedad subjectBeginsWith para limitar los eventos a aquellos de un recurso
específico. Se pasa el identificador de recurso de un grupo de seguridad de red.

"resources": [
{
"type": "[Link]/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "[resourceId('[Link]/networkSecurityGroups','demoSecurityGroup')]",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]

En el siguiente ejemplo de plantilla de Resource Manager se crea una suscripción para un almacenamiento de
blobs. Se limitan los eventos a aquellos con un asunto que termina por .jpg .
"resources": [
{
"type": "[Link]/storageAccounts/providers/eventSubscriptions",
"name": "[concat(parameters('storageName'), '/[Link]/', parameters('eventSubName'))]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectEndsWith": ".jpg",
"subjectBeginsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]

Filtrado por operadores y datos


Para obtener más flexibilidad en el filtrado, puede usar propiedades de datos y operadores para filtrar eventos.
Suscripción con filtros avanzados
Para obtener información acerca de los operadores y las claves que puede usar para el filtrado avanzado, consulte
Advanced filtering (Filtrado avanzado).
En estos ejemplos se crea un tema personalizado. Se suscriben al tema personalizado y filtra por un valor en el
objeto de datos. Los eventos que tienen la propiedad de color establecida en azul, rojo o verde se envían a la
suscripción.
Para la CLI de Azure, utilice:

topicName=<your-topic-name>
endpointURL=<endpoint-URL>

az group create -n gridResourceGroup -l eastus2


az eventgrid topic create --name $topicName -l eastus2 -g gridResourceGroup

topicid=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \


--source-resource-id $topicid \
-n demoAdvancedSub \
--advanced-filter [Link] stringin blue red green \
--endpoint $endpointURL \
--expiration-date "<yyyy-mm-dd>"

Tenga en cuenta que se ha establecido una fecha de expiración para la suscripción.


Para PowerShell, use:
$topicName = <your-topic-name>
$endpointURL = <endpoint-URL>

New-AzResourceGroup -Name gridResourceGroup -Location eastus2


New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location eastus2 -Name $topicName

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Id

$expDate = '<mm/dd/yyyy hh:mm:ss>' | Get-Date


$AdvFilter1=@{operator="StringIn"; key="[Link]"; Values=@('blue', 'red', 'green')}

New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint $endpointURL `
-ExpirationDate $expDate `
-AdvancedFilter @($AdvFilter1)

Prueba del filtro


Para probar el filtro, envíe un evento con el campo de color establecido en verde. Dado que verde es uno de los
valores del filtro, el evento se entrega en el punto de conexión.
Para la CLI de Azure, utilice:

topicEndpoint=$(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)

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime":


"'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "green"},"dataVersion": "1.0"} ]'

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

Para PowerShell, use:

$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Endpoint


$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicName

$eventID = Get-Random 99999


$eventDate = Get-Date -Format s

$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="green"
}
dataVersion="1.0"
}

$body = "["+(ConvertTo-Json $htbody)+"]"

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Para probar un escenario donde no se envía el evento, envíe un evento con el campo de color establecido en
amarillo. El amarillo no es uno de los valores especificados en la suscripción, por lo que el evento no se entrega a
su suscripción.
Para la CLI de Azure, utilice:

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime":


"'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "yellow"},"dataVersion": "1.0"} ]'

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

Para PowerShell, use:

$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="yellow"
}
dataVersion="1.0"
}

$body = "["+(ConvertTo-Json $htbody)+"]"

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Pasos siguientes
Para información sobre la supervisión de las entregas de eventos, consulte Supervisar la entrega de mensajes
de Event Grid.
Para más información sobre la clave de autenticación, vea Seguridad y autenticación de Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Consulta de suscripciones de Event Grid
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se describe cómo enumerar las suscripciones de Event Grid en una suscripción a Azure. Cuando
se consultan las suscripciones de Event Grid existentes, es importante conocer los distintos tipos de
suscripciones, ya que se usan parámetros diferentes en función del tipo de suscripción que se desea obtener.

NOTE
Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell. Aún puede usar el módulo de
AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Para más
información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure
PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell). Para obtener instrucciones sobre la
instalación del módulo Az, consulte Instalación de Azure PowerShell.

Grupos de recursos y suscripciones de Azure


Ni las suscripciones ni los grupos de recursos son recursos de Azure. Por consiguiente, las suscripciones de
Event Grid a grupos de recursos o a suscripciones de Azure no tienen las mismas propiedades que las
suscripciones de Event Grid a los recursos de Azure. Las suscripciones de Event Grid a grupos de recursos o a
suscripciones de Azure se consideran globales.
Para obtener suscripciones de Event Grid para una suscripción de Azure y sus grupos de recursos, no es preciso
especificar ningún parámetro. Asegúrese de que ha seleccionado la suscripción de Azure en la que desea
realizar una consulta. Los ejemplos siguientes no obtienen suscripciones de Event Grid para temas
personalizados o recursos de Azure.
Para la CLI de Azure, utilice:

az account set -s "My Azure Subscription"


az eventgrid event-subscription list

Para PowerShell, use:

Set-AzContext -Subscription "My Azure Subscription"


Get-AzEventGridSubscription

Para obtener las suscripciones de Event Grid para una suscripción de Azure, especifique el tipo de tema
[Link] .
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --topic-type-name "[Link]" --location


global

Para PowerShell, use:

Get-AzEventGridSubscription -TopicTypeName "[Link]"


Para obtener las suscripciones de Event Grid para todos los tipos de recursos de una suscripción de Azure,
especifique el tipo de tema [Link] .
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --topic-type-name "[Link]" --location


global

Para PowerShell, use:

Get-AzEventGridSubscription -TopicTypeName "[Link]"

Para obtener las suscripciones de Event Grid para un grupo de recursos especificado, indique el nombre del
grupo de recursos como parámetro.
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --resource-group myResourceGroup --location global

Para PowerShell, use:

Get-AzEventGridSubscription -ResourceGroupName myResourceGroup

Temas personalizados y recursos de Azure


Los temas personalizados de Event Grid son recursos de Azure. Por consiguiente, en las suscripciones de Event
Grid tanto los temas personalizados como otros recursos, como la cuenta de Blob Storage, se consultan de la
misma forma. Para obtener las suscripciones de Event Grid para temas personalizados, es preciso usar
parámetros que identifiquen el recurso o la ubicación del recurso. No es posible realizar consultas generales a
las suscripciones de Event Grid de los recursos de su suscripción de Azure.
Para obtener las suscripciones de Event Grid para temas personalizados y otros recursos de una ubicación,
especifique el nombre de dicha ubicación.
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --location westus2

Para PowerShell, use:

Get-AzEventGridSubscription -Location westus2

Para obtener las suscripciones a temas personalizados para una ubicación, especifique la ubicación y el tipo de
tema [Link] .
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --topic-type-name "[Link]" --location "westus2"

Para PowerShell, use:


Get-AzEventGridSubscription -TopicTypeName "[Link]" -Location westus2

Para obtener las suscripciones a las cuentas de almacenamiento para una ubicación, especifique la ubicación y
el tipo de tema [Link] .
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --topic-type "[Link]" --location westus2

Para PowerShell, use:

Get-AzEventGridSubscription -TopicTypeName "[Link]" -Location westus2

Para obtener las suscripciones de Event Grid para un tema personalizado, especifique tanto el nombre del tema
como el de su grupo de recursos.
Para la CLI de Azure, utilice:

az eventgrid event-subscription list --topic-name myCustomTopic --resource-group myResourceGroup

Para PowerShell, use:

Get-AzEventGridSubscription -TopicName myCustomTopic -ResourceGroupName myResourceGroup

Para obtener las suscripciones de Event Grid para un recurso concreto, especifique el identificador del recurso.
Para la CLI de Azure, utilice:

resourceid=$(az resource show -n mystorage -g myResourceGroup --resource-type


"[Link]/storageaccounts" --query id --output tsv)
az eventgrid event-subscription list --resource-id $resourceid

Para PowerShell, use:

$resourceid = (Get-AzResource -Name mystorage -ResourceGroupName myResourceGroup).ResourceId


Get-AzEventGridSubscription -ResourceId $resourceid

Pasos siguientes
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Suscripción a eventos a través del portal
04/08/2020 • 2 minutes to read • Edit Online

En este artículo se describe cómo crear suscripciones de Event Grid a través del portal.

Creación de suscripciones de eventos


Para crear una suscripción de Event Grid para cualquiera de los orígenes de eventos admitidos, siga estos pasos. En
este artículo se muestra cómo crear una suscripción de Event Grid para una suscripción a Azure.
1. Seleccione Todos los ser vicios .

2. Busque Suscripciones de Event Grid y selecciónela entre las opciones disponibles.

3. Seleccione + Suscripción de eventos .

4. Seleccione el tipo de suscripción que desea crear. Por ejemplo, para suscribirse a eventos desde su
suscripción a Azure, seleccione Suscripciones de Azure y la suscripción de destino.
5. Para suscribirse a todos los tipos de evento para este origen del evento, mantenga activada la opción
Suscribirse a todos los tipos de evento . En caso contrario, seleccione los tipos de evento para esta
suscripción.

6. Proporcione detalles adicionales sobre la suscripción a los eventos, como el punto de conexión para el
control de eventos y un nombre de la suscripción.

7. Para habilitar la cola de mensajes fallidos y personalizar las directivas de reintento, seleccione
Características adicionales .
8. Seleccione un contenedor para almacenar los eventos que no se pueden entregar y establezca cómo se
envían los reintentos.

9. Cuando haya terminado, seleccione Crear .

Creación de una suscripción en un recurso


Algunos orígenes de eventos admiten la creación de una suscripción de eventos a través de la interfaz del portal
para ese recurso. Seleccione el origen del evento y busque Eventos en el panel izquierdo.

El portal presenta opciones para crear una suscripción de eventos que sea pertinente para ese origen.
Pasos siguientes
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Asignación de campos personalizados a esquemas
de Event Grid
04/08/2020 • 10 minutes to read • Edit Online

Si los datos del evento no coinciden con el esquema de Event Grid esperado, podrá seguir usando Event Grid para
enrutar el evento a los suscriptores. En este artículo se describe cómo asignar el esquema al de Event Grid.

IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

Instalación de la característica en vista previa


Esta característica se encuentra en su versión preliminar. Para usarlo, debe instalar una extensión o módulo de la
versión preliminar.
Instalación de la extensión para la CLI de Azure
Para la CLI de Azure, necesita la extensión de Event Grid.
En CloudShell:
Si ha instalado la extensión anteriormente, actualícela az extension update -n eventgrid
Si no ha instalado la extensión anteriormente, instálela az extension add -n eventgrid
Para una instalación local:
1. Instalación de la CLI de Azure. Asegúrese de que tiene la última versión. Para ello, debe comprobarlo con
az --version .
2. Desinstale las versiones anteriores de la extensión az extension remove -n eventgrid .
3. Instale la extensión eventgrid con az extension add -n eventgrid
Instalación del módulo para PowerShell
Para PowerShell, necesita el módulo [Link].
En CloudShell:
Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Para una instalación local:
1. Abra una consola de PowerShell como administrador
2. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Si el parámetro -AllowPrerelease no está disponible, siga estos pasos:
1. Ejecute Install-Module PowerShellGet -Force :
2. Ejecute Update-Module PowerShellGet :
3. Cierre la consola de PowerShell.
4. Reinicie PowerShell como administrador.
5. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Esquema del evento original


Supongamos que tiene una aplicación que envía eventos con el siguiente formato:

[
{
"myEventTypeField":"Created",
"resource":"Users/example/Messages/1000",
"resourceData":{"someDataField1":"SomeDataFieldValue"}
}
]

Aunque dicho formato no coincide con el esquema requerido, Event Grid permite asignar los campos al esquema.
También pueden recibir los valores en el esquema original.

Creación de temas personalizados con campos asignados


Al crear un tema personalizado, especifique cómo asignar campos del evento original al esquema de Event Grid.
Hay tres valores que se pueden usar para personalizar la asignación:
El valor del esquema de entrada especifica el tipo de esquema. Las opciones disponibles son el esquema
de CloudEvents, el esquema de eventos personalizados o el esquema de Event Grid. El valor
predeterminado es el esquema de Event Grid. Al crear la asignación personalizada entre el esquema y el
esquema de Event Grid, use el esquema de eventos personalizados. Si los eventos están en el esquema de
CloudEvents, use el esquema Cloudevents.
La propiedad mapping default values (asignación de valores predeterminados) especifica los valores
predeterminados para los campos en el esquema de Event Grid. Puede establecer valores predeterminados
para subject , eventtype y dataversion . Normalmente, se usa este parámetro si el esquema personalizado
no incluye un campo que se corresponde con alguno de esos tres campos. Por ejemplo, puede especificar
que la versión de datos siempre se establezca en 1.0 .
El valor de mapping fields (asignación de campos) asigna los campos del esquema al esquema de Event
Grid. Especifique los valores en pares clave-valor separados por espacios. Para el nombre de clave, usa el
nombre del campo de Event Grid. Para el valor, utilice el nombre del campo. Puede usar nombres de clave
para id , topic , eventtime , subject , eventtype y dataversion .
Para crear un tema personalizado con la CLI de Azure, use:
# If you have not already installed the extension, do it now.
# This extension is required for preview features.
az extension add --name eventgrid

az eventgrid topic create \


-n demotopic \
-l eastus2 \
-g myResourceGroup \
--input-schema customeventschema \
--input-mapping-fields eventType=myEventTypeField \
--input-mapping-default-values subject=DefaultSubject dataVersion=1.0

Para PowerShell, use:

# If you have not already installed the module, do it now.


# This module is required for preview features.
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

New-AzureRmEventGridTopic `
-ResourceGroupName myResourceGroup `
-Name demotopic `
-Location eastus2 `
-InputSchema CustomEventSchema `
-InputMappingField @{eventType="myEventTypeField"} `
-InputMappingDefaultValue @{subject="DefaultSubject"; dataVersion="1.0" }

Suscripción a temas de Event Grid


Al suscribirse al tema personalizado, especifique el esquema que le gustaría utilizar para recibir los eventos. Puede
especificar el esquema de CloudEvents, el esquema de eventos personalizados o el esquema de Event Grid. El valor
predeterminado es el esquema de Event Grid.
En el ejemplo siguiente se realiza la suscripción a un tema de Event Grid y se usa el esquema de Event Grid. Para la
CLI de Azure, utilice:

topicid=$(az eventgrid topic show --name demoTopic -g myResourceGroup --query id --output tsv)

az eventgrid event-subscription create \


--source-resource-id $topicid \
--name eventsub1 \
--event-delivery-schema eventgridschema \
--endpoint <endpoint_URL>

En el ejemplo siguiente se usa el esquema de entrada del evento:

az eventgrid event-subscription create \


--source-resource-id $topicid \
--name eventsub2 \
--event-delivery-schema custominputschema \
--endpoint <endpoint_URL>

En el ejemplo siguiente se realiza la suscripción a un tema de Event Grid y se usa el esquema de Event Grid. Para
PowerShell, use:
$topicid = (Get-AzureRmEventGridTopic -ResourceGroupName myResourceGroup -Name demoTopic).Id

New-AzureRmEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName eventsub1 `
-EndpointType webhook `
-Endpoint <endpoint-url> `
-DeliverySchema EventGridSchema

En el ejemplo siguiente se usa el esquema de entrada del evento:

New-AzureRmEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName eventsub2 `
-EndpointType webhook `
-Endpoint <endpoint-url> `
-DeliverySchema CustomInputSchema

Publicación de eventos en temas


Ahora ya puede enviar un evento al tema personalizado y ver el resultado de la asignación. A continuación se
indica el script para publicar un evento en el esquema de ejemplo:
Para la CLI de Azure, utilice:

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

event='[ { "myEventTypeField":"Created", "resource":"Users/example/Messages/1000", "resourceData":


{"someDataField1":"SomeDataFieldValue"} } ]'

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

Para PowerShell, use:

$endpoint = (Get-AzureRmEventGridTopic -ResourceGroupName myResourceGroup -Name demotopic).Endpoint


$keys = Get-AzureRmEventGridTopicKey -ResourceGroupName myResourceGroup -Name demotopic

$htbody = @{
myEventTypeField="Created"
resource="Users/example/Messages/1000"
resourceData= @{
someDataField1="SomeDataFieldValue"
}
}

$body = "["+(ConvertTo-Json $htbody)+"]"


Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Ahora, examinemos el punto de conexión de WebHook. Las dos suscripciones entregaron eventos en diferentes
esquemas.
La primera suscripción usó el esquema de Event Grid. El formato del evento entregado es:
{
"id": "aa5b8e2a-1235-4032-be8f-5223395b9eae",
"eventTime": "2018-11-07T23:59:14.7997564Z",
"eventType": "Created",
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/<subscription-
id>/resourceGroups/myResourceGroup/providers/[Link]/topics/demotopic",
"subject": "DefaultSubject",
"data": {
"myEventTypeField": "Created",
"resource": "Users/example/Messages/1000",
"resourceData": {
"someDataField1": "SomeDataFieldValue"
}
}
}

Estos campos contienen las asignaciones del tema personalizado. myEventTypeField se asigna a EventType . Se
usan los valores predeterminados para DataVersion y Subject . El objeto Data contiene los campos del esquema
del evento original.
La segunda suscripción usó el esquema del evento de entrada. El formato del evento entregado es:

{
"myEventTypeField": "Created",
"resource": "Users/example/Messages/1000",
"resourceData": {
"someDataField1": "SomeDataFieldValue"
}
}

Tenga en cuenta que se entregaron los campos originales.

Pasos siguientes
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Uso del esquema CloudEvents v1.0 con Event Grid
04/08/2020 • 11 minutes to read • Edit Online

Además de su esquema de eventos predeterminado, Azure Event Grid admite de forma nativa eventos de la
implementación de JSON de CloudEvents v1.0 y el enlace del protocolo HTTP. CloudEvents es una especificación
abierta para la descripción de datos de eventos.
CloudEvents simplifica la interoperabilidad al proporcionar un esquema de eventos común para la publicación y el
consumo de eventos basados en la nube. Este esquema permite herramientas uniformes, formas estándar de
enrutar y administrar eventos y formas universales de deserializar el esquema de eventos externo. Con un
esquema común, puede integrar más fácilmente el trabajo entre plataformas.
En la compilación de CloudEvents participan varios colaboradores, entre ellos Microsoft, mediante Cloud Native
Compute Foundation. Actualmente está disponible en versión 1.0.
En este artículo se describe cómo usar el esquema CloudEvents con Event Grid.

IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

Instalación de la característica en vista previa


Esta característica se encuentra en su versión preliminar. Para usarlo, debe instalar una extensión o módulo de la
versión preliminar.
Instalación de la extensión para la CLI de Azure
Para la CLI de Azure, necesita la extensión de Event Grid.
En CloudShell:
Si ha instalado la extensión anteriormente, actualícela az extension update -n eventgrid
Si no ha instalado la extensión anteriormente, instálela az extension add -n eventgrid
Para una instalación local:
1. Instalación de la CLI de Azure. Asegúrese de que tiene la última versión. Para ello, debe comprobarlo con
az --version .
2. Desinstale las versiones anteriores de la extensión az extension remove -n eventgrid .
3. Instale la extensión eventgrid con az extension add -n eventgrid
Instalación del módulo para PowerShell
Para PowerShell, necesita el módulo [Link].
En CloudShell:
Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Para una instalación local:
1. Abra una consola de PowerShell como administrador
2. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Si el parámetro -AllowPrerelease no está disponible, siga estos pasos:
1. Ejecute Install-Module PowerShellGet -Force :
2. Ejecute Update-Module PowerShellGet :
3. Cierre la consola de PowerShell.
4. Reinicie PowerShell como administrador.
5. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Esquema CloudEvent
Este es un ejemplo de un evento de Azure Blob Storage en formato de CloudEvents:

{
"specversion": "1.0",
"type": "[Link]",
"source": "/subscriptions/{subscription-id}/resourceGroups/{resource-
group}/providers/[Link]/storageAccounts/{storage-account}",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
"time": "2019-11-18T15:13:39.4589254Z",
"subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
"dataschema": "#",
"data": {
"api": "PutBlockList",
"clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
"requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
"eTag": "0x8D76C39E4407333",
"contentType": "image/png",
"contentLength": 30699,
"blobType": "BlockBlob",
"url": "[Link]
"sequencer": "000000000000000000000000000099240000000000c41c18",
"storageDiagnostics": {
"batchId": "681fe319-3006-00a8-0022-9e7cde000000"
}
}
}

Una descripción detallada de los campos disponibles, sus tipos y definiciones en CloudEvents v1.0 se encuentra
disponible aquí.
Los valores de encabezados de los eventos proporcionados en el esquema de CloudEvents y el esquema de Event
Grid son los mismos excepto para content-type . En el esquema de CloudEvents, ese valor de encabezado es
"content-type":"application/cloudevents+json; charset=utf-8" . En el esquema de Event Grid, ese valor de
encabezado es "content-type":"application/json; charset=utf-8" .

Configuración de Event Grid para CloudEvents


Puede usar Event Grid con eventos de entrada y salida de esquema CloudEvents. CloudEvents se puede usar con
eventos del sistema, como eventos de Blob Storage y eventos de IoT Hub, y con eventos personalizados. También
pueden transformar esos eventos en la red de un formato a otro.
ESQ UEM A DE EN T RA DA ESQ UEM A DE SA L IDA

Formato de CloudEvents Formato de CloudEvents

Formato de Event Grid Formato de CloudEvents

Formato de Event Grid Formato de Event Grid

Con todos los esquemas de eventos, Event Grid requiere validación al publicar en un tema de Event Grid y al crear
una suscripción de eventos. Para más información, vea Event Grid security and authentication (Seguridad y
autenticación de Event Grid).
Esquema de entrada
El esquema de entrada de un tema personalizado se establece al crear este.
Para la CLI de Azure, utilice:

# If you have not already installed the extension, do it now.


# This extension is required for preview features.
az extension add --name eventgrid

az eventgrid topic create \


--name <topic_name> \
-l westcentralus \
-g gridResourceGroup \
--input-schema cloudeventschemav1_0

Para PowerShell, use:

# If you have not already installed the module, do it now.


# This module is required for preview features.
Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery

New-AzureRmEventGridTopic `
-ResourceGroupName gridResourceGroup `
-Location westcentralus `
-Name <topic_name> `
-InputSchema CloudEventSchemaV1_0

Esquema de salida
El esquema de salida se establece al crear la suscripción de eventos.
Para la CLI de Azure, utilice:

topicID=$(az eventgrid topic show --name <topic-name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \


--name <event_subscription_name> \
--source-resource-id $topicID \
--endpoint <endpoint_URL> \
--event-delivery-schema cloudeventschemav1_0

Para PowerShell, use:


$topicid = (Get-AzureRmEventGridTopic -ResourceGroupName gridResourceGroup -Name <topic-name>).Id

New-AzureRmEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-DeliverySchema CloudEventSchemaV1_0

Actualmente, no puede usar un desencadenador de Event Grid para una aplicación de Azure Functions cuando el
evento se entrega en el esquema de CloudEvents. Use un desencadenador HTTP. Para obtener ejemplos de la
implementación de un desencadenador HTTP que recibe eventos en el esquema de CloudEvents, consulte el uso de
CloudEvents con Azure Functions.

Validación de punto de conexión con CloudEvents v1.0


Si ya está familiarizado con Event Grid, es posible que conozca el protocolo de enlace de validación de punto de
conexión de Event Grid para evitar el uso inapropiado. CloudEvents v1.0 implementa su propia semántica de
protección contra abusos mediante el método HTTP OPTIONS. Puede leer más sobre este tema aquí. Al usar el
esquema de CloudEvents para la salida, Event Grid lo hace con la protección contra abusos de CloudEvents v1.0 en
lugar del mecanismo de eventos de validación de Event Grid.

Uso con Azure Functions


El enlace de Event Grid para Azure Functions no admite de forma nativa CloudEvents, por lo que las funciones
desencadenadas por HTTP se usan para leer los mensajes de CloudEvents. Cuando se usa un desencadenador
HTTP para leer CloudEvents, tiene que escribir código para lo que el desencadenador de Event Grid hace
automáticamente:
Envía una respuesta de validación a una solicitud de validación de suscripción.
Invoca la función una vez por elemento de la matriz de eventos contenida en el cuerpo de la solicitud.
Para más información acerca de la dirección URL que se debe utilizar para invocar la función localmente o cuando
se ejecuta en Azure, consulte la documentación de referencia de enlaces del desencadenador HTTP.
El siguiente ejemplo de código C# para un desencadenador HTTP simula el comportamiento del desencadenador
de Event Grid. Utilice este ejemplo para los eventos entregados en el esquema de CloudEvents.
[FunctionName("HttpTrigger")]
public static async Task<HttpResponseMessage> Run([HttpTrigger([Link], "get", "post",
"options", Route = null)]HttpRequestMessage req, ILogger log)
{
[Link]("C# HTTP trigger function processed a request.");
if ([Link] == "OPTIONS")
{
// If the request is for subscription validation, send back the validation code

var response = [Link]([Link]);


[Link]("Webhook-Allowed-Origin", "[Link]");

return response;
}

var requestmessage = await [Link]();


var message = [Link](requestmessage);

// The request is not for subscription validation, so it's for an event.


// CloudEvents schema delivers one event at a time.
[Link]($"Source: {message["source"]}");
[Link]($"Time: {message["eventTime"]}");
[Link]($"Event data: {message["data"].ToString()}");

return [Link]([Link]);
}

El siguiente ejemplo de código JavaScript para un desencadenador HTTP simula el comportamiento del
desencadenador de Event Grid. Utilice este ejemplo para los eventos entregados en el esquema de CloudEvents.

[Link] = function (context, req) {


[Link]('JavaScript HTTP trigger function processed a request.');

if ([Link] == "OPTIONS") {
// If the request is for subscription validation, send back the validation code

[Link]('Validate request received');


[Link] = { status: 200 };
[Link]('Webhook-Allowed-Origin', '[Link]');
}
else
{
var message = [Link];

// The request is not for subscription validation, so it's for an event.


// CloudEvents schema delivers one event at a time.
var event = [Link](message);
[Link]('Source: ' + [Link]);
[Link]('Time: ' + [Link]);
[Link]('Data: ' + [Link]([Link]));
}

[Link]();
};

Pasos siguientes
Para información sobre la supervisión de las entregas de eventos, consulte Supervisar la entrega de mensajes
de Event Grid.
Le animamos a que pruebe CloudEvents, nos deje su opinión y contribuya a dicho esquema.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Administrar temas y publicar eventos con dominios
de eventos
04/08/2020 • 10 minutes to read • Edit Online

En este artículo se muestra cómo:


Crear un dominio de Event Grid
Suscribirse a temas de Event Grid
Enumeración de claves
Publicar eventos en un dominio
Para más información acerca de dominios de eventos, consulte Dominios de eventos para administrar temas de
Event Grid.

IMPORTANT
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un
módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los
módulos Az y AzureRM no son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas
versiones:
1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
3. Descargue e instale PowerShell Core 6.x o posterior.
4. Instale el módulo Az en una sesión de PowerShell Core.

Instalación de la característica en vista previa


Esta característica se encuentra en su versión preliminar. Para usarlo, debe instalar una extensión o módulo de la
versión preliminar.
Instalación de la extensión para la CLI de Azure
Para la CLI de Azure, necesita la extensión de Event Grid.
En CloudShell:
Si ha instalado la extensión anteriormente, actualícela az extension update -n eventgrid
Si no ha instalado la extensión anteriormente, instálela az extension add -n eventgrid
Para una instalación local:
1. Instalación de la CLI de Azure. Asegúrese de que tiene la última versión. Para ello, debe comprobarlo con
az --version .
2. Desinstale las versiones anteriores de la extensión az extension remove -n eventgrid .
3. Instale la extensión eventgrid con az extension add -n eventgrid
Instalación del módulo para PowerShell
Para PowerShell, necesita el módulo [Link].
En CloudShell:
Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Para una instalación local:
1. Abra una consola de PowerShell como administrador
2. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Si el parámetro -AllowPrerelease no está disponible, siga estos pasos:
1. Ejecute Install-Module PowerShellGet -Force :
2. Ejecute Update-Module PowerShellGet :
3. Cierre la consola de PowerShell.
4. Reinicie PowerShell como administrador.
5. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Crear un dominio de eventos


Para administrar grandes conjuntos de temas, cree un dominio de eventos.
CLI de Azure
PowerShell

# If you haven't already installed the extension, do it now.


# This extension is required for preview features.
az extension add --name eventgrid

az eventgrid domain create \


-g <my-resource-group> \
--name <my-domain-name> \
-l <location>

Una creación correcta devolverá los siguientes valores:

{
"endpoint": "[Link]
"id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/[Link]/domains/<my-
domain-name>",
"inputSchema": "EventGridSchema",
"inputSchemaMapping": null,
"location": "westus2",
"name": "<my-domain-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<my-resource-group>",
"tags": null,
"type": "[Link]/domains"
}

Anote endpoint y id , ya que se requieren para administrar el dominio y publicar eventos.

Administración del acceso a temas


La administración de acceso a temas se realiza mediante asignación de roles. La asignación de roles usa el control
de acceso basado en roles para limitar las operaciones en recursos de Azure a los usuarios autorizados en un
determinado ámbito.
Event Grid tiene dos roles integrados, que puede utilizar para asignar acceso a determinados usuarios a varios
temas dentro de un dominio. Estos roles son EventGrid EventSubscription Contributor (Preview) , que permite la
creación y eliminación de suscripciones, y EventGrid EventSubscription Reader (Preview) , que permite solo
enumerar las suscripciones a eventos.
CLI de Azure
PowerShell
El siguiente comando de la CLI de Azure limita alice@[Link] para crear y eliminar suscripciones de eventos
solo en el tema demotopic1 :

az role assignment create \


--assignee alice@[Link] \
--role "EventGrid EventSubscription Contributor (Preview)" \
--scope /subscriptions/<sub-id>/resourceGroups/<my-resource-
group>/providers/[Link]/domains/<my-domain-name>/topics/demotopic1

Para más información sobre la administración de acceso para las operaciones de Event Grid, consulte
Autenticación y seguridad de Event Grid.

Creación de temas y suscripciones


El servicio Event Grid crea y administra automáticamente el tema correspondiente en un dominio basado en la
llamada para crear una suscripción de eventos para un tema de dominio. No hay ningún paso más para crear un
tema en un dominio. De forma similar, cuando se elimina la última suscripción del evento para un tema, también
se elimina el tema.
Suscribirse a un tema en un dominio es lo mismo que suscribirse a cualquier otro recurso de Azure. Para el
identificador de recurso de origen, especifique el identificador de dominio de evento que se devolvió al crear el
dominio anteriormente. Para especificar el tema al que quiere suscribirse, agregue /topics/<my-topic> al final del
identificador del recurso de origen. Para crear una suscripción de eventos del ámbito de dominio que reciba todos
los eventos del dominio, especifique el identificador de dominio de evento sin especificar ningún tema.
Normalmente, el usuario al que concedió acceso en la sección anterior crearía la suscripción. Para simplificar este
artículo, cree la suscripción.
CLI de Azure
PowerShell

az eventgrid event-subscription create \


--name <event-subscription> \
--source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-
group>/providers/[Link]/domains/<my-domain-name>/topics/demotopic1" \
--endpoint [Link]

Si necesita un punto de conexión de prueba al que suscribir sus eventos, siempre puede implementar una
aplicación web precompilada que muestre los eventos entrantes. Puede enviar los eventos a su sitio web de
prueba en [Link] .

Los permisos que se establecen para un tema se almacenan en Azure Active Directory y se deben eliminar
explícitamente. Eliminar una suscripción de eventos no revoca el acceso de un usuario para crear suscripciones de
eventos si tiene acceso de escritura en un tema.

Publicar eventos en un dominio de Event Grid


Publicar eventos en un dominio es lo mismo que publicar en un tema personalizado. Sin embargo, en lugar de
publicar en el tema personalizado, debe publicar todos los eventos en el punto de conexión del dominio. En los
datos del evento JSON, especifique el tema al que desea que vayan los eventos. La siguiente matriz de eventos
enviará eventos con "id": "1111" al tema demotopic1 , mientras que el evento con "id": "2222" se enviará al
tema demotopic2 :

[{
"topic": "demotopic1",
"id": "1111",
"eventType": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"eventTime": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"dataVersion": "1.0"
},
{
"topic": "demotopic2",
"id": "2222",
"eventType": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"eventTime": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"dataVersion": "1.0"
}]

CLI de Azure
PowerShell
Para obtener el punto de conexión del dominio con la CLI de Azure, use

az eventgrid domain show \


-g <my-resource-group> \
-n <my-domain>

Para obtener las claves para un dominio, use:

az eventgrid domain key list \


-g <my-resource-group> \
-n <my-domain>

Después, use su método favorito para crear una solicitud HTTP POST para publicar los eventos en el dominio de
Event Grid.

Pasos siguientes
Para más información sobre los conceptos de alto nivel en dominios de eventos y saber por qué son útiles,
consulte la información general conceptual acerca de dominios de eventos.
Creación de una recuperación ante desastres propia
para temas personalizados en Event Grid
04/08/2020 • 14 minutes to read • Edit Online

La recuperación ante desastres se ocupa de recuperarse tras una pérdida grave de funcionalidad de la aplicación.
Este tutorial le guía por los pasos para configurar la arquitectura de eventos para recuperación en caso de que el
servicio Event Grid deje de funcionar correctamente en una región determinada.
En este tutorial, aprenderá a crear una arquitectura de conmutación por error activo-pasivo para temas
personalizados en Event Grid. Para realizar la conmutación por error, creará un reflejo de sus temas y
suscripciones entre dos regiones y, luego, administrará una conmutación por error cuando un tema deje de tener
un estado correcto. La arquitectura de este tutorial conmuta por error todo el tráfico nuevo. Es importante tener
en cuenta que, con esta configuración, los eventos ya en ejecución no se recuperarán hasta que la región
comprometida vuelva a tener un estado correcto.

NOTE
Event Grid admite ahora la recuperación ante desastres geográfica automática (GeoDR) en el servidor. Aún puede
implementar la lógica de recuperación ante desastres en el lado del cliente si desea un mayor control sobre el proceso de
conmutación por error. Para obtener más información acerca de GeoDR automática, consulte Recuperación de desastres
geográfica del lado servidor en Azure Event Grid.

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


Para probar la configuración de conmutación por error, necesitará un punto de conexión en el que recibir los
eventos. El punto de conexión no forma parte de su infraestructura de conmutación por error, pero funcionará
como nuestro controlador de eventos para facilitar la prueba.
Para simplificar la prueba, implemente una aplicación web pregenerada que muestre los mensajes de 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. Seleccione Deploy to Azure (Implementar en Azure) para implementar la solución en su suscripción. En
Azure Portal, proporcione valores para los parámetros.

2. La implementación puede tardar unos minutos en completarse. 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: [Link] Asegúrese de anotar esta dirección
URL, ya que la necesitará más adelante.
3. Verá el sitio, pero aún no se ha publicado en él ningún evento.
Habilitación del 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.
En Azure Portal:
1. Seleccione Suscripciones en el menú de la izquierda.
2. Seleccione la suscripción que está usando para Event Grid.
3. En el menú de la izquierda, en Configuración , seleccione Proveedores de recursos .
4. Busque [Link] .
5. Si no está registrado, seleccione Registrar .
Puede tardar unos instantes en finalizarse el registro. Seleccione Actualizar para actualizar el estado. Cuando el
estado es Registrado , ya está listo para continuar.

Creación de los temas principal y secundario


En primer lugar, cree dos temas de Event Grid. Estos temas funcionarán como el principal y el secundario. De
forma predeterminada, los eventos fluirán por el tema principal. Si hay una interrupción del servicio en la región
primaria, la base de datos secundaria tomará el relevo.
1. Inicie sesión en Azure Portal.
2. En la esquina superior izquierda del menú principal de Azure, elija Todos los ser vicios > busque Event
Grid > seleccione Temas de Event Grid .
Seleccione la estrella junto a Temas de Event Grid para agregarlo al menú de recursos y acceder a él más
fácilmente en el futuro.
3. En el menú Temas de Event Grid, seleccione +AGREGAR para crear el tema principal.
Asigne al tema un nombre lógico y agregue "-principal" como sufijo para que sea fácil realizar un
seguimiento.
La región de este tema será la región primaria.

4. Una vez creado el tema, vaya a él y copie el punto de conexión del tema . Necesitará el URI más adelante.
5. Obtenga la clave de acceso para el tema, que también necesitará más adelante. Haga clic en Claves de
acceso en el menú de recursos y copie Clave 1.

6. En la hoja Tema, haga clic en +Suscripción de eventos para crear una suscripción que conecte el sitio
web receptor de eventos de suscripción que creó en los requisitos previos con el tutorial.
Asigne un nombre lógico a la suscripción de eventos y agregue "-principal" como sufijo para que sea
fácil realizar un seguimiento.
Seleccione el webhook de tipo de punto de conexión.
Establezca el punto de conexión en la dirección URL del evento del receptor de eventos, que debe
parecerse a: [Link]
7. Repita el mismo flujo para crear su tema y suscripción secundarios. Esta vez, reemplace el sufijo "-principal"
por el sufijo "-secundario" para facilitar el seguimiento. Por último, asegúrese de colocarlo en una región
distinta de Azure. Aunque puede colocarlo donde quiera, se recomienda usar las regiones emparejadas de
Azure. Si coloca el tema y la suscripción secundarios en una región distinta, se tiene la seguridad de que los
nuevos eventos fluirán incluso si la región principal deja de funcionar.
Ahora debería tener:
Un sitio web receptor de eventos para pruebas.
Un tema principal en su región primaria.
Una suscripción al evento principal que conecta el tema principal con el sitio web receptor de eventos.
Un tema secundario en la región secundaria.
Una suscripción al evento secundario que conecta el tema principal con el sitio web receptor de eventos.

Implementación de conmutación por error en el lado de cliente


Ahora que tiene configurados un par de temas y suscripciones con redundancia regional, está listo para
implementar la conmutación por error en el cliente. Hay varias maneras de lograrlo, pero todas las
implementaciones de conmutación por error tendrán una característica común: si un tema ya no es correcto, el
tráfico se redirigirá al otro tema.
Implementación básica en el cliente
El siguiente código de ejemplo es un publicador .NET sencillo que siempre intentará publicar primero en el tema
principal. Si no tiene éxito, conmutará por error al tema secundario. En cualquier caso, también comprueba la API
de mantenimiento del otro tema mediante una operación GET en
[Link] . Un tema correcto siempre debe responder
con 200 Correcto cuando se realiza una operación GET en el punto de conexión /api/health .

using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];

namespace EventGridFailoverPublisher
{
// This captures the "Data" portion of an EventGridEvent on a custom topic
class FailoverEventData
{
[JsonProperty(PropertyName = "teststatus")]
public string TestStatus { get; set; }
}

class Program
{
static void Main(string[] args)
{
// TODO: Enter the endpoint each topic. You can find this topic endpoint value
// in the "Overview" section in the "Event Grid Topics" blade in Azure Portal..
string primaryTopic = "[Link]
region>.[Link]/api/events";
string secondaryTopic = "[Link]
region>.[Link]/api/events";

// TODO: Enter topic key for each topic. You can find this in the "Access Keys" section in the
// "Event Grid Topics" blade in Azure Portal.
string primaryTopicKey = "<your-primary-topic-key>";
string secondaryTopicKey = "<your-secondary-topic-key>";

string primaryTopicHostname = new Uri( primaryTopic).Host;


string secondaryTopicHostname = new Uri(secondaryTopic).Host;

Uri primaryTopicHealthProbe = new Uri("[Link] + primaryTopicHostname + "/api/health");


Uri secondaryTopicHealthProbe = new Uri("[Link] + secondaryTopicHostname + "/api/health");

var httpClient = new HttpClient();

try
{
TopicCredentials topicCredentials = new TopicCredentials(primaryTopicKey);
EventGridClient client = new EventGridClient(topicCredentials);

[Link](primaryTopicHostname, GetEventsList()).GetAwaiter().GetResult();
[Link]("Published events to primary Event Grid topic.");

HttpResponseMessage health = [Link](secondaryTopicHealthProbe).Result;


[Link]("\n\nSecondary Topic health " + health);
}
catch ([Link] e)
{
TopicCredentials topicCredentials = new TopicCredentials(secondaryTopicKey);
EventGridClient client = new EventGridClient(topicCredentials);
EventGridClient client = new EventGridClient(topicCredentials);

[Link](secondaryTopicHostname, GetEventsList()).GetAwaiter().GetResult();
[Link]("Published events to secondary Event Grid topic. Reason for primary topic
failure:\n\n" + e);

HttpResponseMessage health = [Link](primaryTopicHealthProbe).Result;


[Link]("\n\nPrimary Topic health " + health);
}

[Link]();
}

static IList<EventGridEvent> GetEventsList()


{
List<EventGridEvent> eventsList = new List<EventGridEvent>();

for (int i = 0; i < 5; i++)


{
[Link](new EventGridEvent()
{
Id = [Link]().ToString(),
EventType = "[Link]",
Data = new FailoverEventData()
{
TestStatus = "success"
},
EventTime = [Link],
Subject = "test" + i,
DataVersion = "2.0"
});
}

return eventsList;
}
}
}

Prueba
Ahora que tiene todos los componentes en su sitio, puede probar la implementación de la conmutación por error.
Ejecute el ejemplo anterior en Visual Studio Code o su entorno favorito. Reemplace los siguientes cuatro valores
por los puntos de conexión y claves de sus temas:
primaryTopic: el punto de conexión del tema principal.
secondaryTopic: el punto de conexión del tema secundario.
primaryTopicKey: la clave del tema principal.
secondaryTopicKey: la clave del tema secundario.
Intente ejecutar el publicador de eventos. Verá que los eventos de prueba se muestran en el visor de Event Grid,
como se ilustra a continuación.
Para asegurarse de que la conmutación por error funciona, puede cambiar algunos caracteres de la clave del tema
principal para que ya no sea válido. Intente ejecutar de nuevo el publicador. Aunque seguirá viendo que aparecen
nuevos eventos en el visor de Event Grid, si examina la consola verá que ya no se publican a través del tema
secundario.
Posibles extensiones
Hay muchas maneras de ampliar este ejemplo según sus necesidades. En escenarios de gran volumen, puede que
quiera comprobar periódicamente la API de mantenimiento del tema de forma independiente. Así, si un tema deja
de funcionar, no necesitará comprobarlo con cada publicación. Una vez que sepa que un tema ya no tiene un
estado correcto, puede adoptar como valor predeterminado la publicación en el tema secundario.
Igualmente, puede que quiera implementar la lógica de conmutación por recuperación según sus necesidades
específicas. Si publicar en el centro de datos más cercano es fundamental para reducir la latencia, puede sondear
periódicamente la API de mantenimiento de un tema que se haya conmutado por error. Cuando su estado vuelva a
ser correcto, sabrá que es seguro conmutar por recuperación al centro de datos más cercano.

Pasos siguientes
Más información sobre cómo recibir eventos en un punto de conexión HTTP.
Descubra cómo enrutar eventos a Conexiones híbridas.
Aprenda sobre la recuperación ante desastres mediante Azure DNS y Traffic Manager.
Seguimiento de las operaciones asincrónicas de
Azure
04/08/2020 • 7 minutes to read • Edit Online

Algunas operaciones de REST de Azure se ejecutan asincrónicamente porque la operación no se puede completar
rápidamente. En este artículo se describe cómo realizar un seguimiento del estado de las operaciones asincrónicas
a través de los valores devueltos en la respuesta.

Códigos de estado para las operaciones asincrónicas


Una operación asincrónica devuelve inicialmente un código de estado HTTP de alguno de estos tipos:
201 (Created)
202 (Accepted)
Cuando la operación se completa correctamente, devuelve:
200 (OK)
204 (No Content)
Consulte la documentación de la API REST para ver respuestas para la operación que está ejecutando.

Supervisión del estado de la operación


Las operaciones asincrónicas de REST devuelven valores de encabezado, que se utilizan para determinar el estado
de la operación. Hay potencialmente tres valores de encabezado para examinar:
Azure-AsyncOperation : dirección URL para comprobar el estado actual de la operación. Si la operación devuelve
este valor, utilícelo siempre (en lugar de Location) para realizar un seguimiento del estado de la operación.
Location : dirección URL para determinar cuándo se ha completado una operación. Use este valor solo cuando
no se devuelva Azure-AsyncOperation.
Retry-After : el número de segundos que deben transcurrir antes de comprobar el estado de la operación
asincrónica.
Sin embargo, no todas las operaciones asincrónicas devuelven todos estos valores. Por ejemplo, debe evaluar el
valor del encabezado Azure-AsyncOperation para una operación y el valor del encabezado Location para otra
operación.
Puede recuperar los valores de encabezado como recuperaría cualquier valor de encabezado de una solicitud. Por
ejemplo, en C#, recupere el valor del encabezado de un objeto HttpWebResponse denominado response con el
código siguiente:

[Link]("Azure-AsyncOperation").GetValue(0)

Solicitud y respuesta de Azure-AsyncOperation


Para obtener el estado de la operación asincrónica, envíe una solicitud GET a la dirección URL en el valor del
encabezado Azure-AsyncOperation.
El cuerpo de la respuesta de esta operación contiene información sobre la operación. El ejemplo siguiente muestra
los posibles valores devueltos por la operación:

{
"id": "{resource path from GET operation}",
"name": "{operation-id}",
"status" : "Succeeded | Failed | Canceled | {resource provider values}",
"startTime": "2017-01-06T20:56:36.002812+00:00",
"endTime": "2017-01-06T20:56:56.002812+00:00",
"percentComplete": {double between 0 and 100 },
"properties": {
/* Specific resource provider values for successful operations */
},
"error" : {
"code": "{error code}",
"message": "{error description}"
}
}

Solo se devuelve status para todas las respuestas. El objeto de error se devuelve cuando el estado es Failed o
Canceled. Todos los demás valores son opcionales; por lo tanto, la respuesta que reciba puede ser diferente del
ejemplo.

Valores ProvisioningState
Las operaciones que crean, actualizan o eliminan (PUT, PATCH, DELETE) un recurso, normalmente devuelven un
valor provisioningState . Cuando una operación ha finalizado, se devuelve uno de tres valores siguientes:
Correcto
Con error
Canceled
Todos los demás valores indican que la operación todavía se está ejecutando. El proveedor de recursos puede
devolver un valor personalizado que indica su estado. Por ejemplo, puede recibir Accepted cuando la solicitud se
ha recibido y está en ejecución.

Solicitudes y respuestas de ejemplo


Inicio de máquina virtual (202 con Azure -AsyncOperation)
En este ejemplo se muestra cómo determinar el estado de la operación star t para máquinas virtuales. La solicitud
inicial está en el formato siguiente:

POST
[Link]
group}/providers/[Link]/virtualMachines/{vm-name}/start?api-version=2016-03-30

Devuelve el código de estado 202. Entre los valores de encabezado, verá:

Azure-AsyncOperation : [Link]
id}/providers/[Link]/locations/{region}/operations/{operation-id}?api-version=2016-03-30

Para comprobar el estado de la operación asincrónica, envíe otra solicitud a esa dirección URL.

GET
[Link]
id}/providers/[Link]/locations/{region}/operations/{operation-id}?api-version=2016-03-30
El cuerpo de respuesta contiene el estado de la operación:

{
"startTime": "2017-01-06T18:58:24.7596323+00:00",
"status": "InProgress",
"name": "9a062a88-e463-4697-bef2-fe039df73a02"
}

Implementación de recursos (201 con Azure -AsyncOperation)


En este ejemplo se muestra cómo determinar el estado de la operación deployments para implementar recursos
en Azure. La solicitud inicial está en el formato siguiente:

PUT
[Link]
group}/providers/[Link]/deployments/{deployment-name}?api-version=2016-09-01

Devuelve el código de estado 201. El cuerpo de la respuesta incluye:

"provisioningState":"Accepted",

Entre los valores de encabezado, verá:

Azure-AsyncOperation: [Link]
group}/providers/[Link]/deployments/{deployment-name}/operationStatuses/{operation-id}?api-
version=2016-09-01

Para comprobar el estado de la operación asincrónica, envíe otra solicitud a esa dirección URL.

GET
[Link]
group}/providers/[Link]/deployments/{deployment-name}/operationStatuses/{operation-id}?api-
version=2016-09-01

El cuerpo de respuesta contiene el estado de la operación:

{"status":"Running"}

Cuando haya finalizado la implementación, la respuesta contiene:

{"status":"Succeeded"}

Creación de cuenta de almacenamiento (202 con Location y Retry-After)


Este ejemplo muestra cómo determinar el estado de la operación create para cuentas de almacenamiento. La
solicitud inicial está en el formato siguiente:

PUT
[Link]
group}/providers/[Link]/storageAccounts/{storage-name}?api-version=2016-01-01

Y el cuerpo de solicitud contiene las propiedades de la cuenta de almacenamiento:


{ "location": "South Central US", "properties": {}, "sku": { "name": "Standard_LRS" }, "kind": "Storage" }

Devuelve el código de estado 202. Entre los valores de encabezado, vea los dos valores siguientes:

Location: [Link]
id}/providers/[Link]/operations/{operation-id}?monitor=true&api-version=2016-01-01
Retry-After: 17

Después de esperar el número de segundos especificados en Retry-After, compruebe el estado de la operación


asincrónica mediante el envío de otra solicitud a esa dirección URL.

GET
[Link]
id}?monitor=true&api-version=2016-01-01

Si la solicitud aún se está ejecutando, recibe un código de estado 202. Si la solicitud se ha completado, recibe un
código de estado 200 y el cuerpo de la respuesta contiene las propiedades de la cuenta de almacenamiento que se
ha creado.

Pasos siguientes
Para obtener documentación sobre cada operación de REST, consulte la documentación de la API de REST.
Para información acerca de la implementación de plantillas a través de la API REST de Resource Manager,
consulte Implementación de recursos con las plantillas de Resource Manager y la API de REST de Resource
Manager.
Configuración de puntos de conexión privados para
temas o dominios de Azure Event Grid
04/08/2020 • 21 minutes to read • Edit Online

Puede usar puntos de conexión privados para permitir la entrada de eventos directamente desde su red virtual a
sus temas y dominios de forma segura a través de un vínculo privado sin tener que ir a la red pública de Internet.
El punto de conexión privado usa una dirección IP del espacio de direcciones de la red virtual para el tema o
dominio. Para más información conceptual, consulte Seguridad de las redes.
En este artículo se describe cómo configurar los puntos de conexión privados para los temas o dominios.

Usar Azure Portal


En esta sección se muestra cómo usar Azure Portal para crear un punto de conexión privado para un tema o
dominio.

NOTE
Los pasos que se muestran en esta sección son principalmente para los temas. Puede usar pasos similares para crear
puntos de conexión privados para dominios .

1. Inicie sesión en Azure Portal y vaya al tema o dominio.


2. Cambie a la pestaña redes de la página del tema. Seleccione + Punto de conexión privado en la barra
de herramientas.

3. En la página Conceptos básicos , siga estos pasos:


a. Seleccione la suscripción de Azure donde desea crear el punto de conexión privado.
b. Seleccione un grupo de recursos de Azure para el punto de conexión privado.
c. Escriba un nombre para el punto de conexión.
d. Seleccione la región del punto de conexión. El punto de conexión privado debe estar en la misma
región que la red virtual, pero puede estar en otra región distinta de la del recurso de Private Link (en
este ejemplo, un tema de Event Grid).
e. Después, seleccione Next (Siguiente): Recurso > situado en la parte inferior de la página.

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


a. Como método de conexión, si selecciona Conectarse a un recurso de Azure en mi directorio. ,
siga estos pasos. En este ejemplo se muestra cómo conectarse a un recurso de Azure de su directorio.
a. Seleccione la suscripción de Azure en la que existe el tema o dominio .
b. En Tipo de recurso , seleccione [Link]/topics o
[Link]/domains como tipo de recurso .
c. En Recurso , seleccione un tema o dominio de la lista desplegable.
d. Confirme que el subrecurso de destino está establecido en tema o dominio (según el
tipo de recurso que haya seleccionado).
e. Seleccione Siguiente: Configuración > situado en la parte inferior de la página.
b. Si selecciona Connect to a resource using a resource ID or an alias (Conectarse a un recurso
mediante un id. de recurso o un alias), siga estos pasos:
a. Especifique el identificador del recurso. Por ejemplo:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>
.
b. En Recurso , escriba tema o dominio .
c. (Opcional) Agregue un mensaje de solicitud.
d. Seleccione Siguiente: Configuración > situado en la parte inferior de la página.

5. En la página Configuración , seleccione la subred de una red virtual en la que desee implementar el
punto de conexión privado.
a. Seleccione una red vir tual . En la lista desplegable, solo se muestran las redes virtuales de la
suscripción y la ubicación seleccionadas actualmente.
b. Seleccione una subred de la red virtual que seleccionó.
c. Seleccione Siguiente: Etiquetas situado en la parte inferior de la página.

6. En la página Etiquetas , cree cualquier etiqueta (nombres y valores) que desee asociar al recurso de punto
de conexión privado. Después, en la parte inferior de la página, seleccione el botón Revisar y crear .
7. En Revisar y crear , revise toda la configuración y seleccione Crear para crear el punto de conexión
privado.
Administración de una conexión de vínculo privado
Cuando se crea un punto de conexión privado, se debe aprobar la conexión. Si el recurso para el que va a crear
un punto de conexión privado está en el directorio, puede aprobar la solicitud de conexión siempre que tenga
permisos suficientes. Si se va a conectar a un recurso de Azure en otro directorio, debe esperar a que el
propietario de ese recurso apruebe la solicitud de conexión.
Hay cuatro estados de aprovisionamiento:

ESTA DO DE P UN TO DE C O N EXIÓ N
P RIVA DO DEL C O N SUM IDO R DEL
A C C IÓ N DEL SERVIC IO SERVIC IO DESC RIP C IÓ N

None Pending La conexión se crea manualmente y


está pendiente de aprobación por
parte del propietario del recurso de
Private Link.

Aprobación Aprobado La conexión se aprobó de forma


automática o manual y está lista para
usarse.

Reject Rechazada El propietario del recurso de vínculo


privado rechazó la conexión.
ESTA DO DE P UN TO DE C O N EXIÓ N
P RIVA DO DEL C O N SUM IDO R DEL
A C C IÓ N DEL SERVIC IO SERVIC IO DESC RIP C IÓ N

Remove Escenario desconectado El propietario del recurso del vínculo


privado quitó la conexión, el punto de
conexión privado se vuelve informativo
y debe eliminarse para la limpieza.

Administración de una conexión de punto de conexión privado


En las secciones siguientes se muestra cómo aprobar o rechazar una conexión de punto de conexión privado.
1. Inicie sesión en Azure Portal.
2. En la barra de búsqueda, escriba Temas de Event Grid o Dominios de Event Grid .
3. Seleccione el tema o dominio que desea administrar.
4. Seleccione la pestaña Redes .
5. Si hay alguna conexión pendiente, verá una conexión que aparece con el estado Pendiente como estado de
aprovisionamiento.
Aprobación de un punto de conexión privado
Puede aprobar un punto de conexión privado que esté pendiente. Para aprobarlo, siga estos pasos:

NOTE
Los pasos que se muestran en esta sección son principalmente para los temas. Puede usar pasos similares para aprobar
puntos de conexión privados para dominios .

1. Seleccione el punto de conexión privado que desea aprobar y seleccione Aprobar en la barra de
herramientas.

2. En el cuadro de diálogo Aprobación de la conexión , escriba un comentario (opcional), y seleccione Sí .


3. Confirme que el estado del punto de conexión privado aparece como Aprobado .

Rechazo de un punto de conexión privado


Puede rechazar un punto de conexión privado que tenga el estado Pendiente o Aprobado. Para rechazarlo, siga
estos pasos:

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para rechazar puntos de
conexión privados para dominios .

1. Seleccione el punto de conexión privado que desea rechazar y seleccione Rechazar en la barra de
herramientas.

2. En el cuadro de diálogo Rechazo de la conexión , escriba un comentario (opcional), y seleccione Sí .


3. Confirme que el estado del punto de conexión privado aparece como Rechazado .

NOTE
No se puede aprobar un punto de conexión privado en Azure Portal una vez rechazado.

Uso de CLI de Azure


Para crear un punto de conexión privado, use el método az network private-endpoint create que se indica en el
siguiente ejemplo:

az network private-endpoint create \


--resource-group <RESOURECE GROUP NAME> \
--name <PRIVATE ENDPOINT NAME> \
--vnet-name <VIRTUAL NETWORK NAME> \
--subnet <SUBNET NAME> \
--private-connection-resource-id "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<TOPIC NAME> \
--connection-name <PRIVATE LINK SERVICE CONNECTION NAME> \
--location <LOCATION> \
--group-ids topic

Para obtener descripciones de los parámetros utilizados en el ejemplo, consulte la documentación de az network
private-endpoint create. Tenga en cuenta los siguientes puntos de este ejemplo:
Para private-connection-resource-id , especifique el identificador del recurso del tema o dominio . En el
ejemplo anterior se utiliza el tipo "tema".
Para group-ids , especifique topic o domain . En el ejemplo anterior, se usa topic .

Para eliminar un punto de conexión privado, use el método az network private-endpoint delete que se indica en
el siguiente ejemplo:
az network private-endpoint delete --resource-group <RESOURECE GROUP NAME> --name <PRIVATE ENDPOINT NAME>

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión
privados para dominios .

Requisitos previos
Actualice la extensión de Azure Event Grid para la CLI mediante el siguiente comando:

az extension update -n eventgrid

Si la extensión no está instalada, ejecute el siguiente comando para instalarla:

az extension add -n eventgrid

Creación de un punto de conexión privado


Para crear un punto de conexión privado, use el método az network private-endpoint create que se indica en el
siguiente ejemplo:

az network private-endpoint create \


--resource-group <RESOURECE GROUP NAME> \
--name <PRIVATE ENDPOINT NAME> \
--vnet-name <VIRTUAL NETWORK NAME> \
--subnet <SUBNET NAME> \
--private-connection-resource-id "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<TOPIC NAME> \
--connection-name <PRIVATE LINK SERVICE CONNECTION NAME> \
--location <LOCATION> \
--group-ids topic

Para obtener descripciones de los parámetros utilizados en el ejemplo, consulte la documentación de az network
private-endpoint create. Tenga en cuenta los siguientes puntos de este ejemplo:
Para private-connection-resource-id , especifique el identificador del recurso del tema o dominio . En el
ejemplo anterior se utiliza el tipo "tema".
Para group-ids , especifique topic o domain . En el ejemplo anterior, se usa topic .

Para eliminar un punto de conexión privado, use el método az network private-endpoint delete que se indica en
el siguiente ejemplo:

az network private-endpoint delete --resource-group <RESOURECE GROUP NAME> --name <PRIVATE ENDPOINT NAME>

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión
privados para dominios .

Script de ejemplo
Este es un script de ejemplo que crea los siguientes recursos de Azure:
Resource group
Virtual network
Una subred en la red virtual
Tema de Azure Event Grid
Un punto de conexión privado para el tema

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión
privados para dominios.
subscriptionID="<AZURE SUBSCRIPTION ID>"
resourceGroupName="<RESOURCE GROUP NAME>"
location="<LOCATION>"
vNetName="<VIRTUAL NETWORK NAME>"
subNetName="<SUBNET NAME>"
topicName = "<TOPIC NAME>"
connectionName="<ENDPOINT CONNECTION NAME>"
endpointName=<ENDPOINT NAME>

# resource ID of the topic. replace <SUBSCRIPTION ID>, <RESOURCE GROUP NAME>, and <TOPIC NAME>
topicResourceID="/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<TOPIC NAME>"

# select subscription
az account set --subscription $subscriptionID

# create resource group


az group create --name $resourceGroupName --location $location

# create vnet
az network vnet create \
--resource-group $resourceGroupName \
--name $vNetName \
--address-prefix [Link]/16

# create subnet
az network vnet subnet create \
--resource-group $resourceGroupName \
--vnet-name $vNetName \
--name $subNetName \
--address-prefixes [Link]/24

# disable private endpoint network policies for the subnet


az network vnet subnet update \
--resource-group $resourceGroupName \
--vnet-name $vNetName \
--name $subNetName \
--disable-private-endpoint-network-policies true

# create event grid topic. update <LOCATION>


az eventgrid topic create \
--resource-group $resourceGroupName \
--name $topicName \
--location $location

# verify that the topic was created.


az eventgrid topic show \
--resource-group $resourceGroupName \
--name $topicName

# create private endpoint for the topic you created


az network private-endpoint create
--resource-group $resourceGroupName \
--name $endpointName \
--vnet-name $vNetName \
--subnet $subNetName \
--private-connection-resource-id $topicResourceID \
--connection-name $connectionName \
--location $location \
--group-ids topic

# get topic
az eventgrid topic show \
--resource-group $resourceGroupName \
--name $topicName
Aprobación de un punto de conexión privado
En el siguiente ejemplo de fragmento de código de la CLI se muestra cómo aprobar una conexión de punto de
conexión privado.

az eventgrid topic private-endpoint-connection approve \


--resource-group $resourceGroupName \
--topic-name $topicName \
--name $endpointName \
--description "connection approved"

Rechazo de un punto de conexión privado


En el siguiente ejemplo de fragmento de código de la CLI se muestra cómo rechazar una conexión de punto de
conexión privado.

az eventgrid topic private-endpoint-connection reject \


--resource-group $resourceGroupName \
--topic-name $topicName \
--name $endpointName \
--description "Connection rejected"

Deshabilitación del acceso a una red pública


De forma predeterminada, el acceso a la red pública está habilitado para un tema o dominio de Event Grid. Para
permitir el acceso a través de puntos de conexión privados únicamente, deshabilite el acceso a la red pública con
el siguiente comando:

az eventgrid topic update \


--resource-group $resourceGroupName \
--name $topicName \
--public-network-access disabled

Uso de PowerShell
En esta sección se muestra cómo crear un punto de conexión privado para un tema o dominio mediante
PowerShell.
Requisito previo
Siga las instrucciones de Procedimientos: Uso del portal para crear una aplicación de Azure AD y una entidad de
servicio con acceso a los recursos para crear una aplicación de Azure Active Directory, y anote los valores de Id.
de directorio (inquilino) , Id. de aplicación (cliente) y Secreto de la aplicación (cliente) .
Preparación de tokens y encabezados para las llamadas de la API REST
Ejecute los siguientes comandos como requisitos previos para obtener un token de autenticación para usarlo con
llamadas de la API REST y la autorización y otra información de encabezado.
$body = "grant_type=client_credentials&client_id=<CLIENT ID>&client_secret=<CLIENT
SECRET>&resource=[Link]

# get authentication token


$Token = Invoke-RestMethod -Method Post `
-Uri [Link] ID>/oauth2/token `
-Body $body `
-ContentType 'application/x-www-form-urlencoded'

# set authorization and content-type headers


$Headers = @{}
$[Link]("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")

Creación de una subred con directivas de red de puntos de conexión deshabilitadas

# create resource group


New-AzResourceGroup -ResourceGroupName <RESOURCE GROUP NAME> -Location <LOCATION>

# create virtual network


$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName <RESOURCE GROUP NAME> `
-Location <LOCATION> `
-Name <VIRTUAL NETWORK NAME> `
-AddressPrefix [Link]/16

# create subnet with endpoint network policy disabled


$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
-Name example-privatelinksubnet `
-AddressPrefix [Link]/24 `
-PrivateEndpointNetworkPoliciesFlag "Disabled" `
-VirtualNetwork $virtualNetwork

# update virtual network


$virtualNetwork | Set-AzVirtualNetwork

Creación de un tema de Event Grid con un punto de conexión privado

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión
privados para dominios .
$body = @{"location"="<LOCATION>"; "properties"=@{"publicNetworkAccess"="disabled"}} | ConvertTo-Json

# create topic
Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body

# verify that the topic was created


$topic=Invoke-RestMethod -Method 'Get' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers

# create private link service connection


$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "<PRIVATE LINK SERVICE CONNECTION NAME>" `
-PrivateLinkServiceId $[Link] `
-GroupId "topic"

# get virtual network info


$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName <RESOURCE GROUP NAME> `
-Name <VIRTUAL NETWORK NAME>

# get subnet info


$subnet = $virtualNetwork | Select -ExpandProperty subnets `
| Where-Object {$_.Name -eq <SUBNET NAME>}

# now, you are ready to create a private endpoint


$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName <RESOURCE GROUP NAME> `
-Name <PRIVATE ENDPOINT NAME> `
-Location <LOCATION> `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection

# verify that the endpoint was created


Invoke-RestMethod -Method 'Get' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections?api-
version=2020-04-01-preview" `
-Headers $Headers `
| ConvertTo-Json -Depth 5

Cuando compruebe que se ha creado el punto de conexión, debería ver un resultado similar al siguiente:
{
"value": [
{
"properties": {
"privateEndpoint": {
"id": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/privateEndpoints/<PRIVATE ENDPOINT NAME>"
},
"groupIds": [
"topic"
],
"privateLinkServiceConnectionState": {
"status": "Approved",
"description": "Auto-approved",
"actionsRequired": "None"
},
"provisioningState": "Succeeded"
},
"id": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections/<PRIVATE
ENDPOINT NAME>.<GUID>",
"name": "myConnection",
"type": "[Link]/topics/privateEndpointConnections"
}
]
}

Aprobación de una conexión de punto de conexión privado


En el siguiente ejemplo de fragmento de código de PowerShell se muestra cómo aprobar un punto de conexión
privado.

NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para aprobar puntos de
conexión privados para dominios .

$approvedBody =
@{"properties"=@{"privateLinkServiceConnectionState"=@{"status"="approved";"description"="connection
approved";"actionsRequired"="none"}}} | ConvertTo-Json

# approve endpoint connection


Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections/<PRIVATE
ENDPOINT NAME>.<GUID>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $approvedBody

# confirm that the endpoint connection was approved


Invoke-RestMethod -Method 'Get' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections/<PRIVATE
ENDPOINT NAME>.<GUID>?api-version=2020-04-01-preview" `
-Headers $Headers

Rechazo de una conexión de punto de conexión privado


En el siguiente ejemplo se muestra cómo rechazar un punto de conexión privado mediante PowerShell. Puede
obtener el GUID del punto de conexión privado a partir del resultado del comando GET anterior.
NOTE
Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para rechazar puntos de
conexión privados para dominios .

$rejectedBody =
@{"properties"=@{"privateLinkServiceConnectionState"=@{"status"="rejected";"description"="connection
rejected";"actionsRequired"="none"}}} | ConvertTo-Json

# reject private endpoint


Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections/<PRIVATE
ENDPOINT NAME>.<GUID>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $rejectedBody

# confirm that endpoint was rejected


Invoke-RestMethod -Method 'Get'
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>/privateEndpointConnections/<PRIVATE
ENDPOINT NAME>.<GUID>?api-version=2020-04-01-preview" `
-Headers $Headers

Puede aprobar la conexión incluso después de que esta se haya rechazado mediante la API. Si usa Azure Portal,
no puede aprobar un punto de conexión que se haya rechazado.

Pasos siguientes
Para más información sobre cómo configurar las opciones de firewall de IP, consulte Configuración del firewall
de IP para temas o dominios de Azure Event Grid.
Para solucionar problemas de conectividad de red, consulte Solucionar problemas de conectividad de red.
Configuración del firewall de IP para temas o
dominios de Azure Event Grid (versión preliminar)
04/08/2020 • 11 minutes to read • Edit Online

De forma predeterminada, el tema y el dominio son accesibles desde Internet siempre que la solicitud venga
con una autenticación y una autorización válidas. Con el firewall de IP, puede restringirlo aún más a solo un
conjunto de direcciones IPv4 o intervalos de direcciones IPv4 en la notación CIDR (Enrutamiento de
interdominios sin clases). Los publicadores que se originen desde cualquier otra dirección IP se rechazarán y
recibirán una respuesta 403 (Prohibido). Para más información sobre las características de seguridad de red
admitidas por Event Grid, consulte Seguridad de red para Event Grid.
En este artículo se describe cómo configurar las opciones de firewall de IP para los temas o dominios de Azure
Event Grid.

Usar Azure Portal


En esta sección se muestra cómo usar Azure Portal para crear reglas de firewall de IP de entrada. Los pasos que
se muestran en esta sección son para los temas. Puede usar pasos similares para crear reglas de IP de entrada
para dominios .
1. En Azure Portal, vaya a su tema o dominio de Event Grid y cambie a la pestaña Redes .
2. Seleccione Redes públicas para permitir que todas las redes, incluida Internet, tengan acceso al recurso.
Puede restringir el tráfico mediante reglas de firewall basadas en IP. Especifique una única dirección IPv4
o un intervalo de direcciones IP en la notación de enrutamiento de interdominios sin clases (CIDR).

3. Seleccione Private endpoints only (Solo puntos de conexión privados) para permitir que sean solo las
conexiones de puntos de conexión privados las que tengan acceso a este recurso. Use la pestaña
Conexiones de punto de conexión privado de esta página para administrar las conexiones.
4. Seleccione Guardar en la barra de herramientas.

Uso de CLI de Azure


En esta sección se muestra cómo usar los comandos de la CLI de Azure para crear temas con reglas de IP de
entrada. Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear
reglas de IP de entrada para dominios .
Requisitos previos
Actualice la extensión de Azure Event Grid para la CLI mediante el siguiente comando:

az extension update -n eventgrid

Si la extensión no está instalada, ejecute el siguiente comando para instalarla:

az extension add -n eventgrid

Habilitación o deshabilitación del acceso a la red pública


De forma predeterminada, el acceso de red pública está habilitado para los temas y los dominios. También
puede habilitarlo explícitamente o deshabilitarlo. Puede restringir el tráfico mediante la configuración de reglas
de firewall de IP de entrada.
Habilitación del acceso a la red pública durante la creación de un tema

az eventgrid topic create \


--resource-group $resourceGroupName \
--name $topicName \
--location $location \
--public-network-access enabled

Deshabilitación del acceso a la red pública durante la creación de un tema

az eventgrid topic create \


--resource-group $resourceGroupName \
--name $topicName \
--location $location \
--public-network-access disabled
NOTE
Cuando se deshabilita el acceso de red pública para un tema o un dominio, no se permite el tráfico a través de la red
pública de Internet. Solo se permitirá el acceso a estos recursos a las conexiones de punto de conexión privado.

Habilitación del acceso de red pública para un tema existente

az eventgrid topic update \


--resource-group $resourceGroupName \
--name $topicName \
--public-network-access enabled

Deshabilitación del acceso de red pública para un tema existente

az eventgrid topic update \


--resource-group $resourceGroupName \
--name $topicName \
--public-network-access disabled

Creación de un tema con una sola regla de IP de entrada


El siguiente comando de ejemplo de la CLI crea un tema de Event Grid con reglas de IP de entrada.

az eventgrid topic create \


--resource-group $resourceGroupName \
--name $topicName \
--location $location \
--public-network-access enabled \
--inbound-ip-rules <IP ADDR or CIDR MASK> allow

Creación de un tema con varias reglas de IP de entrada


El siguiente comando de ejemplo de la CLI crea un tema de Event Grid con dos reglas de IP de entrada en un
solo paso:

az eventgrid topic create \


--resource-group $resourceGroupName \
--name $topicName \
--location $location \
--public-network-access enabled \
--inbound-ip-rules <IP ADDR 1 or CIDR MASK 1> allow \
--inbound-ip-rules <IP ADDR 2 or CIDR MASK 2> allow

Actualización de un tema existente para agregar reglas de IP de entrada


En este ejemplo se crea primero un tema de Event Grid y, a continuación, se agregan reglas de IP de entrada
para el tema en un comando independiente. También se actualizan las reglas de IP de entrada que se
establecieron en el segundo comando.
# create the event grid topic first
az eventgrid topic create \
--resource-group $resourceGroupName \
--name $topicName \
--location $location

# add inbound IP rules to an existing topic


az eventgrid topic update \
--resource-group $resourceGroupName \
--name $topicName \
--public-network-access enabled \
--inbound-ip-rules <IP ADDR or CIDR MASK> allow

# later, update topic with additional ip rules


az eventgrid topic update \
--resource-group $resourceGroupName \
--name $topicName \
--public-network-access enabled \
--inbound-ip-rules <IP ADDR 1 or CIDR MASK 1> allow \
--inbound-ip-rules <IP ADDR 2 or CIDR MASK 2> allow

Eliminación de una regla de IP de entrada


El siguiente comando quita la segunda regla que creó en el paso anterior mediante la especificación de solo la
primera regla al actualizar la configuración.

az eventgrid topic update \


--resource-group $resourceGroupName \
--name $topicName \
--public-network-access enabled \
--inbound-ip-rules <IP ADDR 1 or CIDR MASK 1> allow

Uso de PowerShell
En esta sección se muestra cómo usar los comandos de Azure PowerShell para crear temas de Azure Event Grid
con reglas de firewall de IP de entrada. Los pasos que se muestran en esta sección son para los temas. Puede
usar pasos similares para crear reglas de IP de entrada para dominios .
Requisitos previos
Siga las instrucciones de Procedimientos: Use el portal para crear una aplicación de Azure AD y una entidad de
servicio que pueda acceder a los recursos para crear una aplicación de Azure Active Directory y anote los
siguientes valores:
Id. de directorio (inquilino)
Id. de aplicación (cliente)
Secreto de la aplicación (cliente)
Preparación de tokens y encabezados para las llamadas de la API REST
Ejecute los siguientes comandos como requisitos previos para obtener un token de autenticación para usarlo
con llamadas de la API REST y la autorización y otra información de encabezado.
# replace <CLIENT ID> and <CLIENT SECRET>
$body = "grant_type=client_credentials&client_id=<CLIENT ID>&client_secret=<CLIENT
SECRET>&resource=[Link]

# get the authentication token. Replace <TENANT ID>


$Token = Invoke-RestMethod -Method Post `
-Uri [Link] ID>/oauth2/token `
-Body $body `
-ContentType 'application/x-www-form-urlencoded'

# set authorization and content-type headers


$Headers = @{}
$[Link]("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")
$[Link]("Content-Type","application/json")

Habilitación del acceso de red pública para un tema existente


De forma predeterminada, el acceso de red pública está habilitado para los temas y los dominios. Puede
restringir el tráfico mediante la configuración de reglas de firewall de IP de entrada.

$body = @{"properties"=@{"publicNetworkAccess"="enabled"}} | ConvertTo-Json -Depth 5

Invoke-RestMethod -Method 'Patch' `


-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body `
| ConvertTo-Json -Depth 5

Deshabilitación del acceso de red pública para un tema existente


Cuando se deshabilita el acceso de red pública para un tema o un dominio, no se permite el tráfico a través de
la red pública de Internet. Solo se permitirá el acceso a estos recursos a las conexiones de punto de conexión
privado.

$body = @{"properties"=@{"publicNetworkAccess"="disabled"}} | ConvertTo-Json -Depth 5

Invoke-RestMethod -Method 'Patch' `


-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body `
| ConvertTo-Json -Depth 5

Creación de un tema de Event Grid con reglas de entrada en un solo paso


# prepare the body for the REST PUT method. Notice that inbound IP rules are included.
$body = @{"location"="<LOCATION>"; "sku"= @{"name"="basic"};
"properties"=@{"publicNetworkAccess"="enabled"; "inboundIpRules"=@(@{"ipmask"="<IP ADDR or CIDR
MASK>";"action"="allow"})}} | ConvertTo-Json -Depth 5

# create the event grid topic with inbound IP rules


Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body

# verify that the topic was created


Invoke-RestMethod -Method 'Get' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
| ConvertTo-Json -Depth 5

Creación del tema de Event Grid seguido de la incorporación de reglas de IP de entrada

# prepare the body for the REST PUT method. Notice that no inbound IP rules are specified.
$body = @{"location"="<LOCATION>"; "sku"= @{"name"="basic"};
"properties"=@{"publicNetworkAccess"="enabled";}} | ConvertTo-Json -Depth 5

# create the Event Grid topic


Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body`

# verify that the topic was created


Invoke-RestMethod -Method 'Get' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
| ConvertTo-Json -Depth 5

# prepare the body for REST PUT method. Notice that it includes inbound IP rules now. This feature is
available in both basic and premium tiers.
$body = @{"location"="<LOCATION>"; "sku"= @{"name"="basic"};
"properties"=@{"publicNetworkAccess"="enabled"; "inboundIpRules"=@(@{"ipmask"="<IP ADDR or CIDR
MASK>";"action"="allow"}, @{"ipmask"="<IP ADDR or CIDR MASK>";"action"="allow"})}} | ConvertTo-Json -Depth
5

# update the topic with inbound IP rules


Invoke-RestMethod -Method 'Put' `
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
-Body $body

# verify that the topic was updated


Invoke-RestMethod -Method 'Get'
-Uri "[Link] SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP
NAME>/providers/[Link]/topics/<EVENT GRID TOPIC NAME>?api-version=2020-04-01-preview" `
-Headers $Headers `
| ConvertTo-Json -Depth 5
Pasos siguientes
Para información sobre la supervisión de las entregas de eventos, consulte Supervisar la entrega de
mensajes de Event Grid.
Para más información sobre la clave de autenticación, vea Seguridad y autenticación de Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Para solucionar problemas de conectividad de red, consulte Solucionar problemas de conectividad de red.
Publicación de eventos en puntos de conexión
protegidos por Azure Active Directory
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se describe cómo aprovechar las ventajas de Azure Active Directory para proteger la conexión
entre su suscripción de eventos y el punto de conexión de webhook. Para una introducción a las entidades de
servicio y aplicaciones de Azure AD, consulte Introducción a la Plataforma de identidad de Microsoft (versión 2.0).
En este artículo se usa Azure Portal para la demostración; sin embargo, la característica también se puede habilitar
mediante la CLI, PowerShell o los SDK.
Esta característica se encuentra en su versión preliminar. Para usarlo, debe instalar una extensión o módulo de la
versión preliminar.
Instalación de la extensión para la CLI de Azure
Para la CLI de Azure, necesita la extensión de Event Grid.
En CloudShell:
Si ha instalado la extensión anteriormente, actualícela az extension update -n eventgrid
Si no ha instalado la extensión anteriormente, instálela az extension add -n eventgrid
Para una instalación local:
1. Instalación de la CLI de Azure. Asegúrese de que tiene la última versión. Para ello, debe comprobarlo con
az --version .
2. Desinstale las versiones anteriores de la extensión az extension remove -n eventgrid .
3. Instale la extensión eventgrid con az extension add -n eventgrid
Instalación del módulo para PowerShell
Para PowerShell, necesita el módulo [Link].
En CloudShell:
Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Para una instalación local:


1. Abra una consola de PowerShell como administrador
2. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .
Si el parámetro -AllowPrerelease no está disponible, siga estos pasos:
1. Ejecute Install-Module PowerShellGet -Force :
2. Ejecute Update-Module PowerShellGet :
3. Cierre la consola de PowerShell.
4. Reinicie PowerShell como administrador.
5. Instale el módulo Install-Module -Name [Link] -AllowPrerelease -Force -Repository PSGallery .

Creación de una aplicación de Azure AD


Empiece por crear una aplicación de Azure AD para el punto de conexión protegido. Vea
[Link] - Configure la
API protegida para que la llame una aplicación de demonio.

Habilitación de Event Grid para que use la aplicación de Azure AD


Use el siguiente script de PowerShell para crear un rol y una entidad de servicio en la aplicación Azure AD.
Necesitará el identificador de inquilino y el identificador de objeto de la aplicación Azure AD:

NOTE
Debe ser miembro del rol Administrador de aplicaciones de Azure AD para ejecutar este script.

1. Modifique el valor de $myTenantId del script de PowerShell para usar el identificador de inquilino de Azure AD.
2. Modifique el valor de $myAzureADApplicationObjectId del script de PowerShell para usar el identificador de
objeto de Azure AD.
3. Ejecute el script modificado.

# This is your Tenant Id.


$myTenantId = "<the Tenant Id of your Azure AD Application>"

Connect-AzureAD -TenantId $myTenantId

# This is your Azure AD Application's ObjectId.


$myAzureADApplicationObjectId = "<the Object Id of your Azure AD Application>"

# This is the "Azure Event Grid" Azure Active Directory AppId


$eventGridAppId = "4962773b-9cdb-44cf-a8bf-237846a00ab7"

# This is the name of the new role we will add to your Azure AD Application
$eventGridRoleName = "AzureEventGridSecureWebhook"

# Create an application role of given name and description


Function CreateAppRole([string] $Name, [string] $Description)
{
$appRole = New-Object [Link]
$[Link] = New-Object [Link][string]
$[Link]("Application");
$[Link] = $Name
$[Link] = New-Guid
$[Link] = $true
$[Link] = $Description
$[Link] = $Name;
return $appRole
}

# Get my Azure AD Application, it's roles and service principal


$myApp = Get-AzureADApplication -ObjectId $myAzureADApplicationObjectId
$myAppRoles = $[Link]
$eventGridSP = Get-AzureADServicePrincipal -Filter ("appId eq '" + $eventGridAppId + "'")

Write-Host "App Roles before addition of new role.."


Write-Host $myAppRoles

# Create the role if it doesn't exist


if ($myAppRoles -match $eventGridRoleName)
{
Write-Host "The Azure Event Grid role is already defined.`n"
}
else
{
$myServicePrincipal = Get-AzureADServicePrincipal -Filter ("appId eq '" + $[Link] + "'")

# Add our new role to the Azure AD Application


# Add our new role to the Azure AD Application
$newRole = CreateAppRole -Name $eventGridRoleName -Description "Azure Event Grid Role"
$[Link]($newRole)
Set-AzureADApplication -ObjectId $[Link] -AppRoles $myAppRoles
}

# Create the service principal if it doesn't exist


if ($eventGridSP -match "[Link]")
{
Write-Host "The Service principal is already defined.`n"
}
else
{
# Create a service principal for the "Azure Event Grid" Azure AD Application and add it to the role
$eventGridSP = New-AzureADServicePrincipal -AppId $eventGridAppId
}

New-AzureADServiceAppRoleAssignment -Id $[Link][0].Id -ResourceId $[Link] -


ObjectId $[Link] -PrincipalId $[Link]

Write-Host "My Azure AD Tenant Id: $myTenantId"


Write-Host "My Azure AD Application Id: $($[Link])"
Write-Host "My Azure AD Application ObjectId: $($[Link])"
Write-Host "My Azure AD Application's Roles: "
Write-Host $[Link]

Configuración de la suscripción de eventos


En el flujo de creación de la suscripción de eventos, seleccione el tipo de punto de conexión "Webhook". Una vez
proporcionado el identificador URI del punto de conexión, haga clic en la pestaña Características adicionales en la
parte superior de la hoja Crear suscripciones de eventos.
En la pestaña Características adicionales, active la casilla "Usar autenticación de AAD" y configure el identificador
de inquilino y el identificador de aplicación:
Copie el identificador de inquilino de Azure AD de la salida del script y escríbalo en el campo Identificador
de inquilino de AAD.
Copie el identificador de aplicación de Azure AD de la salida del script y escríbalo en el campo Identificador
de aplicación de AAD.

Pasos siguientes
Para información sobre la supervisión de las entregas de eventos, consulte Supervisar la entrega de mensajes
de Event Grid.
Para más información sobre la clave de autenticación, vea Seguridad y autenticación de Event Grid.
Para más información acerca de la creación de una suscripción de Azure Event Grid, consulte Esquema de
suscripción de Event Grid.
Entrega de evento con una identidad administrada
04/08/2020 • 19 minutes to read • Edit Online

En este artículo se describe cómo habilitar una identidad de servicio administrada de temas o dominios de Azure
Event Grid. Úselo para reenviar eventos a destinos compatibles, como colas y temas de Service Bus, centros de
eventos y cuentas de almacenamiento.
Estos son los pasos que se describen en detalle en este artículo:
1. Cree un tema o un dominio con una identidad asignada por el sistema, o bien actualice un tema o dominio
existente para habilitar la identidad.
2. Agregue la identidad a un rol adecuado (por ejemplo, Remitente de los datos de Service Bus) en el destino (por
ejemplo, una cola de Service Bus).
3. Al crear suscripciones de eventos, habilite el uso de la identidad para enviar eventos al destino.

Creación de un tema o un dominio con una identidad


En primer lugar, echemos un vistazo a cómo crear un tema o un dominio con una identidad administrada por el
sistema.
Uso de Azure Portal
Puede habilitar la identidad de un tema o dominio asignada por el sistema mientras la crea en Azure Portal. La
siguiente imagen muestra cómo habilitar una identidad administrada por el sistema de un tema. Básicamente, se
selecciona la opción Enable system assigned identity (Habilitar identidad asignada por el sistema) en la
página de opciones avanzadas del Asistente para crear temas. También verá esta opción en la página de
opciones avanzadas del Asistente para crear dominios.

Uso de la CLI de Azure


También puede usar la CLI de Azure para crear un tema o un dominio con una identidad asignada por el sistema.
Use el comando az eventgrid topic create con el parámetro --identity establecido en systemassigned . Si no
especifica un valor para este parámetro, se utiliza el valor predeterminado noidentity .
# create a topic with a system-assigned identity
az eventgrid topic create -g <RESOURCE GROUP NAME> --name <TOPIC NAME> -l <LOCATION> --identity
systemassigned

Del mismo modo, puede usar el comando az eventgrid domain create para crear un dominio con una identidad
administrada por el sistema.

Habilitación de una identidad de un tema o dominio existente


En la última sección, ha aprendido a habilitar la identidad administrada por el sistema durante la creación de un
tema o un dominio. En esta sección, aprenderá a habilitar una identidad administrada por el sistema de un tema o
dominio existente.
Uso de Azure Portal
El siguiente procedimiento muestra cómo habilitar la identidad administrada por el sistema para un tema. Los
pasos para habilitar una identidad para un dominio son similares.
1. Vaya a Azure Portal.
2. Busque temas de Event Grid en la barra de búsqueda de la parte superior.
3. Seleccione el tema para el que desea habilitar la identidad administrada.
4. Cambie a la pestaña Identidad .
5. Active el conmutador para habilitar la identidad.
6. Seleccione Guardar en la barra de herramientas para guardar la configuración.

Puede usar pasos similares para habilitar una identidad de un dominio de Event Grid.
Uso de la CLI de Azure
Use el comando az eventgrid topic update con --identity establecido en systemassigned para habilitar la
identidad asignada por el sistema para un tema existente. Si desea deshabilitar la identidad, especifique
noidentity como valor.

# Update the topic to assign a system-assigned identity.


az eventgrid topic update -g $rg --name $topicname --identity systemassigned --sku basic

El comando para actualizar un dominio existente es similar ( az eventgrid domain update ).

Destinos admitidos y roles RBAC


Después de habilitar la identidad del tema o dominio de Event Grid, Azure crea automáticamente una identidad en
Azure Active Directory. Agregue esta identidad a los roles de control de acceso basado en rol (RBAC) adecuados
para que el tema o el dominio pueda reenviar eventos a los destinos admitidos. Por ejemplo, agregue la identidad
al rol Remitente de los datos de Azure Event Hubs en un espacio de nombres de Azure Event Hubs de modo
que el tema de Event Grid pueda reenviar eventos a los centros de eventos en dicho espacio de nombres.
Actualmente, Azure Event Grid admite temas o dominios configurados con una identidad administrada asignada
por el sistema para reenviar eventos a los siguientes destinos. En esta tabla también se proporcionan los roles en
los que debe estar la identidad para que el tema pueda reenviar los eventos.

DEST IN AT IO N RO L DE RB A C

Colas y temas de Service Bus Emisor de datos de Azure Service Bus

Azure Event Hubs Emisor de datos de Azure Event Hubs

Azure Blob Storage Colaborador de datos de blobs de almacenamiento

Azure Queue Storage Emisor de mensajes de datos de la cola de Storage

Adición de una identidad a roles RBAC en los destinos


En esta sección se describe cómo agregar la identidad del tema o dominio a un rol de RBAC.
Uso de Azure Portal
Puede usar Azure Portal para asignar la identidad del tema o del dominio a un rol adecuado, de modo que el tema
o el dominio puedan reenviar eventos al destino.
En el siguiente ejemplo se agrega una identidad administrada de un tema de Event Grid denominado
msitesttopic al rol Remitente de los datos de Azure Event Hubs de un espacio de nombres de Service Bus
que contiene un recurso de cola o tema. Al agregar al rol en el nivel de espacio de nombres, el tema puede
reenviar eventos a todas las entidades en el espacio de nombres.
1. Vaya al espacio de nombres de Ser vice Bus en Azure Portal.
2. Seleccione Control de acceso en el panel izquierdo.
3. Seleccione Agregar en la sección Agregar una asignación de roles .
4. En la página Agregar una asignación de roles , siga estos pasos:
a. Seleccione el rol. En este caso, es Emisor de datos de Azure Event Hubs
b. Seleccione la identidad para su tema o dominio.
c. Para guardar la configuración, seleccione Guardar .
Los pasos son similares para agregar una identidad a otros roles que se mencionan en la tabla.
Uso de la CLI de Azure
En el ejemplo de esta sección se muestra cómo usar la CLI de Azure para agregar una identidad a un rol RBAC. Los
comandos de ejemplo son para los temas de Event Grid. Los comandos de los dominios de Event Grid son
similares.
Obtención del identificador de entidad de seguridad de la identidad del sistema del tema
En primer lugar, obtenga el identificador de entidad de seguridad de la identidad administrada por el sistema del
tema y asigne la identidad a los roles adecuados.

topic_pid=$(az ad sp list --display-name "$<TOPIC NAME>" --query [].objectId -o tsv)


Creación de una asignación de roles para centros de eventos en varios ámbitos
En el siguiente ejemplo de la CLI se muestra cómo agregar la identidad de un tema al rol Emisor de datos de
Azure Event Hubs en el nivel de espacio de nombres o en el nivel de centro de eventos. Si crea la asignación de
roles en el nivel de espacio de nombres, el tema puede reenviar eventos a todos los centros de eventos de ese
espacio de nombres. Si la crea en el nivel de centro de eventos, el tema solo puede reenviar eventos a ese centro
de eventos específico.

role="Azure Event Hubs Data Sender"


namespaceresourceid=$(az eventhubs namespace show -n $<EVENT HUBS NAMESPACE NAME> -g <RESOURCE GROUP of EVENT
HUB> --query "{I:id}" -o tsv)
eventhubresourceid=$(az eventhubs eventhub show -n <EVENT HUB NAME> --namespace-name <EVENT HUBS NAMESPACE
NAME> -g <RESOURCE GROUP of EVENT HUB> --query "{I:id}" -o tsv)

# create role assignment for the whole namespace


az role assignment create --role "$role" --assignee "$topic_pid" --scope "$namespaceresourceid"

# create role assignment scoped to just one event hub inside the namespace
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$eventhubresourceid"

Creación de una asignación de roles de un tema de Service Bus en varios ámbitos


En el siguiente ejemplo de CLI se muestra cómo agregar la identidad de un tema al rol Emisor de datos de
Azure Event Hubs en el nivel de espacio de nombres o en el nivel de tema de Service Bus. Si crea la asignación
de roles en el nivel de espacio de nombres, el tema de Event Grid puede reenviar eventos a todas las entidades
(colas o temas de Service Bus ) dentro de ese espacio de nombres. Si la crea en el nivel de cola o tema de Service
Bus, el tema de Event Grid solo puede reenviar eventos a esa cola o tema de Service Bus específica.

role="Azure Service Bus Data Sender"


namespaceresourceid=$(az servicebus namespace show -n $RG\SB -g "$RG" --query "{I:id}" -o tsv
sbustopicresourceid=$(az servicebus topic show -n topic1 --namespace-name $RG\SB -g "$RG" --query "{I:id}" -o
tsv)

# create role assignment for the whole namespace


az role assignment create --role "$role" --assignee "$topic_pid" --scope "$namespaceresourceid"

# create role assignment scoped to just one hub inside the namespace
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$sbustopicresourceid"

Creación de suscripciones de eventos que usan una identidad


Una vez que tenga un tema o un dominio con una identidad administrada por el sistema y haya agregado la
identidad al rol adecuado en el destino, estará listo para crear suscripciones que usen la identidad.
Uso de Azure Portal
Al crear una suscripción de eventos, se muestra una opción para habilitar el uso de una identidad asignada por el
sistema para un punto de conexión en la sección DETALLES DE PUNTO DE CONEXIÓN .
También puede habilitar el uso de una identidad asignada por el sistema para que se use en la cola de mensajes
fallidos en la pestaña Características adicionales .
Uso de la CLI de Azure: cola de Service Bus
En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema
para enviar eventos a una cola de Service Bus. La identidad debe ser miembro del rol Emisor de datos de
Azure Ser vice Bus . También debe ser miembro del rol Colaborador de datos de blobs de
almacenamiento en la cuenta de almacenamiento que se usa para la cola de mensajes fallidos.
Definición de variables
En primer lugar, especifique los valores de las siguientes variables que se usarán en el comando de la CLI.

subid="<AZURE SUBSCRIPTION ID>"


rg = "<RESOURCE GROUP of EVENT GRID TOPIC>"
topicname = "<EVENT GRID TOPIC NAME>"

# get the service bus queue resource id


queueid=$(az servicebus queue show --namespace-name <SERVICE BUS NAMESPACE NAME> --name <QUEUE NAME> --
resource-group <RESOURCE GROUP NAME> --query id --output tsv)
sb_esname = "<Specify a name for the event subscription>"

Creación de una suscripción de eventos usando una identidad administrada para la entrega
Este comando de ejemplo crea una suscripción de eventos de un tema de Event Grid con un tipo de punto de
conexión establecido en Cola de Ser vice Bus .

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type servicebusqueue
--delivery-identity systemassigned
--delivery-identity-endpoint $queueid
-n $sb_esname

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos
Este comando de ejemplo crea una suscripción de eventos de un tema de Event Grid con un tipo de punto de
conexión establecido en Cola de Ser vice Bus . También especifica que la identidad administrada por el sistema
se va a usar para la cola de mensajes fallidos.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output
tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type servicebusqueue
--delivery-identity systemassigned
--delivery-identity-endpoint $queueid
--deadletter-identity-endpoint $deadletterendpoint
--deadletter-identity systemassigned
-n $sb_esnameq

Uso de la CLI de Azure: Event Hubs


En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema
para enviar eventos a un centro de eventos. La identidad debe ser miembro del rol Emisor de datos de Azure
Event Hubs . También debe ser miembro del rol Colaborador de datos de blobs de almacenamiento en la
cuenta de almacenamiento que se usa para la cola de mensajes fallidos.
Definición de variables

subid="<AZURE SUBSCRIPTION ID>"


rg = "<RESOURCE GROUP of EVENT GRID TOPIC>"
topicname = "<EVENT GRID TOPIC NAME>"

hubid=$(az eventhubs eventhub show --name <EVENT HUB NAME> --namespace-name <NAMESPACE NAME> --resource-group
<RESOURCE GROUP NAME> --query id --output tsv)
eh_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>"

Creación de una suscripción de eventos usando una identidad administrada para la entrega
Este comando de ejemplo crea una suscripción de eventos de un tema de Event Grid con un tipo de punto de
conexión establecido en Event Hubs .

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type eventhub
--delivery-identity systemassigned
--delivery-identity-endpoint $hubid
-n $sbq_esname

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos
Este comando de ejemplo crea una suscripción de eventos de un tema de Event Grid con un tipo de punto de
conexión establecido en Event Hubs . También especifica que la identidad administrada por el sistema se va a
usar para la cola de mensajes fallidos.
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output
tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type servicebusqueue
--delivery-identity systemassigned
--delivery-identity-endpoint $hubid
--deadletter-identity-endpoint $eh_deadletterendpoint
--deadletter-identity systemassigned
-n $eh_esname

Uso de la CLI de Azure: cola de Azure Storage


En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema
para enviar eventos a una cola de Azure Storage. La identidad debe ser miembro del rol Colaborador de datos
de blobs de almacenamiento de la cuenta de almacenamiento.
Definición de variables

subid="<AZURE SUBSCRIPTION ID>"


rg = "<RESOURCE GROUP of EVENT GRID TOPIC>"
topicname = "<EVENT GRID TOPIC NAME>"

# get the storage account resource id


storageid=$(az storage account show --name <STORAGE ACCOUNT NAME> --resource-group <RESOURCE GROUP NAME> --
query id --output tsv)

# build the resource id for the queue


queueid="$storageid/queueservices/default/queues/<QUEUE NAME>"

sa_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>"

Creación de una suscripción de eventos usando una identidad administrada para la entrega

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type storagequeue
--delivery-identity systemassigned
--delivery-identity-endpoint $queueid
-n $sa_esname

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output
tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create


--source-resource-id
/subscriptions/$subid/resourceGroups/$rg/providers/[Link]/topics/$topicname
--delivery-identity-endpoint-type storagequeue
--delivery-identity systemassigned
--delivery-identity-endpoint $queueid
--deadletter-identity-endpoint $deadletterendpoint
--deadletter-identity systemassigned
-n $sa_esname
Pasos siguientes
Para más información sobre las identidades de servicio administradas, consulte el artículo sobre Qué son las
identidades administradas para recursos de Azure.
Habilitación de registros de diagnóstico para los
temas o dominios de Azure Event Grid
04/08/2020 • 7 minutes to read • Edit Online

La configuración de diagnóstico permite a los usuarios de Event Grid capturar y ver los registros de error de
publicación y entrega en una cuenta de almacenamiento, un centro de eventos o un área de trabajo de Log
Analytics. En este artículo se proporcionan instrucciones paso a paso sobre cómo habilitar estas opciones en un
tema de Event Grid.

Requisitos previos
Un tema de Event Grid aprovisionado.
Un destino aprovisionado para capturar registros de diagnóstico. Puede tener uno de los siguientes destinos en
la misma ubicación que el tema de Event Grid:
Cuenta de almacenamiento de Azure
Centro de eventos
Área de trabajo de Log Analytics

Habilitación de los registros de diagnóstico de un tema personalizado


NOTE
El siguiente procedimiento proporciona instrucciones paso a paso para habilitar los registros de diagnóstico para un tema.
Los pasos para habilitar los registros de diagnóstico para un dominio son muy similares. En el paso 2, vaya al dominio de
Event Grid en Azure Portal.

1. Inicie sesión en Azure Portal.


2. Vaya al tema de Event Grid para el que desee habilitar la configuración del registro de diagnóstico.
a. En la barra de búsqueda de la parte superior, busque Temas de Event Grid .

b. Seleccione el tema de la lista para el que desea configurar las opciones de diagnóstico.
3. Seleccione Configuración de diagnóstico en Super visión , en el menú de la izquierda.
4. En la página Configuración de diagnóstico , seleccione Add New Diagnostic Setting (Agregar nueva
configuración de diagnóstico).

5. Especifique un nombre para la configuración de diagnóstico.


6. Seleccione las opciones Deliver yFailures y PublishFailures en la sección Registro .

7. Habilite uno o varios destinos de captura para los registros y, a continuación, configúrelos; para ello,
seleccione un recurso de captura creado anteriormente.
Si selecciona Archive to a storage account (Archivar en una cuenta de almacenamiento),
seleccione Cuenta de almacenamiento: configurar y, a continuación, seleccione la cuenta de
almacenamiento en la suscripción de Azure.
Si selecciona Stream to an event hub (Transmitir a un centro de eventos), seleccione Centro de
eventos: Configurar y, a continuación, seleccione el espacio de nombres de Event Hubs, el centro
de eventos y la directiva de acceso.

Si selecciona Send to Log Analytics (Enviar a Log Analytics), seleccione un área de trabajo de Log
Analytics.

8. Seleccione Guardar . Después, Seleccione X en la esquina derecha para cerrar la página.


9. Ahora, vuelva a la página Configuración de diagnóstico , confirme que ve una nueva entrada en la tabla
Configuración de diagnóstico .

También puede habilitar la recopilación de todas las métricas del tema.

Habilitación de los registros de diagnóstico de un tema de sistema


1. Inicie sesión en Azure Portal.
2. Vaya al tema de Event Grid para el que desee habilitar la configuración del registro de diagnóstico.
a. En la barra de búsqueda de la parte superior, busque Temas del sistema de Event Grid .

b. Seleccione el tema del sistema para el que desea configurar las opciones de diagnóstico.
3. Seleccione Configuración de diagnóstico en Super visión en el menú izquierdo y, luego, elija Agregar
configuración de diagnóstico .

4. Especifique un nombre para la configuración de diagnóstico.


5. Seleccione Deliver yFailures en la sección de Registro .

6. Habilite uno o varios destinos de captura para los registros y, a continuación, configúrelos; para ello,
seleccione un recurso de captura creado anteriormente.
Si selecciona Send to Log Analytics (Enviar a Log Analytics), seleccione un área de trabajo de Log
Analytics.

Si selecciona Archive to a storage account (Archivar en una cuenta de almacenamiento),


seleccione Cuenta de almacenamiento: configurar y, a continuación, seleccione la cuenta de
almacenamiento en la suscripción de Azure.

Si selecciona Stream to an event hub (Transmitir a un centro de eventos), seleccione Centro de


eventos: Configurar y, a continuación, seleccione el espacio de nombres de Event Hubs, el centro
de eventos y la directiva de acceso.
7. Seleccione Guardar . Después, Seleccione X en la esquina derecha para cerrar la página.
8. Ahora, vuelva a la página Configuración de diagnóstico , confirme que ve una nueva entrada en la tabla
Configuración de diagnóstico .

También puede habilitar la recopilación de todas las métricas del tema del sistema.
Visualización de registros de diagnóstico en Azure Storage
1. Una vez que habilite una cuenta de almacenamiento como destino de captura y Event Grid comience a
emitir registros de diagnóstico, debería ver nuevos contenedores denominados insights-logs-
deliver yfailures e insights-logs-publishfailures en la cuenta de almacenamiento.

2. A medida que se desplace con uno de los contenedores, terminará en un blob en formato JSON. El archivo
contiene entradas de registro para un error de entrega o un error de publicación. La ruta de navegación
representa el ResourceId del tema de Event Grid y la marca de tiempo (nivel de minuto) como cuando se
emitieron las entradas de registro. El archivo blob/JSON, que se puede descargar, al final se adhiere al
esquema descrito en la sección siguiente.
3. Debería ver el contenido en el archivo JSON similar al ejemplo siguiente:

{
"time": "2019-11-01T00:17:13.4389048Z",
"resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID /RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-
NAME/PROVIDERS/[Link]/TOPICS/SAMPLE-TOPIC-NAME ",
"eventSubscriptionName": "SAMPLEDESTINATION",
"category": "DeliveryFailures",
"operationName": "Deliver",
"message": "Message:outcome=NotFound, latencyInMs=2635, systemId=17284f7c-0044-46fb-84b7-
59fda5776017, state=FilteredFailingDelivery, deliveryTime=11/1/2019 12:17:10 AM, deliveryCount=0,
probationCount=0, deliverySchema=EventGridEvent, eventSubscriptionDeliverySchema=EventGridEvent,
fields=InputEvent, EventSubscriptionId, DeliveryTime, State, Id, DeliverySchema,
LastDeliveryAttemptTime, SystemId, fieldCount=, requestExpiration=1/1/0001 12:00:00 AM, delivered=False
publishTime=11/1/2019 12:17:10 AM, eventTime=11/1/2019 12:17:09 AM, eventType=Type,
deliveryTime=11/1/2019 12:17:10 AM, filteringState=FilteredWithRpc, inputSchema=EventGridEvent,
publisher=[Link], size=363, fields=Id, PublishTime,
SerializedBody, EventType, Topic, Subject, FilteringHashCode, SystemId, Publisher, FilteringTopic,
TopicCategory, DataVersion, MetadataVersion, InputSchema, EventTime, fieldCount=15,
url=sb://[Link]/, deliveryResponse=NotFound: The messaging
entity 'sb://[Link]/eh-diagnosticlogstest' could not be
found. TrackingId:c98c5af6-11f0-400b-8f56-c605662fb849_G14, SystemTracker:diagnosticlogstesting-
[Link]:eh-diagnosticlogstest, Timestamp:2019-11-01T00:17:13, referenceId:
ac141738a9a54451b12b4cc31a10dedc_G14:"
}

Pasos siguientes
Para obtener el esquema de registro y otra información conceptual sobre los registros de diagnóstico de temas o
dominios, consulte Registros de diagnóstico.
Solución de problemas de Azure Event Grid
04/08/2020 • 8 minutes to read • Edit Online

En esta guía de solución de problemas se le proporciona una lista de códigos de error de Azure Event Grid,
mensajes de error, sus descripciones y acciones recomendadas que debe realizar cuando reciba estos errores.

Código de error: 400


C Ó DIGO DE ERRO R M EN SA JE DE ERRO R DESC RIP C IÓ N REC O M EN DA C IÓ N

[Link] El nombre del tema debe La longitud del nombre del Elija otro nombre de tema
400 tener entre 3 y 50 dominio debe estar entre 3 y que cumpla con los
caracteres. 50 caracteres. Solo se requisitos pertinentes.
permiten caracteres
alfanuméricos, dígitos y el
carácter "-" en el nombre del
tema. Además, el nombre no
debe comenzar con las
siguientes palabras
reservadas:
Microsoft
EventGrid
Sistema

[Link] El nombre del dominio debe La longitud del nombre del Elija otro nombre de dominio
400 tener entre 3 y 50 dominio debe estar entre 3 y que cumpla con los
caracteres. 50 caracteres. Solo se requisitos pertinentes.
permiten caracteres
alfanuméricos, dígitos y el
carácter "-" en el nombre del
tema. Además, el nombre no
debe comenzar con las
siguientes palabras
reservadas:
Microsoft
EventGrid
Sistema

[Link] Hora de expiración no válida. La hora de expiración de la Asegúrese de la hora de


400 suscripción de eventos expiración de la suscripción
determina cuándo se retirará de eventos está en un
la suscripción de eventos. formato DateTime válido y
Este valor debe ser un valor que está configurada en un
DateTime válido en el futuro. momento futuro.

Código de error: 409


C Ó DIGO DE ERRO R M EN SA JE DE ERRO R DESC RIP C IÓ N A C C IÓ N REC O M EN DA DA
C Ó DIGO DE ERRO R M EN SA JE DE ERRO R DESC RIP C IÓ N A C C IÓ N REC O M EN DA DA

[Link] Ya existe un tema con el El nombre del tema Elija otro nombre para el
409 nombre especificado. Elija personalizado debe ser único tema.
otro nombre para el tema. en una única región de
Azure con el fin de garantizar
una operación de publicación
correcta. Se puede usar el
mismo nombre en distintas
regiones de Azure.

[Link] Ya existe un dominio con el El nombre del dominio Elija otro nombre para el
409 nombre especificado. Elija personalizado debe ser único dominio.
otro nombre de dominio. en una única región de
Azure con el fin de garantizar
una operación de publicación
correcta. Se puede usar el
mismo nombre en distintas
regiones de Azure.

[Link] Se ha alcanzado el límite de Cada suscripción de Azure Compruebe el uso actual de


409 cuota. Para obtener más tiene un límite en cuanto al los recursos y elimine los que
información sobre estos número de recursos de no sean necesarios. Si
límites, vea Límites de Event Azure Event Grid que puede todavía necesita aumentar la
Grid. usar. Se ha superado parte cuota, envíe un correo
de esta cuota, o toda ella, y electrónico a
no se pueden crear más aeg@[Link] con el
recursos. número exacto de recursos
necesarios.

Código de error: 403


C Ó DIGO DE ERRO R M EN SA JE DE ERRO R DESC RIP C IÓ N A C C IÓ N REC O M EN DA DA

[Link] La publicación en El tema o el dominio tienen Para agregar la dirección IP a


403 {Topic/Domain} por el cliente reglas de firewall de IP las reglas de firewall de IP,
{IpAddress} se rechaza configuradas y el acceso solo consulte Configuración de la
debido a las reglas de está restringido a las dirección IP del firewall
filtrado de IpAddress. direcciones IP configuradas.

[Link] La publicación en El tema o el dominio tienen Configure un punto de


403 {Topic/Domain} por cliente se puntos de conexión privados conexión privado para el
rechaza ya que la solicitud configurados y la solicitud de tema o dominio.
proviene de un punto de publicación procedía de uno Configuración de puntos de
conexión privado y no se que no está configurado o conexión privados
encontró ninguna conexión aprobado.
de punto de conexión
coincidente para el recurso.

Solución de problemas de validación de suscripciones a eventos


Durante la creación de suscripciones a eventos, si ve un mensaje de error como
The attempt to validate the provided endpoint [Link] failed. For more details, visit
[Link]
, indica que hay un error en el protocolo de enlace de la validación. Para resolver este error, compruebe los
siguientes aspectos:
Realice una solicitud HTTP POST a la dirección URL de webhook con un cuerpo de la solicitud
SubscriptionValidationEvent de ejemplo con Postman, curl o una herramienta similar.
Si el webhook está implementando un mecanismo de enlace de validación sincrónica, compruebe que
ValidationCode se devuelve como parte de la respuesta.
Si el webhook está implementando un mecanismo de enlace de validación asincrónica, compruebe que la
solicitud HTTP POST devuelve 200 OK.
Si el webhook devuelve 403 (Prohibido) en la respuesta, compruebe si el webhook está detrás de una puerta
de enlace de aplicaciones de Azure o del firewall de aplicaciones web. Si es así, tendrá que deshabilitar estas
reglas de firewall y volver a realizar una solicitud HTTP POST:
920300 [Falta un encabezado de aceptación (Accept) en la solicitud; se puede corregir]
942430 [Restringe la detección de anomalías de caracteres de SQL (args): número de caracteres especiales
que se han excedido (12)]
920230 (Varias codificaciones de direcciones URL detectadas)
942130 (Ataque por inyección de código SQL: Tautología de SQL detectada).
931130 [Posible ataque remoto de inclusión de archivos (RFI) = Referencia o vínculo fuera del dominio]

Pasos siguientes
Si necesita más ayuda, publique su problema en el foro de Stack Overflow o abra una incidencia de soporte técnico.
Solución de problemas de conectividad - Azure
Event Grid
04/08/2020 • 10 minutes to read • Edit Online

Hay varias razones por las que las aplicaciones cliente no pueden conectarse a un tema o dominio de Event Grid.
Los problemas de conectividad que experimenta pueden ser permanentes o transitorios. Si el problema sucede
todo el tiempo (permanente), puede que desee comprobar la configuración del firewall de la organización, la
configuración del firewall de IP, las etiquetas de servicio, los puntos de conexión privados, etc. En el caso de
problemas transitorios, la ejecución de comandos para comprobar los paquetes descartados y la obtención de
seguimientos de red puede ayudar a solucionar los problemas.
En este artículo se proporcionan consejos sobre cómo solucionar problemas de conectividad con Azure Event
Grid.

Solución de problemas de conectividad permanentes


Si la aplicación no puede conectarse a la cuadrícula de eventos, siga los pasos de esta sección para solucionar el
problema.
Compruebe si hay una interrupción del servicio
Compruebe la interrupción del servicio de Azure Event Grid en el sitio de estado del servicio de Azure.
Compruebe si los puertos necesarios para comunicarse con Event Grid no están bloqueados por el firewall de
la organización
Compruebe que los puertos utilizados para comunicarse con Azure Event Grid no están bloqueados en el firewall
de la organización. Consulte en la siguiente tabla los puertos de salida que se deben abrir para comunicarse con
Azure Event Grid.

P ROTO C O LO P UERTO S

HTTPS 443

Este es un comando de ejemplo que comprueba si el puerto 443 está bloqueado.

.\[Link] -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.[Link] -nobanner

En Linux:

telnet {sampletopicname}.{region}-{suffix}.[Link] 443

Compruebe que las direcciones IP se permiten en el firewall corporativo


Cuando trabaja con Azure, en ocasiones tiene que permitir intervalos de direcciones IP específicos o direcciones
URL en el firewall o proxy corporativo para tener acceso a todos los servicios de Azure que está usando o
intentando usar. Compruebe que se permite el tráfico en las direcciones IP utilizadas por Event Grid. En el caso de
las direcciones IP utilizadas por Azure Event Grid: consulte Rangos de direcciones IP y etiquetas de servicio de
Azure: nube pública y Etiqueta de servicio: AzureEventGrid.
NOTE
Se pueden agregar nuevas direcciones IP a la etiqueta de servicio AzureEventGrid, aunque no es habitual. Por lo tanto, es
conveniente realizar una comprobación semanal de las etiquetas de servicio.

Compruebe que se permite la etiqueta de servicio AzureEventGrid en los grupos de seguridad de red
Si la aplicación se ejecuta dentro de una subred y hay un grupo de seguridad de red asociado, confirme si se
permite saliente de Internet o la etiqueta de servicio AzureEventGrid. Consulte Etiquetas de servicio
Compruebe la configuración del firewall de IP para su tema o dominio
Compruebe que el firewall de IP del tema o dominio EventGrid no bloquea la dirección IP pública de la máquina
en la que se ejecuta la aplicación.
De forma predeterminada, los temas o dominios de Event Grid son accesibles desde Internet, siempre que la
solicitud venga con una autenticación y una autorización válidas. Con el firewall de IP, puede restringirlo aún más
a solo un conjunto de direcciones o intervalos de direcciones IPv4 en notación CIDR (Enrutamiento de
interdominios sin clases).
Las reglas de firewall de IP se aplican en el nivel de tema o dominio de Event Grid. Por lo tanto, las reglas se
aplican a todas las conexiones de clientes que usan cualquier protocolo admitido. Cualquier intento de conexión
desde una dirección IP que no coincida con una regla IP admitida en el tema o dominio de Event Grid se rechaza
como prohibido. La respuesta no menciona la regla IP.
Para obtener más información, consulte Configuración de reglas de firewall de IP para un tema o dominio de
Azure Event Grid.
Busque las direcciones IP bloqueadas por el firewall de IP
Habilite los registros de diagnóstico para el tema o dominio de Event Grid Habilitar los registros de diagnóstico.
Verá la dirección IP para la conexión que se deniega.

{
"time": "2019-11-01T00:17:13.4389048Z",
"resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-
NAME/PROVIDERS/[Link]/TOPICS/SAMPLE-TOPIC-NAME",
"category": "PublishFailures",
"operationName": "Post",
"message": "inputEventsCount=null, requestUri=[Link]
[Link]/api/events, publisherInfo=PublisherInfo(category=User, inputSchema=EventGridEvent,
armResourceId=/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-
NAME/PROVIDERS/[Link]/TOPICS/SAMPLE-TOPIC-NAME), httpStatusCode=Forbidden,
errorType=ClientIPRejected, errorMessage=Publishing to SAMPLE-TOPIC-NAME.{region}-
{suffix}.[Link] by client {clientIp} is rejected due to IpAddress filtering rules."
}

Compruebe si se puede obtener acceso al tema o dominio EventGrid con solo un punto de conexión privado
Si el tema o dominio de Event Grid está configurado para ser accesible únicamente a través de un punto de
conexión privado, confirme que la aplicación cliente obtiene acceso al tema o dominio a través del punto de
conexión privado. Para confirmarlo, compruebe si la aplicación cliente se ejecuta dentro de una subred y hay un
punto de conexión privado para el tema o dominio de Event Grid en esa subred.
El servicio Azure Private Link permite el acceso a Azure Event Grid a través de un punto de conexión privado
en la red virtual. Un punto de conexión privado es una interfaz de red que le conecta de forma privada y segura a
un servicio con la tecnología de Azure Private Link. El punto de conexión privado usa una dirección IP privada de
la red virtual para incorporar el servicio de manera eficaz a su red virtual. Todo el tráfico dirigido al servicio se
puede enrutar mediante el punto de conexión privado, por lo que no se necesita ninguna puerta de enlace,
dispositivos NAT, conexiones de ExpressRoute o VPN ni direcciones IP públicas. El tráfico entre la red virtual y el
servicio atraviesa la red troncal de Microsoft, eliminando la exposición a la red pública de Internet. Puede
conectarse a una instancia de un recurso de Azure, lo que le otorga el nivel más alto de granularidad en el control
de acceso.
Para obtener más información, consulte Configuración de puntos de conexión privados.

Solución de problemas de conectividad transitorios


Si tiene problemas de conectividad intermitentes, consulte las siguientes secciones para obtener sugerencias para
la solución de problemas.
Ejecute el comando para comprobar los paquetes destacados
Si hay problemas de conectividad intermitentes, ejecute el siguiente comando para comprobar si hay paquetes
descartados. Este comando intentará establecer 25 conexiones TCP diferentes cada segundo con el servicio. A
continuación, puede comprobar cuántas de ellas se han realizado correctamente y cuántas han fallado y, además,
ver la latencia de conexión TCP. Puede descargar la herramienta psping desde aquí.

.\[Link] -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.[Link] -nobanner

Puede usar comandos equivalentes si utiliza otras herramientas como tcpping [Link].
Realice un seguimiento de red si los pasos anteriores no ayudan y analícelo con herramientas como Wireshark. Si
lo necesita, póngase en contacto con el soporte técnico de Microsoft.
Actualizaciones o reinicios del servicio
Pueden producirse problemas de conectividad transitorios debido a actualizaciones y reinicios del servicio back-
end. Cuando se producen, es posible que vea los síntomas siguientes:
Puede haber una caída en la llegada de mensajes o solicitudes entrantes.
El archivo de registro puede contener mensajes de error.
Puede que las aplicaciones se desconecten del servicio durante unos segundos.
Puede que las solicitudes se limiten momentáneamente.
La detección de estos errores transitorios, la interrupción y el posterior reintento de la llamada garantizará que el
código sea resistente a estos problemas transitorios.

Pasos siguientes
Si necesita más ayuda, publique su problema en el foro de Stack Overflow o abra una incidencia de soporte
técnico.
Solución de problemas de validación de suscripciones
de Azure Event Grid
04/08/2020 • 3 minutes to read • Edit Online

En este artículo se proporciona información sobre la solución de problemas de validaciones de las suscripciones a
eventos.

IMPORTANT
Para más información sobre la validación de los puntos de conexión para webhooks, consulte Entrega de eventos de
webhook.

Validación de suscripciones a eventos de Event Grid mediante Postman


Este es un ejemplo del uso de Postman para validar una suscripción de webhook de un evento de Event Grid:

Este es un ejemplo del código JSON de SubscriptionValidationEvent :


[
{
"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subject": "",
"data": {
"validationCode": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6",
},
"eventType": "[Link]",
"eventTime": "2018-01-25T22:12:19.4556811Z",
"metadataVersion": "1",
"dataVersion": "1"
}
]

Este es el ejemplo de respuesta correcta:

{
"validationResponse": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
}

Para obtener más información sobre la validación de eventos de Event Grid para webhooks, consulte Validación de
puntos de conexión con eventos de Event Grid.

Validación de suscripciones a eventos de Event Grid mediante Curl


Este es el comando de Curl de ejemplo para validar una suscripción de webhook de un evento de Event Grid:

curl -X POST -d '[{"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66","topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-


xxxx-xxxxxxxxxxxx","subject": "","data": {"validationCode": "512d38b6-c7b8-40c8-89fe-
f46f9e9622b6"},"eventType": "[Link]","eventTime": "2018-01-
25T22:12:19.4556811Z", "metadataVersion": "1","dataVersion": "1"}]' -H 'Content-Type: application/json'
[Link]

Validación de suscripciones a eventos de nube mediante Postman


Este es un ejemplo de uso de Postman para validar una suscripción de webhook de un evento de nube:

Use el método HTTP OPTIONS para la validación con eventos de nube. Para más información sobre la validación
de eventos de nube para webhooks, consulte Validación de puntos de conexión con eventos de nube.

Código de error: 403


Si el webhook devuelve 403 (Prohibido) en la respuesta, compruebe si el webhook está detrás de una puerta de
enlace de aplicaciones de Azure o del firewall de aplicaciones web. Si es así, tiene que deshabilitar las siguientes
reglas de firewall y volver a realizar una solicitud HTTP POST:
920300 [Falta un encabezado de aceptación (Accept) en la solicitud; se puede corregir]
942430 [Restringe la detección de anomalías de caracteres de SQL (args): número de caracteres especiales que
se han excedido (12)]
920230 (Varias codificaciones de direcciones URL detectadas)
942130 (Ataque por inyección de código SQL: Tautología de SQL detectada).
931130 [Posible ataque remoto de inclusión de archivos (RFI) = Referencia o vínculo fuera del dominio]

Pasos siguientes
Si necesita más ayuda, publique su problema en el foro de Stack Overflow o abra una incidencia de soporte
técnico.
Supervisar la entrega de mensajes de Event Grid
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se describe cómo usar el portal para ver las métricas de temas y suscripciones de Event Grid, y
cómo crear alertas en ellas.

Métricas
El portal muestra las métricas para el estado de la entrega de mensajes de eventos.
En el caso de los temas, estas son algunas de las métricas:
Publicación correcta : el evento se envió correctamente al tema y se procesó con una respuesta 2xx.
Error al publicar : el evento se envió al tema, pero se rechazó con un código de error.
Sin coincidencia : el evento se publicó correctamente en el tema, pero no coincide con ninguna suscripción
a eventos. Se descartó el evento.
En el caso de las suscripciones, estas son algunas de las métricas:
Entrega realizada : el evento se entregó correctamente al punto de conexión de la suscripción y se
recibió una respuesta 2xx.
Entrega no realizada : Cada vez que el servicio intenta entregar y el controlador de eventos no
devuelve un código de error 2xx, se incrementa el contador de error de entrega . Si intentamos entregar
el mismo evento varias veces y se produce un error, se incrementa el contador de error de entrega por
cada error.
Eventos expirados : no se entregó el evento y se enviaron todos los reintentos. Se descartó el evento.
Eventos coincidentes : la suscripción a eventos coincide con el evento del tema.

NOTE
Para obtener la lista completa de las métricas, consulte Métricas compatibles con Azure Event Grid.

Ver métricas de temas personalizados


Si ha publicado un tema personalizado, puede consultar sus métricas.
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.
3. Seleccione el tema personalizado en la lista de temas.

4. Vea las métricas del tema de evento personalizado en la página de Temas de Event Grid . En la imagen
siguiente, se minimiza la sección de Essentials que muestra el grupo de recursos, la suscripción, etc.

Puede crear gráficos con métricas compatibles mediante la pestaña de Métricas de la página de Temas de
Event Grid .
Para obtener más información sobre las métricas, consulte Métricas en Azure Monitor.
Por ejemplo, vea el gráfico de métricas para la métrica de Eventos publicados .

Visualización de las métricas de suscripción


1. Desplácese hasta la página de Temas de Event Grid siguiendo los pasos de la sección anterior.
2. Seleccione la suscripción en el panel inferior, tal y como se muestra en el ejemplo siguiente.

También puede buscar Suscripciones de Event Grid en la barra de búsqueda de Azure Portal,
seleccionar Tipo de temas , Suscripción y Ubicación para ver una suscripción de eventos.
Para los temas personalizados, seleccione Temas de Event Grid como Tipo de temas . Para los temas
del sistema, seleccione el tipo de recurso de Azure, por ejemplo Cuentas de almacenamiento (Blob,
GPv2) .
3. Vea las métricas de la suscripción en la Página principal de la suscripción en un gráfico. Puede ver las
métricas de General , Error , Latencia y Mensajes no enviados durante la hora, 6 horas, 12 horas, 1
día, 7 días o 30 días anteriores.

Ver las métricas de los temas del sistema


1. Inicie sesión en el portal de Azure.
2. En la barra de búsqueda del tema, escriba Temas del sistema de Event Grid y, a continuación,
seleccione Temas de sistema de Event Grid en la lista desplegable.
3. Seleccione el tema del sistema en la lista de temas.

.
4. Vea las métricas de tema de sistema en la página de Temas del sistema de Event Grid . En la imagen
siguiente, se minimiza la sección de Essentials que muestra el grupo de recursos, la suscripción, etc.
Puede crear gráficos con métricas compatibles mediante la pestaña de Métricas de la página de Temas de
Event Grid .

Para obtener más información sobre las métricas, consulte Métricas en Azure Monitor.

Pasos siguientes
Vea los artículos siguientes:
Para obtener información sobre cómo crear alertas de métricas y operaciones de registro de actividad,
consulte Establecer alertas.
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Establecimiento de alertas en métricas y registros de
actividad de Azure Event Grid
04/08/2020 • 6 minutes to read • Edit Online

En este artículo se describe cómo crear alertas en métricas y operaciones de registro de actividad de Azure Event
Grid. Puede crear alertas tanto en las métricas de publicación como de entrega para los recursos de Azure Event
Grid (temas y dominios). En los temas del sistema, cree alertas con la página Métricas .

Creación de alertas en eventos de la cola de mensajes fallidos


En el siguiente procedimiento se muestra cómo crear una alerta sobre la métrica de eventos en la cola de
mensajes fallidos para un tema personalizado. En este ejemplo, se envía un correo electrónico al propietario del
grupo de recursos de Azure cuando el recuento de eventos en la cola de mensajes fallidos para un tema supere los
diez.
1. En la página Tema de Event Grid del tema, seleccione Aler tas en el menú de la izquierda y, a
continuación, seleccione + Nueva regla de aler tas .

2. En la página Crear regla de aler ta , compruebe que se ha seleccionado el tema para el recurso. A
continuación, haga clic en Seleccionar condición .
3. En la página Configurar lógica de señal , siga estos pasos:
a. Seleccione una métrica o una entrada del registro de actividad. En este ejemplo, se selecciona
Eventos en la cola de mensajes fallidos .
b. Seleccione las dimensiones (opcional).
NOTE
Puede seleccionar el botón + para EventSubscriptionName si desea especificar un nombre de suscripción
de evento para filtrar los eventos.

c. Desplácese hacia abajo. En la sección Lógica de aler ta , seleccione un Operador y Tipo de


agregación , escriba un Valor de umbral y seleccione Listo . En este ejemplo, se desencadena una
alerta cuando el número total de eventos con mensajes fallidos sea mayor que diez.
4. Ahora, en la página Crear regla de aler tas , haga clic en Seleccionar el grupo de acciones .
5. Seleccione Crear grupo de acciones en la barra de herramientas para crear un nuevo grupo de acciones.
También puede seleccionar un grupo existente.
6. En la página Agregar grupo de acciones , siga estos pasos:
a. Escriba un nombre para el grupo de acciones .
b. Escriba un nombre cor to para el grupo de acciones.
c. Seleccione una Suscripción de Azure donde desee crear el grupo de acciones.
d. Seleccione el grupo de recursos de Azure en el que desee crear el grupo de acciones.
e. Escriba un nombre para la acción .
f. Seleccione el tipo de acción . En este ejemplo, se ha seleccionado el rol de correo electrónico de
Azure Resource Manager ; en concreto, el rol Propietarios .
g. Seleccione Aceptar para cerrar la página.
7. De nuevo en la página Crear regla de aler tas , escriba un nombre para la regla y, a continuación,
seleccione Crear regla de aler tas .
8. Ahora, en la página Aler tas del tema, verá un vínculo para administrar las reglas de alertas si aún no hay
ninguna alerta. Si las hay, seleccione Administrar reglas de aler ta en la barra de herramientas.
Creación de alertas en otras métricas o operaciones de registro de
actividad
En la sección anterior se mostró cómo crear alertas de eventos en la cola de mensajes fallidos. Los pasos para
crear alertas en otras métricas o en operaciones de registro de actividad son similares.
Por ejemplo, para crear una alerta en un evento de error de entrega, seleccione Eventos de error en la entrega
en la página Configurar lógica de señal .
Creación de alertas mediante la página Métricas
También puede crear alertas con la página Métricas . Los pasos son similares. En el caso de los temas del sistema,
solo puede usar la página Métricas para crear alertas, ya que la página Aler tas no está disponible.
NOTE
En este artículo no se tratan todos los pasos y combinaciones diferentes que puede usar para crear una alerta. Para
información general sobre las alertas, consulte Información general de las alertas.

Pasos siguientes
Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de
entrega de mensajes de Event Grid.
Para obtener una introducción a Event Grid, vea Acerca de Event Grid.
Para comenzar a usar rápidamente Event Grid, vea Creación y enrutamiento de eventos personalizados con
Azure Event Grid.
Cuotas y límites de Azure Event Grid
04/08/2020 • 2 minutes to read • Edit Online

En este artículo se enumeran las cuotas y los límites de Azure Event Grid.

Cuotas y límites
Los límites siguientes se aplican a temas del sistema y temas personalizados de Azure Event Grid, no a dominios de
eventos.

RESO URC E L ÍM IT E

Temas personalizados por suscripción de Azure 100

Suscripciones de eventos por tema 500

Velocidad de publicación de un tema personalizado (entrada) 5000 eventos por segundo y tema

Tamaño del evento 1 MB. No obstante, las operaciones se cobran en incrementos


de 64 KB. Por lo tanto, los eventos de más de 64 KB incurrirán
en cargos de operaciones como si fueran varios eventos. Por
ejemplo, un evento que tenga 130 KB incurrirá en operaciones
como si fueran tres eventos independientes.

Temas por dominio de eventos 100 000

Suscripciones de eventos por tema dentro de un dominio 500

Suscripciones de eventos del ámbito de dominio 50

Tasa de publicación para un dominio de eventos (entrada) 5000 eventos por segundo

Dominios de eventos por suscripción de Azure 100

Conexiones de punto de conexión privado por tema o dominio 64

Reglas de firewall de IP por tema o dominio 16

Pasos siguientes
Consulte Suscripción de Azure y límites de servicio, cuotas y restricciones para obtener las cuotas y los límites de
todos los servicios de Azure.
Esquema de suscripción de Event Grid
04/08/2020 • 3 minutes to read • Edit Online

Para crear una suscripción de Event Grid, se envía una solicitud a la operación de suscripción Crear
evento. Utilice el siguiente formato:

PUT /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/{resource-
provider}/{resource-type}/{resource-name}/[Link]/eventSubscriptions/{event-type-
definitions}?api-version=2018-01-01

Por ejemplo, con el fin de crear una suscripción de eventos para una cuenta de almacenamiento
denominada " examplestorage " en un grupo de recursos llamado examplegroup , utilice el formato
siguiente:

PUT /subscriptions/{subscription-
id}/resourceGroups/examplegroup/providers/[Link]/storageaccounts/examplestorage/Microsoft.
EventGrid/eventSubscriptions/{event-type-definitions}?api-version=2018-01-01

El nombre de la suscripción de eventos debe tener entre 3 y 64 caracteres de longitud y solo puede
contener los siguientes caracteres: a-z, A-z, 0-9, y "-". En el artículo se describen las propiedades y el
esquema del cuerpo de la solicitud.

Propiedades de la suscripción de eventos


P RO P IEDA D T IP O DESC RIP C IÓ N

destination object El objeto que define el punto de


conexión.

filter object Un campo opcional para filtrar los


tipos de eventos.

Objeto de destino
P RO P IEDA D T IP O DESC RIP C IÓ N

endpointType string El tipo de punto de conexión de la


suscripción (webhook/HTTP, centro
de eventos o cola).

endpointUrl string Dirección URL de destino de los


eventos en esta suscripción a
eventos.

Objeto de filtro
P RO P IEDA D T IP O DESC RIP C IÓ N
P RO P IEDA D T IP O DESC RIP C IÓ N

includedEventTypes array Realiza la correspondencia cuando el


tipo de evento del mensaje de
evento es una coincidencia exacta
con uno de estos nombres de tipo
de evento. Genera un error cuando
el nombre del evento no coincide
con los nombres de tipo de evento
registrados para el origen del
evento. El valor predeterminado
coincide con todos los tipos de
evento.

subjectBeginsWith string Un filtro de coincidencia de prefijo


en el campo de asunto del mensaje
del evento. El valor predeterminado
o una cadena vacía coincide con
todos los tipos de evento.

subjectEndsWith string Un filtro de coincidencia de sufijo en


el campo de asunto del mensaje del
evento. El valor predeterminado o
una cadena vacía coincide con todos
los tipos de evento.

isSubjectCaseSensitive string Controla la coincidencia que


distingue mayúsculas de minúsculas
en los filtros.

Esquema de suscripción de ejemplo


{
"properties": {
"destination": {
"endpointType": "webhook",
"properties": {
"endpointUrl": "[Link]
code=VXbGWce53l48Mt8wuotr0GPmyJ/nDT4hgdFj9DpBiRt38qqnnm5OFg=="
}
},
"filter": {
"includedEventTypes": [ "[Link]", "[Link]" ],
"subjectBeginsWith": "/blobServices/default/containers/mycontainer/log",
"subjectEndsWith": ".jpg",
"isSubjectCaseSensitive ": "true"
}
}
}

Pasos siguientes
Para ver una introducción a Event Grid, consulte el artículo acerca de qué es Event Grid.
SDK de Event Grid para administración y publicación
04/08/2020 • 2 minutes to read • Edit Online

Event Grid proporciona SDK que permiten administrar los recursos y exponer eventos mediante programación.

SDK de administración
Los SDK de administración permiten crear, actualizar y eliminar suscripciones y temas de Event Grid. En la
actualidad, están disponibles los siguientes SDK:
.NET
Go
Java
Node
Python
Ruby

SDK de plano de datos


Los SDK de planos de datos permiten publicar eventos en temas, y se aseguran de autenticar, formar el evento y
publicarlo de forma asincrónica en el punto de conexión especificado. También permiten consumir eventos de
primera entidad. En la actualidad, están disponibles los siguientes SDK:
.NET
Go
Java
Node
Python
Ruby

Pasos siguientes
Para obtener aplicaciones de ejemplo, consulte Ejemplos de código de Event Grid.
Para ver una introducción a Event Grid, consulte el artículo acerca de qué es Event Grid.
Para consultar los comandos de Event Grid en la CLI de Azure, vea CLI de Azure.
Para consultar los comandos de Event Grid en PowerShell, vea PowerShell.

También podría gustarte