Publique eventos em tópicos personalizados do Grade de Eventos do Azure usando chaves de acesso

Um tópico personalizado do Event Grid é um ponto de extremidade para o qual seus aplicativos enviam eventos próprios, para que o Event Grid possa encaminhar esses eventos aos assinantes interessados. Este artigo mostra como publicar eventos em um tópico personalizado usando chaves de acesso, que autenticam suas solicitações sem precisar configurar o Microsoft Entra ID. Você obtém o endpoint do tópico e a chave de acesso, formata um payload de evento, envia um evento de exemplo e analisa a resposta.

O Acordo de Nível de Serviço (SLA) se aplica apenas a postagens que correspondem ao formato esperado.

Pré-requisitos

Observação

A autenticação Microsoft Entra oferece melhor suporte à autenticação do que a autenticação por chave de acesso ou token de assinatura compartilhada (SAS). Ao usar a autenticação Microsoft Entra, o provedor de identidade da Microsoft Entra valida a identidade, então você não lida com chaves no seu código. Você também se beneficia de recursos de segurança embutidos na plataforma de identidade da Microsoft, como o Acesso Condicional, que ajudam a melhorar a segurança do seu aplicativo. Para saber mais, confira Autenticar clientes de publicação usando o Microsoft Entra ID.

Obter o ponto de extremidade do tópico

Para publicar eventos em um tópico personalizado, envie uma requisição HTTP POST usando o seguinte formato URI: https://<topic-endpoint>?api-version=2018-01-01. Por exemplo, um URI válido é: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01. Para obter o endpoint de um tópico personalizado, use o portal do Azure, CLI do Azure ou Azure PowerShell.

Encontre o ponto final do tópico na aba Visão Geral da página de Tópicos da Grade de Eventos no portal Azure.

Captura de tela da página do tópico do Event Grid no portal do Azure com o ponto de extremidade do tópico realçado.

Obter a chave de acesso

Na solicitação, inclua um valor de cabeçalho chamado aeg-sas-key que contém uma chave para autenticação. Por exemplo, um valor de cabeçalho válido é aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx. Para obter a chave para um tópico personalizado, use o portal do Azure, CLI do Azure ou Azure PowerShell.

Para obter a chave de acesso para o tópico personalizado, selecione a aba Chaves de Acesso na página de Tópicos da Grade de Eventos no portal Azure.

Captura de tela que mostra a guia Chaves de Acesso da página de tópicos da Grade de Eventos no portal do Azure.

Formate a carga do evento

Formate cada evento como um objeto JSON. Os campos de nível superior são os mesmos que os eventos padrão definidos por recurso, e a data propriedade contém as propriedades que são únicas para o seu tópico personalizado. Como editor, você define o conteúdo do data objeto. Para uma descrição de cada propriedade, veja Grade de Eventos do Azure event schema.

[
  {
    "id": string,
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

Tenha esses limites de tamanho em mente ao construir a carga útil:

  • O array de eventos pode ter um tamanho total de até 1 MB.
  • O tamanho máximo para um único evento é de 1 MB. Eventos acima de 64 KB geram cobrança em incrementos de 64 KB.
  • Um lote pode conter no máximo 5.000 eventos.

O exemplo a seguir mostra uma carga útil de evento válida:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

Enviar um evento de exemplo

Esta seção mostra como enviar um evento de exemplo para o tópico personalizado.

  1. No portal do Azure, inicie o Cloud Shell.

  2. No Cloud Shell, execute os comandos do Azure PowerShell ou da CLI do Azure no Bash ou na sessão do PowerShell.

    Captura de tela que mostra o Cloud Shell no portal do Azure.

Examinar a resposta

Depois que você posta no endpoint do tópico, você recebe uma resposta. A resposta é um código de resposta HTTP padrão. Algumas respostas comuns são:

Resultado Resposta
Sucesso 200 Tudo certo
Os dados de evento têm formato incorreto 400 Solicitação Inválida
Chave de acesso inválida 401 Não Autorizado
Ponto de extremidade incorreto 404 Não Encontrado
Matriz ou evento excede os limites de tamanho 413 Carga Útil Muito Grande

Para mensagens de erro, o corpo da mensagem usa o formato a seguir:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}