Preparación para la Certificación Microsoft AI-200
Cuadrícula de Eventos de Azure: CloudEvents, filtros, reintentos y eventos personalizados de IA
Sustituye el sondeo por flujos de IA controlados por eventos que enrutan CloudEvents del sistema y personalizados mediante suscripciones filtradas, entrega push confiable o pull controlada, reintentos, recuperación de mensajes fallidos, supervisión y publicación segura.
Tiempo de estudio sugerido: 125 minutos • Nivel intermedio • Reescritura original completa con versión resumida de cada tema, evaluación comentada y laboratorio guiado en Python
Por João Ricardo Dutra••Contenido original completo
1. Escenario de IA controlado por eventos y objetivos
Una plataforma de moderación recibe imágenes y texto en , crea embeddings, ejecuta clasificadores y envía resultados riesgosos a revisores. Consultar continuamente cada origen y etapa desperdicia solicitudes, retrasa la reacción, acopla servicios y empeora durante los picos. El flujo necesita una señal ligera cuando llegan datos, termina una inferencia, cambia un modelo o una etapa entrega trabajo a la siguiente.
de ( ) proporciona esa capa de enrutamiento. El capítulo cubre modelado, temas, modos de entrega, filtros, errores transitorios, mensajes fallidos, observabilidad y publicación mediante o .
Identificar eventos, orígenes, temas, suscripciones y controladores en un flujo de IA.
Elegir temas del sistema, personalizados o de y entrega push o pull.
Crear interoperables con tipos, asuntos y datos compactos.
Configurar filtros, reintentos, mensajes fallidos, lotes y supervisión.
Publicar con ,, Python o .
Resumen del tema
sustituye el sondeo por notificaciones explícitas y enrutables para que cada etapa de IA reaccione de manera independiente.
2. Comprende el modelo de enrutamiento
es un servicio administrado de publicación y suscripción de baja latencia, con operaciones cobradas según el uso. Un evento es un hecho compacto sobre un cambio, no el recurso completo. Un origen publica en un tema, la suscripción selecciona coincidencias y el controlador reacciona. ,,,, aplicaciones personalizadas y socios pueden ser orígenes.
Componentes principales
Componente
Responsabilidad en IA
Evento
Describe un cambio discreto con identidad, tipo, origen, hora, asunto y datos pequeños
Origen
Produce el cambio, como una carga, inferencia finalizada o validación de modelo
Tema
Delimita la publicación y el enrutamiento de eventos relacionados
Suscripción de eventos
Conecta un tema con un destino y puede aplicar filtros
Controlador
Inicia procesamiento, notificación, auditoría u orquestación
Diagrama original: una publicación se evalúa en suscripciones independientes y solo llega a los controladores cuyos filtros coinciden.
Resumen del tema
Separa el hecho, su productor, el tema, cada filtro y cada reacción para reducir el acoplamiento.
3. Elige temas del sistema, personalizados o de
Selección de tema
Tipo
Publicador y uso
Tema del sistema
Representa eventos de un recurso de , como Microsoft..BlobCreated; la aplicación se suscribe, pero no publica mediante clave de
Tema personalizado
Expone un para eventos de aplicación como InferenceCompleted o ModelRetrained y admite entrega push
Tema de
Usa dentro de un y admite push o pull, además de capacidades como integración MQTT
Usa eventos del sistema para el estado de la plataforma, personalizados para hitos de aplicación y temas de cuando el consumidor necesite controlar el pull, usar privado o unificar recursos. La moderación puede comenzar con BlobCreated y después publicar com.contoso.ai.ContentClassified.
Resumen del tema
Relaciona el tipo de tema con el publicador y el consumo: recurso de , hito de aplicación o push/pull.
4. Aplica patrones y selecciona controladores
El procesamiento reactivo comienza cuando llegan datos. La coordinación publica solo en límites importantes, como embeddings listos o índice actualizado. Los eventos de ciclo de vida anuncian entrenamiento, validación, promoción e implementación. Así, auditoría, notificación o calidad pueden suscribirse sin cambiar al productor.
Destinos push comunes
Controlador
Uso adecuado
Reacciones breves y orquestación
de gran volumen y análisis posterior
Cola o tema de
Comandos duraderos, nivelación de carga y procesamiento ordenado
Aplicación personalizada con público validado
Cola de
Búfer sencillo y duradero de trabajo
Push envía al encontrar coincidencia. Pull, disponible para temas de , deja que el consumidor reciba a su ritmo y confirme, libere, rechace o renueve el bloqueo. Elige pull si no se puede exponer , se necesita conectividad privada o debe controlarse la tasa.
Diagrama original: los temas del sistema y personalizados activan destinos push; un tema de también permite pull y liquidación controlada.
Resumen del tema
Publica transiciones significativas, usa push para reacción inmediata y pull de para controlar tiempo, tasa o red.
5. Estandariza con 1.0
admite su esquema original y 1.0. se recomienda para nuevos diseños porque estandariza contexto, funciona entre productos y protocolos y permite extensiones. El esquema sigue disponible por compatibilidad. Una entrada puede salir como , pero una entrada no puede convertirse a salida porque el formato anterior no representa extensiones.
Compatibilidad de esquemas
Entrada
Salida
Compatibilidad
Esquema
Esquema
Sí
Esquema
1.0
Sí
1.0
1.0
Sí
1.0
Esquema
No
Resumen del tema
Adopta 1.0 de extremo a extremo y comprueba la compatibilidad antes de crear temas y suscripciones.
6. Diseña útiles para operaciones de IA
CloudEvent requiere specversion, type, source e id. El tipo con inverso nombra el hecho, source identifica al productor e id distingue la ocurrencia. Subject, time, datacontenttype y data aportan enrutamiento y contexto. Subject funciona como ruta jerárquica, por ejemplo //moderation/image-classifier.
Mantén data compacto: identificadores de correlación, modelo y versión, duración, estado, resumen y segura del resultado. Son útiles InferenceCompleted, EmbeddingsRefreshed, BatchProcessingStarted, AnomalyDetected, ModelRetrained y ContentClassified. Publica hechos que otro componente pueda usar, no cada cambio interno.
Resumen del tema
Crea eventos pequeños y autodescriptivos para hechos significativos y referencia los resultados grandes.
7. Filtra por tipo de evento y asunto
Una suscripción puede limitar included event types a hechos comprendidos por el destino. Los prefijos y sufijos de subject enrutan rutas, familias de archivos, o etapas sin abrir data. Al combinarse, tipo y asunto deben coincidir.
La nomenclatura es infraestructura operativa. Define convenciones antes de multiplicar productores, respeta mayúsculas y minúsculas y prueba casos positivos y negativos. Type indica qué ocurrió; subject señala dónde o a qué objeto.
Resumen del tema
Usa type para semántica y prefijo o sufijo de subject para rutas, reduciendo trabajo innecesario.
8. Enruta datos con filtros avanzados
Los filtros avanzados examinan contexto o campos de data. Incluyen StringIn, StringContains, StringBeginsWith, NumberGreaterThan, BoolEquals e IsNotNull. Una suscripción puede usar StringIn en data.status para flagged o review; otra puede seleccionar confianza mínima o versión del modelo.
Se admiten hasta 25 filtros avanzados y 25 valores totales, con 512 caracteres por cadena. Las cláusulas se combinan con AND y los valores dentro de una condición son alternativas. Las claves con punto no pueden escaparse. Los filtros enrutan, pero no autorizan; el controlador todavía valida evento y permisos.
Resumen del tema
Los filtros avanzados eliminan procesamiento inútil, pero exigen contrato estable, límites y validación en el destino.
9. Confirma correctamente la entrega push
En push, envía . Solo 200, 201, 202, 203 y 204 confirman éxito. El dispone de 30 segundos; agotar el tiempo es un error. La carga es una matriz con un evento de forma predeterminada. La entrega es al menos una vez, por lo que el controlador debe hacer idempotentes los efectos mediante id de evento o clave de negocio.
Comportamiento de respuestas
Respuesta
Acción
200-204
Entrega completada
400, 403 o 413
Error permanente; no reintentar
401 o 404 en de recurso de
Reintentar después de al menos cinco minutos
408
Reintentar después de al menos dos minutos
503
Reintentar después de al menos 30 segundos
Otro error
Aplicar retroceso exponencial estándar
Devuelve 503 para falta temporal de capacidad, no 400. Un 401 de no se reintenta; el reintento diferido especial de 401 y 404 se aplica a de recursos de . Si la inferencia tarda más de 30 segundos, persiste el trabajo, devuelve 202 y termínalo de manera asíncrona.
Resumen del tema
Responde pronto con el 2xx correcto, clasifica errores transitorios y garantiza idempotencia.
10. Configura duración y límite de intentos
Los reintentos usan retroceso exponencial aleatorizado. La secuencia nominal es 10 segundos, 30 segundos, 1 minuto, 5 minutos, 10 minutos, 30 minutos, 1 hora, 3 horas, 6 horas y después cada 12 horas durante la ventana de 24 horas. La suscripción configura entre 1 y 30 intentos y un entre 1 y 1.440 minutos; los valores predeterminados son 30 y 1.440. El primer límite alcanzado detiene la entrega, y la programación no es configurable.
Un corto puede expirar antes de que importe un número alto de intentos. Decide ambos por valor de negocio, recuperación y capacidad. Pueden omitirse intentos si el parece inactivo. Si después responde en tres minutos, la eliminación de mejor esfuerzo puede competir con otro intento y producir un duplicado.
Ajusta e intentos juntos; gana el primero que expire y la idempotencia sigue siendo necesaria.
11. Conserva eventos no entregados como mensajes fallidos
El almacenamiento de mensajes fallidos permanece deshabilitado hasta que la suscripción apunte a un contenedor existente de . Al agotarse intentos o , puede guardar el evento y propiedades como deadLetterReason (MaxDeliveryAttemptsExceeded o MaxRetryDurationExceeded), deliveryAttempts, lastDeliveryOutcome (NotFound, TimedOut, Busy o Forbidden), publishTime y lastDeliveryAttemptTime. Sin destino, el evento se descarta.
Trata el contenedor como una cola operativa: protégelo, define retención, alerta, investiga NotFound o TimedOut, corrige la causa y vuelve a publicar de forma idempotente. Otra suscripción sobre el contenedor puede iniciar notificación o reproceso.
Diagrama original: los éxitos se confirman, los errores transitorios se reintentan y los eventos agotados pasan a Blob protegido para investigación.
Resumen del tema
Los mensajes fallidos aportan evidencia recuperable solo si hay propietario, alerta, diagnóstico, retención y reproceso controlado.
12. Agrupa salidas sin romper la confiabilidad
Los lotes están desactivados de forma predeterminada. La suscripción acepta de 1 a 5.000 eventos y tamaño preferido de 1 a 1.024 KB. Son objetivos de mejor esfuerzo: el servicio no espera a llenar el lote y un evento grande puede superar el tamaño preferido.
La semántica es todo o nada. El procesa el lote entero y responde una vez en 30 segundos; no existe éxito parcial y cualquier error reintenta el lote. Elige un tamaño seguro y conserva idempotencia por evento.
Resumen del tema
Los lotes reducen , pero requieren procesar todo dentro del plazo y tolerar la reentrega completa.
13. Supervisa el flujo y los resultados
expone entregas correctas, intentos fallidos, eventos coincidentes, descartados y enviados a mensajes fallidos. Relaciónalos con latencia, disponibilidad y registros del controlador, capacidad del modelo y tasa de publicación. El error contabiliza intentos, no solo pérdidas definitivas.
Alerta por crecimiento de mensajes fallidos, errores sostenidos, descartes inesperados, ausencia de coincidencias o menor tasa de éxito. Registra id, type, subject, correlación, suscripción, controlador y resultado sin secretos ni datos confidenciales.
Resumen del tema
Observa publicación, coincidencias, intentos, éxito, descarte y mensajes fallidos como un único flujo.
14. Autentica publicadores con privilegio mínimo
Los publicadores pueden usar clave, SAS o . En producción hospedada en , prefiere y asigna Data Sender en el ámbito mínimo del tema. El rol concede Microsoft.EventGrid/events/send/action sin secreto insertado.
La clave usa aeg-sas-key y es cómoda para laboratorios. SAS reduce tiempo y recurso, pero sigue siendo secreto. usa , puede aplicar directivas de y evita rotación por la aplicación. La identidad de entrada es distinta de la identidad que usa para entregar a servicios posteriores.
Resumen del tema
Combina y Data Sender en producción; limita y rota claves o SAS cuando sean imprescindibles.
15. Publica con el de Python
El paquete -eventgrid ofrece EventGridPublisherClient y .core.messaging ofrece CloudEvent. El cliente admite AzureKeyCredential, AzureSasCredential o credenciales de como DefaultAzureCredential, y envía un evento o una lista homogénea. Para temas de , proporciona el contexto requerido por la actual.
import os
from azure.core.messaging import CloudEvent
from azure.eventgrid import EventGridPublisherClient
from azure.identity import DefaultAzureCredential
client = EventGridPublisherClient(
os.environ["EVENTGRID_TOPIC_ENDPOINT"],
DefaultAzureCredential(),
)
event = CloudEvent(
type="com.contoso.ai.InferenceCompleted",
source="/services/content-moderation",
subject="/pipelines/moderation/image-classifier",
data={
"requestId": "req-78901",
"modelName": "content-classifier",
"status": "completed",
"resultLocation": "https://results.example/output/req-78901.json",
},
)
client.send(event) # A list publishes a batch of one event type.
Reutiliza el cliente, valida datos, propaga correlación y publica en puntos naturales: inferencia terminada, promoción, anomalía o transición. Un envío correcto significa aceptación para enrutamiento, no que todos los destinos hayan terminado.
Resumen del tema
El gestiona serialización y autenticación; la aplicación conserva contratos, hitos y la diferencia entre aceptación y procesamiento.
16. Publica por y reutiliza patrones
Un tema personalizado también recibe . Para CloudEvent estructurado, usa application/+ y autentica mediante de , aeg-sas-key o SAS. La respuesta 200 confirma aceptación; incorrecto, credencial no válida o esquema incompatible produce otro estado.
Identificadores, modelo y versión, duración, estado, y resumen
Modelo actualizado
Versión, métricas, del artefacto, promoción y destino
Transición de canalización
Run ID, etapa, estado, referencias de entrada y salida, duración y siguiente etapa
Resumen del tema
es portátil, pero debe aplicar los mismos contratos versionados y reglas de seguridad que el .
17. Laboratorio guiado: enruta eventos de moderación
El ejercicio crea y tema, suscripciones para contenido marcado, aprobado y todos los eventos, y una aplicación Flask que publica moderación. El consumidor pull recibe y confirma, libera o rechaza. Reserva unos 30 minutos con suscripción de ,, Python 3.12 o posterior y la CLI de actual.
Descarga el proyecto inicial, crea el tema de con y tres suscripciones con filtros probados.
Publica eventos approved y flagged con type, subject, ID, modelo, estado y referencia.
Recibe por pull, inspecciona propiedades, confirma éxito, libera errores transitorios y rechaza entradas no válidas.
Demuestra que cada suscripción recibe lo previsto y correlaciona los registros.
Provoca un error controlado, observa reintento o mensaje fallido y elimina el grupo de recursos.
Resumen del tema
El laboratorio valida publicación, enrutamiento filtrado, liquidación pull y observabilidad con eventos reales.
18. Evaluación comentada y lista de producción
Respuestas de la evaluación
Pregunta
Respuesta
Motivo
Publicar una inferencia finalizada definida por la aplicación
Tema personalizado
La aplicación posee el evento y publica en
Filtrar una ruta por prefijo o sufijo
subject
El asunto representa la ruta jerárquica
El inicio en frío supera 30 segundos
Reintento automático con retroceso exponencial
El se intenta de nuevo dentro de la directiva
Enrutar flagged o review en data.status
Filtro avanzado StringIn
Evalúa alternativas en el campo
publicando en producción
con
Evita claves y aplica mínimo
Antes de producción, confirma tipo de tema, contrato y versión , taxonomía de type y subject, pruebas de filtros, push o pull, validación del , comportamiento en 30 segundos, idempotencia, e intentos, responsable de mensajes fallidos, límites de lote, métricas y alertas, procedimiento de reproceso, identidad y , red privada, cuotas, costo y pruebas de carga.
Una solución de producción combina contrato interoperable, enrutamiento preciso, entrega segura, recuperación observable y publicación basada en identidad.