Поделиться через


Создание триггера, запускающего конвейер в ответ на событие хранилища

ПРИМЕНЯЕТСЯ К: Azure Data Factory Azure Synapse Analytics

Совет

Испытайте Data Factory в Microsoft Fabric — единое аналитическое решение для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описываются триггеры событий хранилища, которые можно создать в конвейерах Фабрика данных Azure или Azure Synapse Analytics.

Архитектура на основе событий — это распространенный шаблон интеграции данных, который включает в себя создание, обнаружение, потребление и реакцию на события. В сценариях интеграции данных часто требуется, чтобы клиенты запускали конвейеры данных, инициируемые событиями в учетной записи хранения Azure, например, при поступлении или удалении файла в учетной записи Azure Blob Storage. Фабрика данных и конвейеры Azure Synapse Analytics изначально интегрируются с Сеткой событий Azure, что позволяет активировать конвейеры для таких событий.

Рекомендации по триггеру событий хранилища

При использовании триггеров событий хранилища следует учитывать следующие моменты:

  • Интеграция, описанная в этой статье, зависит от сетки событий Azure. Убедитесь, что ваша подписка зарегистрирована у поставщика ресурсов "Сетка событий". Дополнительные сведения см. в разделе "Поставщики ресурсов и типы". У вас должна быть возможность выполнить действие Microsoft.EventGrid/eventSubscriptions/. Это действие является частью встроенной EventGrid EventSubscription Contributor роли.
  • Если вы используете эту функцию в Azure Synapse Analytics, убедитесь, что вы также регистрируете подписку в поставщике ресурсов фабрики данных. В противном случае вы получите сообщение о том, что "сбой создания подписки на события".
  • Если учетная запись хранения BLOB-объектов находится за частной конечной точкой и блокирует доступ к общедоступной сети, необходимо настроить правила сети, чтобы разрешить обмен данными из хранилища BLOB-объектов в сетку событий. Вы можете предоставить доступ к хранилищу доверенным службам Azure, таким как Event Grid, следуя документации по работе с хранилищем, или настроить частные конечные точки для Event Grid, которые сопоставляют с адресным пространством виртуальной сети, следуя документации по работе с Event Grid.
  • Триггер события хранилища в настоящее время поддерживает только Azure Data Lake Storage 2-го поколения и учетные записи хранения общего назначения версии 2. Если вы работаете с событиями хранения протокола безопасной передачи файлов (SFTP), необходимо также указать API данных SFTP в разделе фильтрации. Из-за ограничения сетки событий фабрика данных поддерживает только 500 триггеров событий хранилища для каждой учетной записи хранения.
  • Чтобы создать новый триггер события хранилища или изменить существующий, учетная запись Azure, используемая для входа в службу и публикация триггера события хранилища, должна иметь соответствующее разрешение на управление доступом на основе ролей (Azure RBAC) в учетной записи хранения. Другие разрешения не требуются. Учетная запись службы для фабрики данных Azure и Azure Synapse Analytics не требует специального разрешения ни для учетной записи хранения, ни для сетки событий. Дополнительные сведения об управлении доступом см. в разделе управления доступом на основе ролей .
  • Если вы применили блокировку Azure Resource Manager к учетной записи хранения, это может повлиять на способность триггера Blob создавать или удалять блобы. Блокировка ReadOnly предотвращает создание и удаление, а блокировка DoNotDelete предотвращает удаление. Убедитесь, что вы учитываете эти ограничения, чтобы избежать проблем с триггерами.
  • Не рекомендуется запускать триггеры прибытия файлов в качестве механизма активации из приемников потока данных. Потоки данных выполняют ряд задач по переименованию файлов и перестановке файлов разделения в целевой папке, которые могут непреднамеренно активировать событие поступления файла до завершения обработки данных.

Создание триггера с пользовательским интерфейсом

В этом разделе показано, как создать триггер события хранилища в пользовательском интерфейсе Фабрика данных Azure и пользовательском интерфейсе конвейера Azure Synapse Analytics.

  1. Перейдите на вкладку "Изменить " в Фабрике данных или вкладку "Интеграция " в Azure Synapse Analytics.

  2. В меню выберите "Триггер" и нажмите кнопку "Создать или изменить".

  3. На странице "Добавить триггеры" выберите "Выбрать триггер", а затем нажмите кнопку "+ Создать".

  4. Выберите тип триггера события Storage.

  5. Выберите учетную запись хранения из раскрывающегося списка подписки Azure или вручную, используя идентификатор ресурса учетной записи хранения. Выберите контейнер, в котором будут выполняться события. Выбор контейнера необходим, но выбор всех контейнеров может привести к большому количеству событий.

  6. Свойства Blob path begins with и Blob path ends with позволяют указать контейнеры, папки и имена BLOB-объектов, для которых вы хотите получать события. Для триггера события хранилища требуется определить хотя бы одно из этих свойств. Вы можете использовать различные шаблоны как для свойств Blob path begins with, так и для Blob path ends with, как показано в примерах ниже в этой статье.

    • Blob path begins with: Путь к объекту BLOB должен начинаться с пути к папке. Допустимые значения включают 2018/ и 2018/april/shoes.csv. Это поле нельзя выбрать, если контейнер не выбран.
    • Blob path ends with: Путь к объекту BLOB должен заканчиваться именем файла или расширением. Допустимые значения включают shoes.csv и .csv. Имена контейнеров и папок, когда они указаны, должны быть разделены сегментом /blobs/ . Например, именованный orders контейнер может иметь значение /orders/blobs/2018/april/shoes.csv. Чтобы указать папку в любом контейнере, опустите ведущий / символ. Например, april/shoes.csv активирует событие в любом файле с именем shoes.csv в папке, вызываемой april в любом контейнере.

    Обратите внимание, что Blob path begins with и Blob path ends with являются единственными шаблонами, допустимыми в триггере события хранилища. Другие виды сопоставления с подстановочными знаками не поддерживаются для этого типа триггера.

  7. Выберите, отвечает ли триггер на событие создания BLOB-объекта, удаления BLOB-объекта, или обоих. В указанном расположении хранилища каждое событие активирует конвейеры Фабрики данных и Azure Synapse Analytics, связанные с триггером.

    Снимок экрана: страница создания триггера события хранилища.

  8. Выберите, будет ли триггер игнорировать большие двоичные объекты с нулевым числом байтов.

  9. После настройки триггера нажмите кнопку Далее: предварительная версия данных. На этом экране отображаются существующие блобы, соответствующие конфигурации триггера событий хранилища. Убедитесь, что у вас есть определенные фильтры. Настройка фильтров, которые слишком широкие, может соответствовать большому количеству файлов, созданных или удаленных, и может значительно повлиять на затраты. После проверки условий фильтра нажмите кнопку "Готово".

    Снимок экрана: страница предварительного просмотра триггера события хранилища.

  10. Чтобы подключить конвейер к этому триггеру, перейдите в рабочее пространство конвейера и выберите Триггер>Новый/Редактировать. Когда появится боковая панель, выберите раскрывающийся список "Выбрать триггер " и выберите созданный триггер. Нажмите кнопку Далее: предварительный просмотр данных , чтобы убедиться, что конфигурация правильна. Затем нажмите кнопку "Далее ", чтобы проверить правильность предварительного просмотра данных.

  11. Если в конвейере есть параметры, их можно указать на боковой панели "Параметры запуска триггера ". При срабатывании триггера событий хранилища в свойства @triggerBody().folderPath и @triggerBody().fileName сохраняются путь к папке и имя файла блоба. Чтобы использовать значения этих свойств в конвейере, необходимо сопоставить эти свойства с параметрами конвейера. После сопоставления свойств с параметрами можно получить доступ к значениям, захваченным триггером через @pipeline().parameters.parameterName выражение во всем конвейере. Подробное описание см. в разделе "Справочные метаданные триггера" в конвейерах.

    Снимок экрана: свойства сопоставления триггера события хранилища с параметрами конвейера.

    В приведенном выше примере триггер настроен срабатывать, когда в контейнере sample-data создается путь объекта BLOB, который заканчивается на .csv, в папке event-testing. Свойства folderPath и fileName фиксируют местоположение нового большого двоичного объекта. Например, если MoviesDB.csv добавляется в путь sample-data/event-testing, @triggerBody().folderPath имеет значение sample-data/event-testing и @triggerBody().fileName имеет значение moviesDB.csv. Эти значения сопоставляются в примере с параметрами sourceFolder конвейера и sourceFile, которые можно использовать во всем конвейере как @pipeline().parameters.sourceFolder и @pipeline().parameters.sourceFileсоответственно.

  12. После завершения нажмите кнопку "Готово".

