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


Реагирование на события хранилища BLOB-объектов

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

События хранилища BLOB-объектов отправляются через Сетку событий Azure подписчикам, таким как Функции Azure, Azure Logic Apps, или даже вашему собственному прослушивателю HTTP. Сетка событий обеспечивает надежную доставку событий в приложения с помощью функциональных политик повтора и недоставленных сообщений.

Полный список событий, поддерживаемых хранилищем BLOB-объектов, см. в статье Хранилище BLOB-объектов Azure как источник Сетки событий.

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

Сведения об использовании событий хранилища BLOB-объектов см. в любом из приведенных ниже кратких руководств.

Если вы хотите использовать этот инструмент: См. эту статью:
Портал Azure Использование службы "Сетка событий Azure" для перенаправления событий хранилища больших двоичных объектов на конечную веб-точку (портал Azure)
PowerShell Краткое руководство. Перенаправление событий хранилища в конечную веб-точку с помощью PowerShell
Azure CLI Краткое руководство. Перенаправление событий хранилища в конечную веб-точку с помощью Azure CLI

Чтобы изучить более подробные примеры реагирования на события хранилища BLOB-объектов с помощью функций Azure, см. эти статьи:

Примечание.

Учетные записи хранения типа Storage (general purpose v1) не поддерживают интеграцию с Сеткой событий.

Модель событий

Сетка событий использует подписки на события для маршрутизации сообщений о событиях подписчикам. На этом изображении показана связь между издателями событий, подписками на события и обработчиками событий.

Модель Сетки событий

Сначала подпишите конечную точку на событие. Затем при активации события служба Сетки событий отправляет данные о нем на соответствующую конечную точку.

См. статью о схеме событий хранилища BLOB-объектов, чтобы просмотреть следующую информацию:

  • Полный список событий хранилища BLOB-объектов и способов запуска каждого из них.

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

  • Назначение каждой пары "ключ — значение", отображаемой в данных.

Фильтрация событий

События BLOB-объектов можно фильтровать по типу события, имени контейнера или имени объекта, который был создан или удален. Фильтры в сетке событий соответствуют началу или концу темы, поэтому события с совпадающими темами будут отправляться подписчику.

Дополнительные сведения о том, как применять фильтры, см. в разделе Фильтрация событий для сетки событий.

Тема событий хранилища BLOB-объектов использует следующий формат:

/blobServices/default/containers/<containername>/blobs/<blobname>

Чтобы сопоставить все события для учетной записи хранения, фильтры темы можно оставить пустыми.

Чтобы сопоставить события из больших двоичных объектов, созданных в наборе контейнеров с общим префиксом, используйте фильтр subjectBeginsWith, подобный этому:

/blobServices/default/containers/containerprefix

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере, используйте фильтр subjectBeginsWith, подобный этому:

/blobServices/default/containers/containername/

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере с общим префиксом имени большого двоичного объекта, используйте фильтр subjectBeginsWith, подобный этому:

/blobServices/default/containers/containername/blobs/blobprefix

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере с общим суффиксом имени большого двоичного объекта, используйте фильтр subjectEndsWith, такой как ".log" или ".jpg". Дополнительные сведения см. в статье Основные понятия в службе "Сетка событий Azure".

Рекомендации по потреблению событий

Приложения, которые обрабатывают события хранилища BLOB-объектов, должны следовать нескольким рекомендациям:

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

  • Подобным образом убедитесь, что вы готовы к обработке этого типа событий (eventType), а также не следует предполагать, что все получаемые события будут иметь ожидаемый тип.

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

  • Так как сообщения могут поступать не по порядку, используйте поля sequencer, чтобы понять последовательность событий для каждого отдельного объекта. Поле sequencer — это строковое значение, которое представляет логическую последовательность событий для определенного имени BLOB-объекта. Можно использовать стандартное сравнение строк для понимания относительной последовательности двух событий в одном имени большого двоичного объекта.

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

  • Используйте поле blobType чтобы понять, какой тип операций разрешен в большом двоичном объекте и какие типы клиентских библиотек следует использовать для доступа к большому двоичному объекту. Допустимые значения: BlockBlob или PageBlob.

  • Для доступа к большому двоичному объекту используйте поле url с конструкторами CloudBlockBlob и CloudAppendBlob.

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

  • Если необходимо, чтобы событие Microsoft.Storage.BlobCreated активировалось только при полной фиксации блочного BLOB-объекта, отфильтруйте это событие по вызовам REST API CopyBlob, PutBlob, PutBlockList или FlushWithClose. Эти вызовы API активируют событие Microsoft.Storage.BlobCreated только после полной фиксации данных в блочном BLOB-объекте. Сведения о том, как создать фильтр, см. в статье Фильтрация событий для Сетки событий.

Поддерживаемые компоненты

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Сведения о поддержке функций хранилища BLOB-объектов в учетных записях хранения Azure, чтобы оценить поддержку данной функции.

Следующие шаги

Ознакомьтесь с дополнительными сведениями о Сетке событий и попробуйте использовать события хранилища BLOB-объектов: