Grade de Eventos do Azure: CloudEvents, filtros, repetições e eventos personalizados de IA
Voltar para a trilha AI-200
AI-200Capítulo 19

Estudo para a Certificação Microsoft AI-200

Grade de Eventos do Azure: CloudEvents, filtros, repetições e eventos personalizados de IA

Substitua sondagens por fluxos de IA orientados a eventos que encaminham CloudEvents de sistema e personalizados por assinaturas filtradas, entrega push confiável ou pull controlada, políticas de repetição, recuperação de dead-letter, monitoramento e publicação segura.

Tempo de estudo sugerido: 125 minutos • Nível intermediário • Reescrita autoral completa com versão resumida de cada tópico, avaliação comentada e laboratório guiado em Python

Escudo neon Microsoft Certified AI-200 para tópicos da Grade de Eventos do Azure, CloudEvents, filtros, repetições e manipuladores de IA

1. Cenário de IA orientado a eventos e objetivos

Uma plataforma de moderação recebe imagens e textos no , gera embeddings, executa classificadores e encaminha resultados de risco para revisores. Consultar continuamente cada origem e etapa desperdiça solicitações, retarda reações, aumenta o acoplamento e piora nos picos. O fluxo precisa de um sinal leve quando dados chegam, a inferência termina, um modelo muda ou uma etapa entrega trabalho à próxima.

A do ( ) fornece essa camada de roteamento. O capítulo aborda modelagem, tópicos, modos de entrega, filtros, falhas transitórias, dead-letter, observabilidade e publicação por ou .

  • Reconhecer eventos, origens, tópicos, assinaturas e manipuladores em um fluxo de IA.
  • Escolher tópicos do sistema, personalizados ou de e entrega push ou pull.
  • Criar interoperáveis com tipos, assuntos e dados compactos.
  • Configurar filtros, repetições, dead-letter, lotes e monitoramento.
  • Publicar com segurança usando , , Python ou .

Resumo do tópico

A substitui a sondagem por notificações explícitas e roteáveis, permitindo que cada etapa de IA reaja de modo independente.

2. Entenda o modelo de roteamento

A é um serviço gerenciado de publicação e assinatura com baixa latência e operações cobradas conforme o uso. Um evento é um fato compacto sobre uma mudança, não o recurso completo. Uma origem publica no tópico, a assinatura seleciona correspondências e o manipulador executa a reação. , , , , aplicações personalizadas e parceiros podem ser origens.

Componentes fundamentais
ComponenteResponsabilidade na solução de IA
EventoDescreve uma mudança discreta com identidade, tipo, origem, horário, assunto e dados pequenos
OrigemProduz a mudança, como upload, inferência concluída ou validação de modelo
TópicoDelimita publicação e roteamento de eventos relacionados
Assinatura de eventoLiga um tópico a um destino e pode aplicar filtros
ManipuladorInicia processamento, notificação, auditoria ou orquestração
Grade de Eventos do Azure roteando eventos de IA por um tópico e assinaturas filtradas
Diagrama autoral: uma publicação é avaliada por assinaturas independentes e entregue apenas aos manipuladores cujos filtros correspondem.

Resumo do tópico

Separe o fato, o produtor, o tópico, cada filtro e cada reação para obter baixo acoplamento.

3. Escolha tópicos do sistema, personalizados ou de

Seleção de tópico
TipoPublicador e uso
Tópico do sistemaRepresenta eventos de um recurso do , como Microsoft..BlobCreated; a aplicação assina, mas não publica com chave de
Tópico personalizadoExpõe um para eventos definidos pela aplicação, como InferenceCompleted ou ModelRetrained, com entrega push
Tópico de Usa em um e aceita consumo push ou pull, além de recursos como integração MQTT

Use eventos do sistema para estado da plataforma, personalizados para marcos da aplicação e tópicos de quando o consumidor precisar controlar o pull, usar privado ou concentrar recursos no . A moderação pode começar com BlobCreated e, depois da inferência, publicar com.contoso.ai.ContentClassified.

Resumo do tópico

Associe o tópico ao publicador e ao consumo: recurso do , marco da aplicação ou com push e pull.

4. Aplique padrões e selecione manipuladores

O processamento reativo começa quando os dados chegam. A coordenação de publica somente em limites significativos, como embeddings concluídos ou índice atualizado. Eventos de ciclo de vida comunicam treinamento, validação, promoção e implantação de modelos. Assim, auditoria, notificações ou qualidade podem assinar sem alterar o produtor.

Destinos push comuns
ManipuladorUso adequado
Reações curtas e orquestração sem servidor
volumoso e análise posterior
Fila ou tópico do Comandos duráveis, nivelamento de carga e processamento ordenado
Aplicação personalizada com público validado
Fila do do simples e durável de trabalho

No push, a envia assim que há correspondência. O pull, disponível para tópicos de , deixa o consumidor receber no próprio ritmo e confirmar, liberar, rejeitar ou renovar bloqueios. Prefira pull quando não for possível expor , quando houver conectividade privada ou quando a taxa de entrada precisar ser controlada.

Tópicos do sistema, personalizados e de namespace com entrega push e pull
Diagrama autoral: tópicos do sistema e personalizados acionam destinos push; um tópico de também permite pull e liquidação controlada.

Resumo do tópico

Publique transições relevantes, use push para reação imediata e pull de quando o consumidor precisar controlar tempo, taxa ou rede.

5. Padronize com 1.0

A aceita o esquema original e 1.0. é recomendado para novos projetos porque padroniza o contexto, atravessa produtos e protocolos e permite atributos de extensão. O esquema continua disponível por compatibilidade. Entrada no formato pode sair como , mas entrada não pode virar saída porque o esquema antigo não representa extensões.

Compatibilidade de esquemas
EntradaSaídaSuporte
Esquema Esquema Sim
Esquema 1.0Sim
1.0 1.0Sim
1.0Esquema Não

Resumo do tópico

Adote 1.0 de ponta a ponta e confirme a compatibilidade antes de criar tópicos e assinaturas.

6. Projete úteis para operações de IA

CloudEvent exige specversion, type, source e id. O tipo em reverso nomeia o fato, source identifica o produtor e id distingue a ocorrência. Subject, time, datacontenttype e data fornecem roteamento e contexto. Subject funciona bem como caminho hierárquico, por exemplo //moderation/image-classifier.

{
  "specversion": "1.0",
  "type": "com.contoso.ai.InferenceCompleted",
  "source": "/services/content-moderation",
  "id": "evt-7e18",
  "subject": "/pipelines/moderation/image-classifier",
  "time": "2026-08-24T14:30:00Z",
  "datacontenttype": "application/json",
  "data": {
    "requestId": "req-78901",
    "modelName": "content-classifier",
    "modelVersion": "3.2.1",
    "processingDurationMs": 1250,
    "resultLocation": "https://results.example/output/req-78901.json",
    "status": "completed",
    "summary": { "flagged": true, "confidence": 0.97 }
  }
}

Mantenha data compacto: IDs de correlação, modelo e versão, duração, status, resumo da decisão e protegida do resultado. Tipos úteis incluem InferenceCompleted, EmbeddingsRefreshed, BatchProcessingStarted, AnomalyDetected, ModelRetrained e ContentClassified. Não publique toda mudança interna; publique fatos que outro componente possa usar.

Resumo do tópico

Crie eventos pequenos e autodescritivos para fatos relevantes e referencie resultados grandes.

7. Filtre por tipo de evento e assunto

A assinatura pode limitar included event types aos fatos compreendidos pelo destino. Prefixos e sufixos de subject roteiam caminhos, famílias de arquivos, locatários ou etapas sem abrir data. Quando combinadas, as condições de tipo e assunto precisam corresponder.