Схема JSON

В следующей таблице представлен обзор элементов схемы, связанных с триггерами событий хранилища.

Элемент JSON Описание Тип Допустимые значения Обязательное поле
объем Идентификатор ресурса учетной записи хранилища в Azure Resource Manager. Строка Идентификатор менеджера ресурсов Azure Да.
события Тип событий, вызывающих срабатывание триггера. Массив Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Да, любое сочетание этих значений.
blobPathBeginsWith Путь объекта blob должен начинаться с указанного шаблона, чтобы срабатывал триггер. Например, /records/blobs/december/ активирует триггер только для блобов в папке december под контейнером records. Строка Предоставьте значение хотя бы для одного из этих свойств: blobPathBeginsWith или blobPathEndsWith.
blobPathEndsWith Путь блоба должен заканчиваться на указанный шаблон, чтобы триггер сработал. Например, december/boxes.csv запускает триггер только для объектов Blob с именем boxes в папке december. Строка Предоставьте значение хотя бы для одного из этих свойств: blobPathBeginsWith или blobPathEndsWith.
ignoreEmptyBlobs Запускают ли BLOB-ы нулевого размера выполнение конвейера? По умолчанию устанавливается значение true. Логический правда или ложь

Примеры триггеров событий хранилища

В этом разделе приведены примеры параметров триггера событий хранилища.

Внимание

Каждый раз, когда вы указываете контейнер и папку, контейнер и файл или контейнер, папку и файл, добавляйте сегмент пути /blobs/, как показано в следующих примерах. Для blobPathBeginsWith пользовательский интерфейс автоматически добавляет /blobs/ между именем папки и контейнера в JSON триггера.

Свойство Пример Описание
Blob path begins with /containername/ Получает события для любого блоба в контейнере.
Blob path begins with /containername/blobs/foldername/ Получает события для любого большого двоичного объекта в контейнере containername и папке foldername.
Blob path begins with /containername/blobs/foldername/subfoldername/ Можно также указать ссылку на вложенную папку.
Blob path begins with /containername/blobs/foldername/file.txt Получает события для объекта blob с именем file.txt в папке foldername в контейнере containername.
Blob path ends with file.txt Получает события для большого двоичного объекта с именем file.txt в любом пути.
Blob path ends with /containername/blobs/file.txt Получает события для объекта Blob с именем file.txt, находящегося в контейнере containername.
Blob path ends with foldername/file.txt Получает события для объекта данных с именем file.txt в папке foldername под любым контейнером.

Управление доступом на основе ролей

