Partilhar via


Criar um gatilho que execute uma pipeline em resposta a um evento de armazenamento

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo descreve os gatilhos de eventos de armazenamento que você pode criar em seus pipelines do Azure Data Factory ou do Azure Synapse Analytics.

A arquitetura orientada a eventos é um padrão comum de integração de dados que envolve produção, deteção, consumo e reação a eventos. Os cenários de integração de dados geralmente exigem que os clientes acionem pipelines acionados a partir de eventos em uma conta de Armazenamento do Azure, como a chegada ou a exclusão de um arquivo na conta de Armazenamento de Blob do Azure. Os pipelines do Data Factory e do Azure Synapse Analytics integram-se nativamente com o Azure Event Grid, o que permite acionar pipelines com esses eventos.

Considerações sobre o disparador de eventos de armazenamento

Considere os seguintes pontos ao usar gatilhos de eventos de armazenamento:

  • A integração descrita neste artigo depende da Grade de Eventos do Azure. Certifique-se de que a sua subscrição está registada no fornecedor de recursos da Grelha de Eventos. Para obter mais informações, veja Resource providers and types (Tipos e fornecedores de recursos). Você deve conseguir realizar a ação Microsoft.EventGrid/eventSubscriptions/. Esta ação faz parte da EventGrid EventSubscription Contributor função predefinida.
  • Se estiver a utilizar esta funcionalidade no Azure Synapse Analytics, certifique-se de que também regista a sua subscrição junto do fornecedor de recursos do Data Factory. Caso contrário, você receberá uma mensagem informando que "a criação de uma Assinatura de Evento falhou".
  • Se a conta de Armazenamento de Blob residir atrás de um ponto de extremidade privado e bloquear o acesso à rede pública, você precisará configurar regras de rede para permitir comunicações do Armazenamento de Blob para a Grade de Eventos. Você pode conceder acesso de armazenamento a serviços confiáveis do Azure, como a Grade de Eventos, conforme a documentação de Armazenamento, ou configurar pontos de extremidade privados para a Grade de Eventos que mapeiam para um espaço de endereçamento de rede virtual, conforme a documentação da Grade de Eventos.
  • Atualmente, o gatilho de evento de armazenamento suporta apenas contas de armazenamento do Azure Data Lake Storage Gen2 e de armazenamento de uso geral versão 2. Se você estiver trabalhando com eventos de armazenamento SFTP (Secure File Transfer Protocol), também precisará especificar a API de dados SFTP na seção de filtragem. Devido a uma limitação do Event Grid, o Data Factory oferece suporte apenas a um máximo de 500 triggers de eventos de armazenamento por conta de armazenamento.
  • Para criar um novo gatilho de evento de armazenamento ou modificar um existente, a conta do Azure que você usa para entrar no serviço e publicar o gatilho de evento de armazenamento deve ter permissão apropriada de controle de acesso baseado em função (Azure RBAC) na conta de armazenamento. Nenhuma outra permissão é necessária. A entidade de serviço para o Azure Data Factory e o Azure Synapse Analytics não precisa de permissão especial nem na conta de armazenamento nem na Event Grid. Para obter mais informações sobre controle de acesso, consulte a seção Controle de acesso baseado em funções.
  • Se aplicou um bloqueio do Azure Resource Manager à sua conta de armazenamento, isso poderá afetar a capacidade do acionador de blobs de criar ou eliminar blobs. Um ReadOnly bloqueio impede a criação e a eliminação, enquanto um DoNotDelete bloqueio impede a eliminação. Certifique-se de levar em conta essas restrições para evitar problemas com seus gatilhos.
  • Não recomendamos gatilhos de chegada de ficheiro como um mecanismo de acionamento em destinos de fluxo de dados. Os fluxos de dados executam várias tarefas de renomeação e baralhamento de arquivos de partição na pasta de destino que podem inadvertidamente acionar um evento de chegada de arquivo antes do processamento completo de seus dados.

Criar um gatilho através da interface de utilizador

