Share via


Início Rápido: Rotear eventos personalizados para uma Função do Azure com a Grade de Eventos

A Grade de Eventos do Azure é um serviço de eventos para a nuvem. O Azure Functions é um dos manipuladores de eventos com suporte. Neste artigo, você pode usar o portal do Azure para criar um tópico personalizado, assinar o tópico personalizado e disparar o evento para exibir o resultado. Você envia os eventos para uma Função do Azure.

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um aplicativo de funções do Azure

  1. Entre no portal do Azure.

  2. Selecione Todos os serviços no menu de navegação à esquerda.

  3. Selecione Computação na lista de Categorias.

  4. Passe o mouse (não selecione) sobre o Aplicativo de Funções e selecione +.

    Captura de tela mostrando a seleção de Criar link para um Aplicativo de Funções.

  5. Na página Noções básicas de Criar aplicativo de funções, siga estas etapas:

    1. Selecione a Assinatura do Azure na qual você quer criar o aplicativo de funções.

    2. Crie um novo grupo de recursos ou selecione um grupo de recursos existente.

    3. Especifique um nome para o aplicativo de funções.

    4. Selecione .NET para a pilha de runtime.

    5. Para a Versão, selecione 6 (LTS), o modelo em processo.

    6. Selecione a região mais próxima de você.

    7. Selecione Avançar: Armazenamento na parte inferior da página.

      Captura de tela mostrando a guia Básico da página Criar aplicativo de funções.

  6. Na página Armazenamento, crie uma nova conta de armazenamento ou selecione uma conta de armazenamento existente a ser associada ao aplicativo de funções. A seguir, selecione Revisar + criar na parte inferior da página.

    Captura de tela mostrando a guia Armazenamento da página Criar Aplicativo de Funções.

  7. Na página Examinar + criar, examine as configurações e selecione Criar na parte inferior da página para criar o aplicativo de funções.

  8. Depois que a implantação for bem-sucedida, selecione Ir para o recurso para navegar até a página inicial do aplicativo de funções.

Criar uma função

Antes de assinar o tópico personalizado, crie uma função para a lidar com os eventos.

  1. Na página Aplicativo de Funções, na seção Criar no portal do Azure, selecione o link Criar função no painel do lado direito.

    Captura de tela mostrando a seleção do link Criar função.

  2. Na página Criar Função, siga estas etapas:

    1. Na seção Selecionar um modelo, na caixa de filtro ou pesquisa, digite gatilho da Grade de Eventos do Azure.

    2. Selecione o modelo Gatilho da Grade de Eventos do Azure na lista de modelos.

    3. Selecione Avançar na parte inferior da página.

      Captura de tela mostrando o gatilho da Grade de Eventos do Azure selecionado.

    4. Na página Detalhes do modelo, insira um nome para a função. Neste exemplo, ele é HandleEventsFunc.

    5. Selecione Criar.

      Captura de tela mostrando a página

  3. Na página Função de HandleEventsFunc, selecione Código + Teste no menu de navegação do lado esquerdo, substitua o código pelo código a seguir e, em seguida, selecione Salvar na barra de comandos.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

    Imagem mostrando o menu de seleção Código + Teste para uma função do Azure.

  4. Selecione Monitor no menu do lado esquerdo e alterne para a guia Logs. Mantenha essa janela ou guia do navegador aberta para que você possa ver as informações de evento recebidas.

    Captura de tela mostrando o modo de exibição de Monitor da função 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. Em uma nova guia da janela do navegador da Web, entre no portal do Azure.

  2. Na barra de pesquisa no tópico, pesquise Tópicos da Grade de Eventos e selecione Tópicos da Grade de Eventos.

    Imagem mostrando a seleção de Tópicos da Grade de Eventos.

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

    Imagem mostrando o botão Criar para criar um tópico da Grade de Eventos.

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

    1. Selecione sua assinatura do Azure.

    2. Selecione o mesmo grupo de recursos das etapas anteriores.

    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 Examinar + criar.

      Captura de tela mostrando a página Criar Tópico.

    6. Na página Examinar + criar, examine as configurações e selecione Criar.

  5. Após o tópico personalizado ter sido criado, selecione o link Acessar o recurso para ver a pagina do Tópico da Grade de Eventos seguinte para o tópico criado.

    Imagem mostrando a home page do seu tópico personalizado 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.

    Imagem mostrando a seleção de Adicionar Assinatura de Evento na barra de ferramentas.

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

    1. Insira um nome para a assinatura de evento.

    2. Selecione Função do Azure para o tipo de ponto de extremidade.

    3. Selecione Configurar um ponto de extremidade.

      Imagem mostrando valores da assinatura de evento.

    4. Para o ponto de extremidade da função, selecione a Assinatura do Azure e o Grupo de Recursos no qual o aplicativo de funções está e, em seguida, selecione o aplicativo de funções e a função que você criou anteriormente. Selecione Confirmar seleção.

      Imagem mostrando a página Selecionar Função do Azure mostrando a seleção da função criada anteriormente.

    5. Esta etapa é opcional, mas recomendada para cenários de produção. Na página Criar Assinatura de Evento, alterne para a guia Recursos Avançados e defina valores para Máximo de eventos por lote e Tamanho preferencial do lote em quilobytes.

      O envio em lote pode fornecer uma alta taxa de transferência. Para Máximo de eventos por lote, defina o número máximo de eventos que uma assinatura incluirá em um lote. O tamanho de lote preferencial define o limite superior preferencial do tamanho do lote em quilobytes, mas poderá ser excedido se um evento for maior do que esse limite.

      Imagem mostrando as configurações de lote de uma assinatura de evento.

    6. Na página Criar Assinatura de Evento, selecione Criar.

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. Selecione Bash no canto superior esquerdo da janela do Cloud Shell.

    Imagem mostrando a janela Cloud Shell – Bash

  2. Defina as variáveis topicname e resourcegroupname que serão usadas nos comandos.

    Substitua TOPICNAME pelo nome do seu tópico da Grade de Eventos.

    topicname="TOPICNAME"
    

    Substitua RESOURCEGROUPNAME pelo nome do grupo de recursos do Azure que contém o tópico da Grade de Eventos.

    resourcegroupname="RESOURCEGROUPNAME"
    
  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.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --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.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --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:

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

Azure PowerShell

O segundo exemplo usa o PowerShell para realizar etapas semelhantes.

  1. No portal do Azure, selecione Cloud Shell (como alternativa, acesse https://shell.azure.com/). 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.

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

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. 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
    
  4. 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)+"]"
    
  5. Use o cmdlet Invoke-WebRequest para enviar o evento.

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

Verificar se a função recebeu o evento

Você disparou o evento, e a Grade de Eventos enviou a mensagem para o ponto de extremidade configurado durante a assinatura.

  1. Na página Monitorar da sua função do Azure, você verá uma invocação.

    Captura de tela mostrando a guia Invocações da página Monitorar.

  2. Selecione a invocação para ver os detalhes.

    Captura de tela mostrando os detalhes da Invocação.

  3. Você também pode usar a guia Logs no painel do lado direito para ver as mensagens registradas em log quando postar eventos no ponto de extremidade do tópico.

    Imagem mostrando a exibição Monitorar da função do Azure com um log.

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.

  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.

    Grupos de recursos

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