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

    Screenshot showing the select of Create link for a Function App.

  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. Selecione a região mais próxima de você.

    6. Na parte inferior da página, selecione Próximo: Hospedagem .

      Screenshot showing the Basics tab of the Create Function App page.

  6. Na página Hospedagem, crie uma nova conta de armazenamento ou selecione uma conta de armazenamento existente para ser associada ao aplicativo de funções, e selecione Examinar + criar na parte inferior da página.

    Screenshot showing the Hosting tab of the Create Function App page.

  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, selecione Funções no menu à esquerda.

  2. Selecione +Criar na barra de ferramentas para criar uma função.

    Screenshot showing the selection of Create function link.

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

    1. Esta etapa é opcional. Em Ambiente de desenvolvimento, selecione o ambiente de desenvolvimento que você deseja usar para trabalhar com o código de função.

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

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

    4. Na seção de Detalhes do modelo no painel inferior, insira um nome da função. Neste exemplo, ele é HandleEventsFunc.

    5. Selecione Criar.

      Screenshot showing select Event Grid trigger.

  4. Na página Função do HandleEventsFunc, selecione Código + Teste no menu de navegação esquerdo.

    Image showing the selection Code + Test menu for an Azure function.

  5. Substitua o código pelo código seguinte.

    #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());
    }        
    

    Screenshot showing the Code + Test view of an Azure function with the updated code.

  6. Selecione Monitorar no menu à esquerda e, em seguida, selecione Logs.

    Screenshot showing the Monitor view the Azure function.

  7. Mantenha essa janela ou guia do navegador aberta para que você possa ver as informações de evento recebidas.

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.

    Image showing the selection of Event Grid topics.

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

    Screenshot showing the Create button to create an Event Grid topic.

  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.

      Image showing the Create Topic page.

    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.

    Image showing the home page for your Event Grid custom topic.

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.

    Image showing the selection of Add Event Subscription on the toolbar.

  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. Escolha Selecionar um ponto de extremidade.

      Image showing event subscription values.

    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.

      Image showing the Select Azure Function page showing the selection of function you created earlier.

    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.

      Image showing batching settings for an event subscription.

    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.

    Image showing Cloud Shell - Bash window

  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. Navegue até a função disparada pela Grade de Eventos e abra os logs. Você deverá ver uma cópia do conteúdo de dados do evento nos logs. Se você não tiver certeza, abra a janela de logs primeiro ou clique em reconectar e tente enviar um evento de teste novamente.

Image showing the Monitor view of the Azure function with a 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.

    Resource groups

    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.