Publique eventos em tópicos personalizados do Azure Event Grid usando chaves de acesso

Um tópico personalizado do Event Grid é um endpoint para onde as suas aplicações enviam os seus próprios eventos, para que o Event Grid possa encaminhar esses eventos para subscritores interessados. Este artigo mostra-lhe como publicar eventos num tópico personalizado usando chaves de acesso, que autenticam os seus pedidos sem configurar o Microsoft Entra ID. Recebes o endpoint do tópico e a chave de acesso, formatas um payload de evento, envias um evento de exemplo e revês a resposta.

O Acordo de Nível de Serviço (SLA) aplica-se apenas a publicações que correspondam ao formato esperado.

Pré-requisitos

Nota

A autenticação Microsoft Entra oferece melhor suporte de autenticação do que a autenticação por chave de acesso ou token de assinatura partilhada (SAS). Ao utilizar a autenticação do Microsoft Entra, o fornecedor de identidades Microsoft Entra valida a identidade, pelo que não tem de gerir chaves no seu código. Também beneficia de funcionalidades de segurança incorporadas na plataforma de identidades da Microsoft, como o Acesso Condicional, que ajudam a melhorar a segurança da sua aplicação. Para obter mais informações, consulte Autenticar clientes de publicação usando o Microsoft Entra ID.

Obtém o ponto final do tema

Para publicar eventos num tópico personalizado, envie um pedido HTTP POST utilizando 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 para um tópico personalizado, use o portal Azure, CLI do Azure ou Azure PowerShell.

Encontre o ponto final do tema no separador Overview da página de Tópicos da Grelha de Eventos no portal Azure.

Captura de ecrã da página de tópicos da Grelha de Eventos 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 contenha 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 Azure, CLI do Azure ou Azure PowerShell.

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

Captura de ecrã que mostra o separador Teclas de Acesso da página de tópicos da Grelha de Eventos no portal do Azure.

Formatar a carga útil do evento

Formate cada evento como um objeto JSON. Os campos de topo 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, defines o conteúdo do data objeto. Para uma descrição de cada propriedade, veja Azure Event Grid event schema.

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

Tenha em mente estes limites de tamanho 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 superiores a 64 KB implicam custos em blocos de 64 KB.
  • Um lote pode conter um máximo de 5.000 eventos.

O exemplo seguinte 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 exemplo de evento

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 na sessão Bash ou PowerShell .

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

Revise a resposta

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

Resultado Resposta
Com êxito 200 OK
Os dados do evento têm formato incorreto 400 Pedido Incorreto
Chave de acesso inválida 401 Não Autorizado
Ponto final incorreto 404 Não Encontrado
Matriz ou evento excede os limites de tamanho 413 Payload Demasiado Grande

Em caso de erro, o corpo da mensagem tem o seguinte formato:

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