Início Rápido: Encaminhar eventos personalizados para o ponto final Web com a CLI do Azure e o Event Grid
O Azure Event Grid é um serviço de eventos para a cloud. Neste artigo, a CLI do Azure serve para criar um tópico personalizado, subscrever o tópico personalizado e acionar o evento para ver o resultado.
Normalmente, envia eventos para um ponto final que processa os dados de eventos e efetua ações. No entanto, para simplificar este artigo, vai enviar eventos para uma aplicação Web que recolhe e apresenta as mensagens.
Quando tiver terminado, verá que os dados do evento foram enviados para a aplicação Web.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Utilize o ambiente bash no Azure Cloud Shell. Para obter mais informações, veja Início Rápido do 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, veja Como executar a CLI do Azure num contentor do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de início de sessão, veja Iniciar sessão com a CLI do Azure.
Quando lhe for pedido, 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 a utilizar o Azure Cloud Shell, a versão mais recente já está instalada.
Criar um grupo de recursos
Os tópicos do Event Grid são recursos do Azure e têm de ser colocados num grupo de recursos do Azure. Um grupo de recursos é uma coleção lógica na qual os recursos do Azure são implementados e geridos.
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. Se clicar em Experimentar, verá a janela do Azure Cloud Shell no painel direito. Em seguida, clique em Copiar para copiar o comando e colá-lo na janela Cloud Shell do Azure e prima ENTER para executar o comando. Se quiser, altere o nome do grupo de recursos e a localização.
az group create --name gridResourceGroup --location westus2
Ativar o fornecedor de recursos do Event Grid
Se ainda não utilizou o Event Grid na sua subscrição do Azure, poderá ter de registar o fornecedor de recursos do Event Grid. Execute o seguinte comando para registar o fornecedor:
az provider register --namespace Microsoft.EventGrid
A conclusão do registo poderá demorar algum tempo. Para ver o estado, execute:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando registrationState
está Registered
, está pronto para continuar.
Criar um tópico personalizado
Um tópico do Event Grid fornece um ponto final definido pelo utilizador no qual publica os seus eventos. O exemplo seguinte cria o tópico personalizado no seu grupo de recursos com 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. Além disso, tem de ter entre 3 e 50 carateres e conter apenas os valores a-z, A-Z, 0-9 e "-"
Copie o seguinte comando, especifique um nome para o tópico e prima ENTER para executar o comando.
topicname=<your-topic-name>
Utilize 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, vamos criar 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 início rápido, vai implementar uma aplicação Web pré-criada para apresentar as mensagens de 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.
Copie o seguinte comando, especifique um nome para a aplicação Web (exemplo de Visualizador do Event Grid) e prima 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>
Execute o
az deployment group create
para implementar a aplicação Web com um modelo de Resource Manager do Azure.az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
A implementação pode demorar alguns minutos. Após a implementação ter sido concluída com êxito, verifique a aplicação Web para verificar se está em execução. Num browser, navegue para: https://<your-site-name>.azurewebsites.net
Deverá ver o site sem mensagens atualmente apresentadas.
Subscrever um tópico personalizado
Subscreva um tópico do Event Grid para indicar ao Event Grid quais os eventos que pretende controlar e para onde enviar esses eventos. O exemplo seguinte subscreve o tópico personalizado que criou e transmite o URL da aplicação Web como o ponto final para a notificação de eventos.
O ponto final para a aplicação Web tem de incluir o sufixo /api/updates/
.
endpoint=https://$sitename.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--source-resource-id "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/$topicname" \
--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.
Enviar um evento para o tópico personalizado
Vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Em primeiro lugar, vamos obter o URL e a chave do 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 artigo, vai utilizar dados do evento de exemplo para enviar para o tópico personalizado. Normalmente, uma aplicação ou serviço do Azure enviaria 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 formado pode ir para este campo. Também pode utilizar o campo do assunto para encaminhamento e filtragem avançados.
CURL é um utilitário que envia os pedidos HTTP. Neste artigo, utilize o CURL para enviar o evento para o tópico.
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Acionou o evento e o Event Grid enviou a mensagem para o ponto final que configurou ao subscrever. Verifique a aplicação Web para ver o evento que acabámos 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 os recursos
Se quiser continuar a trabalhar com este evento ou com a aplicação de visualizador de eventos, não limpe os recursos criados neste artigo. Caso contrário, utilize o comando seguinte para eliminar os recursos que criou neste artigo.
az group delete --name gridResourceGroup
Passos seguintes
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:
- Sobre o Event Grid
- Encaminhar eventos de armazenamento de Blobs para um ponto final Web personalizado
- Monitorizar alterações de máquina virtual com o Azure Event Grid e Logic Apps
- Transmitir macrodados em fluxo para um armazém de dados
Veja os exemplos seguintes para saber mais sobre como publicar eventos e consumir eventos do Event Grid com diferentes linguagens de programação.