Guia de início rápido: rotear eventos personalizados para uma função do Azure com a grade de eventos

O Azure Event Grid é um serviço de eventos para a cloud. O Azure Functions é um dos manipuladores de eventos com suporte. Neste artigo, o portal do Azure serve para criar um tópico personalizado, subscrever o tópico personalizado e acionar o evento para ver o resultado. Você envia os eventos para uma Função do Azure.

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

Criar aplicativo de função do Azure

  1. Inicie sessão no portal do Azure.

  2. No menu de navegação à esquerda, selecione Todos os serviços.

  3. Selecione Computar na lista de Categorias.

  4. Passe o mouse (não selecione) o mouse sobre Function App e selecione +.

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

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

    1. Selecione sua assinatura do Azure na qual você deseja criar o aplicativo de função.

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

    3. Especifique um nome para o aplicativo de função.

    4. Selecione .NET para Pilha de tempo de execução.

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

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

    7. Selecione Next: Storage na parte inferior da página.

      Captura de ecrã a mostrar o separador Noções básicas da página Criar Aplicação de Função.

  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ção e selecione Revisar + criar na parte inferior da página.

    Captura de ecrã a mostrar o separador Armazenamento da página Criar Aplicação de Função.

  7. Na página Rever + criar, reveja as definições e selecione Criar na parte inferior da página para criar a aplicação funcional.

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

Criar uma função

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

  1. Na página Aplicativo de Função, na seção Criar no portal do Azure, selecione Criar link de função no painel 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 Selecione um modelo, na caixa de filtro ou pesquisa, digite gatilho de Grade de Eventos do Azure.

    2. Selecione o modelo de Gatilho de 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 selecionado Grade de Eventos.

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

    5. Selecione Criar.

      Captura de ecrã a mostrar a página Detalhes do modelo.

  3. Na página Função do HandleEventsFunc, selecione Código + Teste no menu de navegação esquerdo, substitua o código pelo código a seguir e 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 a seleção Código + menu Teste para uma função do Azure.

  4. Selecione Monitor no menu esquerdo e alterne para a guia Logs . Mantenha esta janela ou separador do browser aberto para que possa ver as informações de evento recebidas.

    Captura de ecrã a mostrar a vista 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 do tópico, procure por 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.

    Captura de tela 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 a sua subscrição do Azure.

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

    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.

      Captura de ecrã a mostrar a página Criar tópico.

    6. Na página Rever + criar, reveja as definições e selecione Criar.

  5. Depois que o tópico personalizado tiver sido criado, selecione Ir para o link do recurso para ver a seguinte página de tópico da Grade de Eventos para o tópico que você criou.

    Imagem mostrando a página inicial do tópico personalizado da 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.

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

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

    1. Insira um nome para a assinatura do evento.

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

    3. Escolha Configurar um ponto de extremidade.

      Imagem que mostra os valores de subscrição do evento.

    4. Para o ponto de extremidade da função, selecione a Assinatura do Azure e o Grupo de Recursos em que seu Aplicativo de Função está e, em seguida, selecione o Aplicativo de Função e a função que você criou anteriormente. Selecione Confirmar a 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 Eventos máximos por lote e Tamanho de lote preferencial em kilobytes.

      O processamento em lote pode oferecer alta taxa de transferência. Para Eventos máximos 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 kilobytes, mas pode ser excedido se um único evento for maior do que esse limite.

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

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

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

    Imagem mostrando Cloud Shell - janela Bash

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

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

    topicname="TOPICNAME"
    

    Substitua RESOURCEGROUPNAME pelo nome do grupo de recursos do Azure que contém o tópico 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 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:

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

Azure PowerShell

O segundo exemplo utiliza o PowerShell para efetuar passos semelhantes.

  1. No portal do Azure, selecione Cloud Shell (alternativamente, vá para https://shell.azure.com/). 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.

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

    $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}
    

Verifique se a função recebeu o evento

Acionou o evento e o Event Grid enviou a mensagem para o ponto final que configurou ao subscrever.

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

    Captura de ecrã a mostrar o separador Invocações da página Monitor.

  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 direito para ver as mensagens registradas quando postar eventos no ponto de extremidade do tópico.

    Imagem mostrando o modo de exibição Monitor da função do Azure com um log.

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.

  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óximos passos

Agora que sabe como criar tópicos 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.