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 Data Factory lub Synapse.

Architektura sterowana zdarzeniami (EDA) 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 na podstawie zdarzeń na koncie magazynu, takich jak przybycie lub usunięcie pliku na koncie usługi Azure Blob Storage. Potoki usługi Data Factory i Synapse natywnie integrują się z usługą Azure Event Grid, co umożliwia wyzwalanie potoków na takich zdarzeniach.

Uwaga

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 typy. Musisz mieć możliwość wykonania akcji Microsoft.EventGrid/eventSubscriptions/* . Ta akcja jest częścią wbudowanej roli Współautor zdarzenia EventGrid.

Ważne

Jeśli używasz tej funkcji w usłudze Azure Synapse Analytics, upewnij się, że subskrypcja jest również zarejestrowana u dostawcy zasobów usługi Data Factory lub w przeciwnym razie zostanie wyświetlony komunikat o błędzie informujący, że tworzenie subskrypcji zdarzeń nie powiodło się.

Uwaga

Jeśli konto magazynu obiektów blob znajduje się za prywatnym punktem końcowym i blokuje dostęp do sieci publicznej, należy skonfigurować reguły sieciowe, aby umożliwić komunikację z magazynu obiektów blob do usługi Azure 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 mapuje się na przestrzeń adresową sieci wirtualnej, zgodnie z dokumentacją usługi Event Grid

Tworzenie wyzwalacza za pomocą interfejsu użytkownika

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

  1. Przejdź do karty Edycja w usłudze Data Factory lub na karcie Integracja w usłudze Azure Synapse.

  2. Wybierz pozycję Wyzwalacz w menu, 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 Zdarzenie 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 należy pamiętać, że wybranie wszystkich kontenerów może prowadzić do dużej liczby zdarzeń.

    Uwaga

    Wyzwalacz zdarzeń magazynu obsługuje obecnie tylko konta magazynu usługi Azure Data Lake Storage Gen2 i Ogólnego przeznaczenia w wersji 2. Jeśli pracujesz z zdarzeniami magazynu SFTP, musisz również określić interfejs API danych SFTP w sekcji filtrowania. Ze względu na ograniczenie usługi Azure Event Grid usługa Azure Data Factory obsługuje tylko maksymalnie 500 wyzwalaczy zdarzeń magazynu na konto magazynu. Jeśli osiągniesz limit, skontaktuj się z pomocą techniczną w celu uzyskania zaleceń i zwiększenia limitu oceny przez zespół usługi Event Grid.

    Uwaga

    Aby utworzyć nowy lub zmodyfikować istniejący wyzwalacz zdarzenia magazynu, konto platformy Azure używane do logowania się do usługi i publikowanie wyzwalacza zdarzenia magazynu musi mieć odpowiednie uprawnienia kontroli dostępu na podstawie ról (RBAC) na koncie magazynu. Nie jest wymagane żadne dodatkowe uprawnienie: Jednostka usługi dla usługi Azure Data Factory i usługi Azure Synapse 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.

  6. Ścieżka obiektu blob rozpoczyna się od i ścieżka obiektu blob kończy się właściwościami, które 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. Dla obu ścieżek obiektów blob można używać różnych wzorców, a ścieżka obiektu blob kończy się właściwościami, jak pokazano w przykładach w dalszej części tego artykułu.

    • Ścieżka obiektu blob rozpoczyna się od: ścieżka obiektu blob musi zaczynać 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.
    • Ścieżka obiektu blob kończy się następującą: ś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ń wiodący znak "/". Na przykład april/shoes.csv spowoduje wyzwolenie zdarzenia w dowolnym pliku o nazwie w folderze o nazwie shoes.csv "april" w dowolnym kontenerze.
    • Należy pamiętać, że ścieżka obiektu blob zaczyna się od i kończy się jedynym wzorcem dozwolonym w wyzwalaczu zdarzeń magazynu. Inne typy dopasowywania symboli wieloznacznych nie są obsługiwane dla typu wyzwalacza.
  7. Wybierz, czy wyzwalacz będzie odpowiadać na zdarzenie utworzone przez obiekt blob, zdarzenie usunięte obiektu blob, czy oba te zdarzenia. W określonej lokalizacji magazynu każde zdarzenie wyzwoli potoki usługi Data Factory i synapse skojarzone z wyzwalaczem.

    Screenshot of storage event trigger creation page.

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

  9. Po skonfigurowaniu wyzwalacza kliknij 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 utworzonych/usuniętych i może znacząco wpłynąć na koszt. Po zweryfikowaniu warunków filtrowania kliknij przycisk Zakończ.

    Screenshot of storage event trigger preview page.

  10. Aby dołączyć potok do tego wyzwalacza, przejdź do kanwy potoku i kliknij pozycję Wyzwól, a następnie wybierz pozycję Nowy/Edytuj. Po wyświetleniu nawigacji bocznej kliknij listę rozwijaną Wybierz wyzwalacz... i wybierz utworzony wyzwalacz. Kliknij przycisk Dalej: podgląd danych, aby potwierdzić poprawność konfiguracji, a następnie dalej, aby sprawdzić, czy podgląd danych jest poprawny.

  11. Jeśli potok ma parametry, możesz określić je na nawigacji po stronie wyzwalacza. 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 mapowaniu 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)

    Screenshot of storage event trigger mapping properties to pipeline parameters.

    W poprzednim przykładzie wyzwalacz jest konfigurowany do uruchamiania, gdy ścieżka obiektu blob kończąca się na pliku 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 gdy plik MoviesDB.csv zostanie dodany 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 kliknij przycisk Zakończ .

Schemat systemu JSON

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

JSON, element Opis Type Dozwolone wartości Wymagane
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 Niezależnie od tego, czy obiekty blob bez bajtów wyzwalają uruchomienie potoku. Domyślnie jest to wartość true. Wartość logiczna prawda lub fałsz Nie.

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 obiektu blobPathBeginsWith interfejs użytkownika zostanie automatycznie dodany /blobs/ między nazwą folderu i kontenera w pliku JSON wyzwalacza.

Uwaga

Wyzwalacze przybycia plików nie są zalecane jako mechanizm wyzwalania 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.

Właściwości Przykład opis
Ścieżka obiektu blob zaczyna się od /containername/ Odbiera zdarzenia dla dowolnego obiektu blob w kontenerze.
Ścieżka obiektu blob zaczyna się od /containername/blobs/foldername/ Odbiera zdarzenia dla wszystkich obiektów blob w kontenerze containername i foldername folderze.
Ścieżka obiektu blob zaczyna się od /containername/blobs/foldername/subfoldername/ Możesz również odwołać się do podfolderu.
Ścieżka obiektu blob zaczyna się od /containername/blobs/foldername/file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w foldername folderze w kontenerze containername .
Ścieżka obiektu blob kończy się na file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w dowolnej ścieżce.
Ścieżka obiektu blob kończy się na /containername/blobs/file.txt Odbiera zdarzenia dla obiektu blob o nazwie file.txt w kontenerze containername.
Ścieżka obiektu blob kończy się na 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 Azure Data Factory i Synapse 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 ze zdarzeniami obiektów blob jest ściśle zabroniony.

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

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

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

Są to:

  • Podczas tworzenia w fabryce danych (na przykład w środowisku deweloperskim) zalogowane konto platformy Azure musi mieć powyższe uprawnienie
  • Podczas publikowania za pośrednictwem ciągłej integracji/ciągłego wdrażania konto używane do publikowania szablonu usługi ARM w fabryce testowej lub produkcyjnej musi mieć powyższe uprawnienie.

Aby zrozumieć, jak usługa dostarcza te dwie obietnice, zróbmy krok i przyjrzyjmy się za kulisami. Poniżej przedstawiono ogólne przepływy pracy na potrzeby integracji między usługami Azure Data Factory/Azure Synapse, Storage i Event Grid.

Tworzenie nowego wyzwalacza zdarzeń magazynu

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

Workflow of storage event trigger creation.

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

  • Usługi Azure Data Factory i Azure Synapse nie kontaktują się bezpośrednio z kontem usługi Storage. Żądanie utworzenia subskrypcji jest zamiast tego przekazywane i przetwarzane przez usługę Event Grid. W związku z tym usługa nie musi mieć uprawnień do konta magazynu na potrzeby tego 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 konto platformy Azure jest zalogowane i próbuje utworzyć wyzwalacz 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 tych przepływach pracy wysokiego poziomu opisano sposób uruchamiania potoku zdarzenia magazynu za pośrednictwem usługi Event Grid. W przypadku usługi Azure Synapse przepływ danych jest taki sam, a potoki usługi Synapse pełnią rolę fabryki danych na poniższym diagramie.

Workflow of storage event triggering pipeline runs.

Istnieją trzy zauważalne wywołania w przepływie pracy 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. Różni się to 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 do wiadomości przychodzącej i prawidłowo wyzwala skojarzony potok.

  • Wyzwalacz zdarzeń magazynu nie nawiązuje bezpośredniego kontaktu z kontem magazynu

    • Oznacza to, że jeśli masz działanie kopiowania lub innego działania w potoku w celu przetwarzania danych na koncie magazynu, usługa skontaktuje się bezpośrednio z usługą Storage przy użyciu poświadczeń przechowywanych w połączonej usłudze. Upewnij się, że połączona usługa jest prawidłowo skonfigurowana
    • Jeśli jednak nie odwołujesz się do konta magazynu w potoku, nie musisz udzielać uprawnień usłudze w celu uzyskania dostępu do konta magazynu