az eventgrid event-subscription create \
  --name flagged-content \
  --source-resource-id <topic-resource-id> \
  --endpoint <handler-endpoint> \
  --included-event-types com.contoso.ai.ContentClassified \
  --subject-begins-with /pipelines/moderation/ \
  --advanced-filter data.status StringIn flagged review

A nomenclatura é infraestrutura operacional. Defina convenções de tipo e subject antes de multiplicar produtores, preserve maiúsculas e minúsculas e teste casos positivos e negativos. O tipo informa o que ocorreu; o assunto indica onde ou para qual objeto ocorreu.

Resumo do tópico

Use type para semântica e prefixo ou sufixo de subject para caminhos, reduzindo trabalho desnecessário.

8. Encaminhe dados com filtros avançados

Filtros avançados examinam contexto ou campos de data. Entre os operadores estão StringIn, StringContains, StringBeginsWith, NumberGreaterThan, BoolEquals e IsNotNull. Uma assinatura pode usar StringIn em data.status para flagged ou review; outra pode selecionar confiança mínima ou versão do modelo.

Há até 25 filtros avançados e 25 valores no total, com 512 caracteres por string. Cláusulas distintas usam AND; valores de uma condição representam alternativas. Chaves com ponto não podem ser escapadas. Filtros roteiam, mas não autorizam: o manipulador ainda valida evento, esquema e permissão.

Resumo do tópico

Filtros avançados evitam processamento inútil, mas exigem contrato estável, respeito aos limites e validação no destino.

9. Confirme corretamente a entrega push

No push, a envia . Apenas 200, 201, 202, 203 e 204 confirmam sucesso. O tem 30 segundos para responder; o tempo excedido falha. A carga é uma matriz com um evento por padrão. Como a entrega é pelo menos uma vez, podem surgir duplicatas e o destino deve tornar efeitos idempotentes pelo id do evento ou por chave de negócio.

Comportamento de respostas
RespostaAção
200-204Entrega concluída
400, 403 ou 413Falha permanente; não repetir
401 ou 404 em de recurso do Repetir após pelo menos cinco minutos
408Repetir após pelo menos dois minutos
503Repetir após pelo menos 30 segundos
Outra falhaAplicar espera exponencial padrão

Use 503 para indisponibilidade temporária, não 400. Um 401 de não é repetido; a repetição tardia especial de 401 e 404 vale para de recursos do . Se a inferência durar mais de 30 segundos, grave o trabalho aceito, responda 202 e conclua de modo assíncrono.

Resumo do tópico

Responda rapidamente com 2xx adequado, classifique falhas transitórias e garanta idempotência.

10. Configure vida útil e limite de tentativas

A repetição usa espera exponencial aleatorizada. A sequência nominal é 10 segundos, 30 segundos, 1 minuto, 5 minutos, 10 minutos, 30 minutos, 1 hora, 3 horas, 6 horas e, depois, a cada 12 horas até a janela de 24 horas. A assinatura define máximo de 1 a 30 tentativas e de 1 a 1.440 minutos; os padrões são 30 e 1.440. O primeiro limite atingido encerra a entrega, e a agenda não é configurável.

curto pode expirar antes de um limite alto de tentativas. Escolha ambos pela validade de negócio, tempo de recuperação e capacidade do destino. Tentativas podem ser puladas se o aparentar indisponibilidade. Se ele responder em até três minutos, a remoção em melhor esforço pode concorrer com outra tentativa e ainda produzir duplicata.

az eventgrid event-subscription create \
  --name moderation-subscription \
  --source-resource-id <topic-resource-id> \
  --endpoint <handler-endpoint> \
  --max-delivery-attempts 5 \
  --event-ttl 30 \
  --deadletter-endpoint <blob-container-resource-id> \
  --max-events-per-batch 100 \
  --preferred-batch-size-in-kilobytes 512

Resumo do tópico

