Delen via


Een trigger maken waarmee een pijplijn wordt uitgevoerd als reactie op een opslag gebeurtenis

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Aanbeveling

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel worden de opslaggebeurtenistriggers beschreven, die u kunt maken in uw Azure Data Factory- of Azure Synapse Analytics-pijplijnen.

Gebeurtenisgestuurde architectuur is een gemeenschappelijk gegevensintegratiepatroon dat productie, detectie, verbruik en reactie op gebeurtenissen omvat. Scenario's voor gegevensintegratie vereisen vaak dat klanten pijplijnen activeren die worden geactiveerd vanuit gebeurtenissen in een Azure Storage-account, zoals de aankomst of verwijdering van een bestand in een Azure Blob Storage-account. Data Factory- en Azure Synapse Analytics-pijplijnen integreren systeemeigen met Azure Event Grid, waarmee u pijplijnen op dergelijke gebeurtenissen kunt activeren.

Overwegingen voor gebeurtenissen die opslag activeren

Houd rekening met de volgende punten wanneer u triggers voor opslagevenementen gebruikt:

  • De integratie die in dit artikel wordt beschreven, is afhankelijk van Azure Event Grid. Zorg ervoor dat uw abonnement is geregistreerd bij de Event Grid-resourceprovider. Zie Resourceproviders en -typen voor meer informatie. U moet de Microsoft.EventGrid/eventSubscriptions/ actie kunnen uitvoeren. Deze actie maakt deel uit van de EventGrid EventSubscription Contributor ingebouwde rol.
  • Als u deze functie gebruikt in Azure Synapse Analytics, moet u ervoor zorgen dat u ook uw abonnement registreert bij de Data Factory-resourceprovider. Anders krijgt u een bericht met de mededeling dat het maken van een gebeurtenisabonnement is mislukt.
  • Als het Blob Storage-account zich achter een privé-eindpunt bevindt en de toegang tot openbare netwerken blokkeert, moet u netwerkregels configureren om communicatie van Blob Storage naar Event Grid toe te staan. U kunt opslagtoegang verlenen tot vertrouwde Azure-services, zoals Event Grid, de volgende opslagdocumentatie of privé-eindpunten configureren voor Event Grid die zijn toegewezen aan een adresruimte voor een virtueel netwerk, volgens de Event Grid-documentatie.
  • De opslaggebeurtenistrigger ondersteunt momenteel alleen Azure Data Lake Storage Gen2- en algemeen gebruik 2-opslagaccounts. Als u werkt met SFTP-opslagevenementen (Secure File Transfer Protocol), moet u ook de SFTP-gegevens-API opgeven onder de filtersectie. Vanwege een Beperking van Event Grid biedt Data Factory alleen ondersteuning voor maximaal 500 triggers voor opslagevenementen per opslagaccount.
  • Als u een nieuwe trigger voor opslaggebeurtenissen wilt maken of een bestaande wilt wijzigen, moet het Azure-account dat u gebruikt om u aan te melden bij de service en de trigger voor opslaggebeurtenissen te publiceren over de juiste machtiging voor op rollen gebaseerd toegangsbeheer (Azure RBAC) voor het opslagaccount beschikken. Er zijn geen andere machtigingen vereist. Service-principal voor Azure Data Factory en Azure Synapse Analytics heeft geen speciale machtiging nodig voor het opslagaccount of Event Grid. Zie de sectie Op rollen gebaseerd toegangsbeheer voor meer informatie over toegangsbeheer .
  • Als u een Azure Resource Manager-vergrendeling hebt toegepast op uw opslagaccount, kan dit van invloed zijn op de mogelijkheid van de blobtrigger om blobs te maken of te verwijderen. Een ReadOnly vergrendeling voorkomt zowel het maken als verwijderen, terwijl een DoNotDelete vergrendeling verwijdering voorkomt. Zorg ervoor dat u rekening houdt met deze beperkingen om eventuele problemen met uw triggers te voorkomen.
  • We raden het af om bestandsaankomsttriggers als triggermechanisme bij gegevensstroomsinks te gebruiken. Gegevensstromen voeren een aantal taken uit voor het hernoemen en herschikken van bestanden in de doelmap, die onbedoeld een bestandsaankomstgebeurtenis kunnen activeren voordat uw gegevens volledig zijn verwerkt.

Een trigger maken met de gebruikersinterface

In deze sectie wordt beschreven hoe u een opslag-gebeurtenistrigger maakt in de gebruikersinterface van de pijplijn van Azure Data Factory en Azure Synapse Analytics.

  1. Ga naar het tabblad Bewerken in Data Factory of het tabblad Integreren in Azure Synapse Analytics.

  2. Selecteer Trigger in het menu en selecteer Vervolgens Nieuw/Bewerken.

  3. Op de pagina Triggers toevoegen, selecteer Trigger kiezen, en selecteer vervolgens + Nieuw.

  4. Selecteer het triggertype Storage-gebeurtenissen.

  5. Selecteer uw opslagaccount in de vervolgkeuzelijst van het Azure-abonnement of handmatig met behulp van de resource-id van het opslagaccount. Kies de container waarop u de gebeurtenissen wilt laten plaatsvinden. Containerselectie is vereist, maar het selecteren van alle containers kan leiden tot een groot aantal gebeurtenissen.

  6. Met de Blob path begins with en Blob path ends with eigenschappen kunt u de containers, mappen en blobnamen opgeven waarvoor u gebeurtenissen wilt ontvangen. Voor de trigger voor opslagevenementen moet ten minste één van deze eigenschappen worden gedefinieerd. U kunt verschillende patronen gebruiken voor zowel als Blob path begins withBlob path ends with eigenschappen, zoals wordt weergegeven in de voorbeelden verderop in dit artikel.

    • Blob path begins with: Het blobpad moet beginnen met een mappad. Geldige waarden zijn onder andere 2018/ en 2018/april/shoes.csv. Dit veld kan niet worden geselecteerd als er geen container is geselecteerd.
    • Blob path ends with: Het blobpad moet eindigen met een bestandsnaam of extensie. Geldige waarden zijn onder andere shoes.csv en .csv. Namen van containers en mappen, indien opgegeven, moeten worden gescheiden door een /blobs/ segment. Een container met de naam orders kan bijvoorbeeld een waarde hebben van /orders/blobs/2018/april/shoes.csv. Als u een map in een container wilt opgeven, laat u het voorloopteken / weg. Hiermee wordt bijvoorbeeld april/shoes.csv een gebeurtenis geactiveerd voor elk bestand met de naam shoes.csv in een map genaamd april binnen elke container.

    Houd er rekening mee dat Blob path begins with en Blob path ends with de enige patroonovereenkomsten zijn die zijn toegestaan in een opslaggebeurtenistrigger. Andere soorten wildcards worden niet ondersteund voor het type trigger.

  7. Selecteer of uw trigger reageert op een door een blob gemaakte gebeurtenis, een verwijderde blob-gebeurtenis of beide. In uw opgegeven opslaglocatie activeert elke gebeurtenis de Data Factory- en Azure Synapse Analytics-pijplijnen die aan de trigger zijn gekoppeld.

    Schermopname van een pagina voor het maken van een opslagevenement-trigger.

  8. Selecteer of uw trigger blobs met nul bytes wel of niet negeert.

  9. Nadat u de trigger hebt geconfigureerd, selecteert u Volgende: Gegevensvoorbeeld. In dit scherm ziet u de bestaande blobs die overeenkomen met de configuratie van uw opslaggebeurtenistrigger. Zorg ervoor dat u specifieke filters hebt. Het configureren van filters die te breed zijn, kan overeenkomen met een groot aantal bestanden die zijn gemaakt of verwijderd en die van invloed kunnen zijn op uw kosten. Nadat de filtervoorwaarden zijn geverifieerd, selecteert u Voltooien.

    Schermopname van de preview-pagina van de trigger voor opslagevenementen.

  10. Als u een pijplijn aan deze trigger wilt koppelen, gaat u naar het pijplijncanvas en selecteert u Trigger>Nieuw/Bewerken. Wanneer het zijvenster wordt weergegeven, selecteert u de vervolgkeuzelijst Trigger kiezen en selecteert u de trigger die u hebt gemaakt. Selecteer Volgende: Gegevensvoorbeeld om te bevestigen dat de configuratie juist is. Selecteer vervolgens Volgende om te controleren of de voorbeeldweergave van de gegevens juist is.

  11. Als uw pijplijn parameters bevat, kunt u deze opgeven in het zijpaneel Parameters voor het starten van triggers. De trigger voor opslaggebeurtenissen legt het mappad en de bestandsnaam van de blob vast in de eigenschappen @triggerBody().folderPath en @triggerBody().fileName. Als u de waarden van deze eigenschappen in een pijplijn wilt gebruiken, moet u de eigenschappen toewijzen aan pijplijnparameters. Nadat u de eigenschappen hebt toegewezen aan parameters, hebt u toegang tot de waarden die door de trigger zijn vastgelegd via de @pipeline().parameters.parameterName expressie in de pijplijn. Zie Referentietriggermetagegevens in pijplijnen voor een gedetailleerde uitleg.

    Schermopname die de toewijzing van eigenschappen van de opslaggebeurtenis-trigger aan pijplijnparameters toont.

    In het voorgaande voorbeeld is de trigger geconfigureerd om te worden geactiveerd wanneer een blobpad dat eindigt op .csv wordt gemaakt in de map event-testing in de container sample-data. De folderPath en fileName eigenschappen leggen de locatie van de nieuwe blob vast. Wanneer MoviesDB.csv bijvoorbeeld wordt toegevoegd aan het pad sample-data/event-testing, @triggerBody().folderPath heeft deze een waarde van sample-data/event-testing en @triggerBody().fileName een waarde van moviesDB.csv. Deze waarden worden in het voorbeeld toegewezen aan de pijplijnparameters sourceFolder en sourceFile, die in de pijplijn kunnen worden gebruikt als @pipeline().parameters.sourceFolder respectievelijk @pipeline().parameters.sourceFile.

  12. Nadat u klaar bent, selecteert u Voltooien.

