Encaminhar eventos personalizados para o ponto de extremidade da Web com o portal do Azure e a Grade de Eventos do Azure

A Grade de Eventos é um serviço totalmente gerenciado que permite gerenciar facilmente eventos em muitos serviços e aplicativos diferentes do Azure. Ele simplifica a criação de aplicativos orientados a eventos e sem servidor. Para obter uma visão geral do serviço, consulte Visão geral da grade de eventos.

Neste artigo, você usa o portal do Azure para executar as seguintes tarefas:

  1. Crie um tópico personalizado.
  2. Inscreva-se no tópico personalizado.
  3. Acione o evento.
  4. Veja 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.

Pré-requisitos

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

Registrar o provedor de recursos da Grade de Eventos

A menos que você já tenha usado a Grade de Eventos antes, precisará registrar o provedor de recursos da Grade de Eventos. Se já utilizou a Grelha de Eventos antes, avance para a secção seguinte.

No portal do Azure, execute as seguintes etapas:

  1. No menu à esquerda, selecione Assinaturas.

  2. Selecione a subscrição que pretende utilizar para a Grelha de Eventos na lista de subscrições.

  3. Na página Assinatura, selecione Provedores de recursos em Configurações no menu à esquerda.

  4. Procure Microsoft.EventGrid e confirme se o Status não está registrado.

  5. Selecione Microsoft.EventGrid na lista de provedores.

  6. Selecione Registrar na barra de comandos.

    Imagem mostrando o registro do provedor Microsoft.EventGrid com a assinatura do Azure.

  7. Atualize para verificar se o status de Microsoft.EventGrid foi alterado para Registrado.

    Imagem mostrando o registro bem-sucedido do provedor Microsoft.EventGrid com a assinatura do Azure.

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.

  1. Inicie sessão no portal do Azure.

  2. Na barra de pesquisa do tópico, digite Tópicos da Grade de Eventos e selecione Tópicos da Grade de Eventos na lista suspensa.

    Captura de ecrã a mostrar a barra de pesquisa da porta do Azure para procurar tópicos da Grelha de Eventos.

  3. Na página Tópicos da Grade de Eventos , selecione + Criar na barra de ferramentas.

    Captura de ecrã a mostrar o botão Criar Tópico na página de tópicos da Grelha de Eventos.

  4. Na página Criar tópico, siga estas etapas:

    1. Selecione a sua subscrição do Azure.

    2. Selecione um grupo de recursos existente ou selecione Criar novo e insira um nome para o grupo de recursos.

    3. Forneça um nome exclusivo para o tópico personalizado. O nome do tópico deve ser exclusivo, porque este é representado por uma entrada DNS. Não utilize o nome apresentado na imagem. Em vez disso, crie seu próprio nome - ele deve ter entre 3-50 caracteres e conter apenas os valores a-z, A-Z, 0-9 e "-".

    4. Selecione um local para o tópico Grade de Eventos.

    5. Selecione Rever + criar na parte inferior da página.

      Página Criar tópico

    6. Na guia Revisão + criação da página Criar tópico, selecione Criar.

      Revise as configurações e crie

  5. Depois que a implantação for bem-sucedida, selecione Ir para o recurso para navegar até a página Tópico da Grade de Eventos do tópico. Mantenha esta página aberta. Você usá-lo mais tarde no início rápido.

    Captura de ecrã a mostrar a página inicial do tópico Grelha de Eventos.

    Nota

    Para manter o início rápido simples, você usará apenas a página Noções básicas para criar um tópico. Para obter etapas detalhadas sobre como definir configurações de rede, segurança e residência de dados em outras páginas do assistente, consulte Criar um tópico personalizado.

Criar um ponto final de mensagem

Antes de criar uma assinatura para o tópico personalizado, crie um 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. Na página do artigo, selecione Implantar no Azure para implantar a solução em sua assinatura. No portal do Azure, indique os valores para os parâmetros.

    Botão para implantar o modelo do Gerenciador de Recursos no Azure.

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

    1. Em Grupo de recursos, selecione um grupo de recursos existente ou crie um 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 ser usado para hospedar o aplicativo Web.

    4. Selecione Rever + criar.

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

  3. Na página Rever + criar, selecione Criar.

  4. A implementação pode demorar alguns minutos. Selecione Alertas (ícone de sino) no portal e, em seguida, selecione Ir para o grupo de recursos.

    Captura de tela mostrando a mensagem de implantação bem-sucedida com um link para navegar até o grupo de recursos.

  5. Na página Grupo de recursos, na lista de recursos, selecione o aplicativo Web (contosoegriviewer no exemplo a seguir) que você criou.

    Captura de tela que mostra a página Grupo de Recursos com os recursos implantados.

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

    Captura de tela que mostra a página do Serviço de Aplicativo com o link para o site realçado.

  7. Confirme que vê o site, mas que ainda não foram publicados eventos no mesmo.

    Captura de tela que mostra o aplicativo de exemplo Visualizador de Grade de Eventos.

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 enviá-los.

  1. Agora, na página Tópico da Grade de Eventos do seu tópico personalizado, selecione + Assinatura de Evento na barra de ferramentas.

    Botão Adicionar subscrição de evento

  2. Na página Criar Subscrição de Eventos , siga estes passos:

    1. Insira um nome para a assinatura do evento.

    2. Selecione Web Hook para o tipo Endpoint.

    3. Escolha Selecionar um ponto de extremidade.

      Indicar os valores da subscrição de evento

    4. Para o ponto final do webhook, indique o URL da sua aplicação Web e adicione api/updates ao URL da home page. Selecione Confirmar a Seleção.

      Indicar o URL de ponto final

    5. De volta à página Criar Assinatura de Evento , selecione Criar.

  3. 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ã da aplicação Visualizador de Grelha de Eventos com o evento Subscrição Validada.

Enviar um evento para o seu tópico

Agora, vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Utilize a CLI do Azure ou o PowerShell para enviar um evento de teste para o seu tópico personalizado. Normalmente, uma aplicação ou serviço do Azure enviaria os dados do evento.

O primeiro exemplo utiliza a CLI do Azure. Obtém o URL e a chave para o tópico personalizado e os dados do evento de exemplo. Utilize o nome do tópico personalizado de <topic name>. Este cria dados do evento de exemplo. 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.

CLI do Azure

  1. No portal do Azure, selecione Cloud Shell. O Cloud Shell é aberto no painel inferior do navegador da Web.

    Selecione o ícone do Cloud Shell

  2. Selecione Bash no canto superior esquerdo da janela do Cloud Shell.

    Captura de tela que mostra o Cloud Shell com Bash selecionado no canto superior esquerdo.

  3. Execute o seguinte comando para obter o ponto de extremidade para o tópico: Depois de copiar e colar o comando, atualize o nome do tópico e o nome do grupo de recursos antes de executar o comando. Você publica eventos de exemplo para este ponto de extremidade de tópico.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Execute o seguinte comando para obter a chave para o tópico personalizado: Depois de copiar e colar o comando, atualize o nome do tópico e o nome do grupo de recursos antes de executar o comando. É a chave primária do tópico Grade de Eventos. Para obter essa chave do portal do Azure, alterne para a guia Teclas de acesso da página Tópico da Grade de Eventos . Para poder postar um evento em um tópico personalizado, você precisa da chave de acesso.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Copie a instrução a seguir com a definição de evento e pressione ENTER.

    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"} ]'
    
  6. Execute o seguinte comando Curl para postar o evento: No comando, aeg-sas-key o cabeçalho é definido como a chave de acesso que você obteve anteriormente.

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

Azure PowerShell

O segundo exemplo usa o PowerShell para executar etapas semelhantes.

  1. No portal do Azure, selecione Cloud Shell (alternativamente, vá para https://shell.azure.com/). O Cloud Shell é aberto no painel inferior do navegador da Web.

    Selecione o ícone do Cloud Shell

  2. No Cloud Shell, selecione PowerShell no canto superior esquerdo da janela do Cloud Shell. Consulte a imagem de exemplo da janela do Cloud Shell na seção CLI do Azure.

  3. Defina as seguintes variáveis. Depois de copiar e colar cada comando, atualize o nome do tópico e o nome do grupo de recursos antes de executar o comando:

    Grupo de recursos:

    $resourceGroupName = "<resource group name>"
    

    Nome do tópico da Grade de Eventos:

    $topicName = "<topic name>"
    
  4. Execute os seguintes comandos para obter o ponto de extremidade e as chaves para o tópico:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. Prepare o evento. Copie e execute as instruções na janela do Cloud Shell.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  6. Use o cmdlet Invoke-WebRequest para enviar o evento.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Verificar no Visualizador de Grade de Eventos

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.

Visualizador de grade de eventos

Clean up resources (Limpar recursos)

Se quiser continuar a trabalhar com este evento, não limpe os recursos criados neste artigo. Caso contrário, elimine os recursos que criou neste artigo.

  1. Selecione Grupos de Recursos no menu à esquerda. Se não o vir no menu esquerdo, selecione Todos os Serviços no menu esquerdo e selecione Grupos de Recursos.

    Captura de ecrã que mostra a página Grupos de Recursos.

  2. Selecione o grupo de recursos para iniciar a página Grupo de Recursos.

  3. Selecione Excluir grupo de recursos na barra de ferramentas.

  4. Confirme a exclusão inserindo o nome do grupo de recursos e selecione Excluir.

    O outro grupo de recursos que você vê na imagem foi criado e usado pela janela do Cloud Shell. Exclua-o se você não planeja usar a janela do Cloud Shell mais tarde.

Próximos passos

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

Consulte os exemplos a seguir para saber mais sobre como publicar e consumir eventos da Grade de Eventos usando diferentes linguagens de programação.