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


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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Blob path begins with: Путь к BLOB-объектам должен начинаться с пути к папке. Допустимые значения включают 2018/ и 2018/april/shoes.csv. Это поле нельзя выбрать, если контейнер не выбран.
    • Blob path begins with: Путь к большому двоичному объекту должен заканчиваться именем файла или расширением. Допустимые значения включают 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-объекта, событие удаления БОЛЬШОго двоичного объекта или оба. В указанном расположении хранилища каждое событие активирует конвейеры Фабрики данных и Azure Synapse Analytics, связанные с триггером.

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

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

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

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

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

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

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

    В предыдущем примере триггер настроен на срабатывание, если в папке event-testing в контейнере sample-data путь большого двоичного объекта оканчивается на ".csv". fileName Свойства folderPath записывают расположение нового большого двоичного объекта. Например, если 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 Resource Manager Да.
события Тип событий, вызывающих срабатывание триггера. Массив Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted Да, любое сочетание этих значений.
blobPathBeginsWith Путь большого двоичного объекта должен начинаться с шаблона, указанного для срабатывания триггера. Например, /records/blobs/december/ активирует только триггер для больших двоичных объектов в папке december контейнера records. Строка Предоставьте значение хотя бы для одного из этих свойств: blobPathBeginsWith или blobPathEndsWith.
blobPathEndsWith Путь большого двоичного объекта должен оканчиваться шаблоном, указанным для срабатывания триггера. Например, december/boxes.csv активирует только триггер для больших двоичных объектов с именем boxes в папке december. Строка Предоставьте значение хотя бы для одного из этих свойств: blobPathBeginsWith или blobPathEndsWith.
ignoreEmptyBlobs Независимо от того, активирует ли большой двоичный объект нулевого байта выполнение конвейера. По умолчанию устанавливается значение true. Логический true или false

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

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

Внимание

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

Свойство Пример Description
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 Получает события для большого двоичного объекта с именем file.txt в папке foldername в контейнере containername.
Blob path ends with file.txt Получает события для большого двоичного объекта с именем file.txt в любом пути.
Blob path ends with /containername/blobs/file.txt Получает события для большого двоичного объекта под file.txt контейнером containername.
Blob path ends with foldername/file.txt Получает события для большого двоичного объекта с именем file.txt в папке в любом контейнере foldername .

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

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

  • Чтобы успешно создать триггер события хранилища или обновить существующую, учетная запись Azure, вошедшего в службу, должна иметь соответствующий доступ к соответствующей учетной записи хранения. В противном случае операция завершается ошибкой с сообщением "Доступ запрещен".
  • Фабрика данных и Azure Synapse Analytics не требуют специального разрешения для экземпляра службы "Сетка событий", и для операции не требуется назначать специальное разрешение 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, вошедшего в систему и пытающаяся создать триггер события хранения, имеет соответствующий доступ к соответствующей учетной записи хранения. В случае сбоя проверки разрешений также произойдет сбой создания триггера.

Выполнение конвейера триггера событий хранилища

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

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

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

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

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

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

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