Compartilhar via


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

A Grade de Eventos do Azure é um serviço de roteamento de eventos para a nuvem. O Azure Functions é um dos manipuladores de eventos com suporte.

Neste início rápido, 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 uma função com um gatilho da Grade de Eventos usando o Visual Studio Code

Nessa seção, você usa o Visual Studio Code para criar uma função com um gatilho da Grade de Eventos.

Pré-requisitos

Criar uma função

  1. Abra o Visual Studio Code.

  2. Na barra esquerda, selecione Azure.

  3. No painel esquerdo, na seção ESPAÇO DE TRABALHO, selecione o botão Azure Functions na barra de comando e selecione Criar Função.

    Captura de tela que mostra a guia Azure do Visual Studio Code com o comando de menu para criar uma função.

  4. Selecione uma pasta na qual você deseja salvar o código da função.

  5. Para o comando Criar projeto, para Linguagem de programação, selecione C# e pressione a tecla Enter.

    Captura de tela que mostra a seleção de C Sharp como a linguagem de programação para desenvolver uma função do Azure.

  6. Para o runtime do .NET, selecione .NET 8.0 LTS Isolado e, em seguida, pressione a tecla Enter.

  7. Para o Modelo para a função, selecione gatilho da Grade de Eventos do Azure e pressione a tecla Enter.

  8. Para Nome da função, insira um nome para sua função e, em seguida, pressione a tecla Enter.

  9. Para o Namespace, insira um nome para o namespace da função e, em seguida, pressione a tecla Enter.

  10. Abra o projeto na janela atual ou em uma nova janela ou adicione-o a um espaço de trabalho.

  11. Aguarde até a função ser criada. O status da criação da função aparece no canto inferior direito.

    Captura de tela que mostra o status da criação da função.

  12. Visualize o código no arquivo YourFunctionName.cs, especificamente o método Run. Ele imprime as informações usando um terminal.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Implantar a função no Azure

  1. Selecione o botão Azure na barra esquerda se o painel Azure ainda não estiver aberto.

  2. Passe o mouse sobre o seu projeto e selecione o botão Implantar no Azure.

    Captura de tela que mostra o botão para implantar no Azure.

  3. Na lista suspensa da paleta de comandos, selecione + Criar aplicativo de funções e, em seguida, selecione a tecla Enter.

  4. Para Nome, insira um nome globalmente exclusivo para o novo aplicativo de funções e pressione a tecla Enter.

  5. Para a Pilha de runtime, selecione .NET 8 Isolado.

  6. Para obter a Localização dos seus recursos do Azure, selecione uma região próxima de você.

  7. O status da criação do aplicativo de funções aparece na guia AZURE do painel inferior. Após a criação do aplicativo de funções, você verá o estado de implantação da função que você criou localmente no aplicativo de funções.

  8. Depois que a implantação for bem-sucedida, expanda a mensagem Criar Aplicativo de Função bem-sucedido e selecione Clique para visualizar o recurso. Confirme que sua função esteja selecionada na seção RECURSOS no painel esquerdo.

  9. Clique com o botão direito do mouse na função e selecione Abrir no Portal.

    Captura de tela que mostra as seleções para abrir uma função no portal.

  10. Entre no Azure, se necessário, e confirme se a página Aplicativo de Funções aparece para a sua função.

  11. No painel inferior, selecione sua função.

    Captura de tela que mostra a seleção de uma função do Azure na página Aplicativo de Funções.

  12. Alterne para a guia Logs. Mantenha essa guia aberta para que você possa ver as mensagens registradas ao enviar um evento para um tópico da Grade de Eventos posteriormente nesse tutorial.

    Captura de tela que mostra a guia Logs de uma função no portal 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.

    Captura de tela que mostra a seleção de tópicos da Grade de Eventos.

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

    Captura de tela que mostra o botão para criar um tópico da Grade de Eventos.

  4. No painel Criar Tópico, siga estas etapas:

    1. Para Assinatura, selecione sua assinatura do Azure.

    2. Em Grupo de recursos, selecione o mesmo grupo de recursos das etapas anteriores.

    3. Em Nome, forneça um nome exclusivo para o tópico personalizado. O nome do tópico da Grade de Eventos precisa ser exclusivo porque uma entrada do DNS (Sistema de Nomes de Domínio) o representa.

      Não use o nome mostrado na imagem de exemplo. Em vez disso, crie seu próprio nome. Ele precisa ter de 3 a 50 caracteres e conter apenas os valores a-z, A-Z, 0-9 e um hífen (-).

    4. Em Região, selecione um local para o tópico de Grade de Eventos.

    5. Selecione Examinar + criar.

      Captura de tela que mostra o painel para criar um tópico.

    6. Na guia Revisar + criar, revise as configurações e selecione Criar.

  5. Depois que o tópico personalizado for criado, selecione o link Ir para recurso para abrir a página Tópico da Grade de Eventos para esse tópico.

    Captura de tela que mostra a página de um tópico personalizado da Grade de Eventos.

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

    Captura de tela que mostra o botão para adicionar uma assinatura de evento na barra de ferramentas.

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

    1. Em Nome, insira um nome para a assinatura de evento.

    2. Para Esquema de Evento, selecione Esquema de Evento em Nuvem v1.0.

    3. Para o Tipo de ponto de extremidade, selecione Função do Azure.

    4. Selecione Configurar um ponto de extremidade.

      Captura de tela que mostra os valores da assinatura do evento.

    5. No painel Selecionar Função do Azure, siga estas etapas:

      1. Em Assinatura, selecione a assinatura do Azure que tem a função.

      2. Para Grupo de recursos, selecione o grupo de recursos que possui a função.

      3. Para Aplicativo de funções, selecione seu aplicativo de funções.

      4. Para Função, selecione a função no aplicativo de funções.

      5. Selecione Confirmar seleção.

        Captura de tela que mostra o painel para selecionar uma função do Azure criada anteriormente.

    6. Esta etapa é opcional, mas recomendada para cenários de produção. No painel Criar Assinatura de Evento, acesse a guia Recursos Adicionais e defina valores para Máximo de eventos por lote e Tamanho preferencial do lote em quilobytes.

      O envio em lote pode proporcionar 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 em quilobytes define o limite superior preferencial do tamanho do lote, mas poderá ser excedido se um determinado evento for maior do que esse limite.

      Captura de tela que mostra as configurações de envio em lote para uma assinatura de evento.

    7. No painel Criar Assinatura de Evento, selecione Criar.

Enviar um evento para o tópico

Agora, dispare um evento para ver como a Grade de Eventos distribui a mensagem para o ponto de extremidade. Use a CLI do Azure ou o Azure 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 topicname. 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.

A ferramenta cURL envia solicitações HTTP. Neste artigo, use o cURL para enviar o evento ao tópico personalizado.

CLI do Azure

  1. No portal do Azure, selecione Cloud Shell. Se você estiver no modo Azure PowerShell, selecione Mudar para Bash.

    Captura de tela que mostra a janela Bash no Azure Cloud Shell.

  2. Defina as variáveis ​topicname e resourcegroupname que sã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 comando a seguir para obter o ponto de extremidade para o tópico. Depois de copiar e colar o comando, antes de executá-lo, atualize o nome do tópico e o nome do grupo de recursos.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Use o comando a seguir para obter a chave para o tópico personalizado. Depois de copiar e colar o comando, antes de executá-lo, atualize o nome do tópico e o nome do grupo de recursos.

    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 do evento e pressione a tecla 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 de cURL para publicar o evento:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. Confirme se a mensagem da função aparece na guia Logs para sua função no portal do Azure.

    Captura de tela que mostra a guia Logs de uma função do Azure.

PowerShell do Azure

O segundo exemplo usa o Azure PowerShell para realizar etapas semelhantes.

  1. No portal do Azure, selecione Cloud Shell (ou vá para a página do Azure Cloud Shell). No canto superior esquerdo da janela do Cloud Shell, selecione Mudar para o PowerShell.

  2. Defina as variáveis a seguir. Depois de copiar e colar cada comando, antes de executá-lo, atualize o nome do tópico e o nome do grupo de recursos.

    $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 estas instruções na janela do Cloud Shell:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're 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}
    
  6. Confirme se a mensagem da função aparece na guia Logs para sua função no portal do Azure.

    Captura de tela que mostra a guia Logs de uma função.

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. Agora você pode verificar se a função a recebeu.

  1. Na página Monitor da função, localize uma invocação.

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

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

    Captura de tela que mostra os detalhes da invocação.

    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.

    Captura de tela que mostra a exibição Monitor de uma função com um log.

Limpar os recursos

Caso planeje continuar a trabalhar com esse evento, não limpe os recursos que você criou neste artigo. Caso contrário, exclua os recursos criados neste artigo.

  1. Selecione Grupos de recursos no menu esquerdo.

    Captura de tela mostrando a página de grupos de recursos

    Uma alternativa é selecionar Todos os Serviços no menu à esquerda e selecionar Grupos de recursos.

  2. Selecione o grupo de recursos para abrir o painel para obter os detalhes dele.

  3. Na barra de ferramentas, selecione Excluir grupo de recursos.

  4. Confirme a exclusão inserindo o nome do grupo de recursos e selecione Excluir.

A janela do Cloud Shell criou e usou o outro grupo de recursos que aparece na página Grupos de recursos. Exclua este grupo de recursos se você não planeja usar a janela do Cloud Shell mais tarde.

Agora que você sabe como criar tópicos e assinaturas de evento, saiba mais sobre como a Grade de Eventos pode ajudá-lo:

Para saber mais sobre como publicar eventos e consumir eventos da Grade de Eventos usando várias linguagens de programação, confira os seguintes exemplos: