Criar um gatilho que executa um 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 Data Factory ou Sinapse.

A arquitetura orientada a eventos (EDA) é 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 com base em eventos que acontecem na conta de armazenamento, 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 Synapse integram-se nativamente à Grade de Eventos do Azure, o que permite acionar pipelines nesses eventos.

Nota

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 saber mais, veja Tipos e provedores de recursos. Você deve ser capaz de executar a ação Microsoft.EventGrid/eventSubscriptions/*. Esta ação faz parte da função interna EventGrid EventSubscription Contributor.

Importante

Se você estiver usando esse recurso no Azure Synapse Analytics, certifique-se de que sua assinatura também esteja registrada no provedor de recursos do Data Factory ou, caso contrário, você receberá um erro informando que a criação de uma "Assinatura de Evento" falhou.

Nota

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 do Azure. Você pode conceder acesso de armazenamento a serviços confiáveis do Azure, como Grade de Eventos, seguindo a documentação de Armazenamento, ou configurar pontos de extremidade privados para a Grade de Eventos que mapeiam para o espaço de endereçamento da rede virtual, seguindo a documentação da Grade de Eventos

Criar um gatilho com a interface do usuário

Esta seção mostra como criar um gatilho de evento de armazenamento no Azure Data Factory e na Interface do Usuário do pipeline Synapse.

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

  2. Selecione Gatilho no menu e, em seguida, selecione Novo/Editar.

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

  4. Selecionar tipo de gatilho Evento de armazenamento

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

    Nota

    Atualmente, o Acionador de Eventos de Armazenamento suporta apenas contas de armazenamento do Azure Data Lake Storage Gen2 e para fins gerais versão 2. Se estiver a trabalhar com Eventos de Armazenamento SFTP, também terá de especificar a API SFTP Data na secção de filtragem. Devido a uma limitação do Azure Event Grid, o Azure Data Factory apenas suporta a um máximo de 500 acionadores de eventos de armazenamento por conta de armazenamento. Se você atingir o limite, entre em contato com o suporte para obter recomendações e aumentar o limite após avaliação pela equipe da Grade de Eventos.

    Nota

    Para criar um novo ou modificar um Gatilho de Evento de Armazenamento existente, a conta do Azure usada para fazer logon 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 permissão adicional é necessária: a Entidade de Serviço para o Azure Data Factory e o Azure Synapse não precisam de permissão especial para a conta de Armazenamento ou a Grade de Eventos. Para obter mais informações sobre controle de acesso, consulte a seção Controle de acesso baseado em função.

  6. O caminho de Blob começa com e o caminho de Blob termina com propriedades que 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 uma variedade de padrões para o caminho de Blob que começa com e o caminho de Blob termina com propriedades, conforme mostrado nos exemplos mais adiante neste artigo.

    • O caminho de blob começa com: O caminho de blob deve começar com um caminho de 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.
    • O caminho de blob termina com: O caminho de 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 'pedidos' pode ter um valor de /orders/blobs/2018/april/shoes.csv. Para especificar uma pasta em qualquer contêiner, omita o caractere '/' à esquerda. Por exemplo, april/shoes.csv irá disparar um evento em qualquer arquivo nomeado shoes.csv na pasta um chamado 'april' em qualquer contêiner.
    • Observe que o caminho de Blob começa com e termina com são a única correspondência de padrão permitida no Gatilho de Evento de Armazenamento. Não há suporte para outros tipos de correspondência curinga para o tipo de gatilho.
  7. Selecione se o gatilho responderá a um evento criado por Blob, a um evento excluído por Blob ou a ambos. No local de armazenamento especificado, cada evento acionará os pipelines Data Factory e Synapse associados ao gatilho.

    Screenshot of storage event trigger creation page.

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

  9. Depois de configurar o gatilho, clique em Avançar: Visualização de dados. Esta tela mostra os blobs existentes correspondentes à configuração do gatilho 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/excluídos e pode afetar significativamente seu custo. Depois que as condições do filtro forem verificadas, clique em Concluir.

    Screenshot of storage event trigger preview page.

  10. Para anexar um pipeline a esse gatilho, vá para a tela do pipeline, clique em Gatilho e selecione Novo/Editar. Quando a navegação lateral aparecer, clique no menu suspenso Escolher gatilho... e selecione o gatilho que você criou. Clique em Seguinte: Pré-visualização de dados para confirmar que a configuração está correta e, em seguida, em Seguinte para validar que a pré-visualização de dados está correta.

  11. Se o pipeline tiver parâmetros, você poderá especificá-los no trigger runs parameter side nav. O gatilho de evento de armazenamento captura o caminho da pasta e o nome do arquivo do blob nas propriedades @triggerBody().folderPath e @triggerBody().fileName. Para usar os valores dessas propriedades em um pipeline, você deve mapear as propriedades para parâmetros de pipeline. Depois de mapear as propriedades para parâmetros, você pode acessar os valores capturados pelo gatilho por meio da @pipeline().parameters.parameterName expressão em todo o pipeline. Para obter explicações detalhadas, consulte Metadados de gatilho de referência em pipelines

    Screenshot of storage event trigger mapping properties to pipeline parameters.

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

  12. Clique em Concluir quando terminar.

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 de aplicação A ID de recurso do Azure Resource Manager da Conta de Armazenamento. String Azure Resource Manager ID Sim
Publicações 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.
blobPathBeginsCom O caminho do blob deve começar com o padrão fornecido para o gatilho disparar. 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 fornecido para o gatilho disparar. Por exemplo, december/boxes.csv dispara apenas o gatilho para blobs nomeados boxes em uma december pasta. String Forneça um valor para pelo menos uma destas propriedades: blobPathBeginsWith ou blobPathEndsWith.
ignoreEmptyBlobs Se os blobs de zero byte acionarão ou não uma execução de pipeline. Por padrão, isso é definido como true. Booleano verdadeiro ou falso Não

Exemplos de gatilhos 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 do usuário adicionará automaticamente /blobs/ entre a pasta e o nome do contêiner no JSON do gatilho.

Nota

Os gatilhos de chegada de arquivo não são recomendados como um mecanismo de acionamento de coletores 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 disparar um evento de chegada de arquivo antes do processamento completo de seus dados.

Propriedade Exemplo Description
O caminho do blob começa com /containername/ Recebe eventos para qualquer blob no contêiner.
O caminho do blob começa com /containername/blobs/foldername/ Recebe eventos para quaisquer blobs no contêiner e foldername na containername pasta.
O caminho do blob começa com /containername/blobs/foldername/subfoldername/ Você também pode fazer referência a uma subpasta.
O caminho do blob começa com /containername/blobs/foldername/file.txt Recebe eventos para um blob nomeado file.txt na foldername pasta sob o containername contêiner.
O caminho do Blob termina com file.txt Recebe eventos para um blob nomeado file.txt em qualquer caminho.
O caminho do Blob termina com /containername/blobs/file.txt Recebe eventos para um blob nomeado file.txt sob o contêiner containername.
O caminho do Blob termina com foldername/file.txt Recebe eventos para um blob nomeado file.txt na foldername pasta em qualquer contêiner.

Controlo de acesso baseado em funções

Os pipelines do Azure Data Factory e Synapse usam o controle de acesso baseado em função do Azure (Azure RBAC) para garantir que o acesso não autorizado para ouvir, assinar atualizações e acionar pipelines vinculados 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 Acesso negado.
  • O Azure Data Factory e o Azure Synapse não precisam de permissão especial para sua Grade de Eventos e você não precisa atribuir permissão RBAC especial ao Data Factory ou à entidade de serviço do Azure Synapse para a operação.

Qualquer uma das seguintes configurações RBAC funciona para o gatilho de evento de armazenamento:

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

Mais concretamente:

Para entender como o serviço entrega as duas promessas, vamos dar um passo atrás e dar uma olhada nos bastidores. Aqui estão os fluxos de trabalho de alto nível para integração entre o Azure Data Factory/Azure Synapse, o Armazenamento e a Grade de Eventos.

Criar um novo gatilho de evento de armazenamento

Este fluxo de trabalho de alto nível descreve como o Azure Data Factory interage com a Grade de Eventos para criar um Gatilho de Evento de Armazenamento. Para o Azure Synapse, o fluxo de dados é o mesmo, com os pipelines Synapse assumindo a função do Data Factory no diagrama abaixo.

Workflow of storage event trigger creation.

Duas chamadas percetíveis dos fluxos de trabalho:

  • O Azure Data Factory e o Azure Synapse 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. Portanto, o serviço não precisa de permissão para 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 no evento de armazenamento, o serviço verifica a permissão para o usuário. Mais especificamente, ele verifica se a conta do Azure 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 de gatilho de evento de armazenamento

Esses fluxos de trabalho de alto nível descrevem como o evento de armazenamento aciona o pipeline executado através da Grade de Eventos. Para o Azure Synapse, o fluxo de dados é o mesmo, com os pipelines Synapse assumindo a função do Data Factory no diagrama abaixo.

Workflow of storage event triggering pipeline runs.

Há três chamadas percetíveis no fluxo de trabalho relacionadas aos pipelines de disparo de eventos dentro do 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. Isso é diferente do sistema de mensagens, como o Kafka, onde um sistema Pull é usado.

  • O Gatilho 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

    • Dito isso, se você tiver uma cópia ou outra atividade dentro do pipeline para processar os dados na conta de armazenamento, o serviço entrará em contato direto com o armazenamento, usando as credenciais armazenadas no serviço vinculado. Verifique se o Serviço Vinculado está configurado adequadamente
    • No entanto, 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