Início Rápido: Rotear eventos personalizados para uma Função do Azure com a Grade de Eventos
A Grade de Eventos do Azure é um serviço de eventos para a nuvem. O Azure Functions é um dos manipuladores de eventos com suporte. Neste artigo, 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 um aplicativo de funções do Azure
Entre no portal do Azure.
Selecione Todos os serviços no menu de navegação à esquerda.
Selecione Computação na lista de Categorias.
Passe o mouse (não selecione) sobre o Aplicativo de Funções e selecione Criar.
Na página Noções básicas de Criar aplicativo de funções, siga estas etapas:
Selecione a Assinatura do Azure na qual você quer criar o aplicativo de funções.
Crie um novo grupo de recursos ou selecione um grupo de recursos existente.
Especifique um nome para o aplicativo de funções.
Selecione .NET para a pilha de runtime.
Selecione a região mais próxima de você.
Na parte inferior da página, selecione Próximo: Hospedagem .
Na página Hospedagem, crie uma nova conta de armazenamento ou selecione uma conta de armazenamento existente para ser associada ao aplicativo de funções, e selecione Examinar + criar na parte inferior da página.
Na página Examinar + criar, examine as configurações e selecione Criar na parte inferior da página para criar o aplicativo de funções.
Depois que a implantação for bem-sucedida, selecione Ir para o recurso para navegar até a página inicial do aplicativo de funções.
Criar uma função
Antes de assinar o tópico personalizado, crie uma função para a lidar com os eventos.
Na página Aplicativo de Funções, selecione Funções no menu à esquerda.
Selecione +Criar na barra de ferramentas para criar uma função.
Na página Criar Função, siga estas etapas:
Esta etapa é opcional. Em Ambiente de desenvolvimento, selecione o ambiente de desenvolvimento que você deseja usar para trabalhar com o código de função.
Na seção Selecionar um modelo, na caixa de filtro ou pesquisa, digite gatilho da Grade de Eventos do Azure.
Selecione o modelo Gatilho da Grade de Eventos do Azure na lista de modelos.
Na seção de Detalhes do modelo no painel inferior, insira um nome da função. Neste exemplo, ele é 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 seguinte.
#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 Monitorar no menu à esquerda e, em seguida, selecione Logs.
Mantenha essa janela ou guia do navegador aberta para que você 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 no tópico, pesquise 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 sua assinatura do Azure.
Selecione o mesmo grupo de recursos das etapas anteriores.
Informe um nome exclusivo para o tópico personalizado. O nome do tópico deve ser exclusivo, pois é representado por uma entrada DNS. Não use o nome mostrado na imagem. Em vez disso, crie seu próprio nome – ele deve ter entre 3 e 50 caracteres e conter apenas valores a-z, A-Z, 0-9 e "-".
Selecione um local para o tópico da Grade de Eventos.
Selecione Examinar + criar.
Na página Examinar + criar, examine as configurações e selecione Criar.
Após o tópico personalizado ter sido criado, selecione o link Acessar o recurso para ver a pagina do Tópico da Grade de Eventos seguinte para o tópico criado.
Inscrever-se em 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:
Insira um nome para a assinatura de evento.
Selecione Função do Azure para o tipo de ponto de extremidade.
Escolha Selecionar um ponto de extremidade.
Para o ponto de extremidade da função, selecione a Assinatura do Azure e o Grupo de Recursos no qual o aplicativo de funções está e, em seguida, selecione o aplicativo de funções e a função que você criou anteriormente. Selecione Confirmar 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 Máximo de eventos por lote e Tamanho preferencial do lote em quilobytes.
O envio em lote pode fornecer 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 define o limite superior preferencial do tamanho do lote em quilobytes, mas poderá ser excedido se um evento for maior do que esse limite.
Na página Criar Assinatura de Evento, selecione Criar.
Enviar um evento para o tópico
Agora, vamos disparar um evento para ver como a Grade de Eventos distribui a mensagem para o ponto de extremidade. Use a CLI do Azure ou o 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 <topic name>
. 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. CURL é um utilitário que envia solicitações HTTP.
CLI do Azure
No portal do Azure, selecione Cloud Shell. Selecione Bash no canto superior esquerdo da janela do Cloud Shell.
Defina as variáveis
topicname
eresourcegroupname
que serã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 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 seguinte instrução com a definição do 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 publicar o evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
O segundo exemplo usa o PowerShell para realizar etapas semelhantes.
No portal do Azure, selecione Cloud Shell (como alternativa, acesse
https://shell.azure.com/
). Selecione PowerShell no canto superior esquerdo da janela do Cloud Shell. Veja a imagem da janela Cloud Shell de exemplo na seção da CLI do Azure.Defina as variáveis a seguir. 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}
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. Navegue até a função disparada pela Grade de Eventos e abra os logs. Você deverá ver uma cópia do conteúdo de dados do evento nos logs. Se você não tiver certeza, abra a janela de logs primeiro ou clique em reconectar e tente enviar um evento de teste novamente.
Limpar os recursos
Caso planeje continuar a trabalhar com esse evento, não limpe os recursos criados neste artigo. Caso contrário, exclua os recursos criados neste artigo.
Selecione Grupos de Recursos no menu esquerdo. Se você não o visualizar no menu à esquerda, selecione Todos os Serviços no menu à esquerda 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óximas etapas
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 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
Confira os exemplos a seguir para saber mais sobre como publicar e consumir eventos na Grade de Eventos usando diferentes linguagens de programação.