Schemat zdarzeń usługi Azure Event Grid

W tym artykule opisano schemat usługi Event Grid, który jest zastrzeżonym, niespodzielnym, ale w pełni funkcjonalnym formatem zdarzeń. Usługa Event Grid nadal obsługuje ten format zdarzenia i będzie nadal go obsługiwać. Jednak rozwiązanie CloudEvents jest zalecanym formatem zdarzeń do użycia. Jeśli używasz aplikacji korzystających z formatu usługi Event Grid, możesz znaleźć przydatne informacje w sekcji [CloudEvents] opisujące przekształcenia między usługą Event Grid i formatem CloudEvents obsługiwanym przez usługę Event Grid.

W tym artykule opisano szczegółowo właściwości i schemat formatu usługi Event Grid. Zdarzenia składają się z zestawu czterech wymaganych właściwości ciągu. Właściwości są wspólne dla wszystkich zdarzeń od dowolnego wydawcy. Obiekt danych ma właściwości specyficzne dla każdego wydawcy. W przypadku tematów systemowych te właściwości są specyficzne dla dostawcy zasobów, takiego jak Azure Storage lub Azure Event Hubs.

Źródła zdarzeń wysyłają zdarzenia do usługi Azure Event Grid w tablicy, co może mieć kilka obiektów zdarzeń. Podczas publikowania zdarzeń w temacie usługi Event Grid tablica może mieć całkowity rozmiar do 1 MB. Każde zdarzenie w tablicy jest ograniczone do 1 MB. Jeśli zdarzenie lub tablica jest większe niż limity rozmiaru, otrzymasz odpowiedź 413 Ładunek za duży. Operacje są jednak naliczane w wysokości 64 KB. W związku z tym zdarzenia o ponad 64 KB powodują naliczanie opłat za operacje, tak jakby były to wiele zdarzeń. Na przykład zdarzenie o wartości 130 KB spowoduje naliczenie operacji tak, jakby były to trzy oddzielne zdarzenia.

Usługa Event Grid wysyła zdarzenia do subskrybentów w tablicy, która ma jedno zdarzenie. To zachowanie może ulec zmianie w przyszłości.

Schemat JSON zdarzenia usługi Event Grid i ładunku danych każdego wydawcy platformy Azure można znaleźć w magazynie schematu zdarzeń.

Schemat zdarzeń

W poniższym przykładzie przedstawiono właściwości używane przez wszystkich wydawców zdarzeń:

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

Na przykład schemat opublikowany dla zdarzenia usługi Azure Blob Storage to:

[
  {
    "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"
  }
]

Właściwości zdarzenia

Wszystkie zdarzenia mają te same dane najwyższego poziomu:

Właściwość Type Wymagania opis
topic string Nie, ale jeśli jest to uwzględnione, musi być dokładnie zgodny z identyfikatorem usługi Azure Resource Manager tematu usługi Event Grid. Jeśli nie zostanie uwzględniona, na zdarzenie zostaną umieszczone sygnatury usługi Event Grid. Pełna ścieżka zasobu do źródła zdarzeń. To pole nie jest możliwe do zapisu. Ta wartość jest podawana przez usługę Event Grid.
subject string Tak Zdefiniowana przez wydawcę ścieżka do tematu zdarzenia.
eventType string Tak Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń.
eventTime string Tak Czas generowania zdarzenia na podstawie czasu UTC dostawcy.
id string Tak Unikatowy identyfikator zdarzenia.
data obiekt Tak Dane zdarzenia specyficzne dla dostawcy zasobów.
dataVersion string Nie, ale zostanie oznaczone pustą wartością. Wersja schematu obiektu danych. Wydawca definiuje wersję schematu.
metadataVersion string Nie jest to wymagane, ale w przypadku dołączeń musi być dokładnie zgodne ze schematem metadataVersion usługi Event Grid (obecnie tylko 1). Jeśli nie zostanie uwzględniona, na zdarzenie zostaną umieszczone sygnatury usługi Event Grid. Wersja schematu metadanych zdarzenia. Usługa Event Grid definiuje schemat właściwości najwyższego poziomu. Ta wartość jest podawana przez usługę Event Grid.

Aby dowiedzieć się więcej o właściwościach obiektu danych, zobacz źródło zdarzeń:

W przypadku tematów niestandardowych wydawca zdarzeń określa obiekt danych. Dane najwyższego poziomu powinny mieć te same pola co standardowe zdarzenia zdefiniowane przez zasoby.

Podczas publikowania zdarzeń w tematach niestandardowych utwórz tematy dla Twoich zdarzeń, które ułatwiają subskrybentom sprawdzenie, czy są zainteresowani wydarzeniem. Subskrybenci używają tematu do filtrowania i kierowania zdarzeń. Rozważ podanie ścieżki, w której wystąpiło zdarzenie, aby subskrybenci mogli filtrować według segmentów tej ścieżki. Ścieżka umożliwia subskrybentom filtrowanie zdarzeń wąsko lub szeroko. Jeśli na przykład podasz trzy ścieżki segmentu, takie jak /A/B/C w temacie, subskrybenci będą mogli filtrować według pierwszego segmentu /A , aby uzyskać szeroki zestaw zdarzeń. Ci subskrybenci otrzymują zdarzenia z tematami takimi jak /A/B/C lub /A/D/E. Inni subskrybenci mogą filtrować /A/B , aby uzyskać węższy zestaw zdarzeń.

Czasami temat wymaga więcej szczegółów na temat tego, co się stało. Na przykład wydawca kont magazynu udostępnia temat /blobServices/default/containers/<container-name>/blobs/<file> po dodaniu pliku do kontenera. Subskrybent może filtrować według ścieżki /blobServices/default/containers/<container-name>/ , aby pobrać wszystkie zdarzenia dla tego kontenera, ale nie inne kontenery na koncie magazynu. Subskrybent może również filtrować lub kierować według sufiksu .txt , aby pracować tylko z plikami tekstowymi.

CloudEvents

CloudEvents jest zalecanym formatem zdarzeń do użycia. Usługa Azure Event Grid nadal inwestuje w funkcje związane z co najmniej formatem JSON cloudEvents. Biorąc pod uwagę fakt, że niektóre źródła zdarzeń, takie jak usługi platformy Azure, używają formatu usługi Event Grid, poniższa tabela ułatwia zrozumienie transformacji obsługiwanej podczas korzystania z formatów CloudEvents i Event Grid jako schematu wejściowego w tematach i jako schematu wyjściowego w subskrypcjach zdarzeń. Schemat danych wyjściowych usługi Event Grid nie może być używany w przypadku używania rozwiązania CloudEvents jako schematu wejściowego, ponieważ usługa CloudEvents obsługuje atrybuty rozszerzenia, które nie są obsługiwane przez schemat usługi Event Grid.

Schemat wejściowy Schemat danych wyjściowych
Format CloudEvents Format CloudEvents
Format usługi Event Grid Format CloudEvents
Format usługi Event Grid Format usługi Event Grid

Następne kroki

  • Aby zapoznać się z wprowadzeniem do usługi Azure Event Grid, zobacz Co to jest usługa Event Grid?
  • Aby uzyskać więcej informacji na temat tworzenia subskrypcji usługi Azure Event Grid, zobacz Schemat subskrypcji usługi Event Grid.