Creare un trigger che esegue una pipeline in risposta a un evento di archiviazione

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo descrive i trigger di eventi Archiviazione che è possibile creare nelle pipeline di Data Factory o Synapse.

Un'architettura guidata dagli eventi è un comune modello di integrazione dei dati che implica produzione, rilevamento, utilizzo e risposta agli eventi. Gli scenari di integrazione dei dati spesso richiedono ai clienti di attivare pipeline in base a eventi che si verificano nell'account di archiviazione, ad esempio l'arrivo o l'eliminazione di un file in Archiviazione BLOB di Azure account. Le pipeline di Data Factory e Synapse si integrano in modo nativo con Griglia di eventi di Azure, che consente di attivare pipeline su tali eventi.

Nota

L'integrazione descritta in questo articolo dipende dalla Griglia di eventi di Azure. Verificare che la sottoscrizione sia registrata con il provider di risorse di Griglia di eventi. Per altre informazioni, vedere Provider e tipi di risorse. È necessario essere in grado di eseguire l'azione Microsoft.EventGrid/eventSubscriptions/*. Questa azione fa parte del ruolo predefinito EventGrid EventSubscription Contributor.

Importante

Se si usa questa funzionalità in Azure Synapse Analytics, assicurarsi che la sottoscrizione sia registrata anche con il provider di risorse di Data Factory o che venga visualizzato un errore che informa che la creazione di una "sottoscrizione di eventi" non è riuscita.

Nota

Se l'account di archiviazione BLOB si trova dietro un endpoint privato e blocca l'accesso alla rete pubblica, è necessario configurare le regole di rete per consentire le comunicazioni dall'archiviazione BLOB a Griglia di eventi di Azure. È possibile concedere l'accesso all'archiviazione a servizi di Azure attendibili, ad esempio Griglia di eventi, seguendo Archiviazione documentazione o configurare endpoint privati per Griglia di eventi che eseguono il mapping allo spazio indirizzi della rete virtuale, seguendo la documentazione di Griglia di eventi

Creare un trigger con l'interfaccia utente

Questa sezione illustra come creare un trigger di eventi di archiviazione all'interno dell'interfaccia utente della pipeline di Azure Data Factory e Synapse.

  1. Passare alla scheda Modifica in Data Factory o alla scheda Integrazione in Azure Synapse.

  2. Selezionare Trigger dal menu, quindi selezionare Nuovo/Modifica.

  3. Nella pagina Aggiungi trigger selezionare Scegli trigger e quindi + Nuovo.

  4. Selezionare il tipo di trigger Archiviazione Evento

  5. Selezionare l'account di archiviazione nell'elenco a discesa della sottoscrizione di Azure o manualmente usando l'ID risorsa dell'account di archiviazione. Scegliere il contenitore in cui si vuole che si verifichino gli eventi. La selezione dei contenitori è obbligatoria, ma tenere presente che la selezione di tutti i contenitori può portare a un numero elevato di eventi.

    Nota

    Il trigger di evento di archiviazione supporta attualmente solo gli account di archiviazione Azure Data Lake Storage Gen2 e per utilizzo generico versione 2. Se si lavora con Eventi di archiviazione SFTP, è necessario specificare anche l'API dati SFTP nella sezione filtro. A causa di una limitazione di Griglia di eventi di Azure, Azure Data Factory supporta solo un massimo di 500 trigger di eventi di archiviazione per account di archiviazione. Se si raggiunge il limite, contattare il supporto tecnico per consigli e aumentare il limite alla valutazione da parte del team di Griglia di eventi.

    Nota

    Per creare un trigger di evento di Archiviazione esistente o modificarlo, l'account Azure usato per accedere al servizio e pubblicare il trigger di eventi di archiviazione deve disporre dell'autorizzazione appropriata per il controllo degli accessi in base al ruolo (Controllo degli accessi in base al ruolo di Azure) per l'account di archiviazione. Non è necessaria alcuna autorizzazione aggiuntiva: l'entità servizio per Azure Data Factory e Azure Synapse non richiede autorizzazioni speciali per l'account Archiviazione o Griglia di eventi. Per altre informazioni sul controllo di accesso, vedere la sezione Controllo degli accessi in base al ruolo .

  6. Le proprietà Percorso BLOB inizia con e Percorso BLOB termina con consentono di specificare i contenitori, le cartelle e i nomi di BLOB per cui si vogliono ricevere eventi. Il trigger di eventi di archiviazione richiede almeno una di queste proprietà da definire. È possibile usare svariati modelli per le due proprietà Percorso BLOB inizia con e Percorso BLOB termina con, come mostrato negli esempi più avanti in questo articolo.

    • Il percorso del BLOB inizia con: il percorso del BLOB deve iniziare con un percorso di cartella. I valori validi includono 2018/ e 2018/april/shoes.csv. Se non è selezionato un contenitore, questo campo non è selezionabile.
    • Il percorso BLOB termina con: il percorso del BLOB deve terminare con un nome di file o un'estensione. I valori validi includono shoes.csv e .csv. I nomi dei contenitori e delle cartelle, se specificati, devono essere separati da un /blobs/ segmento. Ad esempio, il valore di un contenitore denominato 'orders' è /orders/blobs/2018/april/shoes.csv. Per specificare una cartella in qualsiasi contenitore, omettere il carattere '/' iniziale. Ad esempio, con april/shoes.csv verrà attivato un evento in tutti i file denominati shoes.csv nella cartella denominata 'april' presente in qualsiasi contenitore.
    • Si noti che il percorso BLOB inizia con e termina con sono gli unici criteri di ricerca consentiti in Archiviazione Trigger di eventi. Altri tipi di corrispondenza con caratteri jolly non sono supportati per il tipo di trigger.
  7. Scegliere se il trigger deve rispondere a un evento Blob created (BLOB creato), Blob deleted (BLOB eliminato) o entrambi. Nel percorso di archiviazione specificato, ogni evento attiverà le pipeline di Data Factory e Synapse associate al trigger.

    Screenshot of storage event trigger creation page.

  8. Selezionare se il trigger ignora i BLOB con zero byte.

  9. Dopo aver configurato il trigger, fare clic su Avanti: Anteprima dati. Questa schermata mostra i BLOB esistenti corrispondenti alla configurazione del trigger di eventi di archiviazione. Assicurarsi che siano presenti filtri specifici. La configurazione di filtri troppo generici può causare la creazione o l'eliminazione di un numero elevato di file e influire significativamente sui costi. Dopo aver verificato le condizioni di filtro, fare clic su Fine.

    Screenshot of storage event trigger preview page.

  10. Per collegare una pipeline a questo trigger, passare all'area di disegno della pipeline e fare clic su Trigger e selezionare Nuovo/Modifica. Quando viene visualizzato il riquadro di spostamento laterale, fare clic sull'elenco a discesa Choose trigger (Scegli trigger) e selezionare il trigger creato. Fare clic su Avanti: Anteprima dati per verificare che la configurazione sia corretta e quindi Avanti per convalidare l'anteprima dei dati è corretta.

  11. Se alla pipeline sono associati parametri, è possibile specificarli nel riquadro di spostamento laterale dei parametri di esecuzione del trigger. Il trigger di eventi di archiviazione acquisisce il percorso della cartella e il nome file del BLOB nelle proprietà @triggerBody().folderPath e @triggerBody().fileName. Per usare i valori di queste proprietà in una pipeline, è necessario mappare le proprietà per i parametri della pipeline. Dopo il mapping delle proprietà per i parametri, è possibile accedere ai valori acquisiti dal trigger attraverso l'espressione @pipeline().parameters.parameterName attraverso la pipeline. Per una spiegazione dettagliata, vedere Metadati dei trigger di riferimento nelle pipeline

    Screenshot of storage event trigger mapping properties to pipeline parameters.

    Nell'esempio precedente il trigger viene configurato per l'attivazione quando viene creato un percorso BLOB che termina con estensione csv nella cartella event-testing nel contenitore sample-data. Le proprietà folderPath e fileName acquisiscono il percorso del nuovo BLOB. Ad esempio, quando si aggiunge MoviesDB.csv viene aggiunto al percorso sample-data/event-testing, il valore di @triggerBody().folderPath è sample-data/event-testing e il valore di @triggerBody().fileName è moviesDB.csv. Questi valori vengono mappati, nell'esempio, ai parametri sourceFolder della pipeline e sourceFile, che possono essere usati in tutta la pipeline come @pipeline().parameters.sourceFolder e @pipeline().parameters.sourceFile rispettivamente.

  12. Al termine, fare clic su Fine.

Schema JSON

La tabella seguente offre una panoramica degli elementi dello schema correlati ai trigger di eventi di archiviazione:

Elemento JSON Descrizione Type Valori consentiti Obbligatorio
ambito ID risorsa di Azure Resource Manager dell'account di archiviazione. Stringa ID Azure Resource Manager
eventi Tipo di eventi che provocano l'attivazione del trigger. Matrice Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Sì, qualsiasi combinazione di questi valori.
blobPathBeginsWith Il percorso del BLOB deve iniziare con il modello fornito per l'attivazione del trigger. Ad esempio, /records/blobs/december/ attiva il trigger solo per i BLOB nella cartella december nel contenitore records. Stringa Specificare un valore per almeno una di queste proprietà: blobPathBeginsWith o blobPathEndsWith.
blobPathEndsWith Il percorso del BLOB deve terminare con il modello fornito per l'attivazione del trigger. Ad esempio, december/boxes.csv attiva il trigger solo per i BLOB denominati boxes in una cartella december. Stringa Specificare un valore per almeno una di queste proprietà: blobPathBeginsWith o blobPathEndsWith.
ignoreEmptyBlobs Indica se con i BLOB a zero byte verrà attivata un'esecuzione della pipeline. Per impostazione predefinita, questa opzione è impostata su true. Boolean true o false No

Esempi di trigger di eventi di archiviazione

Questa sezione fornisce esempi di impostazioni del trigger di eventi di archiviazione.

Importante

È necessario includere il segmento /blobs/ del percorso, come illustrato negli esempi seguenti, ogni volta che si specifica il contenitore e la cartella, il contenitore e il file o il contenitore, la cartella e il file. Per blobPathBeginsWith, l'interfaccia utente verrà aggiunta /blobs/ automaticamente tra la cartella e il nome del contenitore nel file JSON del trigger.

Nota

I trigger di arrivo dei file non sono consigliati come meccanismo di attivazione dai sink del flusso di dati. I flussi di dati eseguono una serie di attività di ridenominazione dei file e di partizione nella cartella di destinazione che possono attivare inavvertitamente un evento di arrivo del file prima del completamento dell'elaborazione dei dati.

Proprietà Esempio Descrizione
Il percorso del BLOB inizia con /containername/ Riceve gli eventi per qualsiasi BLOB nel contenitore.
Il percorso del BLOB inizia con /containername/blobs/foldername/ Riceve gli eventi per qualsiasi BLOB nel contenitore containername e nella cartella foldername.
Il percorso del BLOB inizia con /containername/blobs/foldername/subfoldername/ È anche possibile fare riferimento a una sottocartella.
Il percorso del BLOB inizia con /containername/blobs/foldername/file.txt Riceve gli eventi per un BLOB denominato file.txt nella cartella foldername nel contenitore containername.
Il percorso del BLOB termina con file.txt Riceve gli eventi per un BLOB denominato file.txt in qualsiasi percorso.
Il percorso del BLOB termina con /containername/blobs/file.txt Riceve gli eventi per un BLOB denominato file.txt nel contenitore containername.
Il percorso del BLOB termina con foldername/file.txt Riceve gli eventi per un BLOB denominato file.txt nella cartella foldername in qualsiasi contenitore.

Controllo degli accessi in base al ruolo

Le pipeline di Azure Data Factory e Synapse usano il controllo degli accessi in base al ruolo di Azure per garantire che l'accesso non autorizzato sia in ascolto, sottoscriva gli aggiornamenti da e attivi pipeline collegate agli eventi BLOB, sia strettamente vietato.

  • Per creare correttamente un trigger di evento di Archiviazione esistente o aggiornare un nuovo, l'account Azure connesso al servizio deve avere l'accesso appropriato all'account di archiviazione pertinente. In caso contrario, l'operazione avrà esito negativo con Accesso negato.
  • Azure Data Factory e Azure Synapse non necessitano di autorizzazioni speciali per Griglia di eventi e non è necessario assegnare autorizzazioni di controllo degli accessi in base al ruolo speciali all'entità servizio di Data Factory o Azure Synapse per l'operazione.

Una delle seguenti impostazioni di controllo degli accessi in base al ruolo funziona per il trigger di eventi di archiviazione:

  • Ruolo proprietario dell'account di archiviazione
  • Ruolo collaboratore all'account di archiviazione
  • Microsoft.EventGrid/EventSubscriptions/Autorizzazione di scrittura per l'account di archiviazione /subscriptions/###/resourceGroups/####/providers/Microsoft.Archiviazione/storageAccounts/storageAccountName

ovvero:

  • Quando si crea nella data factory (ad esempio nell'ambiente di sviluppo), l'account Azure connesso deve avere l'autorizzazione precedente
  • Durante la pubblicazione tramite CI/CD, l'account usato per pubblicare il modello di Resource Manager nella factory di test o produzione deve avere l'autorizzazione precedente.

Per comprendere in che modo il servizio offre le due promesse, è possibile fare un passo indietro e dare un'occhiata dietro le quinte. Ecco i flussi di lavoro di alto livello per l'integrazione tra Azure Data Factory/Azure Synapse, Archiviazione e Griglia di eventi.

Creare un nuovo trigger di evento Archiviazione

Questo flusso di lavoro generale descrive come Azure Data Factory interagisce con Griglia di eventi per creare un trigger di eventi Archiviazione. Per Azure Synapse il flusso di dati è lo stesso, con le pipeline di Synapse che assumono il ruolo di Data Factory nel diagramma seguente.

Workflow of storage event trigger creation.

Due chiamate evidenti dai flussi di lavoro:

  • Azure Data Factory e Azure Synapse non effettuano alcun contatto diretto con Archiviazione account. La richiesta di creazione di una sottoscrizione viene invece inoltrata ed elaborata da Griglia di eventi. Di conseguenza, il servizio non necessita dell'autorizzazione per Archiviazione account per questo passaggio.

  • Il controllo di accesso e il controllo delle autorizzazioni vengono eseguiti all'interno del servizio. Prima che il servizio invii una richiesta di sottoscrizione all'evento di archiviazione, controlla l'autorizzazione per l'utente. In particolare, verifica se l'account Azure ha eseguito l'accesso e il tentativo di creare il trigger di evento Archiviazione ha accesso appropriato all'account di archiviazione pertinente. Se il controllo delle autorizzazioni ha esito negativo, anche la creazione del trigger ha esito negativo.

Archiviazione'esecuzione della pipeline del trigger di eventi

Questo flusso di lavoro di alto livello descrive come Archiviazione'esecuzione della pipeline dei trigger di eventi tramite Griglia di eventi. Per Azure Synapse il flusso di dati è lo stesso, con le pipeline di Synapse che assumono il ruolo di Data Factory nel diagramma seguente.

Workflow of storage event triggering pipeline runs.

Esistono tre callout evidenti nel flusso di lavoro correlato alle pipeline di attivazione degli eventi all'interno del servizio:

  • Griglia di eventi usa un modello push che inoltra il messaggio il prima possibile quando l'archiviazione rilascia il messaggio nel sistema. Questo è diverso dal sistema di messaggistica, ad esempio Kafka, in cui viene usato un sistema pull.

  • Trigger di eventi funge da listener attivo per il messaggio in arrivo e attiva correttamente la pipeline associata.

  • Archiviazione trigger di eventi stesso non stabilisce alcun contatto diretto con Archiviazione account

    • Detto questo, se si dispone di un'attività Copia o di un'altra attività all'interno della pipeline per elaborare i dati nell'account Archiviazione, il servizio effettuerà un contatto diretto con Archiviazione, usando le credenziali archiviate nel servizio collegato. Assicurarsi che il servizio collegato sia configurato in modo appropriato
    • Tuttavia, se non si fa riferimento all'account Archiviazione nella pipeline, non è necessario concedere l'autorizzazione al servizio per accedere all'account Archiviazione