Esta seção mostra como criar um gatilho de evento de armazenamento na interface do usuário (UI) do pipeline do Azure Data Factory e do Azure Synapse Analytics.

  1. Mude para o separador Editar no Data Factory ou para o separador Integrar no Azure Synapse Analytics.

  2. No menu, selecione Disparador, e em seguida selecione Novo/Editar.

  3. Na página Adicionar gatilhos, selecione Escolher gatilho e, em seguida, selecione + Novo.

  4. Selecione o tipo de gatilho Eventos de armazenamento.

  5. Selecione a sua conta de armazenamento na lista suspensa de assinatura do Azure ou manualmente utilizando o seu ID de recurso da conta de armazenamento. Escolha o contêiner no qual você deseja que os eventos ocorram. A seleção de contêineres é necessária, mas a seleção de todos os contêineres pode levar a um grande número de eventos.

  6. As Blob path begins with propriedades e Blob path ends with permitem especificar os contêineres, pastas e nomes de blob para os quais você deseja receber eventos. O gatilho de evento de armazenamento requer que pelo menos uma dessas propriedades seja definida. Você pode usar vários padrões para ambas as Blob path begins with propriedades e Blob path ends with propriedades, conforme mostrado nos exemplos mais adiante neste artigo.

    • Blob path begins with: O caminho do blob deve-se iniciar com o caminho de uma pasta. Os valores válidos incluem 2018/ e 2018/april/shoes.csv. Este campo não pode ser selecionado se um contêiner não estiver selecionado.
    • Blob path ends with: O caminho do blob deve terminar com um nome de arquivo ou extensão. Os valores válidos incluem shoes.csv e .csv. Os nomes de contêiner e pasta, quando especificados, devem ser separados por um /blobs/ segmento. Por exemplo, um contêiner chamado orders pode ter um valor de /orders/blobs/2018/april/shoes.csv. Para especificar uma pasta em qualquer contêiner, omita o caractere principal / . Por exemplo, april/shoes.csv dispara um evento em qualquer arquivo nomeado shoes.csv em uma pasta chamada april em qualquer contêiner.

    Observe que Blob path begins with e Blob path ends with são a única correspondência de padrão permitida em um gatilho de evento de armazenamento. Não há suporte para outros tipos de correspondência curinga para o tipo de disparador.

  7. Selecione se o gatilho responde a um evento criado por Blob, a um evento excluído de Blob ou a ambos. No local de armazenamento especificado, cada evento aciona os pipelines do Data Factory e do Azure Synapse Analytics associados ao gatilho.

    Captura de ecrã que mostra a página de criação de um acionador de evento de armazenamento.

  8. Selecione ou não se o gatilho ignora blobs com zero bytes.

  9. Depois de configurar o gatilho, selecione Avançar: visualização de dados. Este ecrã mostra os blobs existentes correspondentes à configuração do acionador de eventos de armazenamento. Certifique-se de que tem filtros específicos. Configurar filtros muito amplos pode corresponder a um grande número de arquivos criados ou excluídos e pode afetar significativamente seu custo. Depois que as condições do filtro forem verificadas, selecione Concluir.

    Captura de ecrã que mostra a página de pré-visualização do acionador de evento de armazenamento.

  10. Para anexar um pipeline a esse gatilho, vá para a tela do pipeline e selecione Trigger>Novo/Editar. Quando o painel lateral aparecer, selecione a lista suspensa Escolher gatilho e selecione o gatilho que criou. Selecione Next: Data preview para confirmar se a configuração está correta. Em seguida, selecione Avançar para validar se a visualização de dados está correta.

  11. Se o pipeline tiver parâmetros, você poderá especificá-los no painel lateral Parâmetros de execução do gatilho. O disparador de evento de armazenamento captura o caminho do diretório e o nome do ficheiro do blob nas propriedades @triggerBody().folderPath e @triggerBody().fileName. Para usar os valores dessas propriedades em um pipeline, você deve associar as propriedades aos parâmetros do pipeline. Depois de mapear as propriedades para parâmetros, pode aceder aos valores capturados pelo gatilho através da expressão @pipeline().parameters.parameterName em todo o pipeline. Para obter uma explicação detalhada, consulte Metadados de acionador de referência em pipelines.

    Captura de ecrã que mostra as propriedades de mapeamento de gatilho de evento de armazenamento para parâmetros de pipeline.

    No exemplo anterior, o gatilho é configurado para ser acionado quando um caminho de blob que termina em .csv é criado na pasta event-testing no contêiner sample-data. As propriedades folderPath e fileName capturam a localização do novo blob. Por exemplo, quando MoviesDB.csv é adicionado ao caminho sample-data/event-testing, @triggerBody().folderPath tem um valor de sample-data/event-testing e @triggerBody().fileName tem um valor de moviesDB.csv. Esses valores são mapeados, no exemplo, para os parâmetros do pipeline sourceFolder e sourceFile que podem ser usados em todo o pipeline como @pipeline().parameters.sourceFolder e @pipeline().parameters.sourceFile, respectivamente.

  12. Depois de terminar, selecione Concluir.

Esquema do JSON

A tabela a seguir fornece uma visão geral dos elementos do esquema relacionados aos gatilhos de eventos de armazenamento.

Elemento JSON Descrição Tipo Valores permitidos Necessário
âmbito A ID de recurso do Azure Resource Manager da conta de armazenamento. string ID do Azure Resource Manager Sim.
eventos O tipo de eventos que fazem com que esse gatilho seja acionado. Matriz Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Sim, qualquer combinação destes valores.
blobPathBeginsWith O caminho do blob deve começar com o padrão fornecido para ativar o gatilho. Por exemplo, /records/blobs/december/ só dispara o gatilho para blobs na december pasta sob o records contêiner. string Forneça um valor para pelo menos uma destas propriedades: blobPathBeginsWith ou blobPathEndsWith.
blobPathEndsWith O caminho do blob deve terminar com o padrão especificado para o gatilho ser acionado. Por exemplo, december/boxes.csv apenas dispara o gatilho para blobs nomeados boxes numa pasta december. string Forneça um valor para pelo menos uma destas propriedades: blobPathBeginsWith ou blobPathEndsWith.
ignoreEmptyBlobs Se os blobs de zero byte acionam ou não uma execução de pipeline. Por padrão, isso é definido como true. Booleano verdadeiro ou falso N.º

Exemplos de disparadores de eventos de armazenamento

Esta seção fornece exemplos de configurações de gatilho de evento de armazenamento.

Importante

Você precisa incluir o /blobs/ segmento do caminho, conforme mostrado nos exemplos a seguir, sempre que especificar contêiner e pasta, contêiner e arquivo ou contêiner, pasta e arquivo. Para blobPathBeginsWith, a interface de utilizador adiciona /blobs/ automaticamente entre a pasta e o nome do contentor no JSON de gatilho.

Propriedade Exemplo Descrição
Blob path begins with /containername/ Recebe eventos para qualquer blob no contêiner.
Blob path begins with /containername/blobs/foldername/ Recebe eventos para quaisquer blobs no containername contêiner e na foldername pasta.
Blob path begins with /containername/blobs/foldername/subfoldername/ Você também pode fazer referência a uma subpasta.
Blob path begins with /containername/blobs/foldername/file.txt Recebe eventos para um blob nomeado file.txt na foldername pasta sob o containername contêiner.
Blob path ends with file.txt Recebe eventos para um blob nomeado file.txt em qualquer caminho.
Blob path ends with /containername/blobs/file.txt Recebe eventos para um blob nomeado file.txt sob o contêiner containername.
Blob path ends with foldername/file.txt Recebe eventos para um blob denominado file.txt na pasta foldername em qualquer contentor.

Controlo de acesso baseado em funções

Os pipelines do Data Factory e do Azure Synapse Analytics usam o controlo de acesso baseado em funções do Azure (Azure RBAC) para garantir que o acesso não autorizado para escutar, subscrever a atualizações e acionar pipelines ligados a eventos de blob seja estritamente proibido.

  • Para criar com êxito um novo gatilho de evento de armazenamento ou atualizar um existente, a conta do Azure conectada ao serviço precisa ter acesso apropriado à conta de armazenamento relevante. Caso contrário, a operação falhará com a mensagem "Acesso negado".
  • O Data Factory e o Azure Synapse Analytics não precisam de permissão especial para sua instância de Grade de Eventos e você não precisa atribuir permissão RBAC especial ao Data Factory ou à entidade de serviço do Azure Synapse Analytics para a operação.

Qualquer uma das seguintes definições de RBAC funciona para gatilhos de eventos de armazenamento:

  • Função de proprietário da conta de armazenamento
  • Função de colaborador da conta de armazenamento
  • Microsoft.EventGrid/EventSubscriptions/Write permissão para a conta de armazenamento /subscriptions/####/resourceGroups/####/providers/Microsoft.Storage/storageAccounts/storageAccountName

Especificamente:

  • Quando você escreve no Data Factory (no ambiente de desenvolvimento, por exemplo), a conta do Azure conectada precisa ter a permissão mencionada.
  • Quando se publica por meio da integração e entrega contínuas, a conta usada para publicar o modelo do Azure Resource Manager no ambiente de teste ou produção deve ter a permissão mencionada anteriormente.

Para entender como o serviço cumpre as duas promessas, vamos dar um passo atrás e espreitar os bastidores. Aqui estão os fluxos de trabalho de alto nível para integração entre Data Factory/Azure Synapse Analytics, Storage e Event Grid.

Criar um novo gatilho de evento de armazenamento

Este fluxo de trabalho de alto nível descreve como o Data Factory interage com a Grade de Eventos para criar um gatilho de evento de armazenamento. O fluxo de dados é o mesmo no Azure Synapse Analytics, com os pipelines do Azure Synapse Analytics assumindo a função do data factory no diagrama a seguir.

Diagrama que mostra um fluxo de trabalho de criação de gatilho de evento de armazenamento.

Dois avisos significativos dos fluxos de trabalho:

  • O Data Factory e o Azure Synapse Analytics não fazem contato direto com a conta de armazenamento. Em vez disso, a solicitação para criar uma assinatura é retransmitida e processada pela Grade de Eventos. O serviço não precisa de permissão para acessar a conta de armazenamento para esta etapa.
  • O controle de acesso e a verificação de permissão acontecem dentro do serviço. Antes de enviar uma solicitação para se inscrever em um evento de armazenamento, o serviço verifica a permissão para o usuário. Mais especificamente, ele verifica se a conta do Azure que está conectada e tentando criar o gatilho de evento de armazenamento tem acesso apropriado à conta de armazenamento relevante. Se a verificação de permissão falhar, a criação do gatilho também falhará.

Execução do pipeline acionado por evento de armazenamento

Este fluxo de trabalho de alto nível descreve como os pipelines de gatilho de eventos de armazenamento são executados através da Grade de Eventos. Para o Azure Synapse Analytics, o fluxo de dados é o mesmo, com os pipelines do Azure Synapse Analytics assumindo a função de Data Factory no diagrama a seguir.

Diagrama que mostra o fluxo de trabalho da execução de pipelines que acionam eventos de armazenamento.

Três destaques notáveis no fluxo de trabalho estão relacionados a pipelines de disparo de eventos no serviço.

  • A Grade de Eventos usa um modelo Push que retransmite a mensagem o mais rápido possível quando o armazenamento solta a mensagem no sistema. Essa abordagem é diferente de um sistema de mensagens, como o Kafka, onde um sistema Pull é usado.

  • O acionador de eventos serve como um ouvinte ativo para a mensagem de entrada e aciona corretamente o pipeline associado.

  • O próprio gatilho de evento de armazenamento não faz contato direto com a conta de armazenamento.

    • Se você tiver uma atividade de cópia ou outra atividade dentro do pipeline para processar os dados na conta de armazenamento, o serviço entrará em contato direto com a conta de armazenamento usando as credenciais armazenadas no serviço vinculado. Certifique-se de que o serviço vinculado está configurado adequadamente.
    • Se você não fizer referência à conta de armazenamento no pipeline, não precisará conceder permissão ao serviço para acessar a conta de armazenamento.