Encaminhar eventos personalizados ao ponto de extremidade 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 eventos facilmente em vários serviços e aplicativos diferentes do Azure. Ela simplifica a criação de aplicativos orientados a eventos e sem servidor. Para uma visão geral do serviço, consulte Visão geral da Grade de Eventos.

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

  1. Criar um tópico personalizado.
  2. Assinar o tópico personalizado.
  3. Disparar o evento.
  4. Exibir o resultado. Normalmente, você envia eventos para um ponto de extremidade que processa os dados de evento e realiza ações. No entanto, para simplificar este artigo, você enviará os eventos para um aplicativo Web que coleta e exibe as mensagens.

Pré-requisitos

Caso você não tenha uma assinatura 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ê tenha usado a Grade de Eventos antes, precisará registrar o provedor de recursos da Grade de Eventos. Se você tiver usado a Grade de Eventos antes, pule para a próxima seção.

No portal do Azure, siga as etapas abaixo:

  1. No menu à esquerda, selecione Assinaturas.

  2. Selecione a assinatura que você deseja usar para a Grade de Eventos na lista de assinaturas.

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

  4. Pesquise por Microsoft.EventGrid e confirme que o Status é Não registrado.

  5. Selecione Microsoft.EventGrid na lista de provedores.

  6. Selecione Registrar na barra de comandos.

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

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

    Imagem que mostra 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. Entre no Portal do Azure.

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

    Captura de tela mostrando a barra de pesquisa do portal do Azure para pesquisar tópicos da Grade de Eventos.

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

    Captura de tela mostrando o botão Criar tópico na página de tópicos da Grade de eventos.

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

    1. Selecione sua assinaturado Azure.

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

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

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

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

      Página Criar Tópico

    6. Na guia Examinar + criar da página Criar tópico, selecione Criar.

      Examinar as configurações e criar

  5. Depois que a implantação for realizada com sucesso, selecione Ir para o recurso para navegar até a página do Tópico da Grade de Eventos do tópico. Mantenha essa página aberta. Você a usará posteriormente no início rápido.

    Captura de tela mostrando a página inicial do tópico do Grade de Eventos.

    Observação

    Para manter o início rápido simples, você usará apenas a página Básico 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 de extremidade de mensagem

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

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

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

    1. Em Grupo de recursos, selecione um grupo de recursos existente ou crie um.

    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 pode levar alguns minutos para ser concluída. 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 mostrando a página Grupo de Recursos com os recursos implementados.

  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 mostrando a página do Serviço de Aplicativo do Azure com o link para o site realçado.

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

    Captura de tela mostrando o aplicativo de amostra do Visualizador da Grade de Eventos.

Inscrever-se em um tópico personalizado

Você assina um tópico da Grade de Eventos para indicar à Grade de Eventos quais eventos você deseja acompanhar e para onde enviá-los.

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

    Botão Adicionar assinatura de evento

  2. Na página Criar Assinatura de Eventos, siga estas etapas:

    1. Insira um nome para a assinatura de evento.

    2. Selecione Web Hook para o Tipo de ponto de extremidade.

    3. Escolha Selecionar um ponto de extremidade.

      Fornecer valores de assinatura de evento

    4. Para o ponto de extremidade do web hook, forneça a URL do seu aplicativo Web e adicione api/updates à URL da página inicial. Selecione Confirmar seleção.

      Fornecer URL de ponto de extremidade

    5. Volte para a página Criar Assinatura de Evento e selecione Criar.

  3. Exiba novamente o seu aplicativo Web e observe que um evento de validação de assinatura foi enviado a ele. Selecione o ícone de olho para expandir os dados de evento. A Grade de Eventos envia o evento de validação de modo que o ponto de extremidade possa verificar se ele deseja receber os dados de evento. O aplicativo Web inclui o código para validar a assinatura.

    Captura de tela do aplicativo Visualizador da Grade de Eventos com o evento Validado por Assinatura.

Enviar um evento para o tópico

Agora, vamos disparar um evento para ver como a Grade de Eventos distribui a mensagem para o ponto de extremidade. Use a CLI do Azure ou o PowerShell para enviar um evento de teste para seu tópico personalizado. Normalmente, um aplicativo ou serviço do Azure enviaria os dados de evento.

O primeiro exemplo usa a CLI do Azure. Ele obtém a URL e a chave do tópico personalizado, além dos dados de evento de exemplo. Use o nome do tópico personalizado para <topic name>. Ele cria dados de evento de exemplo. O elemento data do JSON é a carga do evento. Qualquer JSON bem formado pode ficar nesse campo. Você também pode usar o campo de assunto para roteamento e filtragem avançados. CURL é um utilitário que envia solicitações HTTP.

CLI do Azure

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

    Ícone Selecionar Cloud Shell

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

    Captura de tela mostrando o Cloud Shell com o 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 exemplos de eventos neste ponto de extremidade do 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. Ela é a chave primária do tópico da Grade de Eventos. Para obter essa chave do portal do Azure, alterne para a guia Chaves de acesso da página Tópico da Grade de Eventos. Para postar um evento em um tópico personalizado, você precisará da chave de acesso.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Copie a seguinte instrução com a definição do 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 publicar o evento: No comando, o cabeçalho aeg-sas-key é 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 (como alternativa, acesse https://shell.azure.com/). O Cloud Shell é aberto no painel inferior do navegador da Web.

    Ícone Selecionar Cloud Shell

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

  3. Defina as variáveis a seguir. 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}
    

Verifique se no Visualizador de Grade de Eventos

Você disparou o evento, e a Grade de Eventos enviou a mensagem para o ponto de extremidade configurado durante a assinatura. Exiba seu aplicativo Web para ver o evento que você acabou de enviar.

Visualizador da Grade de Eventos

Limpar os recursos

Caso planeje continuar a trabalhar com esse evento, não limpe os recursos criados neste artigo. Caso contrário, exclua os recursos criados neste artigo.

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

    Captura de tela mostrando a página Grupo 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óximas etapas

Agora que você sabe como criar tópicos e assinaturas de evento personalizados, saiba mais sobre como a Grade de Eventos pode ajudá-lo:

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