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


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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

См. статью о схеме событий хранилища 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". Для получения дополнительной информации см. основные понятия Event Grid.

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

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

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

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

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

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

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

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

  • Для доступа к объекту BLOB используйте поле 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-объектов: