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
- Visual Studio Code instalado em uma das plataformas suportadas
- 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 WORKSPACE , selecione o botão Azure Functions na barra de comandos e selecione Create Function.
Selecione uma pasta onde você deseja salvar o código da função.
Para o comando Criar novo projeto , para Idioma, selecione C# e, em seguida, selecione a tecla Enter.
Para o tempo de execução do .NET, selecione .NET 8.0 Isolated LTS e, em seguida, selecione a tecla Enter.
Para Modelo para a função, selecione Gatilho de Grade de Eventos do Azure e selecione a tecla Enter.
Em Nome da função, introduza um nome para a função e, em seguida, selecione a tecla Enter.
Em Namespace, insira um nome para o namespace da função e selecione a tecla Enter.
Abra o projeto na janela atual ou em uma nova janela ou adicione-o a um espaço de trabalho.
Aguarde que a função seja criada. O status da criação da função aparece no canto inferior direito.
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
Selecione o botão Azure na barra esquerda se o painel do Azure ainda não estiver aberto.
Passe o cursor sobre seu projeto e selecione o botão Implantar no Azure .
Na lista pendente da paleta de comandos, selecione + Criar nova aplicação de função e, em seguida, selecione a tecla Enter.
Em Nome, insira um nome globalmente exclusivo para o novo aplicativo de função e selecione a tecla Enter.
Para Pilha de tempo de execução, selecione .NET 8 Isolado.
Em Localização para seus recursos do Azure, selecione uma região próxima a você.
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.
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.
Clique com o botão direito do rato na sua função e, em seguida, selecione Abrir no Portal.
Entre no Azure, se necessário, e confirme se a página Aplicativo de Função aparece para 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 quando enviar um evento para um tópico da Grade de Eventos mais adiante neste 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 do tópico, procure 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:
Em Assinatura, selecione sua assinatura do Azure.
Em Grupo de recursos, selecione o mesmo grupo de recursos nas etapas anteriores.
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 (
-
).Em Região, selecione um local para o tópico Grade de Eventos.
Selecione Rever + criar.
No separador Rever + criar, reveja as definições e, em seguida, selecione Criar.
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.
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.
Na página Tópico da Grade de Eventos do tópico personalizado, selecione + Assinatura de Evento na barra de ferramentas.
No painel Criar Subscrição de Eventos, siga estes passos:
Em Nome, insira um nome para a assinatura do evento.
Para Event Schema, selecione Cloud Event Schema v1.0.
Para 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.
Em Grupo de recursos, selecione o grupo de recursos que tem a função.
Para Aplicativo de função, selecione seu aplicativo de função.
Em Função, selecione a função no aplicativo de função.
Selecione Confirmar a Seleção.
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.
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
No portal do Azure, selecione Cloud Shell. Se você estiver no modo do Azure PowerShell, selecione Alternar para Bash.
Defina as
topicname
variáveis eresourcegroupname
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"
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)
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)
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"} ]'
Execute o seguinte comando cURL para postar o evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Confirme se a mensagem da função aparece na guia Logs da sua função no portal do Azure.
Azure PowerShell
O segundo exemplo usa o Azure PowerShell para executar etapas semelhantes.
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.
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"
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
Invoke-WebRequest
cmdlet 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 da sua função no portal do Azure.
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.
Na página Monitor da sua função, encontre uma invocação.
Selecione a invocação para exibir os detalhes.
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.
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.
No menu à esquerda, selecione Grupos de recursos.
Uma alternativa é selecionar Todos os Serviços no menu à esquerda e, em seguida, selecionar Grupos de recursos.
Selecione o grupo de recursos para abrir o painel para obter seus detalhes.
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 não planeja usar a janela do Cloud Shell mais tarde.
Conteúdos relacionados
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:
- Sobre o Event Grid
- Encaminhar eventos do Armazenamento de Blobs do Azure para um ponto de extremidade da Web personalizado
- Monitorizar alterações de máquina virtual com o Azure Event Grid e Logic Apps
- Transmitir macrodados em fluxo para um armazém de dados
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: