Partilhar via


Entregar eventos para webhooks usando tópicos de namespace - CLI do Azure (visualização)

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

Nota

A extensão de Grade de Eventos da CLI do Azure ainda não oferece suporte a namespaces e a nenhum dos recursos que ela contém. Usaremos o recurso da CLI do Azure para criar recursos da Grade de Eventos.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se você estiver usando uma instalação local, entre na CLI do Azure usando o az login comando. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.0.70 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Habilitar o provedor de recursos da Grade de Eventos

  1. Se você não tiver usado anteriormente a Grade de Eventos em sua assinatura do Azure, talvez seja necessário registrar o provedor de recursos da Grade de Eventos. Execute o seguinte comando para registar o fornecedor:

    az provider register --namespace Microsoft.EventGrid
    
  2. Pode demorar algum tempo até que o registo termine. Para verificar o status, execute o seguinte comando:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Quando registrationState está Registered, está pronto para continuar.

Criar um grupo de recursos

Crie um grupo de recursos do Azure com o comando az group create. Use esse grupo de recursos para conter todos os recursos criados neste artigo.

As etapas gerais para usar o Cloud Shell para executar comandos são:

  • Selecione Abrir Cloud Shell para ver uma janela do Azure Cloud Shell no painel direito.
  • Copie o comando e cole na janela do Azure Cloud Shell.
  • Pressione ENTER para executar o comando.
  1. Declare uma variável para manter o nome de um grupo de recursos do Azure. Especifique um nome para o grupo de recursos substituindo <your-resource-group-name> por um valor desejado.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Crie um grupo de recursos. Altere a localização como achar melhor.

    az group create --name $resource_group --location $location
    

Criar um espaço de nomes

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

  • Deve ter entre 3-50 caracteres.
  • Deve ser regionalmente único.
  • Apenas os caracteres permitidos são a-z, A-Z, 0-9 e -
  • Não deve começar com prefixos de palavras-chave reservadas como Microsoft, Systemou EventGrid.
  1. Declare uma variável para manter o nome do namespace da Grade de Eventos. Especifique um nome para o namespace substituindo <your-namespace-name> por um valor desejado.

    namespace="<your-namespace-name>"
    
  2. Crie um namespace. Talvez você queira alterar o local onde ele é implantado.

    az eventgrid namespace create -g $resource_group -n $namespace -l $location
    

Criar um tópico de namespace

Crie um tópico que seja usado para manter todos os eventos publicados no ponto de extremidade do namespace.

  1. Declare uma variável para manter o nome do tópico do namespace. Especifique um nome para o tópico do namespace substituindo <your-topic-name> por um valor desejado.

    topic="<your-topic-name>"
    
  2. Crie seu tópico de namespace:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Criar um ponto final de mensagem

Antes de assinar o tópico namespace, vamos criar o ponto de extremidade para a mensagem do evento. Normalmente, o ponto final executa as ações com base nos dados do evento. Para simplificar esse início rápido, implante um aplicativo Web pré-criado que exibe as mensagens do evento. A solução implementada inclui um plano do Serviço de Aplicações, uma aplicação Web do Serviço de Aplicações e o código de origem do GitHub.

  1. Copie o comando a seguir, especifique um nome para o aplicativo Web (exemplo de Visualizador de Grade de Eventos) e pressione ENTER para executar o comando. Substitua <your-site-name> por um nome exclusivo para a aplicação Web. O nome da aplicação Web deve ser exclusivo, porque faz parte da entrada DNS.

    sitename="<your-site-name>"
    
  2. Execute o az deployment group create para implantar o aplicativo Web usando um modelo do Azure Resource Manager.

    az deployment group create \
      --resource-group $resource_group \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

A implantação pode levar alguns minutos para ser concluída. Após a implementação ter sido concluída com êxito, verifique a aplicação Web para verificar se está em execução. Em um navegador da Web, navegue para: https://<your-site-name>.azurewebsites.net. Deverá ver o site sem mensagens atualmente apresentadas.

Entregar eventos ao webhook do Visualizador de Grade de Eventos do Azure

Crie uma assinatura de evento de entrega por push para o namespace usando o webhook para o Visualizador de Grade de Eventos do Azure.

  1. Defina uma variável para manter o nome da assinatura do evento.

    event_subscription="<your_event_subscription_name>"
    
  2. Substitua EVENTGRIDWEBSITENAME pelo nome do site do Visualizador de Grade de Eventos. Por exemplo: contosoegridviewer.

    az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
    

Enviar eventos para o seu tópico

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

Listar chaves de acesso de namespace

  1. Obtenha as chaves de acesso associadas ao namespace que você criou. Você usa um deles para autenticar ao publicar eventos. Para listar suas chaves, você precisa primeiro do ID de recurso de namespace completo. Obtenha-o executando o seguinte comando:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Obtenha a primeira chave do namespace:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Publicar um evento

  1. Recupere o nome do host do namespace. Você o usa para compor o ponto de extremidade HTTP do namespace para o qual os eventos são enviados. As operações a seguir foram disponibilizadas pela primeira vez com a versão 2023-06-01-previewda API.

    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 data elemento é a carga útil do seu evento. Qualquer JSON bem formado pode ir para este campo. Para obter mais informações sobre propriedades (também conhecidas como atributos de contexto) que podem ir em um evento, consulte as especificações do CloudEvents .

  3. Use CURL para enviar o evento para o tópico. CURL é um utilitário que envia os pedidos HTTP.

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

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

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

Captura de tela que mostra o Visualizador de Grade de Eventos do Azure com um exemplo de evento recebido.

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