JSON-schema

De volgende tabel bevat een overzicht van de schema-elementen die betrekking hebben op triggers voor opslagevenementen.

JSON-element Beschrijving Typologie Toegestane waarden Vereist
omvang De resource-id van Azure Resource Manager van het opslagaccount. Snaar / Touwtje Azure Resource Manager-id Ja.
gebeurtenissen Het type gebeurtenissen dat ervoor zorgt dat deze trigger wordt geactiveerd. Array Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Ja, elke combinatie van deze waarden.
blobPathBeginsWith Het blobpad moet beginnen met het patroon dat is opgegeven om de trigger te activeren. Hiermee wordt bijvoorbeeld alleen de trigger van /records/blobs/december/ geactiveerd voor blobs in de map december onder de container records. Snaar / Touwtje Geef een waarde op voor ten minste één van deze eigenschappen: blobPathBeginsWith of blobPathEndsWith.
blobPathEndsWith Het blobpad moet eindigen met het opgegeven patroon zodat de trigger geactiveerd wordt. Bijvoorbeeld, december/boxes.csv vuurt alleen de trigger af voor blobs met de naam boxes in een december mapje. Snaar / Touwtje Geef een waarde op voor ten minste één van deze eigenschappen: blobPathBeginsWith of blobPathEndsWith.
ignoreEmptyBlobs Ongeacht of blobs met nul-byte een pijplijnuitvoering activeren. Dit is standaard ingesteld op true. Booleaans waar of onwaar Nee

Voorbeelden van triggers voor opslagevenementen

In deze sectie vindt u voorbeelden van instellingen voor triggers voor opslagevenementen.

Belangrijk

U moet het /blobs/ segment van het pad opnemen, zoals wordt weergegeven in de volgende voorbeelden, wanneer u een container en map, container en bestand of container, map en bestand opgeeft. Voor blobPathBeginsWith voegt de gebruikersinterface automatisch /blobs/ toe tussen de map en de containernaam in de trigger-JSON.

Eigendom Voorbeeld Beschrijving
Blob path begins with /containername/ Ontvangt gebeurtenissen voor elke blob in de container.
Blob path begins with /containername/blobs/foldername/ Ontvangt gebeurtenissen voor blobs in de containername container en foldername map.
Blob path begins with /containername/blobs/foldername/subfoldername/ U kunt ook naar een submap verwijzen.
Blob path begins with /containername/blobs/foldername/file.txt Ontvangt gebeurtenissen voor een blob met de naam file.txt in de foldername map onder de containername container.
Blob path ends with file.txt Ontvangt gebeurtenissen voor een blob met de naam file.txt in een willekeurig pad.
Blob path ends with /containername/blobs/file.txt Ontvangt gebeurtenissen voor een blob met de naam file.txt onder de container containername.
Blob path ends with foldername/file.txt Ontvangt gebeurtenissen voor een blob met de naam file.txt in de foldername map onder een container.

Op rollen gebaseerd toegangsbeheer

