Use uma função como manipulador de eventos para eventos do Event Grid

Um gerenciador de eventos é o destino onde o Grade de Eventos do Azure envia um evento para processamento. O Azure configura automaticamente vários serviços para lidar com eventos, e o Azure Functions é um deles.

Quando você usa uma função como um gerenciador de eventos, executa código personalizado em resposta a cada evento sem provisionar ou gerenciar servidores. Por exemplo, a Grade de Eventos pode usar uma função como camada anticorrupção que transforma ou valida eventos antes de encaminhá-los para sistemas posteriores.

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

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

  • Use um gatilho do Event Grid. Especifique a Função do Azure como o tipo de ponto de extremidade. Depois, especifique o aplicativo de função e a função que gerencia eventos.
  • Use um gatilho HTTP. Especifique o Web hook como o tipo de ponto de extremidade. Depois, especifique a URL da função que gerencia eventos.

Use a primeira abordagem (gatilho do Event Grid). Ele possui as seguintes vantagens em relação à segunda abordagem:

  • O Event Grid valida automaticamente os gatilhos do Event Grid. Com os gatilhos HTTP genéricos, você deve implementar a resposta de validação.
  • A Grade de Eventos ajusta automaticamente a taxa com que entrega eventos para uma função que um evento da Grade de Eventos aciona, com base na taxa percebida com que a função pode processar eventos. Esse recurso de compatibilização de taxa evita erros de entrega que decorrem da incapacidade de uma função de processar eventos, pois a taxa com que a função processa eventos pode variar ao longo do tempo. Para melhorar a eficiência em cenários de alta taxa de transferência, habilite o processamento em lote na assinatura do evento. Para obter mais informações, confira Habilitar armazenamento em lote.

Observação

  • Quando você usa um gatilho da Grade de Eventos para adicionar uma assinatura de evento usando uma função do Azure, a Grade de Eventos obtém a chave de acesso da função alvo usando as credenciais do principal do serviço da Grade de Eventos. O Event Grid recebe as permissões quando você registra o provedor de recursos do Event Grid na sua assinatura do Azure.
  • Se você protege sua função Azure com um aplicativo Microsoft Entra ID, deve adotar a abordagem genérica do webhook usando o gatilho HTTP. Use o endpoint da função do Azure como URL de webhook ao adicionar a subscrição.

Tutoriais

Título Descrição
Início rápido: Processar eventos com uma função Envia um evento personalizado para uma função para processamento.
Tutorial: transmitir Big Data para um data warehouse 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 do Barramento de Serviço do Azure com o Grade de Eventos do Azure O Event Grid envia mensagens de um tópico do Barramento de Serviço para um aplicativo de função e um aplicativo lógico.

Exemplo de API REST

O exemplo a seguir mostra o corpo da solicitação para uma operação PUT que cria uma assinatura de evento com uma função do Azure como handler de eventos. Ele define o ID de recurso da função alvo e permite o batching.

{
    "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"
    }
}

Habilitar o envio em lote

Para maior rendimento, ative o batching na assinatura. Se você usar o portal do Azure, pode definir o máximo de eventos por lote e o tamanho preferido do lote em kilobytes ao criar uma assinatura ou depois.

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

portal do Azure

Ao criar uma assinatura no portal, na página de Criar Assinatura de Evento , mude para a aba Funcionalidades Avançadas e defina valores para Máximo de eventos por lote e tamanho de lote Preferencial em kilobytes.

Captura de tela da aba Recursos Avançados na página de Criar Assinatura de Evento mostrando as configurações de lote.

Atualize esses valores para uma assinatura existente na aba Features da página de Tópicos da Grade de Eventos .

Captura de tela da aba Recursos na página do Tópico do Event Grid, mostrando as configurações de processamento em lote de uma assinatura existente.

Modelo do Azure Resource Manager

Definir maxEventsPerBatch e preferredBatchSizeInKilobytes em um modelo do Azure Resource Manager. Para obter mais informações, confira Referência de modelo de eventSubscriptions da Microsoft.EventGrid.

CLI do Azure

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

Azure PowerShell

Use o comando New-AzEventGridSubscription ou Update-AzEventGridSubscription para configurar configurações relacionadas a lotes. Use o -MaxEventsPerBatch parâmetro ou -PreferredBatchSizeInKiloBytes para definir suas preferências.

Para uma lista de manipuladores de eventos suportados, veja o artigo Gerenciadores de eventos .