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
- Visual Studio Code instalado em uma das plataformas compatíveis
- Extensão do Azure Functions
Criar uma função
Abra o Visual Studio Code.
Na barra esquerda, selecione Azure.
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.
Selecione uma pasta na qual você deseja salvar o código da função.
Para o comando Criar projeto, para Linguagem de programação, selecione C# e pressione a tecla Enter.
Para o runtime do .NET, selecione .NET 8.0 LTS Isolado e, em seguida, pressione a tecla Enter.
Para o Modelo para a função, selecione gatilho da Grade de Eventos do Azure e pressione a tecla Enter.
Para Nome da função, insira um nome para sua função e, em seguida, pressione a tecla Enter.
Para o Namespace, insira um nome para o namespace da função e, em seguida, pressione a tecla Enter.
Abra o projeto na janela atual ou em uma nova janela ou adicione-o a um espaço de trabalho.
Aguarde até a função ser criada. O status da criação da função aparece no canto inferior direito.
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
Selecione o botão Azure na barra esquerda se o painel Azure ainda não estiver aberto.
Passe o mouse sobre o seu projeto e selecione o botão Implantar no Azure.
Na lista suspensa da paleta de comandos, selecione + Criar aplicativo de funções e, em seguida, selecione a tecla Enter.
Para Nome, insira um nome globalmente exclusivo para o novo aplicativo de funções e pressione a tecla Enter.
Para a Pilha de runtime, selecione .NET 8 Isolado.
Para obter a Localização dos seus recursos do Azure, selecione uma região próxima de você.
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.
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.
Clique com o botão direito do mouse na função e selecione Abrir no Portal.
Entre no Azure, se necessário, e confirme se a página Aplicativo de Funções aparece para a sua função.
No painel inferior, selecione sua função.
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.
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.
Em uma nova guia da janela do navegador da Web, entre no portal do Azure.
Na barra de pesquisa no tópico, pesquise Tópicos da Grade de Eventos e selecione Tópicos da Grade de Eventos.
Na página Tópicos, selecione + Criar na barra de comandos.
No painel Criar Tópico, siga estas etapas:
Para Assinatura, selecione sua assinatura do Azure.
Em Grupo de recursos, selecione o mesmo grupo de recursos das etapas anteriores.
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 (
-
).Em Região, selecione um local para o tópico de Grade de Eventos.
Selecione Examinar + criar.
Na guia Revisar + criar, revise as configurações e selecione Criar.
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.
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.
Agora, na página Tópico de Grade de Eventos para seu tópico personalizado, selecione + Assinatura de Evento na barra de ferramentas.
Na página Criar Assinatura de Eventos, siga estas etapas:
Em Nome, insira um nome para a assinatura de evento.
Para Esquema de Evento, selecione Esquema de Evento em Nuvem v1.0.
Para o Tipo de ponto de extremidade, selecione Função do Azure.
Selecione Configurar um ponto de extremidade.
No painel Selecionar Função do Azure, siga estas etapas:
Em Assinatura, selecione a assinatura do Azure que tem a função.
Para Grupo de recursos, selecione o grupo de recursos que possui a função.
Para Aplicativo de funções, selecione seu aplicativo de funções.
Para Função, selecione a função no aplicativo de funções.
Selecione Confirmar seleção.
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.
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
No portal do Azure, selecione Cloud Shell. Se você estiver no modo Azure PowerShell, selecione Mudar para Bash.
Defina as variáveis
topicname
eresourcegroupname
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"
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)
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)
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"} ]'
Execute o seguinte comando de cURL para publicar o evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Confirme se a mensagem da função aparece na guia Logs para sua função no portal do Azure.
PowerShell do Azure
O segundo exemplo usa o Azure PowerShell para realizar etapas semelhantes.
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.
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"
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
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)+"]"
Use o cmdlet
Invoke-WebRequest
para enviar o evento:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Confirme se a mensagem da função aparece na guia Logs para sua função no portal do Azure.
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.
Na página Monitor da função, localize uma invocação.
Selecione a invocação para ver os detalhes.
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.
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.
Selecione Grupos de recursos no menu esquerdo.
Uma alternativa é selecionar Todos os Serviços no menu à esquerda e selecionar Grupos de recursos.
Selecione o grupo de recursos para abrir o painel para obter os detalhes dele.
Na barra de ferramentas, selecione Excluir grupo de recursos.
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.
Conteúdo relacionado
Agora que você sabe como criar tópicos e assinaturas de evento, saiba mais sobre como a Grade de Eventos pode ajudá-lo:
- Sobre a Grade de Eventos
- Rotear eventos do Armazenamento de Blobs do Azure para um ponto de extremidade da Web personalizado
- Monitorar alterações de máquina virtual com a Grade de Eventos do Azure e os Aplicativos Lógicos
- Transmitir Big Data para um data warehouse
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: