Utwórz wyzwalacz uruchamiający potok w odpowiedzi na zdarzenie magazynowania

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Data Factory w usłudze Microsoft Fabric jest następną generacją Azure Data Factory z prostszą architekturą, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz integrować dane, zacznij od Fabric Data Factory. Istniejące obciążenia ADF można zaktualizować do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analiz w czasie rzeczywistym oraz raportowania.

Artykuł ten opisuje wyzwalacze zdarzeń związanych z magazynem, które można utworzyć w potokach Azure Data Factory lub Azure Synapse Analytics.

Architektura sterowana zdarzeniami to typowy wzorzec integracji danych, który obejmuje produkcję, wykrywanie, zużycie i reakcję na zdarzenia. Scenariusze integracji danych często wymagają od klientów wyzwalania potoków wyzwalanych ze zdarzeń na koncie Azure Storage, takich jak przybycie lub usunięcie pliku na koncie Azure Blob Storage. Potoki usługi Data Factory i Azure Synapse Analytics natywnie integrują się z Azure Event Grid co umożliwia wyzwalanie potoków na takich zdarzeniach.

Zagadnienia dotyczące aktywacji zdarzeń przechowywania danych

Podczas korzystania z wyzwalaczy zdarzeń magazynu należy wziąć pod uwagę następujące kwestie:

  • Integracja opisana w tym artykule zależy od Azure Event Grid. Upewnij się, że subskrypcja jest zarejestrowana u dostawcy zasobów usługi Event Grid. Aby uzyskać więcej informacji, zobacz Dostawcy zasobów i ich typy. Musisz móc wykonać działanie Microsoft.EventGrid/eventSubscriptions/. Akcja ta jest częścią wbudowanej roli EventGrid EventSubscription Contributor.
  • Jeśli używasz tej funkcji w Azure Synapse Analytics, upewnij się, że subskrypcja została również zarejestrowana u dostawcy zasobów usługi Data Factory. W przeciwnym razie zostanie wyświetlony komunikat z informacją, że "tworzenie subskrypcji zdarzeń nie powiodło się".
  • Jeśli konto Blob Storage znajduje się za punktem końcowym private i blokuje dostęp do sieci publicznej, należy skonfigurować reguły sieci, aby zezwalać na komunikację z Blob Storage do usługi Event Grid. Możesz udzielić dostępu magazynu do zaufanych usług Azure, takich jak Event Grid, zgodnie z dokumentacją Storage lub skonfigurować prywatne punkty końcowe dla usługi Event Grid, które mapują się na przestrzeń adresową sieci wirtualnej, postępując zgodnie z dokumentacją usługi Event Grid.
  • Wyzwalacz zdarzenia magazynu obsługuje obecnie tylko konta magazynu Azure Data Lake Storage Gen2 i konta magazynu ogólnego przeznaczenia wersji 2. Jeśli pracujesz ze zdarzeniami magazynu protokołu bezpiecznego transferu plików (SFTP), musisz również określić API danych SFTP w sekcji filtrowania. Ze względu na ograniczenia Event Grid, usługa Data Factory obsługuje maksymalnie 500 wyzwalaczy zdarzeń magazynowych na jedno konto magazynowe.
  • Aby utworzyć nowy wyzwalacz zdarzenia magazynu lub zmodyfikować istniejący, konto Azure, którego używasz do logowania się do usługi i publikowania wyzwalacza zdarzeń magazynu, musi mieć odpowiednie uprawnienia kontroli dostępu opartej na rolach (Azure RBAC) na koncie magazynu. Żadne inne uprawnienia nie są wymagane. Rejestrator usługi dla Azure Data Factory i Azure Synapse Analytics nie musi mieć specjalnych uprawnień do konta magazynu lub Event Grid. Aby uzyskać więcej informacji na temat kontroli dostępu, zobacz sekcję Kontrola dostępu oparta na rolach.
  • Jeśli zastosowano blokadę Azure Resource Manager do konta magazynu, może to wpłynąć na zdolność wyzwalacza blob do tworzenia lub usuwania blobów. Blokada ReadOnly uniemożliwia tworzenie i usuwanie, a blokada DoNotDelete uniemożliwia usunięcie. Upewnij się, że uwzględnisz te ograniczenia, aby uniknąć problemów z wyzwalaczami.
  • Nie zalecamy używania wyzwalaczy przybycia plików jako mechanizmu wyzwalającego wyjść przepływu danych. Przepływy danych wykonują szereg zadań zmiany nazw plików i przetasowania plików partycji w folderze docelowym, które mogą przypadkowo wyzwolić zdarzenie pojawienia się pliku przed zakończeniem przetwarzania danych.

Tworzenie wyzwalacza za pomocą interfejsu użytkownika

W tej sekcji przedstawiono sposób tworzenia wyzwalacza zdarzenia magazynowania w interfejsie użytkownika potoków Azure Data Factory i Azure Synapse Analytics.

  1. Przejdź do karty Edit w usłudze Data Factory lub Integrate w Azure Synapse Analytics.

  2. W menu wybierz pozycję Wyzwalacz, a następnie wybierz pozycję Nowy/Edytuj.

  3. Na stronie Dodawanie wyzwalaczy wybierz pozycję Wybierz wyzwalacz, a następnie wybierz pozycję + Nowy.

  4. Wybierz typ wyzwalacza zdarzenia magazynowania.

  5. Wybierz konto magazynowe z listy rozwijanej subskrypcji Azure lub ręcznie, używając identyfikatora zasobu konta magazynowego. Wybierz kontener, na którym mają wystąpić zdarzenia. Wybór kontenera jest wymagany, ale wybranie wszystkich kontenerów może prowadzić do dużej liczby zdarzeń.

  6. Właściwości Blob path begins with i Blob path ends with umożliwiają określenie kontenerów, folderów i nazw obiektów blob, dla których mają być odbierane zdarzenia. Wyzwalacz zdarzenia przechowywania wymaga zdefiniowania co najmniej jednej z tych właściwości. Można użyć różnych wzorców dla właściwości Blob path begins with i Blob path ends with , jak pokazano w przykładach w dalszej części tego artykułu.

    • Blob path begins with: ścieżka blobu musi rozpoczynać się od ścieżki folderu. Prawidłowe wartości to 2018/ i 2018/april/shoes.csv. Nie można wybrać tego pola, jeśli nie wybrano kontenera.
    • Blob path ends with: Ścieżka obiektu blob musi kończyć się nazwą pliku lub rozszerzeniem. Prawidłowe wartości to shoes.csv i .csv. Nazwy kontenerów i folderów, po określeniu, muszą być oddzielone segmentem /blobs/ . Na przykład kontener o nazwie orders może mieć wartość /orders/blobs/2018/april/shoes.csv. Aby określić folder w dowolnym kontenerze, pomiń znak wiodący / . Na przykład april/shoes.csv wyzwala zdarzenie w dowolnym pliku o nazwie shoes.csv w folderze o nazwie april w dowolnym kontenerze.

    Należy pamiętać, że Blob path begins with i Blob path ends with są jedynymi dozwolonymi wzorcami dopasowania w wyzwalaczu zdarzeń pamięci masowej. Inne typy dopasowywania znaków wieloznacznych nie są obsługiwane dla typu wyzwalacza.

  7. Wybierz, czy wyzwalacz odpowiada na zdarzenie utworzenia obiektu blob, zdarzenie usunięcia obiektu blob lub oba te zdarzenia. W określonej lokalizacji magazynu każde zdarzenie wyzwala potoki usługi Data Factory i Azure Synapse Analytics skojarzone z wyzwalaczem.

    Zrzut ekranu przedstawiający stronę tworzenia wyzwalacza zdarzenia pamięci.

  8. Wybierz, czy wyzwalacz ma ignorować blob z zerową liczbą bajtów.

  9. Po skonfigurowaniu wyzwalacza wybierz pozycję Dalej: podgląd danych. Na tym ekranie przedstawiono istniejące obiekty blob zgodne z konfiguracją wyzwalacza zdarzeń przechowywania. Upewnij się, że masz określone filtry. Konfigurowanie filtrów, które są zbyt szerokie, może odpowiadać dużej liczbie plików, które zostały utworzone lub usunięte i może znacząco wpłynąć na koszt. Po zweryfikowaniu warunków filtrowania wybierz pozycję Zakończ.

    Zrzut ekranu przedstawiający stronę podglądu wyzwalacza zdarzenia magazynowania.

  10. Aby dołączyć potok do tego wyzwalacza, przejdź do kanwy potoku i wybierz Wyzwalacz>Nowy/Edytuj. Po wyświetleniu okienka bocznego wybierz listę rozwijaną Wybierz wyzwalacz i wybierz utworzony wyzwalacz. Wybierz pozycję Dalej: podgląd danych, aby potwierdzić, że konfiguracja jest poprawna. Następnie wybierz przycisk Dalej , aby sprawdzić, czy podgląd danych jest poprawny.

  11. Jeśli potok ma parametry, możesz je określić w okienku parametrów uruchamiania wyzwalacza. Wyzwalacz zdarzenia magazynowego przechwytuje ścieżkę folderu i nazwę pliku bloba we właściwościach @triggerBody().folderPath i @triggerBody().fileName. Aby użyć wartości tych właściwości w potoku, należy przypisać właściwości do parametrów potoku. Po zamapowaniu właściwości na parametry, w całym potoku można uzyskać dostęp do wartości przechwyconych przez wyzwalacz za pomocą wyrażenia @pipeline().parameters.parameterName. Aby uzyskać szczegółowe wyjaśnienie, zobacz Reference trigger metadata in pipelines.

    Zrzut ekranu przedstawiający właściwości mapowania zdarzenia magazynowego na parametry potoku danych.

    W poprzednim przykładzie wyzwalacz jest skonfigurowany do uruchamiania, gdy ścieżka obiektu blob kończąca się na .csv zostanie utworzona w folderze event-testing w kontenerze sample-data. Właściwości folderPath i fileName odzwierciedlają lokalizację nowego obiektu blob. Na przykład po dodaniu MoviesDB.csv do ścieżki sample-data/event-testing@triggerBody().folderPath ma wartość sample-data/event-testing i @triggerBody().fileName ma wartość moviesDB.csv. Te wartości są mapowane w przykładzie na parametry sourceFolder i sourceFile potoku, które mogą być używane w całym jego przebiegu odpowiednio jako @pipeline().parameters.sourceFolder i @pipeline().parameters.sourceFile.

  12. Po zakończeniu wybierz pozycję Zakończ.

Schemat systemu JSON

Poniższa tabela zawiera omówienie elementów schematu związanych z wyzwalaczami zdarzeń związanych z magazynowaniem.

Element JSON opis Typ Dozwolone wartości Wymagane
zakres Identyfikator zasobu Azure Resource Manager tego konta magazynu. Sznurek Identyfikator Azure Resource Manager Tak.
wydarzenia Typ zdarzeń, które powodują wyzwolenie tego wyzwalacza. Tablica Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Tak, dowolna kombinacja tych wartości.
blobPathBeginsWith Ścieżka obiektu blob musi zaczynać się od wzorca, który został podany, aby wyzwalacz mógł się uruchomić. Na przykład wyzwalacz uruchamia się tylko dla obiektów blob znajdujących się w folderze /records/blobs/december/ w kontenerze december. Sznurek Podaj wartość co najmniej jednej z następujących właściwości: blobPathBeginsWith lub blobPathEndsWith.
blobPathEndsWith Ścieżka obiektu blob musi kończyć się zadanym wzorcem, aby wyzwalacz się uruchomił. Na przykład december/boxes.csv uruchamia wyzwalacz tylko dla obiektów blob nazwanych boxes w folderze december. Sznurek Podaj wartość co najmniej jednej z następujących właściwości: blobPathBeginsWith lub blobPathEndsWith.
ignoreEmptyBlobs Określa, czy obiekty blob o zerowej długości uruchamiają potok. Domyślnie jest to ustawiona wartość true. logiczny prawda lub fałsz Nr.

Przykłady wyzwalaczy zdarzeń przechowywania

Ta sekcja zawiera przykłady ustawień wyzwalacza zdarzeń pamięci.

Ważne

Musisz uwzględnić segment ścieżki /blobs/, jak pokazano w poniższych przykładach, za każdym razem, gdy określasz kontener i folder, kontener i plik lub kontener, plik i folder. W przypadku blobPathBeginsWith interfejs użytkownika automatycznie dodaje /blobs/ między nazwą folderu a nazwą kontenera w pliku JSON wyzwalacza.

Własność Przykład opis
Blob path begins with /containername/ Odbiera zdarzenia dla dowolnego obiektu blob w kontenerze.
Blob path begins with /containername/blobs/foldername/ Odbiera zdarzenia dla obiektów blob w kontenerze containername oraz folderze foldername.
Blob path begins with /containername/blobs/foldername/subfoldername/ Możesz również odwołać się do podfolderu.
Blob path begins with /containername/blobs/foldername/file.txt Odbiera zdarzenia dla bloba o nazwie file.txt w folderze foldername w kontenerze containername.
Blob path ends with file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w dowolnej ścieżce.
Blob path ends with /containername/blobs/file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w kontenerze containername.
Blob path ends with foldername/file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w folderze foldername w dowolnym kontenerze.

Kontrola dostępu oparta na rolach

Usługa Data Factory i potoki Azure Synapse Analytics używają kontroli dostępu opartej na rolach Azure (Azure RBAC), aby zapewnić, że nieautoryzowany dostęp do nasłuchiwania, subskrybowania aktualizacji oraz wyzwalania potoków powiązanych ze zdarzeniami blob jest ściśle zabroniony.

  • Aby pomyślnie utworzyć nowy wyzwalacz zdarzenia przechowywania lub zaktualizować istniejący, konto Azure używane do logowania się do usługi musi mieć odpowiedni dostęp do odpowiedniego konta przechowywania. W przeciwnym razie operacja kończy się niepowodzeniem z komunikatem "Odmowa dostępu".
  • Usługa Data Factory i Azure Synapse Analytics nie potrzebują specjalnych uprawnień do wystąpienia usługi Event Grid i nie musisz przypisywać specjalnych uprawnień RBAC do konta usługi Data Factory lub Azure Synapse Analytics dla operacji.

