Usar uma função como manipulador de eventos para eventos da Grade de Eventos

Um gestor de eventos é o destino onde o Azure Event Grid envia um evento para processamento. O Azure configura automaticamente vários serviços para gerir eventos, e o Funções do Azure é um deles.

Quando usas uma função como gestor de eventos, executas código personalizado em resposta a cada evento sem provisionar ou gerir servidores. Por exemplo, o Event Grid pode usar uma função como camada anticorrupção que transforma ou valida eventos antes de os encaminhar para sistemas posteriores.

Este artigo descreve as duas formas de usar uma função como gestor de eventos e explica qual a abordagem a utilizar.

Para usar uma função no Azure como um manipulador de eventos, siga uma destas abordagens:

  • Utilize um trigger do Event Grid. Especifique Azure Function como o tipo de ponto de extremidade. Depois especifica a aplicação de funções e a função que gere os eventos.
  • Usa um gatilho HTTP. Especifique Web Hook como tipo de ponto de extremidade. Depois especifica o URL da função que gere os eventos.

Utilize a primeira abordagem (acionador do Event Grid). Tem as seguintes vantagens em relação à segunda abordagem:

  • O Event Grid valida automaticamente os acionadores do Event Grid. Com gatilhos HTTP genéricos, você mesmo deve implementar a resposta de validação.
  • A Grelha de Eventos ajusta automaticamente a taxa a que entrega eventos a uma função que um evento da Grelha de Eventos desencadeia, com base na taxa percebida a que a função pode processar eventos. Esta funcionalidade de ajuste da taxa evita erros de entrega resultantes da incapacidade de uma função para processar eventos, uma vez que a taxa de processamento de eventos da função pode variar ao longo do tempo. Para melhorar a eficiência em alta taxa de transferência, habilite o processamento em lote na assinatura do evento. Para obter mais informações, consulte Habilitar envio em lote.

Nota

  • Quando utiliza um gatilho Event Grid para adicionar uma subscrição de evento usando uma função do Azure, o Event Grid obtém a chave de acesso para a função alvo usando as credenciais do principal de serviço Event Grid. O Event Grid recebe as permissões quando regista o fornecedor de recursos do Event Grid na sua subscrição do Azure.
  • Se proteger a sua função do Azure com uma aplicação Microsoft Entra ID, deve recorrer à abordagem genérica de webhook, utilizando o acionador HTTP. Utilize o ponto final da função do Azure como URL de webhook ao adicionar a subscrição.

Tutoriais

Título Descrição
Guia de início rápido: manipular eventos com função Envia um evento personalizado para uma função para processamento.
Tutorial: transmitir big data para um armazém de dados Quando um hub de eventos cria um arquivo de captura, a grade de eventos envia um evento para um aplicativo de função. O aplicativo recupera o arquivo de captura e migra dados para um data warehouse.
Tutorial: Exemplos de integração entre o Azure Service Bus e o Azure Event Grid O Event Grid envia mensagens de um tópico do Service Bus para uma aplicação de funções e uma aplicação de lógica.

Exemplo da API REST

O exemplo seguinte mostra o corpo do pedido para uma operação PUT que cria uma subscrição de evento com uma função Azure como gestor de eventos. Define o ID de recurso da função alvo e permite o processamento em lote.

{
    "properties":
    {
        "destination":
        {
            "endpointType": "AzureFunction",
            "properties":
            {
                "resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
                "maxEventsPerBatch": 10,
                "preferredBatchSizeInKilobytes": 64
            }
        },
        "eventDeliverySchema": "EventGridSchema"
    }
}

Ativar envio em lote

Para maior rendimento, ativa o batching na subscrição. Se usares o portal do Azure, podes definir o máximo de eventos por lote e o tamanho preferido do lote em kilobytes quando crias uma subscrição ou depois.

Configure as definições em lote usando o portal Azure, PowerShell, CLI ou um modelo do Resource Manager.

portal do Azure

Quando criar uma subscrição no portal, na página de Criar Subscrição de Evento , mude para o separador Funcionalidades Avançadas e defina valores para Máximo de eventos por lote e tamanho de lote Preferencial em kilobytes.

Captura de ecrã do separador Funcionalidades Avançadas na página Criar Subscrição de Evento, mostrando as definições de processamento em lote.

Atualize estes valores para uma subscrição existente no separador Funcionalidades da página Tópico da Grelha de Eventos.

Captura de ecrã do separador Funcionalidades na página do tópico do Event Grid que mostra as definições de processamento em lote para uma subscrição existente.

Modelo Azure Resource Manager

Definir maxEventsPerBatch e preferredBatchSizeInKilobytes num modelo do Azure Resource Manager. Para obter mais informações, consulte Microsoft.EventGrid eventSubscriptions template reference.

CLI do Azure

Use o az eventgrid event-subscription create comando para configurar definições relacionadas com lotes usando os seguintes parâmetros: --max-events-per-batch ou --preferred-batch-size-in-kilobytes.

Azure PowerShell

Utilize o cmdlet New-AzEventGridSubscription ou o cmdlet Update-AzEventGridSubscription para configurar definições relacionadas com o processamento em lote. Use o -MaxEventsPerBatch parâmetro ou -PreferredBatchSizeInKiloBytes para definir as suas preferências.

Para uma lista de gestores de eventos suportados, consulte o artigo Gestores de Eventos .