Фабрика данных и конвейеры Azure Synapse Analytics используют управление доступом на основе ролей Azure (Azure RBAC), чтобы строго запретить несанкционированный доступ к прослушиванию и подписке на обновления от, а также инициации конвейеров, связанных с событиями BLOB-ов.

  • Чтобы успешно создать триггер для нового события хранилища или обновить существующий, учетная запись Azure, вошедшая в службу, должна иметь необходимый доступ к соответствующему аккаунту хранения. В противном случае операция завершается ошибкой с сообщением "Доступ запрещен".
  • Фабрика данных и Azure Synapse Analytics не требуют специального разрешения для экземпляра Event Grid, и для операции не требуется назначать специальное разрешение RBAC для фабрики данных или служебного принципала Azure Synapse Analytics.

Любой из следующих параметров RBAC работает для триггеров событий хранилища:

  • Роль владельца учетной записи хранения
  • Роль участника учетной записи хранения
  • Microsoft.EventGrid/EventSubscriptions/Write разрешение на учетную запись хранения /subscriptions/####/resourceGroups/####/providers/Microsoft.Storage/storageAccounts/storageAccountName

В частности:

  • При работе в фабрике данных (например, в среде разработки) учетная запись Azure, под которой выполнен вход, должна иметь перечисленные выше разрешения.
  • При публикации с помощью непрерывной интеграции и непрерывной доставки учетная запись, используемая для публикации шаблона Azure Resource Manager в тестовой или рабочей фабрике, должна иметь предыдущее разрешение.

Чтобы понять, как служба выполняет два обещания, давайте рассмотрим более внимательно и заглянем за кулисы. Ниже приведены высокоуровневые рабочие процессы для интеграции между фабрикой данных и Azure Synapse Analytics, хранилищем и сеткой событий.

Создать новый триггер для события хранилища

Этот высокоуровневый рабочий процесс описывает взаимодействие фабрики данных с Сеткой событий для создания триггера события хранилища. Поток данных такой же, как в Azure Synapse Analytics, а конвейеры Azure Synapse Analytics принимают роль фабрики данных на следующей диаграмме.

Схема, показывающая рабочий процесс создания триггера событий хранилища.

Два заметных замечания из рабочих процессов:

  • Фабрика данных и Azure Synapse Analytics не вступают в прямой контакт с учетной записью хранения. Запрос на создание подписки передается и обрабатывается сеткой событий. Службе не требуется разрешение на доступ к учетной записи хранения для этого шага.
  • Управление доступом и проверка разрешений происходят в службе. Прежде чем служба отправляет запрос на подписку на событие хранилища, он проверяет разрешение пользователя. В частности, проверяется, имеет ли учетная запись Azure, в которую выполнен вход и которая пытается создать триггер события хранения, соответствующий доступ к нужной учетной записи хранения. В случае сбоя проверки разрешений также произойдет сбой создания триггера.

Запуск конвейера с триггером события для хранилища

Этот высокоуровневый рабочий процесс описывает, как потоки триггеров событий хранилища выполняются через Event Grid. Для Azure Synapse Analytics поток данных остаётся тем же, с конвейерами Azure Synapse Analytics, которые принимают роль Data Factory в следующих диаграммах.

Схема, на которой показан рабочий процесс запуска конвейера событий хранилища.

Три заметных элемента в рабочем процессе связаны с потоками активации событий внутри службы.

  • Event Grid использует push-модель, которая как можно быстрее передает сообщение, когда хранилище отправляет сообщение в систему. Этот подход отличается от системы обмена сообщениями, например Kafka, где используется система Pull.

  • Триггер события служит активным прослушивателем входящего сообщения, и он правильно активирует связанный конвейер.

  • Триггер события хранилища сам не связывается с учетной записью хранения.

    • Если в конвейере имеется действие «Copy» или другое действие для обработки данных в аккаунте хранилища, сервис устанавливает прямое соединение с аккаунтом хранилища, используя учетные данные, хранящиеся в связанном сервисе. Убедитесь, что связанная служба настроена соответствующим образом.
    • Если вы не ссылаетесь на учетную запись хранения в конвейере, вам не нужно предоставить службе разрешение на доступ к учетной записи хранения.