Ajuste e tentativas juntos; o primeiro que expirar vence e a idempotência continua obrigatória.

11. Preserve eventos não entregues com dead-letter

Dead-letter fica desabilitado até a assinatura apontar para um contêiner existente do . Ao esgotar tentativas ou , a pode salvar o evento e propriedades como deadLetterReason (MaxDeliveryAttemptsExceeded ou MaxRetryDurationExceeded), deliveryAttempts, lastDeliveryOutcome (NotFound, TimedOut, Busy ou Forbidden), publishTime e lastDeliveryAttemptTime. Sem destino, o evento expirado é descartado.

Trate o contêiner como fila operacional: proteja, retenha, alerte, investigue padrões como NotFound ou TimedOut, corrija a causa e republique por processo idempotente. Uma assinatura no próprio contêiner pode disparar notificação ou reprocessamento.

Entrega confiável com confirmação, repetição, dead-letter no Blob, monitoramento e replay
Diagrama autoral: sucessos são confirmados, falhas transitórias repetem até o limite e eventos esgotados seguem para Blob protegido para investigação e .

Resumo do tópico

Dead-letter gera evidência recuperável, mas precisa de responsável, alerta, diagnóstico, retenção e controlado.

12. Agrupe saídas sem comprometer a confiabilidade

O lote de saída vem desligado. A assinatura aceita de 1 a 5.000 eventos por lote e tamanho preferencial de 1 a 1.024 KB. São metas em melhor esforço: a não espera completar o lote, e um evento grande pode superar o tamanho preferido.

A semântica é tudo ou nada. O processa o lote inteiro e devolve um resultado em até 30 segundos; não há sucesso parcial, e a falha repete o lote. Selecione tamanho compatível com o destino e mantenha idempotência por evento.

Resumo do tópico

Lotes reduzem , mas exigem processamento integral dentro do prazo e tolerância à reentrega completa.

13. Monitore fluxo e resultados

O expõe sucesso de entrega, tentativas com falha, eventos correspondentes, descartados e enviados para dead-letter. Relacione essas métricas à latência, disponibilidade e do destino, à capacidade do modelo e à taxa de publicação. Falha conta tentativas, não somente perdas finais.

Alerte para aumento de dead-letter, falhas persistentes, descartes inesperados, desaparecimento de correspondências e queda de sucesso. Registre id, type, subject, correlação, assinatura, manipulador e resultado sem incluir segredos ou dados sensíveis.

Resumo do tópico

Observe publicação, correspondência, tentativas, sucesso, descarte e dead-letter em conjunto.

14. Autentique publicadores com privilégio mínimo

Publicadores podem usar chave, SAS ou . Em produção no , prefira e conceda Data Sender no menor escopo do tópico. Essa função fornece Microsoft.EventGrid/events/send/action sem segredo embutido.

A chave usa aeg-sas-key e serve para laboratório. SAS reduz tempo e recurso, mas continua sendo segredo. usa , pode aplicar políticas de e elimina rotação de chave pela aplicação. A identidade de entrada é distinta da identidade que a usa para entregar a serviços .

Resumo do tópico

Em produção, combine e Data Sender; limite e gire chaves ou SAS quando necessários.

15. Publique com o Python

O pacote -eventgrid oferece EventGridPublisherClient e .core.messaging fornece CloudEvent. O cliente aceita AzureKeyCredential, AzureSasCredential ou credencial de como DefaultAzureCredential e envia um evento ou lista homogênea. Para tópico de , forneça o contexto exigido pela atual.

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.

Reutilize o cliente, valide os dados, propague correlação e publique em pontos naturais: inferência concluída, promoção, anomalia ou transição. Envio bem-sucedido significa que a aceitou o evento, não que todos os destinos terminaram.

Resumo do tópico

O cuida da serialização e autenticação; o aplicativo mantém contratos, marcos e a distinção entre aceitação e processamento.

16. Publique por e reutilize padrões

