Guia de início rápido: rotear eventos personalizados para uma função do Azure com a grade de eventos
O Azure Event Grid é um serviço de eventos para a cloud. O Azure Functions é um dos manipuladores de eventos com suporte. Neste artigo, o portal do Azure serve para criar um tópico personalizado, subscrever o tópico personalizado e acionar o evento para ver 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 aplicativo de função do Azure
Inicie sessão no portal do Azure.
No menu de navegação à esquerda, selecione Todos os serviços.
Selecione Computar na lista de Categorias.
Passe o mouse (não selecione) o mouse sobre Function App e selecione +.
Na página Noções básicas do assistente Criar aplicativo de função, siga estas etapas:
Selecione sua assinatura do Azure na qual você deseja criar o aplicativo de função.
Crie um novo grupo de recursos ou selecione um grupo de recursos existente.
Especifique um nome para o aplicativo de função.
Selecione .NET para Pilha de tempo de execução.
Para Versão, selecione 6 (LTS), modelo em processo.
Selecione a região mais próxima de si.
Selecione Next: Storage na parte inferior da página.
Na página Armazenamento, crie uma nova conta de armazenamento ou selecione uma conta de armazenamento existente a ser associada ao aplicativo de função e selecione Revisar + criar na parte inferior da página.
Na página Rever + criar, reveja as definições e selecione Criar na parte inferior da página para criar a aplicação funcional.
Quando a implantação for bem-sucedida, selecione Ir para o recurso para navegar até a página inicial do aplicativo de função.
Criar uma função
Antes de assinar o tópico personalizado, crie uma função para manipular os eventos.
Na página Aplicativo de Função, na seção Criar no portal do Azure, selecione Criar link de função no painel direito.
Na página Criar função, siga estas etapas:
Na seção Selecione um modelo, na caixa de filtro ou pesquisa, digite gatilho de Grade de Eventos do Azure.
Selecione o modelo de Gatilho de Grade de Eventos do Azure na lista de modelos.
Selecione Avançar na parte inferior da página.
Na página Detalhes do modelo, insira um nome para a função. Neste exemplo, é HandleEventsFunc.
Selecione Criar.
Na página Função do HandleEventsFunc, selecione Código + Teste no menu de navegação esquerdo, substitua o código pelo código a seguir e selecione Salvar na barra de comandos.
#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()); }
Selecione Monitor no menu esquerdo e alterne para a guia Logs . Mantenha esta janela ou separador do browser aberto para que 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.
Em uma nova guia da janela do navegador da Web, entre no portal do Azure.
Na barra de pesquisa do tópico, procure por Tópicos da Grade de Eventos e selecione Tópicos da Grade de Eventos.
Na página Tópicos da Grade de Eventos , selecione + Criar na barra de comandos.
Na página Criar tópico, siga estas etapas:
Selecione a sua subscrição do Azure.
Selecione o mesmo grupo de recursos nas etapas anteriores.
Forneça um nome exclusivo para o tópico personalizado. O nome do tópico deve ser exclusivo, porque este é representado por uma entrada DNS. Não utilize o nome apresentado na imagem. Em vez disso, crie seu próprio nome - ele deve ter entre 3-50 caracteres e conter apenas os valores a-z, A-Z, 0-9 e "-".
Selecione um local para o tópico Grade de Eventos.
Selecione Rever + criar.
Na página Rever + criar, reveja as definições e selecione Criar.
Depois que o tópico personalizado tiver sido criado, selecione Ir para o link do recurso para ver a seguinte página de tópico da Grade de Eventos para o tópico que você criou.
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.
Agora, na página Tópico da Grade de Eventos do seu tópico personalizado, selecione + Assinatura de Evento na barra de ferramentas.
Na página Criar Subscrição de Eventos , siga estes passos:
Insira um nome para a assinatura do evento.
Selecione Função do Azure para o tipo de ponto de extremidade.
Escolha Configurar um ponto de extremidade.
Para o ponto de extremidade da função, selecione a Assinatura do Azure e o Grupo de Recursos em que seu Aplicativo de Função está e, em seguida, selecione o Aplicativo de Função e a função que você criou anteriormente. Selecione Confirmar a Seleção.
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 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 define o limite superior preferencial do tamanho do lote em kilobytes, mas pode ser excedido se um único evento for maior do que esse limite.
Na página Criar Assinatura de Evento , selecione Criar.
Enviar um evento para o seu tópico
Agora, vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Utilize a CLI do Azure ou o PowerShell para enviar um evento de teste para o seu tópico personalizado. Normalmente, uma aplicação ou serviço do Azure enviaria os dados do evento.
O primeiro exemplo utiliza a CLI do Azure. Obtém o URL e a chave para o tópico personalizado e os dados do evento de exemplo. Utilize o nome do tópico personalizado de <topic name>
. 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. CURL é um utilitário que envia os pedidos HTTP.
CLI do Azure
No portal do Azure, selecione Cloud Shell. Selecione Bash no canto superior esquerdo da janela do Cloud Shell.
Defina as
topicname
variáveis eresourcegroupname
que serã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"
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)
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)
Copie a instrução a seguir com a definição de 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"} ]'
Execute o seguinte comando Curl para postar o evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
O segundo exemplo utiliza o PowerShell para efetuar passos semelhantes.
No portal do Azure, selecione Cloud Shell (alternativamente, vá para
https://shell.azure.com/
). Selecione PowerShell no canto superior esquerdo da janela do Cloud Shell. Consulte a imagem de exemplo da janela do Cloud Shell na seção CLI do Azure.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 executar o comando:
$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 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)+"]"
Use o cmdlet Invoke-WebRequest para enviar o evento.
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Verifique se a função recebeu o evento
Acionou o evento e o Event Grid enviou a mensagem para o ponto final que configurou ao subscrever.
Na página Monitor da sua função do Azure, você verá uma invocação.
Selecione a invocação para ver 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 quiser continuar a trabalhar com este evento, não limpe os recursos criados neste artigo. Caso contrário, elimine os recursos que criou neste artigo.
Selecione Grupos de Recursos no menu à esquerda. Se não o vir no menu esquerdo, selecione Todos os Serviços no menu esquerdo e selecione Grupos de Recursos.
Selecione o grupo de recursos para iniciar a página Grupo de Recursos.
Selecione Excluir grupo de recursos na barra de ferramentas.
Confirme a exclusão inserindo o nome do grupo de recursos e selecione Excluir.
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óximos passos
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 de armazenamento de Blobs para um ponto final 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
Consulte os exemplos a seguir para saber mais sobre como publicar e consumir eventos da Grade de Eventos usando diferentes linguagens de programação.