Udostępnij za pośrednictwem


Tworzenie wyzwalacza uruchamiającego potok w odpowiedzi na zdarzenie magazynu

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

W tym artykule opisano wyzwalacze zdarzeń magazynu, które można utworzyć w potokach usługi 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 usługi Azure Storage, takich jak przybycie lub usunięcie pliku na koncie usługi Azure Blob Storage. Potoki usługi Data Factory i Azure Synapse Analytics natywnie integrują się z usługą Azure Event Grid, co umożliwia wyzwalanie potoków na takich zdarzeniach.

Zagadnienia dotyczące wyzwalacza zdarzeń magazynu

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

  • Integracja opisana w tym artykule zależy od usługi 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 mieć możliwość wykonania Microsoft.EventGrid/eventSubscriptions/ akcji. Ta akcja jest częścią wbudowanej EventGrid EventSubscription Contributor roli.
  • Jeśli używasz tej funkcji w usłudze 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 usługi Blob Storage znajduje się za prywatnym punktem końcowym i blokuje dostęp do sieci publicznej, należy skonfigurować reguły sieci, aby umożliwić komunikację z usługi Blob Storage do usługi Event Grid. Możesz udzielić dostępu magazynu do zaufanych usług platformy Azure, takich jak Event Grid, zgodnie z dokumentacją usługi Storage, lub skonfigurować prywatne punkty końcowe dla usługi Event Grid, które są mapowanie na przestrzeń adresową sieci wirtualnej, zgodnie z dokumentacją usługi Event Grid.
  • Wyzwalacz zdarzenia magazynu obsługuje obecnie tylko konta magazynu usługi Azure Data Lake Storage Gen2 i Ogólnego przeznaczenia w wersji 2. Jeśli pracujesz ze zdarzeniami magazynu protokołu SECURE File Transfer Protocol (SFTP), musisz również określić interfejs API danych SFTP w sekcji filtrowania. Ze względu na ograniczenie usługi Event Grid usługa Data Factory obsługuje tylko maksymalnie 500 wyzwalaczy zdarzeń magazynu na konto magazynu.
  • Aby utworzyć nowy wyzwalacz zdarzenia magazynu lub zmodyfikować istniejący, konto platformy Azure używane do logowania się do usługi i publikowanie wyzwalacza zdarzenia magazynu musi mieć odpowiednie uprawnienia kontroli dostępu opartej na rolach (RBAC) na koncie magazynu. Żadne inne uprawnienia nie są wymagane. Jednostka usługi dla usług Azure Data Factory i Azure Synapse Analytics nie potrzebuje specjalnych uprawnień do konta magazynu lub usługi Event Grid. Aby uzyskać więcej informacji na temat kontroli dostępu, zobacz sekcję Kontrola dostępu oparta na rolach.
  • Jeśli zastosowano blokadę usługi Azure Resource Manager na koncie magazynu, może to mieć wpływ na zdolność wyzwalacza obiektu blob do tworzenia lub usuwania obiektów blob. 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 wyzwalaczy przybycia plików jako mechanizmu wyzwalającego z ujścia 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 przybycia pliku przed zakończeniem przetwarzania danych.

Tworzenie wyzwalacza za pomocą interfejsu użytkownika

W tej sekcji pokazano, jak utworzyć wyzwalacz zdarzenia magazynu w usłudze Azure Data Factory i interfejsie użytkownika potoku usługi Azure Synapse Analytics.

  1. Przejdź do karty Edycja w usłudze Data Factory lub na karcie Integracja w usłudze 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 magazynu.

  5. Wybierz konto magazynu z listy rozwijanej Subskrypcja platformy Azure lub ręcznie przy użyciu identyfikatora zasobu konta magazynu. 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 begins with umożliwiają określenie kontenerów, folderów i nazw obiektów blob, dla których mają być odbierane zdarzenia. Wyzwalacz zdarzenia magazynu 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 begins with , jak pokazano w przykładach w dalszej części tego artykułu.

    • Blob path begins with: ścieżka obiektu blob 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 begins 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 w folderze o nazwie shoes.csv april w dowolnym kontenerze.

    Należy pamiętać, że Blob path begins with i Blob path ends with są jedynym zgodnym wzorcem dozwolonym w wyzwalaczu zdarzenia magazynu. Inne typy dopasowywania symboli wieloznacznych nie są obsługiwane dla typu wyzwalacza.

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

    Zrzut ekranu przedstawiający stronę tworzenia wyzwalacza zdarzeń magazynu.

  8. Wybierz, czy wyzwalacz ignoruje obiekty blob z zerowymi bajtami.

  9. Po skonfigurowaniu wyzwalacza wybierz pozycję Dalej: podgląd danych. Na tym ekranie przedstawiono istniejące obiekty blob zgodne z konfiguracją wyzwalacza zdarzeń magazynu. 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 zdarzeń magazynu.

  10. Aby dołączyć potok do tego wyzwalacza, przejdź do kanwy potoku i wybierz pozycję Wyzwól>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 po stronie Wyzwalacz parametry uruchamiania. Wyzwalacz zdarzenia magazynu przechwytuje ścieżkę folderu i nazwę pliku obiektu blob we właściwościach @triggerBody().folderPath i @triggerBody().fileName. Aby użyć wartości tych właściwości w potoku, należy zamapować właściwości na parametry potoku. Po zamapowania właściwości na parametry można uzyskać dostęp do wartości przechwyconych przez wyzwalacz za pośrednictwem @pipeline().parameters.parameterName wyrażenia w całym potoku. Aby uzyskać szczegółowe wyjaśnienie, zobacz Reference trigger metadata in pipelines (Metadane wyzwalacza odwołania w potokach).

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

    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 przechwytują 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 potoku i sourceFile, które mogą być używane w całym potoku 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ń magazynu.

Element JSON opis Type Dozwolone wartości Wymagania
zakres Identyfikator zasobu usługi Azure Resource Manager konta magazynu. String Identyfikator usługi Azure Resource Manager Tak.
zdarzenia 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 podanego dla wyzwalacza do uruchomienia. Na przykład /records/blobs/december/ wyzwalacz jest uruchamiany tylko dla obiektów blob w december folderze w kontenerze records . String 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ę wzorcem podanym, aby wyzwalacz był uruchamiany. Na przykład december/boxes.csv wyzwalacz jest uruchamiany tylko dla obiektów blob o nazwie boxes w folderze december . String Podaj wartość co najmniej jednej z następujących właściwości: blobPathBeginsWith lub blobPathEndsWith.
ignoreEmptyBlobs Określa, czy obiekty blob bez bajtów wyzwalają przebieg potoku. Domyślnie jest to ustawiona wartość true. Wartość logiczna prawda lub fałsz L.p.

Przykłady wyzwalaczy zdarzeń magazynu

Ta sekcja zawiera przykłady ustawień wyzwalacza zdarzeń magazynu.

Ważne

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

Właściwości 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 wszystkich obiektów blob w kontenerze containername i foldername folderze.
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 obiektu blob o nazwie file.txt w foldername folderze 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 w foldername dowolnym kontenerze.

Kontrola dostępu oparta na rolach

Potoki usługi Data Factory i Azure Synapse Analytics używają kontroli dostępu opartej na rolach (RBAC) platformy Azure w celu zapewnienia, że nieautoryzowany dostęp do nasłuchiwania, subskrybowania aktualizacji i wyzwalania potoków połączonych z zdarzeniami obiektów blob są ściśle zabronione.

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

Dowolne z następujących ustawień kontroli dostępu opartej na rolach działa dla wyzwalaczy zdarzeń magazynu:

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

Szczególnie:

  • Po utworzeniu w fabryce danych (na przykład w środowisku deweloperskim) zalogowane konto platformy Azure musi mieć poprzednie uprawnienie.
  • Podczas publikowania za pośrednictwem ciągłej integracji i ciągłego dostarczania konto używane do publikowania szablonu usługi Azure Resource Manager w fabryce testowej lub produkcyjnej musi mieć powyż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 ogólne przepływy pracy integracji między usługą Data Factory/Usługą Azure Synapse Analytics, magazynem i usługą Event Grid.

Tworzenie nowego wyzwalacza zdarzeń magazynu

Ten ogólny przepływ pracy opisuje sposób interakcji usługi Data Factory z usługą Event Grid w celu utworzenia wyzwalacza zdarzenia magazynu. Przepływ danych jest taki sam w usłudze Azure Synapse Analytics, a potoki usługi Azure Synapse Analytics pełnią rolę fabryki danych na poniższym diagramie.

Diagram przedstawiający przepływ pracy tworzenia wyzwalacza zdarzeń magazynu.

Dwa zauważalne objaśnienie z przepływów pracy:

  • Usługi Data Factory i Azure Synapse Analytics nie kontaktują się bezpośrednio 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 magazynu w tym kroku.
  • Kontrola dostępu i sprawdzanie uprawnień są wykonywane w ramach usługi. Zanim usługa wyśle żądanie zasubskrybowania zdarzenia magazynu, sprawdza uprawnienie użytkownika. W szczególności sprawdza, czy zalogowane konto platformy Azure i próba utworzenia wyzwalacza zdarzenia 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 wyzwalacza zdarzeń magazynu

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 usługi Azure Synapse Analytics przepływ danych jest taki sam, a potoki usługi Azure Synapse Analytics pełnią rolę usługi Data Factory na poniższym diagramie.

Diagram przedstawiający przepływ pracy uruchomienia potoku wyzwalającego zdarzenie magazynu.

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 usuwa komunikat do systemu. Takie podejście różni się od systemu obsługi komunikatów, takiego jak Kafka, w którym jest używany system ściągania.

  • Wyzwalacz zdarzenia służy jako aktywny odbiornik komunikatu przychodzącego i prawidłowo wyzwala skojarzony potok.

  • Wyzwalacz zdarzenia magazynu nie nawiązuje bezpośredniego kontaktu z kontem magazynu.

    • Jeśli masz działanie Kopiuj lub inne działanie w potoku w celu przetwarzania danych na koncie magazynu, usługa nawiązuje bezpośredni kontakt z kontem magazynu przy użyciu 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 magazynu w potoku, nie musisz udzielać uprawnień usłudze w celu uzyskania dostępu do konta magazynu.