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

События службы хранилища Azure позволяют приложениям реагировать на события, такие как создание и удаление больших двоичных объектов.Azure Storage events allow applications to react to events, such as the creation and deletion of blobs. При этом не требуется сложный код или дорогостоящие и неэффективные службы опроса.It does so without the need for complicated code or expensive and inefficient polling services. Лучшим вариантом является оплата только тех компонентов, которые вы используете.The best part is you only pay for what you use.

События хранилища BLOB-объектов отправляются с помощью службы " Сетка событий Azure " для подписчиков, таких как функции Azure, Azure Logic Apps или даже для собственного прослушивателя HTTP.Blob storage events are pushed using Azure Event Grid to subscribers such as Azure Functions, Azure Logic Apps, or even to your own http listener. Сетка событий обеспечивает надежную доставку событий в приложения с помощью многофункциональных политик повтора и недоставленных сообщений.Event Grid provides reliable event delivery to your applications through rich retry policies and dead-lettering.

Полный список событий, поддерживаемых хранилищем BLOB-объектов, см. в статье схема событий хранилища BLOB-объектов .See the Blob storage events schema article to view the full list of the events that Blob storage supports.

К распространенным сценариям событий хранилища BLOB-объектов относятся обработка изображений и видео, индексирование поиска и любые рабочие процессы, ориентированные на файлы.Common Blob storage event scenarios include image or video processing, search indexing, or any file-oriented workflow. Асинхронная передача файлов идеально подходит для событий.Asynchronous file uploads are a great fit for events. Когда изменения вносятся редко, а сценарий требует немедленного реагирования, архитектура на основе событий может быть особенно эффективной.When changes are infrequent, but your scenario requires immediate responsiveness, event-based architecture can be especially efficient.

Если вы хотите испытать события хранилища BLOB-объектов, см. любую из следующих кратких руководств:If you want to try blob storage events, see any of these quickstart articles:

Если вы хотите использовать это средство:If you want to use this tool: См. следующую статью:See this article:
Портал AzureAzure portal Краткое руководство. Отправка событий хранилища BLOB-объектов в конечную веб-точку с помощью портала AzureQuickstart: Route Blob storage events to web endpoint with the Azure portal
PowerShellPowerShell Краткое руководство. Маршрутизация событий хранилища в конечную точку веб-сайта с помощью PowerShellQuickstart: Route storage events to web endpoint with PowerShell
Azure CLIAzure CLI Краткое руководство. Маршрутизация событий хранилища в конечную точку веб-узла с Azure CLIQuickstart: Route storage events to web endpoint with Azure CLI

Подробные примеры реагирования на события хранилища BLOB-объектов с помощью функций Azure см. в следующих статьях:To view in-depth examples of reacting to Blob storage events by using Azure functions, see these articles:

Примечание

Интеграция событий поддерживается только для учетных записей хранения типа StorageV2 (общее назначение версии 2), блоккблобсторажеи блобстораже .Only storage accounts of kind StorageV2 (general purpose v2), BlockBlobStorage, and BlobStorage support event integration. Хранилище (общее назначение версии 1) не поддерживает интеграцию со службой " сетка событий".Storage (general purpose v1) does not support integration with Event Grid.

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

Сетка событий использует подписки на события для маршрутизации сообщений о событиях подписчикам.Event Grid uses event subscriptions to route event messages to subscribers. На этом рисунке показана связь между издателями событий, подписками на события и обработчиками событий.This image illustrates the relationship between event publishers, event subscriptions, and event handlers.

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

Сначала подпишите конечную точку на событие.First, subscribe an endpoint to an event. Затем при активации события служба "Сетка событий" отправит данные об этом событии в конечную точку.Then, when an event is triggered, the Event Grid service will send data about that event to the endpoint.

См. статью о схеме событий хранилища BLOB-объектов для просмотра:See the Blob storage events schema article to view:

  • Полный список событий хранилища BLOB-объектов и процедура запуска каждого события.A complete list of Blob storage events and how each event is triggered.
  • Пример данных, которые сетка событий будет передавать для каждого из этих событий.An example of the data the Event Grid would send for each of these events.
  • Назначение каждой пары «ключ — значение», отображаемой в данных.The purpose of each key value pair that appears in the data.

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

События больших двоичных объектов можно фильтровать по типу события, имени контейнера или имени объекта, который был создан или удален.Blob events can be filtered by the event type, container name, or name of the object that was created/deleted. Фильтры в сетке событий соответствуют началу или концу темы, поэтому события с совпадающим субъектом переходят на подписчик.Filters in Event Grid match the beginning or end of the subject so events with a matching subject go to the subscriber.

Дополнительные сведения о том, как применять фильтры, см. в разделе Фильтрация событий для сетки событий.To learn more about how to apply filters, see Filter events for Event Grid.

Тема событий хранилища BLOB-объектов использует следующий формат:The subject of Blob storage events uses the format:

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

Чтобы сопоставить все события для учетной записи хранения, фильтры темы можно оставить пустыми.To match all events for a storage account, you can leave the subject filters empty.

Чтобы сопоставить события из больших двоичных объектов, созданных в наборе контейнеров с общим префиксом, используйте фильтр subjectBeginsWith, подобный этому:To match events from blobs created in a set of containers sharing a prefix, use a subjectBeginsWith filter like:

/blobServices/default/containers/containerprefix

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере, используйте фильтр subjectBeginsWith, подобный этому:To match events from blobs created in specific container, use a subjectBeginsWith filter like:

/blobServices/default/containers/containername/

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере с общим префиксом имени большого двоичного объекта, используйте фильтр subjectBeginsWith, подобный этому:To match events from blobs created in specific container sharing a blob name prefix, use a subjectBeginsWith filter like:

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

Чтобы сопоставить события из больших двоичных объектов, созданных в конкретном контейнере с общим суффиксом имени большого двоичного объекта, используйте фильтр subjectEndsWith, такой как ".log" или ".jpg".To match events from blobs created in specific container sharing a blob suffix, use a subjectEndsWith filter like ".log" or ".jpg". Дополнительные сведения см. в статье Основные понятия в службе "Сетка событий Azure".For more information, see Event Grid Concepts.

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

Приложения, которые обрабатывают события хранилища BLOB-объектов, должны следовать нескольким рекомендациям:Applications that handle Blob storage events should follow a few recommended practices:

  • Так как в один обработчик событий можно настроить маршрутизацию событий из нескольких подписок, не следует предполагать, что события поступают из определенного источника. Но необходимо проверять тему сообщения, чтобы убедиться, что оно поступает из ожидаемой учетной записи хранения.As multiple subscriptions can be configured to route events to the same event handler, it is important not to assume events are from a particular source, but to check the topic of the message to ensure that it comes from the storage account you are expecting.
  • Подобным образом убедитесь, что вы готовы к обработке этого типа событий (eventType), а также не следует предполагать, что все получаемые события будут иметь ожидаемый тип.Similarly, check that the eventType is one you are prepared to process, and do not assume that all events you receive will be the types you expect.
  • По мере того как сообщения могут поступать после некоторой задержки, используйте поля eTag, чтобы узнать, не устарели ли ваши сведения об объектах.As messages can arrive after some delay, use the etag fields to understand if your information about objects is still up-to-date. Сведения об использовании поля ETag см. в разделе Управление параллелизмом в хранилище BLOB-объектов.To learn how to use the etag field, see Managing concurrency in Blob storage.
  • Так как сообщения могут приступать не по порядку, используйте поля Sequencer, чтобы понять порядок событий в любом конкретном объекте.As messages can arrive out of order, use the sequencer fields to understand the order of events on any particular object. Поле Sequencer представляет собой строковое значение, представляющее логическую последовательность событий для любого конкретного имени большого двоичного объекта.The sequencer field is a string value that represents the logical sequence of events for any particular blob name. Для понимания относительной последовательности двух событий в одном и том же имени большого двоичного объекта можно использовать стандартное сравнение строк.You can use standard string comparison to understand the relative sequence of two events on the same blob name.
  • События хранилища гарантируют доставку подписчикам по крайней мере, что гарантирует вывод всех сообщений.Storage events guarantees at-least-once delivery to subscribers, which ensures that all messages are outputted. Однако из-за повторных попыток или доступности подписок могут возникнуть дублирующиеся сообщения.However due to retries or availability of subscriptions, duplicate messages may occasionally occur. Дополнительные сведения о доставке сообщений и повторных попытках см. в разделе Доставка сообщений в сетке событий и повторнаяпопытка.To learn more about message delivery and retry, see Event Grid message delivery and retry.
  • Используйте поле blobType чтобы понять, какой тип операций разрешен в большом двоичном объекте и какие типы клиентских библиотек следует использовать для доступа к большому двоичному объекту.Use the blobType field to understand what type of operations are allowed on the blob, and which client library types you should use to access the blob. Допустимые значения: BlockBlob или PageBlob.Valid values are either BlockBlob or PageBlob.
  • Для доступа к большому двоичному объекту используйте поле url с конструкторами CloudBlockBlob и CloudAppendBlob.Use the url field with the CloudBlockBlob and CloudAppendBlob constructors to access the blob.
  • Игнорируйте поля, которые вам непонятны.Ignore fields you don't understand. Такой подход поможет обеспечить устойчивость к новым функциям, которые могут быть добавлены в будущем.This practice will help keep you resilient to new features that might be added in the future.
  • Если необходимо, чтобы событие Microsoft. Storage. BlobCreated вызывалось только при полной фиксации блочного большого двоичного объекта, отфильтруйте событие для CopyBlob PutBlob PutBlockList вызовов REST API, или FlushWithClose .If you want to ensure that the Microsoft.Storage.BlobCreated event is triggered only when a Block Blob is completely committed, filter the event for the CopyBlob, PutBlob, PutBlockList or FlushWithClose REST API calls. Эти вызовы API активируют событие Microsoft. Storage. BlobCreated только после полной фиксации данных в блочном BLOB-объекте.These API calls trigger the Microsoft.Storage.BlobCreated event only after data is fully committed to a Block Blob. Сведения о создании фильтра см. в разделе Фильтрация событий для сетки событий.To learn how to create a filter, see Filter events for Event Grid.

Дальнейшие шагиNext steps

Ознакомьтесь с дополнительными сведениями о Сетке событий и попробуйте использовать события хранилища BLOB-объектов:Learn more about Event Grid and give Blob storage events a try: