Início rápido: encaminhar eventos personalizados para um ponto final Web com a CLI do Azure e o Event Grid

Neste quickstart, usa a CLI do Azure para criar um tópico personalizado no Azure Event Grid, subscrever o tópico personalizado e ativar um evento de exemplo para visualizar o resultado.

Normalmente, envia eventos para um ponto final que processa os dados de eventos e efetua ações. No entanto, para simplificar este quickstart, envia eventos de exemplo para uma aplicação web que recolhe e exibe as mensagens. Quando terminar, vê os dados do evento na aplicação web, como mostrado na imagem seguinte:

Captura de ecrã a mostrar o exemplo de Visualizador de Grelha de Eventos com um evento de exemplo.

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

Pré-requisitos

  • Este quickstart requer a versão 2.0.70 ou posterior da CLI do Azure. Se você usa o Azure Cloud Shell, a versão mais recente já está instalada.
  • Se és novo no Azure Event Grid, consulta What's Azure Event Grid para uma visão geral do serviço antes de começares este quickstart.

Criar um grupo de recursos

Os tópicos do Event Grid são recursos do Azure que deve colocar num grupo de recursos do Azure. O grupo de recursos é uma coleção lógica na qual se implementam e gerem recursos do Azure.

Crie um grupo de recursos com o comando az group create. O exemplo seguinte cria um grupo de recursos com o nome gridResourceGroup na localização westus2. Muda o nome do grupo de recursos e a localização, se quiseres.

az group create --name gridResourceGroup --location westus2

Ativar o fornecedor de recursos do Event Grid

  1. Se esta for a primeira vez que você estiver usando 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 tópico personalizado

Um tópico de Grade de Eventos fornece um ponto de extremidade definido pelo usuário no qual você posta seus eventos. O exemplo seguinte cria o tópico personalizado no seu grupo de recursos usando o Bash no Azure Cloud Shell. Substitua <your-topic-name> por um nome exclusivo para o seu tópico. O nome do tópico personalizado deve ser exclusivo porque faz parte da entrada DNS (Sistema de Nomes de Domínio). Além disso, deve ter entre 3 e 50 caracteres e conter apenas os valores a-z, A-Z, 0-9 e "-"

  1. Copie o comando seguinte, especifique um nome para o tópico e selecione Enter para executar o comando.

    topicname=<your-topic-name>
    
  2. Use o az eventgrid topic create comando para criar um tópico personalizado.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Criar um ponto final de mensagem

Antes de subscrever o tópico personalizado, crie o ponto final para a mensagem de evento. Normalmente, o ponto final executa as ações com base nos dados do evento. Para simplificar este quickstart, implemente uma aplicação web pré-construída que mostre 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 seguinte comando, especifique um nome para a aplicação web (exemplo do Event Grid Viewer) e selecione 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 implementar a aplicação web usando um modelo do Azure Resource Manager.

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

A implantação pode levar alguns minutos para ser concluída. Depois que a implantação for bem-sucedida, exiba seu aplicativo Web para verificar se ele está em execução. Num navegador Web, aceda a: https://<your-site-name>.azurewebsites.net

Deverá ver o site sem apresentar mensagens.

Subscrever um tópico personalizado

Você se inscreve em um tópico da Grade de Eventos para informar à Grade de Eventos quais eventos deseja acompanhar e para onde enviar esses eventos. O exemplo seguinte subscreve o tópico personalizado que criou e passa o URL da sua aplicação web como ponto final para notificações de eventos.

O ponto final para a aplicação Web tem de incluir o sufixo /api/updates/.

  1. Copie o comando seguinte, substitua $sitename pelo nome da aplicação web que criou no passo anterior e selecione Enter para executar o comando.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Execute o seguinte comando para obter a ID do recurso do tópico que você criou.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Execute o seguinte comando para criar uma assinatura do tópico personalizado usando o endpoint.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint
    

    Verifique a aplicação Web novamente e repare que um evento de validação de subscrição foi enviado para a mesma. Selecione o ícone do olho para expandir os dados do evento. O Event Grid envia o evento de validação para que o ponto final possa verificar que pretende receber dados de eventos. A aplicação Web inclui código para validar a subscrição.

    Captura de ecrã mostrando a amostra do Event Grid Viewer com um evento de validação de subscrição.

Enviar um evento para o seu tópico personalizado

Vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Primeiro, obtenha o URL e a chave para o tópico personalizado.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Para simplificar este quickstart, use dados de eventos de exemplo para enviar ao tópico personalizado. Normalmente, uma aplicação ou serviço Azure envia os dados do evento. O exemplo seguinte cria dados do evento de exemplo:

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'

O elemento data do JSON é o payload do evento. Qualquer JSON bem formatado pode ser introduzido neste campo. Também pode utilizar o campo do assunto para encaminhamento e filtragem avançados.

o cURL é uma ferramenta que envia pedidos HTTP. Neste guia de início rápido, use o cURL para enviar o evento para o tópico.

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

Você disparou o evento e a Grade de Eventos enviou a mensagem para o ponto de extremidade que você configurou ao se inscrever. Consulte a aplicação web para ver o evento que acabou de enviar.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

Limpar recursos

Se tenciona continuar a trabalhar com este evento ou com a aplicação Visualizador de Eventos, não limpe os recursos que criou neste início rápido. Caso contrário, use o comando seguinte para eliminar os recursos que criou neste início rápido.

az group delete --name gridResourceGroup --yes --no-wait

Agora que sabe como criar tópicos e subscrições de eventos, saiba mais sobre o que o Event Grid pode ajudá-lo a fazer:

Para aprender sobre a publicação de eventos e o consumo de eventos do Event Grid em diferentes linguagens de programação, veja os seguintes exemplos: