Partilhar via


Guia de 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ê usa o portal do Azure para criar um tópico personalizado, assinar o tópico personalizado e acionar o evento para exibir 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 uma função com um gatilho de grade de eventos usando o Visual Studio Code

Nesta seção, você usa o Visual Studio Code para criar uma função com um gatilho de 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 WORKSPACE , selecione o botão Azure Functions na barra de comandos e selecione Create Function.

    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 onde você deseja salvar o código da função.

  5. Para o comando Criar novo projeto , para Idioma, selecione C# e, em seguida, selecione a tecla Enter.

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

  6. Para o tempo de execução do .NET, selecione .NET 8.0 Isolated LTS e, em seguida, selecione a tecla Enter.

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

  8. Em Nome da função, introduza um nome para a função e, em seguida, selecione a tecla Enter.

  9. Em Namespace, insira um nome para o namespace da função e selecione 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 que a função seja 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. Exiba o código no arquivo YourFunctionName.cs , especificamente o Run método. Ele imprime as informações usando um registrador.

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

Implementar a função no Azure

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

  2. Passe o cursor sobre 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 pendente da paleta de comandos, selecione + Criar nova aplicação de função e, em seguida, selecione a tecla Enter.

  4. Em Nome, insira um nome globalmente exclusivo para o novo aplicativo de função e selecione a tecla Enter.

  5. Para Pilha de tempo de execução, selecione .NET 8 Isolado.

  6. Em Localização para seus recursos do Azure, selecione uma região próxima a você.

  7. O status da criação do aplicativo de função aparece na guia AZURE do painel inferior. Depois que o aplicativo de função é criado, você vê o status de implantação da função que você criou localmente no aplicativo de função.

  8. Depois que a implantação for bem-sucedida, expanda a mensagem Criar aplicativo de função bem-sucedido e selecione Clique para exibir o recurso. Confirme se a sua função está selecionada na secção RECURSOS no painel esquerdo.

  9. Clique com o botão direito do rato na sua função e, em seguida, selecione Abrir no Portal.

    Captura de tela que mostra 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ção aparece para 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ção.

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

    Captura de ecrã que mostra o separador Registos 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 do tópico, procure Tópicos da Grade de Eventos e selecione Tópicos da Grade de Eventos.

    Captura de ecrã que mostra a seleção de tópicos da Grelha 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. Em Assinatura, selecione sua assinatura do Azure.

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

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

      Não use o nome mostrado na imagem de exemplo. Em vez disso, crie o seu próprio nome. Deve 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 Grade de Eventos.

    5. Selecione Rever + criar.

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

    6. No separador Rever + criar, reveja as definições e, em seguida, selecione Criar.

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

    Captura de tela que mostra a página de um 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. Na página Tópico da Grade de Eventos do tópico personalizado, selecione + Assinatura de Evento na barra de ferramentas.

    Captura de ecrã que mostra o botão para adicionar uma subscrição de evento na barra de ferramentas.

  2. No painel Criar Subscrição de Eventos, siga estes passos:

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

    2. Para Event Schema, selecione Cloud Event Schema v1.0.

    3. Para Tipo de Ponto de Extremidade, selecione Função do Azure.

    4. Selecione Configurar um ponto de extremidade.

      Captura de ecrã que mostra os valores de subscrição 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. Em Grupo de recursos, selecione o grupo de recursos que tem a função.

      3. Para Aplicativo de função, selecione seu aplicativo de função.

      4. Em Função, selecione a função no aplicativo de função.

      5. Selecione Confirmar a Seleção.

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

    6. Esta etapa é opcional, mas recomendamos para cenários de produção. No painel Criar Assinatura de Evento, vá para a guia Recursos Adicionais 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 em kilobytes define o limite superior preferencial do tamanho do lote, mas pode ser excedido se um único evento for maior do que esse limite.

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

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

Enviar um evento para o seu tópico

Agora, acione um evento para ver como a Grade de Eventos distribui a mensagem para seu 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 um serviço do Azure enviaria os dados do evento.

O primeiro exemplo usa a CLI do Azure. Ele obtém a URL e a chave para o tópico personalizado e dados de evento de exemplo. Utilize o nome do tópico personalizado de topicname. 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.

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

CLI do Azure

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

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

  2. Defina as topicname variáveis e resourcegroupname que sã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. Use o comando a seguir 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 executá-lo.

    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, atualize o nome do tópico e o nome do grupo de recursos antes de executá-lo.

    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 selecione 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 cURL para postar 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 da sua função no portal do Azure.

    Captura de ecrã que mostra o separador Registos para uma função do Azure.

Azure PowerShell

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

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

  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 executá-lo.

    $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 Invoke-WebRequest cmdlet 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 da sua função no portal do Azure.

    Captura de ecrã que mostra o separador Registos de uma função.

Verifique se a função recebeu o evento

Você disparou o evento e a Grade de Eventos enviou a mensagem para o ponto de extremidade que você configurou ao se inscrever. Agora você pode verificar se a função recebeu.

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

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

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

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

    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.

    Captura de ecrã que mostra a vista Monitor de uma função com um registo.

Clean up resources (Limpar recursos)

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

  1. No menu à esquerda, selecione Grupos de recursos.

    Captura de ecrã que mostra a página para grupos de recursos

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

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

  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 não planeja usar a janela do Cloud Shell mais tarde.

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:

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