Skapa en utlösare som kör en pipeline som svar på en lagringshändelse

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

I den här artikeln beskrivs de utlösare för lagringshändelser som du kan skapa i dina Data Factory- eller Synapse-pipelines.

Händelsedriven arkitektur (EDA) är ett vanligt dataintegreringsmönster som omfattar produktion, identifiering, förbrukning och reaktion på händelser. Dataintegreringsscenarier kräver ofta att kunder utlöser pipelines baserat på händelser som inträffar i lagringskontot, till exempel ankomst eller borttagning av en fil i Azure Blob Storage-kontot. Data Factory- och Synapse-pipelines integreras internt med Azure Event Grid, vilket gör att du kan utlösa pipelines för sådana händelser.

Kommentar

Integreringen som beskrivs i den här artikeln beror på Azure Event Grid. Kontrollera att din prenumeration är registrerad hos Event Grid-resursprovidern. Mer information finns i Resursprovidrar och typer. Du måste kunna utföra åtgärden Microsoft.EventGrid/eventSubscriptions/* . Den här åtgärden är en del av den inbyggda rollen EventGrid EventSubscription-deltagare.

Viktigt!

Om du använder den här funktionen i Azure Synapse Analytics kontrollerar du att din prenumeration också är registrerad hos Data Factory-resursprovidern, eller så får du ett felmeddelande om att det inte gick att skapa en händelseprenumeration.

Kommentar

Om bloblagringskontot finns bakom en privat slutpunkt och blockerar åtkomst till offentliga nätverk måste du konfigurera nätverksregler för att tillåta kommunikation från bloblagring till Azure Event Grid. Du kan antingen bevilja lagringsåtkomst till betrodda Azure-tjänster, till exempel Event Grid, följa lagringsdokumentationen eller konfigurera privata slutpunkter för Event Grid som mappar till VNet-adressutrymme enligt Event Grid-dokumentationen

Skapa en utlösare med användargränssnittet

Det här avsnittet visar hur du skapar en utlösare för lagringshändelser i användargränssnittet för Azure Data Factory och Synapse-pipelinen.

  1. Växla till fliken Redigera i Data Factory eller fliken Integrera i Azure Synapse.

  2. Välj Utlösare på menyn och välj sedan Ny/Redigera.

  3. På sidan Lägg till utlösare väljer du Välj utlösare... och sedan +Nytt.

  4. Välj utlösartyp Lagringshändelse

  5. Välj ditt lagringskonto i listrutan Azure-prenumeration eller manuellt med hjälp av resurs-ID:t för lagringskontot. Välj vilken container du vill att händelserna ska inträffa på. Val av container krävs, men tänk på att om du väljer alla containrar kan det leda till ett stort antal händelser.

    Kommentar

    Lagringshändelseutlösaren stöder för närvarande endast Azure Data Lake Storage Gen2 och lagringskonton av typen Allmänt syfte version 2. Om du arbetar med SFTP-lagringshändelser måste du också ange SFTP-data-API:et under filtreringsavsnittet. På grund av en Azure Event Grid-begränsning stöder Azure Data Factory endast högst 500 utlösare för lagringshändelser per lagringskonto. Om du når gränsen kontaktar du supporten för rekommendationer och ökar gränsen vid utvärdering av Event Grid-teamet.

    Kommentar

    Om du vill skapa en ny eller ändra en befintlig lagringshändelseutlösare måste Azure-kontot som används för att logga in på tjänsten och publicera utlösaren för lagringshändelser ha rätt behörighet för rollbaserad åtkomstkontroll (Azure RBAC) för lagringskontot. Ingen ytterligare behörighet krävs: Tjänstens huvudnamn för Azure Data Factory och Azure Synapse behöver inte särskild behörighet till vare sig lagringskontot eller Event Grid. Mer information om åtkomstkontroll finns i avsnittet Rollbaserad åtkomstkontroll .

  6. Blobsökvägen börjar med och Blobsökvägen slutar med egenskaper så att du kan ange de containrar, mappar och blobnamn som du vill ta emot händelser för. Utlösaren för lagringshändelsen kräver att minst en av dessa egenskaper definieras. Du kan använda olika mönster för både blobsökvägen börjar med och Blobsökvägen slutar med egenskaper, som du ser i exemplen senare i den här artikeln.

    • Blobsökvägen börjar med: Blobsökvägen måste börja med en mappsökväg. Giltiga värden inkluderar 2018/ och 2018/april/shoes.csv. Det går inte att välja det här fältet om en container inte är markerad.
    • Blobsökvägen slutar med: Blobsökvägen måste sluta med ett filnamn eller filnamnstillägg. Giltiga värden inkluderar shoes.csv och .csv. Container- och mappnamn, när de anges, måste avgränsas med ett /blobs/ segment. En container med namnet "orders" kan till exempel ha värdet /orders/blobs/2018/april/shoes.csv. Om du vill ange en mapp i en container utelämnar du det inledande tecknet /. Till exempel april/shoes.csv utlöser en händelse på en fil med namnet shoes.csv i mappen "april" i valfri container.
    • Observera att blobsökvägen börjar med och slutar med är den enda mönstermatchning som tillåts i Storage Event Trigger. Andra typer av jokerteckenmatchning stöds inte för utlösartypen.
  7. Välj om utlösaren ska svara på en blob skapad händelse, blobborttagningshändelse eller båda. På den angivna lagringsplatsen utlöser varje händelse de Data Factory- och Synapse-pipelines som är associerade med utlösaren.

    Screenshot of storage event trigger creation page.

  8. Välj om utlösaren ska ignorera blobar med noll byte.

  9. När du har konfigurerat utlösaren klickar du på Nästa: Dataförhandsgranskning. Den här skärmen visar de befintliga blobar som matchas av konfigurationen av lagringshändelseutlösaren. Kontrollera att du har specifika filter. Att konfigurera filter som är för breda kan matcha ett stort antal filer som skapats/tagits bort och kan påverka kostnaden avsevärt. När filtervillkoren har verifierats klickar du på Slutför.

    Screenshot of storage event trigger preview page.

  10. Om du vill koppla en pipeline till den här utlösaren går du till pipelinearbetsytan och klickar på Utlösare och väljer Ny/Redigera. När sidonavigering visas klickar du på listrutan Välj utlösare... och väljer den utlösare som du skapade. Klicka på Nästa: Dataförhandsgranskning för att bekräfta att konfigurationen är korrekt och sedan Nästa för att verifiera att dataförhandsgranskningen är korrekt.

  11. Om pipelinen har parametrar kan du ange dem på parametersidans navigeringsfält för utlösaren. Utlösaren för lagringshändelsen avbildar mappsökvägen och filnamnet för bloben i egenskaperna @triggerBody().folderPath och @triggerBody().fileName. Om du vill använda värdena för dessa egenskaper i en pipeline måste du mappa egenskaperna till pipelineparametrar. När du har mappat egenskaperna till parametrar kan du komma åt de värden som samlas in av utlösaren via @pipeline().parameters.parameterName uttrycket i hela pipelinen. Detaljerad förklaring finns i Referensutlösarmetadata i pipelines

    Screenshot of storage event trigger mapping properties to pipeline parameters.

    I föregående exempel konfigureras utlösaren så att den utlöses när en blobsökväg som slutar på .csv skapas i mappen händelsetestning i containern sample-data. Egenskaperna folderPath och fileName avbildar platsen för den nya bloben. När Till exempel MoviesDB.csv läggs till i sökvägen sample-data/event-testing, @triggerBody().folderPath har värdet sample-data/event-testing och @triggerBody().fileName har värdet moviesDB.csv. Dessa värden mappas i exemplet till pipelineparametrarna sourceFolder och sourceFile, som kan användas i hela pipelinen som @pipeline().parameters.sourceFolder respektive @pipeline().parameters.sourceFile .

  12. Klicka på Slutför när du är klar.

JSON-schema

Följande tabell innehåller en översikt över de schemaelement som är relaterade till utlösare för lagringshändelser:

JSON-element Beskrivning Typ Tillåtna värden Krävs
Omfattning Azure Resource Manager-resurs-ID för lagringskontot. String Azure Resource Manager-ID Ja
Händelser Den typ av händelser som gör att utlösaren utlöses. Matris Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Ja, alla kombinationer av dessa värden.
blobPathBeginsWith Blobsökvägen måste börja med det mönster som anges för att utlösaren ska utlösas. Till /records/blobs/december/ exempel utlöses bara utlösaren för blobar i december mappen under containern records . String Ange ett värde för minst en av dessa egenskaper: blobPathBeginsWith eller blobPathEndsWith.
blobPathEndsWith Blobsökvägen måste sluta med det mönster som anges för att utlösaren ska utlösas. Till december/boxes.csv exempel utlöses bara utlösaren för blobar med namnet boxes i en december mapp. String Ange ett värde för minst en av dessa egenskaper: blobPathBeginsWith eller blobPathEndsWith.
ignoreEmptyBlobs Om blobbar med noll byte utlöser en pipelinekörning eller inte. Som standard är detta inställt på sant. Booleskt sant eller falskt Nej

Exempel på utlösare för lagringshändelser

Det här avsnittet innehåller exempel på inställningar för utlösare för lagringshändelser.

Viktigt!

Du måste inkludera /blobs/ sökvägens segment, som du ser i följande exempel, när du anger container och mapp, container och fil eller container, mapp och fil. För blobPathBeginsWith läggs användargränssnittet automatiskt till /blobs/ mellan mappen och containernamnet i utlösarens JSON.

Kommentar

Utlösare för filinkomst rekommenderas inte som en utlösande mekanism från dataflödesmottagare. Dataflöden utför ett antal aktiviteter för filbyte och partitionsfilsblandning i målmappen som inadvertent kan utlösa en händelse för filinmatning innan data bearbetas fullständigt.

Property Exempel beskrivning
Blobsökvägen börjar med /containername/ Tar emot händelser för alla blobar i containern.
Blobsökvägen börjar med /containername/blobs/foldername/ Tar emot händelser för alla blobar i containern containername och foldername mappen.
Blobsökvägen börjar med /containername/blobs/foldername/subfoldername/ Du kan också referera till en undermapp.
Blobsökvägen börjar med /containername/blobs/foldername/file.txt Tar emot händelser för en blob med namnet file.txt i foldername mappen under containern containername .
Blobsökvägen slutar med file.txt Tar emot händelser för en blob med namnet file.txt i valfri sökväg.
Blobsökvägen slutar med /containername/blobs/file.txt Tar emot händelser för en blob med namnet file.txt under containern containername.
Blobsökvägen slutar med foldername/file.txt Tar emot händelser för en blob med namnet file.txt i foldername mappen under valfri container.

Rollbaserad åtkomstkontroll

Azure Data Factory- och Synapse-pipelines använder rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att säkerställa att obehörig åtkomst att lyssna på, prenumerera på uppdateringar från och utlösa pipelines som är länkade till blobhändelser är strängt förbjudna.

  • För att kunna skapa en ny eller uppdatera en befintlig utlösare för lagringshändelser måste Det Azure-konto som loggas in på tjänsten ha lämplig åtkomst till det relevanta lagringskontot. Annars misslyckas åtgärden med åtkomst nekad.
  • Azure Data Factory och Azure Synapse behöver ingen särskild behörighet till Event Grid och du behöver inte tilldela särskild RBAC-behörighet till Data Factory eller Azure Synapse-tjänstens huvudnamn för åtgärden.

Någon av följande RBAC-inställningar fungerar för utlösare för lagringshändelser:

  • Ägarroll till lagringskontot
  • Deltagarroll till lagringskontot
  • Microsoft.EventGrid/EventSubscriptions/Write-behörighet till lagringskonto /subscriptions/####/resourceGroups/#####/providers/Microsoft.Storage/storageAccounts/storageAccountName

Mer specifikt:

  • När du redigerar i datafabriken (till exempel i utvecklingsmiljön) måste det Azure-konto som loggas in ha behörigheten ovan
  • När du publicerar via CI/CD måste det konto som används för att publicera ARM-mallen i test- eller produktionsfabriken ha behörigheten ovan.

För att förstå hur tjänsten levererar de två löftena ska vi ta ett steg tillbaka och ta en titt bakom kulisserna. Här är de övergripande arbetsflödena för integrering mellan Azure Data Factory/Azure Synapse, Storage och Event Grid.

Skapa en ny utlösare för lagringshändelse

Det här övergripande arbetsflödet beskriver hur Azure Data Factory interagerar med Event Grid för att skapa en utlösare för lagringshändelser. För Azure Synapse är dataflödet detsamma, där Synapse-pipelines tar rollen som Data Factory i diagrammet nedan.

Workflow of storage event trigger creation.

Två märkbara utrop från arbetsflödena:

  • Azure Data Factory och Azure Synapse kontaktar inte lagringskontot direkt. Begäran om att skapa en prenumeration vidarebefordras i stället och bearbetas av Event Grid. Därför behöver tjänsten ingen behörighet till lagringskontot för det här steget.

  • Åtkomstkontroll och behörighetskontroll sker inom tjänsten. Innan tjänsten skickar en begäran om att prenumerera på lagringshändelsen kontrollerar den användarens behörighet. Mer specifikt kontrollerar den om Azure-kontot som loggas in och försöker skapa utlösaren för lagringshändelsen har lämplig åtkomst till det relevanta lagringskontot. Om behörighetskontrollen misslyckas misslyckas även skapandet av utlösaren.

Pipelinekörning av utlösare för lagringshändelse

De här arbetsflödena på hög nivå beskriver hur Storage-händelseutlösare pipeline körs via Event Grid. För Azure Synapse är dataflödet detsamma, där Synapse-pipelines tar rollen som Data Factory i diagrammet nedan.

Workflow of storage event triggering pipeline runs.

Det finns tre märkbara utrop i arbetsflödet som rör pipelines för händelseutlösande i tjänsten:

  • Event Grid använder en push-modell som vidarebefordrar meddelandet så snart som möjligt när lagringen släpper meddelandet i systemet. Detta skiljer sig från meddelandesystemet, till exempel Kafka där ett Pull-system används.

  • Händelseutlösaren fungerar som en aktiv lyssnare till det inkommande meddelandet och utlöser den associerade pipelinen korrekt.

  • Själva lagringshändelseutlösaren tar ingen direkt kontakt med lagringskontot

    • Om du har en kopieringsaktivitet eller annan aktivitet i pipelinen för att bearbeta data i lagringskontot kommer tjänsten att ta direkt kontakt med Storage med hjälp av autentiseringsuppgifterna som lagras i den länkade tjänsten. Kontrollera att länkad tjänst har konfigurerats korrekt
    • Men om du inte refererar till lagringskontot i pipelinen behöver du inte ge tjänsten behörighet att komma åt lagringskontot