Dowolne z następujących ustawień RBAC działa dla wyzwalaczy zdarzeń w magazynie:

  • Rola właściciela konta magazynu
  • Rola współautora na koncie magazynowym
  • Microsoft.EventGrid/EventSubscriptions/Write uprawnienia do konta magazynowego /subscriptions/####/resourceGroups/####/providers/Microsoft.Storage/storageAccounts/storageAccountName

Szczególnie:

  • Podczas tworzenia w Data Factory (na przykład w środowisku deweloperskim) zalogowane konto Azure musi mieć wymienione wcześniej uprawnienie.
  • Podczas publikowania za pośrednictwem ciągłej integracji i ciągłego dostarczania, konto użyte do opublikowania szablonu Azure Resource Manager w środowisku testowym lub produkcyjnym musi mieć poniższe uprawnienie.

Aby zrozumieć, w jaki sposób usługa dostarcza te dwie obietnice, zróbmy krok wstecz i przyjrzyjmy się za kulisami. Poniżej przedstawiono wysokopoziomowe przepływy pracy dla integracji między usługą Data Factory, usługą Azure Synapse Analytics, usługą przechowywania i usługą Event Grid.

Utwórz nowy wyzwalacz zdarzeń dla przechowywania danych

Ten ogólny schemat przepływu pracy opisuje sposób, w jaki usługa Data Factory współdziała z usługą Event Grid, aby utworzyć wyzwalacz zdarzenia przechowywania. Przepływ danych jest taki sam w Azure Synapse Analytics, a potoki Azure Synapse Analytics pełnią rolę fabryki danych na poniższym diagramie.

Diagram przedstawiający przepływ pracy przy tworzeniu wyzwalacza zdarzeń pamięci.

Dwa zauważalne spostrzeżenia w przepływach pracy:

  • Usługa Data Factory i Azure Synapse Analytics nie nawiązują bezpośredniego kontaktu z kontem magazynu. Żądanie utworzenia subskrypcji jest zamiast tego przekazywane i przetwarzane przez usługę Event Grid. Usługa nie musi mieć uprawnień dostępu do konta pamięci masowej w tym kroku.
  • Kontrola dostępu i sprawdzanie uprawnień są wykonywane w ramach usługi. Zanim usługa wyśle żądanie zasubskrybowania zdarzenia związanego z przechowywaniem, sprawdza uprawnienia użytkownika. W szczególności sprawdza, czy konto Azure, które zalogowało się i próbuje utworzyć wyzwalacz zdarzenia dla magazynu, ma odpowiedni dostęp do odpowiedniego konta magazynu. Jeśli sprawdzanie uprawnień zakończy się niepowodzeniem, tworzenie wyzwalacza również zakończy się niepowodzeniem.

Uruchamianie potoku wyzwalania zdarzeń przechowywania

W tym ogólnym przepływie pracy opisano sposób uruchamiania potoków wyzwalacza zdarzeń magazynu za pośrednictwem usługi Event Grid. W przypadku Azure Synapse Analytics przepływ danych jest taki sam, a pipeline'y Azure Synapse Analytics pełnią rolę usługi Data Factory w przedstawionym diagramie.

Diagram przedstawiający przepływ pracy, w którym zdarzenia magazynu inicjują uruchomienie potoku.

Trzy zauważalne objaśnienia w przepływie pracy są związane z potokami wyzwalania zdarzeń w usłudze:

  • Usługa Event Grid używa modelu wypychania, który przekazuje komunikat tak szybko, jak to możliwe, gdy magazyn umieszcza komunikat w systemie. Takie podejście różni się od systemu przesyłania wiadomości, takiego jak Kafka, w którym jest używany system pull.

  • Wyzwalacz zdarzenia działa jako aktywny nasłuchiwacz komunikatu przychodzącego i prawidłowo uruchamia powiązaną ścieżkę przetwarzania.

  • Wyzwalacz zdarzenia dotyczący magazynu sam w sobie nie nawiązuje bezpośredniego kontaktu z kontem magazynu.

    • Jeśli masz aktywność Copy lub inną aktywność w ramach potoku w celu przetwarzania danych na koncie przechowywania, usługa nawiązuje bezpośredni kontakt z kontem przechowywania, używając poświadczeń przechowywanych w połączonej usłudze. Upewnij się, że połączona usługa jest odpowiednio skonfigurowana.
    • Jeśli nie odwołujesz się do konta przechowywania w potoku, nie musisz przyznawać usłudze dostępu do konta przechowywania.