Azure Event Grid イベント スキーマAzure Event Grid event schema

この記事では、すべてのイベントに存在するプロパティとスキーマについて説明します。This article describes the properties and schema that are present for all events. イベントは、5 つの必須文字列プロパティと 1 つの必須データ オブジェクトで構成されます。 Events consist of a set of five required string properties and a required data object. プロパティは、すべてのイベントに共通であり、発行元を問いません。The properties are common to all events from any publisher. データ オブジェクトには、各発行元に固有のプロパティが含まれています。The data object has properties that are specific to each publisher. システム トピックの場合、これらのプロパティは、リソース プロバイダー (Azure Storage や Azure Event Hubs など) に固有です。For system topics, these properties are specific to the resource provider, such as Azure Storage or Azure Event Hubs.

イベント ソースは、複数のイベント オブジェクトを含めることができる配列で Azure Event Grid にイベントを送信します。Event sources send events to Azure Event Grid in an array, which can have several event objects. Event Grid トピックへイベントを送信する際の、配列の合計サイズの上限は 1 MB です。When posting events to an event grid topic, the array can have a total size of up to 1 MB. 配列内の各イベントは 1 MB に制限されます。Each event in the array is limited to 1 MB. イベントまたは配列がサイズ制限を超えた場合は、 [413 ペイロードが大きすぎます] という応答を受信します。If an event or the array is greater than the size limits, you receive the response 413 Payload Too Large. ただし、操作は 64 KB 単位で課金されます。Operations are charged in 64 KB increments though. そのため、64 KB を超えるイベントでは、複数のイベントが発生したかのように操作の料金が発生します。So, events over 64 KB will incur operations charges as though they were multiple events. たとえば、130 KB のイベントでは、3 つの独立したイベントとして操作が課金されます。For example, an event that is 130 KB would incur operations as though it were 3 separate events.

Event Grid は、1 つのイベントを含む配列でサブスクライバーにイベントを送信します。Event Grid sends the events to subscribers in an array that has a single event. この動作は、今後変更される可能性があります。This behavior may change in the future.

Event Grid イベントおよび各 Azure パブリッシャーのデータ ペイロードの JSON スキーマは、イベント スキーマ ストアにあります。You can find the JSON schema for the Event Grid event and each Azure publisher's data payload in the Event Schema store.

イベント スキーマEvent schema

すべてのイベント発行元に使用されているプロパティの例を次に示します。The following example shows the properties that are used by all event publishers:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

たとえば、Azure BLOB ストレージ イベントに対して次のようなスキーマが発行されます。For example, the schema published for an Azure Blob storage event is:

[
  {
    "topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
    "subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
    "eventType": "Microsoft.Storage.BlobCreated",
    "eventTime": "2017-06-26T18:41:00.9584103Z",
    "id": "831e1650-001e-001b-66ab-eeb76e069631",
    "data": {
      "api": "PutBlockList",
      "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
      "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
      "eTag": "0x8D4BCC2E4835CD0",
      "contentType": "application/octet-stream",
      "contentLength": 524288,
      "blobType": "BlockBlob",
      "url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
      "sequencer": "00000000000004420000000000028963",
      "storageDiagnostics": {
        "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
      }
    },
    "dataVersion": "",
    "metadataVersion": "1"
  }
]

イベントのプロパティEvent properties

すべてのイベントには、次の同じ最上位レベルのデータが含まれています。All events have the same following top-level data:

