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.
Passare alla scheda Modifica in Data Factory o alla scheda Integrazione in Azure Synapse.
Selezionare Trigger dal menu, quindi selezionare Nuovo/Modifica.
Nella pagina Aggiungi trigger selezionare Scegli trigger e quindi + Nuovo.
Selezionare il tipo di trigger Archiviazione Evento
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 .
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/
e2018/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, conapril/shoes.csv
verrà attivato un evento in tutti i file denominatishoes.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.
- Il percorso del BLOB inizia con: il percorso del BLOB deve iniziare con un percorso di cartella. I valori validi includono
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.
Selezionare se il trigger ignora i BLOB con zero byte.
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.
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.
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 pipelineNell'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 parametrisourceFolder
della pipeline esourceFile
, che possono essere usati in tutta la pipeline come@pipeline().parameters.sourceFolder
e@pipeline().parameters.sourceFile
rispettivamente.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 | Sì |
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.
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.
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
Contenuto correlato
- Per informazioni dettagliate sui trigger, vedere Esecuzione e trigger di pipeline.
- Informazioni su come fare riferimento ai metadati dei trigger nella pipeline, vedere Riferimenti ai metadati dei trigger nelle esecuzioni della pipeline