Blob Storage イベントへの対応Reacting to Blob storage events

Azure Storage イベントをアプリケーションで使用すると、最新のサーバーレスなアーキテクチャを使用して BLOB の作成、削除などのイベントに対応できます。Azure Storage events allow applications to react to events, such as the creation and deletion of blobs, by using modern serverless architectures. 複雑なコードや、高価で非効率的なポーリング サービスは必要ありません。It does so without the need for complicated code or expensive and inefficient polling services.

イベントは、Azure Event Grid を通して、Azure Functions、Azure Logic Apps、またはユーザー独自のカスタム HTTP リスナーにプッシュされ、料金は使用したものだけで済みます。Instead, events are pushed through Azure Event Grid to subscribers such as Azure Functions, Azure Logic Apps, or even to your own custom http listener, and you only pay for what you use.

Blob Storage イベントは Event Grid Service に確実に送信されます。Event Grid Service では豊富な再試行ポリシーおよび配信不能メッセージ配信を使用してご利用のアプリケーションに信頼性の高い配信サービスが提供されます。Blob storage events are reliably sent to the Event Grid service which provides reliable delivery services to your applications through rich retry policies and dead-letter delivery.

Blob Storage イベントの一般的なシナリオとしては、画像やビデオの処理、検索インデックスの作成、ファイル指向のワークフローなどがあります。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.

これを今すぐ試す場合は、次のクイック スタートの記事のいずれかを参照してください。If you want to try this out now, see any of these quickstart articles:

使うツール:If you want to use this tool: 参照する記事:See this article:
Azure ポータルAzure portal クイック スタート:Azure portal で Blob Storage のイベントを Web エンドポイントにルーティングするQuickstart: Route Blob storage events to web endpoint with the Azure portal
PowerShellPowerShell クイック スタート:PowerShell を使用してストレージ イベントを Web エンドポイントにルーティングするQuickstart: Route storage events to web endpoint with PowerShell
Azure CLIAzure CLI クイック スタート:Azure CLI を使用してストレージ イベントを Web エンドポイントにルーティングするQuickstart: Route storage events to web endpoint with Azure CLI

このチュートリアルでは、ご利用のアカウントに階層型名前空間が使用されている場合に、Event Grid サブスクリプションと Azure Functions、Azure Databricks 内のジョブを 1 つに接続する方法を紹介します: Azure Data Lake Storage Gen2 イベントを使用して Databricks Delta テーブルを更新するIf your account has a hierarchical namespace, this tutorial will show you how to connect together an Event Grid subscription, an Azure Function, and a Job in Azure Databricks: Tutorial: Use Azure Data Lake Storage Gen2 events to update a Databricks Delta table.

イベント モデルThe event model

Event Grid は、イベント サブスクリプションを使用して、イベント メッセージをサブスクライバーにルーティングします。Event Grid uses event subscriptions to route event messages to subscribers. この図は、イベント発行元、イベント サブスクリプション、およびイベント ハンドラーの間の関係を示しています。This image illustrates the relationship between event publishers, event subscriptions, and event handlers.

Event Grid モデル

最初に、イベントにエンドポイントをサブスクライブします。First, subscribe an endpoint to an event. その後、イベントがトリガーされると、Event Grid サービスにより、そのイベントに関するデータがエンドポイントに送信されます。Then, when an event is triggered, the Event Grid service will send data about that event to the endpoint.

Blob Storage イベントのスキーマに関する記事を参照し、以下を確認してください。See the Blob storage events schema article to view:

  • Blob Storage イベントの全一覧と各イベントがトリガーされる方法。A complete list of Blob storage events and how each event is triggered.
  • これらの各イベントに対して Event Grid が送信するデータの例。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 イベントのサブスクリプションは、イベントの種類に基づき、作成または削除されたオブジェクトのコンテナー名と BLOB 名で、フィルター処理することができます。Blob event subscriptions can be filtered based on the event type and by the container name and blob name of the object that was created or deleted. イベント サブスクリプションの作成中、または作成後に、イベント サブスクリプションをフィルター処理することができます。Filters can be applied to event subscriptions either during the creation of the event subscription or at a later time. Event Grid のサブジェクト フィルターは、"次で始まる" と "次で終わる" という一致条件によって動作し、サブジェクトが一致するイベントはサブスクライバーに配信されます。Subject filters in Event Grid work based on "begins with" and "ends with" matches, so that events with a matching subject are delivered to the subscriber.

フィルターを適用する方法の詳細については、「Event Grid のイベントのフィルター処理」をご覧ください。To learn more about how to apply filters, see Filter events for Event Grid.

Blob Storage イベントのサブジェクトには次の形式が使われます。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.

プレフィックスを共有する一連のコンテナーで作成された BLOB からのイベントと一致させるには、次のような subjectBeginsWith フィルターを使います。To match events from blobs created in a set of containers sharing a prefix, use a subjectBeginsWith filter like:

/blobServices/default/containers/containerprefix

特定のコンテナーで作成された BLOB からのイベントと一致させるには、次のような subjectBeginsWith フィルターを使います。To match events from blobs created in specific container, use a subjectBeginsWith filter like:

/blobServices/default/containers/containername/

BLOB 名プレフィックスを共有する特定のコンテナーで作成された BLOB からのイベントと一致させるには、次のような 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

BLOB サフィックスを共有する特定のコンテナーで作成された BLOB からのイベントと一致させるには、".log" や ".jpg" などの subjectEndsWith フィルターを使います。To match events from blobs created in specific container sharing a blob suffix, use a subjectEndsWith filter like ".log" or ".jpg". 詳しくは、「Event Grid の概念」をご覧ください。For more information, see Event Grid Concepts.

イベントの使用に関する手法Practices for consuming events

Blob Storage イベントを処理するアプリケーションは、いくつかの推奨される手法に従う必要があります。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.
  • 同様に、受信するすべてのイベントが予期した種類のものであると想定してはならず、イベントの種類が処理できるものであることを確認する必要があります。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 out of order and after some delay, use the etag fields to understand if your information about objects is still up-to-date. また、sequencer フィールドを使って、特定のオブジェクトに対するイベントの順序を確認します。Also, use the sequencer fields to understand the order of events on any particular object.
  • blobType フィールドを使って、BLOB に対して許可されている操作の種類と、BLOB にアクセスするために使う必要があるクライアント ライブラリの種類を確認します。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.
  • CloudBlockBlob および CloudAppendBlob コンストラクターでは、url フィールドを使って BLOB にアクセスします。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.
  • ブロック BLOB が完全にコミットされた場合に限り Microsoft.Storage.BlobCreated イベントがトリガーされるようにするには、CopyBlobPutBlobPutBlockList、または FlushWithClose REST API 呼び出しのイベントをフィルター処理します。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. データがブロック BLOB に完全にコミットされた後でのみ、これらの API 呼び出しによって Microsoft.Storage.BlobCreated イベントがトリガーされます。These API calls trigger the Microsoft.Storage.BlobCreated event only after data is fully committed to a Block Blob. フィルターの作成方法の詳細については、「Event Grid のイベントのフィルター処理」をご覧ください。To learn how to create a filter, see Filter events for Event Grid.

次の手順Next steps

Event Grid の詳細について理解し、Blob Storage イベントを試してみてください。Learn more about Event Grid and give Blob storage events a try: