Entregar eventos para webhooks usando tópicos de namespace – portal do Azure (versão prévia)

O artigo fornece instruções passo a passo para publicar eventos na Grade de Eventos do Azure no formato JSON do CloudEvents e entregar esses eventos usando o modelo de entrega por push. Para ser específico, você deve publicar eventos em um tópico de namespace na Grade de Eventos e efetuar push desses eventos de uma assinatura de evento para um webhook manipulador de destino. Para obter mais informações sobre o modelo de entrega por push, confira Visão geral da entrega por push.

Observação

Atualmente, os namespaces da Grade de Eventos do Azure dão suporte à autenticação de chaves de acesso e de token SAS (Assinaturas de Acesso Compartilhado).

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um namespace da Grade de Eventos

Um namespace da Grade de Eventos fornece um ponto de extremidade definido pelo usuário no qual você posta seus eventos. O exemplo a seguir cria um namespace no grupo de recursos usando o Bash no Azure Cloud Shell. O nome do namespace precisa ser exclusivo porque faz parte de uma entrada DNS (Sistema de Nomes de Domínio).

  1. Navegue até o Portal do Azure.

  2. Na barra de pesquisa no tópico, digite Event Grid Namespaces e selecione Event Grid Namespaces entre os resultados.

    Captura de tela que mostra a barra de pesquisa no portal do Azure.

  3. Na página Namespaces da Grade de Eventos, selecione + Criar na barra de comandos. Captura de tela que mostra a página Namespaces da Grade de Eventos com o botão Criar na barra de comandos selecionada.

  4. Na página Criar Namespace, siga estas etapas:

    1. Selecione a Assinatura do Azure na qual você quer criar o namespace.
    2. Crie um grupo de recursos selecionando Criar ou selecione um grupo de recursos existente.
    3. Insira um nome para o namespace.
    4. Selecione o local onde você deseja criar o grupo de recursos.
    5. Em seguida, selecione Examinar + criar.
      Captura de tela que mostra a página Criar Namespace.
    6. Na página Examinar + criar escolha Criar.
  5. Na página Implantação, selecione Acessar o recurso, após a implantação com êxito.

Obter a chave de acesso

  1. Na página Namespace da Grade de Eventos, selecione Chaves de acesso no menu à esquerda.
  2. Selecione o botão Copiar ao lado da chave de acesso. Captura de tela que mostra a página Namespaces da Grade de Eventos com a guia Chaves de Acesso selecionada.
  3. Salve a chave de acesso em algum lugar. Você o usará posteriormente neste guia de início rápido.

Crie um tópico no namespace

Crie um tópico que contém todos os eventos publicados no ponto de extremidade do namespace.

  1. Selecione Tópicos no menu à esquerda.
  2. Na página Tópicos, selecione + Tópico na barra de comandos. Captura de tela que mostra a página Tópicos.
  3. Na página Criar Tópico, siga estas etapas:
    1. Insira um nome para o tópico.
    2. Selecione Criar.
      Captura de tela que mostra a página Criar Tópico.

Criar um ponto de extremidade de mensagem

Antes de assinar os eventos, vamos criar o ponto de extremidade para a mensagem do evento. Normalmente, o ponto de extremidade executa ações com base nos dados de evento. Para simplificar esse início rápido, implante um aplicativo web predefinido que exiba as mensagens do evento. A solução implantada inclui um plano do Serviço de Aplicativo, um aplicativo Web do Aplicativo do Serviço de e o código-fonte do GitHub.

  1. Selecione Implantar no Azure para implantar a solução na sua assinatura.

    Botão para implantar o modelo do Resource Manager no Azure.

  2. Na página Implantação personalizada, realize as seguintes etapas:

    1. Para Grupo de recursos, selecione o mesmo grupo de recursos que você usou ao criar a conta de armazenamento. Será mais fácil limpar após concluir o tutorial excluindo o grupo de recursos.

    2. Em Nome do Site, insira um nome para o aplicativo Web.

    3. Em Nome do plano de hospedagem, insira um nome para o plano do Serviço de Aplicativo a usar para hospedar o aplicativo Web.

    4. Selecione Examinar + criar.

      Captura de tela mostrando a página Implantação personalizada.

  3. Na página Examinar + criar escolha Criar.

  4. A implantação leva alguns minutos para ser concluída. Na página Implantação, selecione Ir para o grupo de recursos.

    Captura de tela mostrando a página de implantação bem-sucedida com um link para acessar o grupo de recursos.

  5. Na página Grupo de recursos, na lista de recursos, selecione o aplicativo Web que você criou. Você também verá o plano do Serviço de Aplicativo e a conta de armazenamento nesta lista.

    Captura de tela que mostra a seleção do aplicativo Web no grupo de recursos.

  6. Na página Serviço de Aplicativo para seu aplicativo Web, selecione a URL para navegar até o site da Web. A URL deve estar neste formato: https://<your-site-name>.azurewebsites.net.

    Captura de tela que mostra a seleção do link para navegar até o aplicativo Web.

  7. Confirme que você vê o site, mas que nenhum evento foi postado nele ainda.

    Captura de tela de um novo site.

    Importante

    Mantenha a janela Visualizador de Eventos da Grade de Eventos do Azure aberta para ver os eventos conforme eles são postados.

Criar uma assinatura de evento

Crie uma assinatura de evento definindo seu modo de entrega como Push, que dá suporte para entrega por push..

  1. Alterne para a guia ou janela com a página Namespace da Grade de Eventos aberta a partir da guia ou janela com a página Namespace de Hubs de Eventos aberta.
  2. Na página Namespace da Grade de Eventos, selecione Tópicos no menu à esquerda.
  3. Na página Tópicos, selecione o tópico que você criou na etapa anterior.
  4. Selecione + Assinatura na barra de comandos. Captura de tela que mostra a página Tópico com o botão Criar assinatura selecionado.
  5. Na página Criar Assinatura de Eventos, siga estas etapas:
    1. Na guia Básico, insira um nome para a assinatura do evento.

    2. Selecione Push para o modo de entrega do evento.

    3. Para Tipo de ponto de extremidade, selecione Web Hook.

    4. Selecione Configurar um ponto de extremidade.

      Captura de tela que mostra a página Criar Assinatura com Push selecionada para o modo Entrega e WebHook como tipo de ponto de extremidade.

    5. Na página Web Hook, especifique o ponto de extremidade (por exemplo: https://spegridsite0520.azurewebsites.net/api/updates) conforme mostrado no exemplo a seguir e selecione Confirmar seleção.

      Captura de tela que mostra a página Web Hook com um valor para o ponto de extremidade do assinante.

    6. Volte para a página Criar Assinatura e selecione Criar.

      Captura de tela que mostra a página Criar Assinatura com todos os campos preenchidos.

Enviar eventos para o tópico

Agora, envie um evento de exemplo para o tópico do namespace seguindo as etapas nesta seção.

Declarar variáveis

  1. Inicie o Cloud Shell no portal do Azure. Mude para Bash.

    Captura de tela que mostra o Cloud Shell.

  2. Execute o comando a seguir para declarar uma variável para manter o nome do grupo de recursos. Substitua RESOUREGROUPNAME pelo nome do grupo de recursos do Azure.

    resource_group=RESOURCEGROUPNAME
    
  3. No Cloud Shell, execute o seguinte comando para declarar uma variável para manter o nome do namespace. Substitua NAMESPACENAME pelo nome do seu namespace Grade de Eventos.

    namespace=NAMESPACENAME
    
  4. Execute o comando a seguir para declarar uma variável para manter o valor da chave de acesso anotado anteriormente. Substitua ACCESSKEY pelo valor da chave de acesso para o namespace da Grade de Eventos.

    key=ACCESSKEY
    
  5. No Cloud Shell, execute o seguinte comando para declarar uma variável para manter o nome do namespace.

    topic=TOPICNAME
    

Publicar um evento

  1. Recupere o nome do host do namespace. Use-o para compor o ponto de extremidade HTTP do namespace para o qual os eventos serão enviados. As operações a seguir foram disponibilizadas pela primeira vez com a versão 2023-06-01-preview da API. Você também pode obter o nome do host na página Visão geral do namespace da Grade de Eventos no portal do Azure.

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Crie um exemplo de evento compatível com CloudEvents:

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    O elemento data é o conteúdo do evento. Qualquer JSON bem formado pode ficar nesse campo. Para obter mais informações em propriedades (também conhecidas como atributos de contexto) que podem ser usadas em um evento, consulte as especificações CloudEvents.

  3. Use o CURL para enviar o evento para o tópico. CURL é um utilitário que envia solicitações HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Verifique se o Visualizador da Grade de Eventos do Azure recebeu o evento

Verifique se o aplicativo web do Visualizador da Grade de Eventos do Azure mostra os eventos recebidos da Grade de Eventos.

Captura de tela mostrando o Visualizador da Grade de Eventos do Azure com uma amostra de evento recebido.

Neste início rápido, você usou um webhook como manipulador de eventos. Para obter um início rápido que usa um hub de eventos do Azure como um manipulador de eventos, confira Distribuir eventos para Hubs de Eventos do Azure usando tópicos de namespace.