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

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

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

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

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

Примечание.

Интеграция, описанная в этой статье, зависит от службы Сетка событий Azure. Убедитесь, что ваша подписка зарегистрирована у поставщика ресурсов "Сетка событий". См. дополнительные сведения о поставщиках и типах ресурсов. У вас должна быть возможность выполнить действие Microsoft.EventGrid/eventSubscriptions/*. Это действие является частью встроенной роли участника EventGrid EventSubscription Contributor.

Важно!

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

Примечание.

Если учетная запись хранения BLOB-объектов находится за частной конечной точкой и блокирует доступ к публичной сети, необходимо настроить сетевые правила, чтобы разрешить подключение из хранилища BLOB-объектов к службе "Сетка событий Azure". Вы можете предоставить доступ к хранилищу доверенным службам Azure, таким как служба "Сетка событий", с помощью инструкций из документации службы хранилища или настроить для Сетки событий частные конечные точки, которые сопоставляются с адресным пространством виртуальной сети, согласно документации по Сетке событий.

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

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

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

  2. Выберите Триггер в меню, а затем выберите Создать/изменить.

  3. На странице Добавление триггеров щелкните Выбор триггера..., а затем — +Создать.

  4. Для типа триггера выберите Событие хранилища

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

    Примечание.

    В настоящее время триггер событий хранилища поддерживает только учетные записи хранения общего назначения версии 2 и учетные записи хранения Azure Data Lake Storage 2-го поколения. Если вы работаете с событиями хранилища SFTP, также укажите API данных SFTP в разделе фильтрации. В связи с ограничением Сетки событий Azure Фабрика данных Azure поддерживает не более 500 триггеров событий хранилища для каждой учетной записи хранения. При достижении предельного значения обратитесь в службу поддержки за рекомендациями и увеличьте предельное значение после оценки командой "Сетки событий".

    Примечание.

    Чтобы создать новый или изменить существующий триггер события хранилища, учетная запись Azure, используемая для входа в службу и публикации триггера событий хранилища, должна иметь соответствующее разрешение на управление доступом на основе ролей (Azure RBAC) в учетной записи хранения. Никаких дополнительных разрешений не требуется: субъекту-службе для Фабрики данных Azure и Azure Synapse не требуется специальное разрешение для учетной записи хранения или службы "Сетка событий". Дополнительные сведения о контроле доступа см. в разделе Контроль доступа на основе ролей.

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

    • Путь к BLOB-объектам начинается с: путь к BLOB-объектам должен начинаться с пути к папке. Допустимые значения включают 2018/ и 2018/april/shoes.csv. Это поле нельзя выбрать, если контейнер не выбран.
    • Путь к БОЛЬШОМу двоичному объекту заканчивается: путь к BLOB-объектам должен заканчиваться именем файла или расширением. Допустимые значения включают shoes.csv и .csv. Если имя контейнера и папки указаны, они должны быть разделены сегментом /blobs/. Например, контейнер с именем "orders" может иметь значение /orders/blobs/2018/april/shoes.csv. Чтобы указать папку в любом контейнере, опустите начальный символ "/". Например, april/shoes.csv запустит событие для любого файла с именем shoes.csv в папке с именем "april" в любом контейнере.
    • Обратите внимание, что для триггера событий хранилища разрешены только два типа сопоставления шаблонов пути к BLOB-объекту: начинается с и заканчивается на. Другие типы сопоставления с подстановочными знаками не поддерживаются для типа триггера.
  7. Укажите, будет ли триггер отвечать на событие создания BLOB-объекта, удаления BLOB-объекта или на оба эти события. В указанном месте хранения каждое событие инициирует Фабрику данных Azure или конвейеры Synapse, связанные с этим триггером.

    Screenshot of storage event trigger creation page.

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

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

    Screenshot of storage event trigger preview page.

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

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

    Screenshot of storage event trigger mapping properties to pipeline parameters.

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

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

Схема JSON

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

Элемент JSON Description Тип Допустимые значения Обязательный
область Идентификатор ресурса 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 No

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

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

Важно!

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

Примечание.

Триггеры прибытия файлов не рекомендуется использовать в качестве механизма активации из приемников потока данных. Потоки данных выполняют ряд задач переименования файлов и перетасовки файлов секционирования в целевой папке, которые могут непреднамеренно активировать событие прибытия файла до завершения обработки данных.

Свойство Пример Description
Путь большого двоичного объекта начинается с /containername/ Получает события для любого большого двоичного объекта в контейнере.
Путь большого двоичного объекта начинается с /containername/blobs/foldername/ Получает события для любого большого двоичного объекта в контейнере containername и папке foldername.
Путь большого двоичного объекта начинается с /containername/blobs/foldername/subfoldername/ Можно также указать ссылку на вложенную папку.
Путь большого двоичного объекта начинается с /containername/blobs/foldername/file.txt Получает события для большого двоичного объекта с именем file.txt в папке foldername в контейнере containername.
Большой двоичный объект оканчивается на file.txt Получает события для большого двоичного объекта с именем file.txt в любом пути.
Большой двоичный объект оканчивается на /containername/blobs/file.txt Получает события для большого двоичного объекта с именем file.txt в контейнере containername.
Большой двоичный объект оканчивается на foldername/file.txt Получает события для большого двоичного объекта с именем file.txt в папке foldername в любом контейнере.

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

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

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

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

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

В частности:

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

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

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

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

Workflow of storage event trigger creation.

Обратите внимание на два компонента рабочих процессов.

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

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

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

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

Workflow of storage event triggering pipeline runs.

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

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

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

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

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