Tópico personalizado também recebe . Para CloudEvent estruturado, use application/+ e autentique com do , aeg-sas-key ou SAS. Resposta 200 confirma aceitação; inválido, credencial errada ou esquema incompatível retorna outro status.

curl -X POST "$EVENTGRID_TOPIC_ENDPOINT" \
  -H "Content-Type: application/cloudevents+json; charset=utf-8" \
  -H "aeg-sas-key: $EVENTGRID_TOPIC_KEY" \
  --data-binary @inference-completed.json
Padrões reutilizáveis
PadrãoDados úteis
Inferência concluídaIDs, modelo e versão, duração, status, do resultado e resumo
Modelo atualizadoVersão, métricas, do artefato, promoção e destino
Transição de Run ID, etapa, status, referências de entrada e saída, duração e próxima etapa

Resumo do tópico

é portátil, mas deve seguir os mesmos contratos versionados e regras de segurança do .

17. Laboratório guiado: roteie eventos de moderação

O exercício cria e tópico, assinaturas para conteúdo sinalizado, aprovado e todos os eventos, além de uma aplicação Flask que publica moderação. O consumidor pull recebe e confirma, libera ou rejeita. Reserve cerca de 30 minutos com assinatura do , , Python 3.12 ou posterior e CLI do atual.

az group create --name ai200-eventgrid-rg --location eastus
az eventgrid namespace create \
  --resource-group ai200-eventgrid-rg \
  --name <globally-unique-namespace> \
  --location eastus
az eventgrid namespace topic create \
  --resource-group ai200-eventgrid-rg \
  --namespace-name <namespace> \
  --name moderation-events \
  --event-retention-in-days 1

python -m venv .venv
python -m pip install --upgrade azure-identity azure-eventgrid flask
  1. Baixe o projeto inicial, crie tópico de com e três assinaturas com filtros testados.
  2. Publique eventos approved e flagged com type, subject, ID, modelo, status e referência.
  3. Receba por pull, inspecione evento e propriedades, confirme sucesso, libere falha transitória e rejeite entrada inválida.
  4. Prove que cada assinatura recebe somente o previsto e correlacione os .
  5. Provoque uma falha controlada, observe repetição ou dead-letter e depois exclua o grupo de recursos.

Resumo do tópico

O laboratório valida publicação, filtros, liquidação pull e observabilidade com eventos reais.

18. Avaliação comentada e checklist de produção

Respostas da avaliação
QuestãoRespostaMotivo
Publicar conclusão de inferência definida pela aplicaçãoTópico personalizadoA aplicação possui o evento e publica em
Filtrar caminho por prefixo ou sufixo subjectO assunto é o caminho hierárquico
Cold start passa de 30 segundosRepetição automática com espera exponencialO volta a ser tentado dentro da política
Roteie flagged ou review em data.statusFiltro avançado StringInAvalia alternativas no campo
publicando em produção com Evita chave e usa mínimo

Antes da produção, confirme tipo de tópico, contrato e versão , taxonomia de type e subject, testes de filtro, escolha push/pull, validação do , comportamento em 30 segundos, idempotência, e tentativas, responsável por dead-letter, limites de lote, métricas e alertas, runbook de , identidade e , rede privada, cotas, custo e teste de carga.

  1. Microsoft Learn: visão geral da do
  2. Microsoft Learn: conceitos de entrega push
  3. Microsoft Learn: conceitos de e pull
  4. Microsoft Learn: 1.0
  5. Microsoft Learn: filtros de eventos
  6. Microsoft Learn: entrega, repetição e lotes
  7. Microsoft Learn: dead-letter e política de repetição
  8. Microsoft Learn: autenticar publicadores com
  9. Microsoft Learn: EventGridPublisherClient para Python

Resumo do tópico

Uma solução de produção combina contrato interoperável, roteamento preciso, entrega segura, recuperação observável e publicação por identidade.