プロパティProperty TypeType 必須Required 説明Description
topictopic stringstring いいえ。ただし、追加する場合は、Event Grid トピックの Azure Resource Manager ID と完全に一致させる必要があります。No, but if included, must match the Event Grid topic Azure Resource Manager ID exactly. 追加しなかった場合は、Event Grid によってイベントに記録されます。If not included, Event Grid will stamp onto the event. イベント ソースの完全なリソース パス。Full resource path to the event source. このフィールドは書き込み可能ではありません。This field isn't writeable. この値は Event Grid によって指定されます。Event Grid provides this value.
subjectsubject stringstring はいYes 発行元が定義したイベントの対象のパス。Publisher-defined path to the event subject.
eventTypeeventType stringstring はいYes このイベント ソース用に登録されたイベントの種類のいずれか。One of the registered event types for this event source.
eventTimeeventTime stringstring はいYes プロバイダーの UTC 時刻に基づくイベントの生成時刻。The time the event is generated based on the provider's UTC time.
idid stringstring はいYes イベントの一意識別子。Unique identifier for the event.
datadata objectobject いいえNo リソース プロバイダーに固有のイベント データ。Event data specific to the resource provider.
dataVersiondataVersion stringstring いいえ。ただし、空の値が記録されます。No, but will be stamped with an empty value. データ オブジェクトのスキーマ バージョン。The schema version of the data object. スキーマ バージョンは発行元によって定義されます。The publisher defines the schema version.
metadataVersionmetadataVersion stringstring 必須ではありませんが、追加する場合は、Event Grid スキーマの metadataVersion と完全に一致させる必要があります (現在は 1 のみ)。Not required, but if included, must match the Event Grid Schema metadataVersion exactly (currently, only 1). 追加しなかった場合は、Event Grid によってイベントに記録されます。If not included, Event Grid will stamp onto the event. イベント メタデータのスキーマ バージョン。The schema version of the event metadata. 最上位プロパティのスキーマは Event Grid によって定義されます。Event Grid defines the schema of the top-level properties. この値は Event Grid によって指定されます。Event Grid provides this value.

データ オブジェクトのプロパティの詳細については、イベント ソースを参照してください。To learn about the properties in the data object, see the event source:

カスタム トピックの場合、イベントの発行元がデータ オブジェクトを決定します。For custom topics, the event publisher determines the data object. 最上位レベルのデータには、リソースによって定義された標準のイベントと同じフィールドを含める必要があります。The top-level data should have the same fields as standard resource-defined events.

イベントをカスタム トピックに発行する場合は、サブスクライバーがそのイベントに関心があるかどうかを簡単に知ることができるイベントの件名を作成してください。When publishing events to custom topics, create subjects for your events that make it easy for subscribers to know whether they're interested in the event. サブスクライバーは、その件名を使用してイベントをフィルター処理したり、ルーティングしたりします。Subscribers use the subject to filter and route events. そのイベントが発生したパスを示すことにより、サブスクライバーがそのパスのセグメントでフィルター処理できるように考慮してください。Consider providing the path for where the event happened, so subscribers can filter by segments of that path. このパスにより、サブスクライバーはイベントを狭く、または幅広くフィルター処理できます。The path enables subscribers to narrowly or broadly filter events. たとえば、/A/B/C のように件名に 3 つのセグメント パスを示した場合、サブスクライバーは最初のセグメント /A でフィルター処理して幅広い一連のイベントを取得できます。For example, if you provide a three segment path like /A/B/C in the subject, subscribers can filter by the first segment /A to get a broad set of events. これらのサブスクライバーは、/A/B/C/A/D/E などの件名を持つイベントを取得します。Those subscribers get events with subjects like /A/B/C or /A/D/E. 他のサブスクライバーは、/A/B でフィルター処理して、より狭い一連のイベントを取得できます。Other subscribers can filter by /A/B to get a narrower set of events.

件名に、何が起こったかに関するより詳細な情報が必要になる場合があります。Sometimes your subject needs more detail about what happened. たとえば、コンテナーにファイルが追加された場合、ストレージ アカウント パブリッシャーは件名 /blobServices/default/containers/<container-name>/blobs/<file> を指定します。For example, the Storage Accounts publisher provides the subject /blobServices/default/containers/<container-name>/blobs/<file> when a file is added to a container. サブスクライバーはパス /blobServices/default/containers/testcontainer でフィルター処理することにより、ストレージ アカウント内の他のコンテナーではなく、そのコンテナーのすべてのイベントを取得できます。A subscriber could filter by the path /blobServices/default/containers/testcontainer to get all events for that container but not other containers in the storage account. サブスクライバーはまた、テキスト ファイルのみを操作するために、サフィックス .txt でフィルター処理またはルーティングすることもできます。A subscriber could also filter or route by the suffix .txt to only work with text files.

次のステップNext steps