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.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

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

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

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.

    Screenshot showing the Azure port search bar to search for Event Grid topics.

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

    Screenshot showing the Create Topic button on Event Grid topics page.

  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.

      Create Topic page

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

      Review settings and create

  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.

    Screenshot showing the Event Grid topic home page.

    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.

    Button to deploy the Resource Manager template to Azure.

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

    1. Para Grupo de recursos, selecione o mesmo grupo de recursos que você usou ao criar a conta de armazenamento. Será mais fácil limpar após concluir o tutorial excluindo o 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 usar para hospedar o aplicativo Web.

    4. Selecione Examinar + criar.

      Screenshot showing the Custom deployment page.

  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.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. Na página Grupo de recursos, na lista de recursos, selecione o aplicativo Web que você criou. Você também verá o plano do Serviço de Aplicativo e a conta de armazenamento nesta lista.

    Screenshot that shows the Resource Group page with the deployed resources.

  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.

    Screenshot that shows the App Service page with the link to the site highlighted.

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

    Screenshot that shows the Event Grid Viewer sample app.

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.

    Add event subscription button

  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.

      Provide event subscription values

    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.

      Provide endpoint URL

    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.

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

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.

    Select Cloud Shell icon

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

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  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.

    Select Cloud Shell icon

  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.

Event Grid Viewer

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.

    Screenshot that shows the Resource Groups page.

  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.