Data Factory- en Azure Synapse Analytics-pijplijnen maken gebruik van Azure rolgebaseerd toegangsbeheer (Azure RBAC) om ervoor te zorgen dat onbevoegde toegang tot het luisteren naar, het abonneren op updates van en het triggeren van pijplijnen die zijn gekoppeld aan blobgebeurtenissen, strikt verboden zijn.

  • Als u een nieuwe opslag gebeurtenistrigger wilt maken of een bestaande wilt bijwerken, moet het Azure-account dat is aangemeld bij de service, over de juiste toegang tot het relevante opslagaccount beschikken. Anders mislukt de bewerking met het bericht 'Toegang geweigerd'.
  • Data Factory en Azure Synapse Analytics hebben geen speciale machtigingen nodig voor uw Event Grid-exemplaar en u hoeft geen speciale RBAC-machtiging toe te wijzen aan de Data Factory- of Azure Synapse Analytics-service-principal voor de bewerking.

Een van de volgende RBAC-instellingen werkt voor triggers voor opslaggebeurtenissen.

  • Rol van eigenaar voor het opslagaccount
  • Bijdragersrol voor het opslagaccount
  • Microsoft.EventGrid/EventSubscriptions/Write machtiging voor het opslagaccount /subscriptions/####/resourceGroups/####/providers/Microsoft.Storage/storageAccounts/storageAccountName

Specifiek:

  • Wanneer u bijvoorbeeld in de data factory ontwerpt (in de ontwikkelomgeving), moet het Azure-account dat is aangemeld, de voorgaande machtiging hebben.
  • Wanneer u publiceert via continue integratie en continue levering, moet het account dat wordt gebruikt voor het publiceren van de Azure Resource Manager-sjabloon in de test- of productiefactory de voorgaande machtiging hebben.

Als u wilt weten hoe de service de twee beloften levert, gaan we een stap terug en kijken we achter de schermen. Hier volgen de werkstromen op hoog niveau voor integratie tussen Data Factory/Azure Synapse Analytics, Storage en Event Grid.

Een nieuwe trigger voor opslag gebeurtenis maken

In deze werkstroom op hoog niveau wordt beschreven hoe Data Factory communiceert met Event Grid om een trigger voor opslaggebeurtenissen te maken. De gegevensstroom is hetzelfde in Azure Synapse Analytics, waarbij Azure Synapse Analytics-pijplijnen de rol van de data factory in het volgende diagram nemen.

Diagram met een werkproces voor het maken van een trigger voor een opslaggebeurtenis.

Twee opvallende aandachtspunten van de werkstromen:

  • Data Factory en Azure Synapse Analytics maken geen rechtstreeks contact met het opslagaccount. De aanvraag voor het maken van een abonnement wordt in plaats daarvan doorGegeven en verwerkt door Event Grid. De service heeft geen toegang nodig tot het opslagaccount voor deze stap.
  • Toegangsbeheer en machtigingscontrole vinden plaats in de service. Voordat de service een aanvraag verzendt om u te abonneren op een opslag gebeurtenis, controleert deze de machtiging voor de gebruiker. In het bijzonder wordt gecontroleerd of het Azure-account dat is aangemeld en probeert de trigger voor opslaggebeurtenissen te maken, de juiste toegang heeft tot het relevante opslagaccount. Als de machtigingscontrole mislukt, mislukt het maken van triggers ook.

Pijplijnuitvoering van opslaggebeurtenistrigger

In deze overzichtelijke werkstroom wordt beschreven hoe pijplijnen voor opslaggebeurtenistriggers verlopen via Event Grid. Voor Azure Synapse Analytics is de gegevensstroom hetzelfde, waarbij Azure Synapse Analytics-pijplijnen de rol van Data Factory hebben in het volgende diagram.

Diagram dat de werkstroom toont voor pijplijnuitvoeringen die door opslaggebeurtenissen worden getriggerd.

Drie opvallende elementen in de werkstroom zijn gerelateerd aan pijplijnen voor gebeurtenistriggers binnen de service:

  • Event Grid maakt gebruik van een Push-model dat het bericht zo snel mogelijk doorsturen wanneer de opslag het bericht in het systeem laat vallen. Deze benadering verschilt van een berichtensysteem, zoals Kafka, waarbij een Pull-systeem wordt gebruikt.

  • De gebeurtenistrigger fungeert als een actieve listener voor het binnenkomende bericht en activeert de bijbehorende pijplijn correct.

  • De trigger voor de opslag gebeurtenis zelf maakt geen direct contact met het opslagaccount.

    • Als u een Copy-activiteit of een andere activiteit in de pijplijn hebt om de gegevens in het opslagaccount te verwerken, maakt de service rechtstreeks contact met het opslagaccount met behulp van de referenties die zijn opgeslagen in de gekoppelde service. Zorg ervoor dat de gekoppelde service juist is ingesteld.
    • Als u geen verwijzing maakt naar het opslagaccount in de pijplijn, hoeft u de service geen toestemming te geven voor toegang tot het opslagaccount.