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.

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

  7. Atualize para verificar se o status de 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. 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.

    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 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.

      Create Topic page

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

      Review settings and create

  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.

    Screenshot showing the Event Grid topic home page.

    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.

    Button to deploy the Resource Manager template to Azure.

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

    1. Em Grupo de recursos, selecione o grupo de recursos que você criou ao criar a conta de armazenamento. Será mais fácil para você limpar depois de terminar 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 ser usado para hospedar o aplicativo Web.

    4. Selecione Rever + criar.

      Screenshot showing the Custom deployment page.

  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.

    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 vê 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 do seu aplicativo Web, selecione a URL para navegar até o site. O 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 vê o site, mas que ainda não foram publicados eventos no mesmo.

    Screenshot that shows the Event Grid Viewer sample app.

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.

    Add event subscription button

  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.

      Provide event subscription values

    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.

      Provide endpoint URL

    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.

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

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.

    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 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.

    Select Cloud Shell icon

  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.

Event Grid Viewer

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.

    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ó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.