Vysvětlení filtrování událostí pro odběry Služby Event Grid
Tento článek popisuje různé způsoby filtrování událostí odesílaných do koncového bodu. Při vytváření odběru událostí máte tři možnosti filtrování:
- Typy událostí
- Předmět začíná nebo končí na
- Pokročilá pole a operátory
Šablona Azure Resource Manageru
Příklady uvedené v tomto článku jsou fragmenty kódu JSON pro definování filtrů v šablonách Azure Resource Manageru (ARM). Příklad kompletní šablony ARM a nasazení šablony ARM najdete v tématu Rychlý start: Směrování událostí úložiště objektů blob do webového koncového bodu pomocí šablony ARM. Tady je několik dalších částí oddílu filter
z příkladu v rychlém startu. Šablona ARM definuje následující prostředky.
- Účet služby Azure Storage
- Systémové téma pro účet úložiště
- Odběr událostí pro systémové téma. Pododdíl uvidíte
filter
v části odběru události.
V následujícím příkladu odběr událostí filtruje události Microsoft.Storage.BlobCreated
a Microsoft.Storage.BlobDeleted
události.
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-08-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
},
{
"type": "Microsoft.EventGrid/systemTopics",
"apiVersion": "2021-12-01",
"name": "[parameters('systemTopicName')]",
"location": "[parameters('location')]",
"properties": {
"source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
"topicType": "Microsoft.Storage.StorageAccounts"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
]
},
{
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
"apiVersion": "2021-12-01",
"name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated",
"Microsoft.Storage.BlobDeleted"
]
}
},
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
]
}
]
}
Filtrování typů událostí
Ve výchozím nastavení se do koncového bodu odesílají všechny typy událostí pro zdroj událostí. Můžete se rozhodnout, že do koncového bodu odešlete jenom určité typy událostí. Můžete například dostávat oznámení o aktualizacích vašich prostředků, ale nemusíte dostávat oznámení o jiných operacích, jako jsou odstranění. V takovém případě vyfiltrujte podle Microsoft.Resources.ResourceWriteSuccess
typu události. Zadejte pole s typy událostí nebo určete All
, jestli chcete získat všechny typy událostí pro zdroj události.
Syntaxe JSON pro filtrování podle typu události je:
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
Filtrování předmětu
Pro jednoduché filtrování podle předmětu zadejte počáteční nebo koncovou hodnotu předmětu. Můžete například zadat předmět končící .txt
tak, aby se události související s nahráním textového souboru do účtu úložiště dostaly jenom s událostmi. Nebo můžete vyfiltrovat předmět, který začíná /blobServices/default/containers/testcontainer
tím, že získá všechny události pro daný kontejner, ale ne jiné kontejnery v účtu úložiště.
Při publikování událostí do vlastních témat vytvářejte předměty pro události, které usnadňují odběratelům zjistit, jestli se o událost zajímají. Odběratelé používají vlastnost předmětu k filtrování a směrování událostí. Zvažte přidání cesty pro místo, kde k události došlo, aby předplatitelé mohli filtrovat podle segmentů této cesty. Tato cesta umožňuje odběratelům zúžit nebo široce filtrovat události. Pokud zadáte tři segmentové cesty jako /A/B/C
v předmětu, předplatitelé můžou filtrovat podle prvního segmentu /A
, aby získali širokou sadu událostí. Tito odběratelé získají události s tématy, jako /A/B/C
je nebo /A/D/E
. Další předplatitelé můžou filtrovat podle /A/B
toho, aby získali užší sadu událostí.
Příklady (události služby Blob Storage)
Události objektu blob je možné filtrovat podle typu události, názvu kontejneru nebo názvu objektu, který byl vytvořen nebo odstraněn.
Předmět událostí služby Blob Storage používá formát:
/blobServices/default/containers/<containername>/blobs/<blobname>
Pokud chcete shodovat všechny události pro účet úložiště, můžete nechat filtry předmětu prázdné.
Pokud chcete shodovat události z objektů blob vytvořených v sadě kontejnerů sdílejících předponu, použijte filtr podobný subjectBeginsWith
hle:
/blobServices/default/containers/containerprefix
Pokud chcete shodovat události z objektů blob vytvořených v konkrétním kontejneru, použijte filtr podobný následujícímu subjectBeginsWith
:
/blobServices/default/containers/containername/
Pokud chcete shodovat události z objektů blob vytvořených v konkrétním kontejneru sdílející předponu názvu objektu blob, použijte filtr podobný subjectBeginsWith
hle:
/blobServices/default/containers/containername/blobs/blobprefix
Pokud chcete shodovat události z objektů blob, které se vytvoří v konkrétní podsložce kontejneru, použijte filtr podobný následujícímu subjectBeginsWith
:
/blobServices/default/containers/{containername}/blobs/{subfolder}/
Pokud chcete shodovat události z objektů blob vytvořených v konkrétním kontejneru sdílející příponu objektu blob, použijte subjectEndsWith
filtr, jako je .log nebo .jpg.
Rozšířené filtrování
Pokud chcete filtrovat podle hodnot v datových polích a zadat relační operátor, použijte možnost rozšířeného filtrování. V rozšířeném filtrování zadáte:
- typ operátoru – typ porovnání.
- key – Pole v datech události, která používáte k filtrování. Může to být číslo, logická hodnota, řetězec nebo pole.
- hodnoty – hodnota nebo hodnoty, které se mají porovnat s klíčem.
Key
Klíč je pole v datech událostí, která používáte k filtrování. Může to být jeden z následujících typů:
Číslo
Logická hodnota
Řetězec
Pole. Abyste mohli tuto funkci použít, musíte vlastnost nastavit
enableAdvancedFilteringOnArrays
na true."filter": { "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log", "subjectEndsWith": ".jpg", "enableAdvancedFilteringOnArrays": true }
Pro události ve schématu událostí cloudu použijte následující hodnoty pro klíč: eventid
, source
, eventtype
, eventtypeversion
, nebo data události (například data.key1
).
Pokud používáte základní úroveň Event Gridu, použijte pro události ve schématu Event Gridu následující hodnoty pro klíč: ID
, , Topic
, EventType
Subject
, , DataVersion
nebo data události (napříkladdata.key1
). Pro vlastní vstupní schéma použijte datová pole události (například data.key1
). Pro přístup k polím v datové části použijte notaci (tečka .
). Například data.siteName
pro přístup k siteName
následující ukázkové události nebo action
pro následující data.appEventTypeDetail.action
ukázkovou událost.
"data": {
"appEventTypeDetail": {
"action": "Started"
},
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
},
Poznámka:
Event Grid nepodporuje filtrování podle pole objektů. Povoluje pouze řetězec, logickou hodnotu, čísla a pole stejných typů (například celočíselné pole nebo pole řetězců).
Hodnoty
Hodnoty můžou být: číslo, řetězec, logická hodnota nebo pole.
Operátory
Dostupné operátory pro čísla jsou:
NumberIn
Operátor NumberIn se vyhodnotí jako true, pokud je hodnota klíče jednou ze zadaných hodnot filtru . V následujícím příkladu zkontroluje, zda je hodnota counter
atributu v oddílu data
5 nebo 1.
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "data.counter",
"values": [
5,
1
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a, b, c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
NumberNotIn
NumberNotIn se vyhodnotí jako true, pokud hodnota klíče není žádnou ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, jestli hodnota atributu counter
v oddílu data
není 41 a 0.
"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "data.counter",
"values": [
41,
0
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a, b, c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
NumberLessThan
Operátor NumberLessThan se vyhodnotí jako true, pokud je hodnota klíče menší než zadaná hodnota filtru. V následujícím příkladu zkontroluje, zda je hodnota counter
atributu v oddílu data
menší než 100.
"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "data.counter",
"value": 100
}]
Pokud je klíčem matice, jsou všechny hodnoty v poli kontrolovány proti hodnotě filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH key IN (v1, v2, v3)
IF key < filter
MATCH
NumberGreaterThan
Operátor NumberGreaterThan se vyhodnotí jako true, pokud je hodnota klíče větší než zadaná hodnota filtru. V následujícím příkladu zkontroluje, zda je hodnota counter
atributu v oddílu data
větší než 20.
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.counter",
"value": 20
}]
Pokud je klíčem matice, jsou všechny hodnoty v poli kontrolovány proti hodnotě filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH key IN (v1, v2, v3)
IF key > filter
MATCH
NumberLessThanOrEquals
Operátor NumberLessThanOrEquals se vyhodnotí jako true, pokud je hodnota klíče menší nebo rovna zadané hodnotě filtru. V následujícím příkladu zkontroluje, zda je hodnota counter
atributu v oddílu data
menší nebo rovna 100.
"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "data.counter",
"value": 100
}]
Pokud je klíčem matice, jsou všechny hodnoty v poli kontrolovány proti hodnotě filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH key IN (v1, v2, v3)
IF key <= filter
MATCH
NumberGreaterThanOrEquals
Operátor NumberGreaterThanOrEquals se vyhodnotí jako true, pokud je hodnota klíče větší nebo rovna zadané hodnotě filtru. V následujícím příkladu zkontroluje, zda je hodnota counter
atributu v oddílu data
větší nebo rovna 30.
"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "data.counter",
"value": 30
}]
Pokud je klíčem matice, jsou všechny hodnoty v poli kontrolovány proti hodnotě filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH key IN (v1, v2, v3)
IF key >= filter
MATCH
NumberInRange
Operátor NumberInRange se vyhodnotí jako true, pokud je hodnota klíče v jedné ze zadaných oblastí filtru. V následujícím příkladu zkontroluje, zda je hodnota key1
atributu v oddílu data
v jednom ze dvou oblastí: 3,14159 - 999,95, 3000 - 4000.
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
Vlastnost values
je pole oblastí. V předchozím příkladu se jedná o matici dvou oblastí. Tady je příklad pole s jednou oblastí, která se má zkontrolovat.
Matice s jednou oblastí:
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtrem: pole oblastí. V tomto pseudokódu a
jsou b
nízké a vysoké hodnoty jednotlivých oblastí v poli. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
MATCH
NumberNotInRange
Operátor NumberNotInRange se vyhodnotí jako true, pokud hodnota klíče není v žádném ze zadaných rozsahů filtru. V následujícím příkladu zkontroluje, zda je hodnota key1
atributu v oddílu data
v jednom ze dvou oblastí: 3,14159 - 999,95, 3000 - 4000. Pokud ano, vrátí operátor hodnotu false.
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
Vlastnost values
je pole oblastí. V předchozím příkladu se jedná o matici dvou oblastí. Tady je příklad pole s jednou oblastí, která se má zkontrolovat.
Matice s jednou oblastí:
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtrem: pole oblastí. V tomto pseudokódu a
jsou b
nízké a vysoké hodnoty jednotlivých oblastí v poli. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
FAIL_MATCH
Dostupný operátor pro logické hodnoty je:
BoolEquals
Operátor BoolEquals se vyhodnotí jako true, pokud je hodnota klíče zadaným logickým filtrem hodnot. V následujícím příkladu zkontroluje, zda hodnota isEnabled
atributu v oddílu data
je true
.
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "data.isEnabled",
"value": true
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici s logickou hodnotou filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
Dostupné operátory pro řetězce jsou:
StringContains
StringContains se vyhodnotí jako true, pokud hodnota klíče obsahuje některou ze zadaných hodnot filtru (jako podřetězce). V následujícím příkladu zkontroluje, zda hodnota key1
atributu v oddílu data
obsahuje jeden ze zadaných podřetědců: microsoft
nebo azure
. Obsahuje ho například azure data factory
azure
.
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
MATCH
StringNotContains
Operátor StringNotContains se vyhodnotí jako true, pokud klíč neobsahuje zadané hodnoty filtru jako podřetězce. Pokud klíč obsahuje jednu ze zadaných hodnot jako podřetězec, operátor vyhodnotí hodnotu false. V následujícím příkladu vrátí operátor hodnotu true pouze v případě, že hodnota key1
atributu v oddílu data
nemá contoso
a fabrikam
jako podřetězezece.
"advancedFilters": [{
"operatorType": "StringNotContains",
"key": "data.key1",
"values": [
"contoso",
"fabrikam"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
FAIL_MATCH
Aktuální omezení tohoto operátoru najdete v části Omezení .
StringBeginsWith
Operátor StringBeginsWith se vyhodnotí jako true, pokud hodnota klíče začíná některou ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda hodnota key1
atributu v oddílu data
začíná event
nebo message
. Například event hubs
začíná na event
.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
MATCH
StringNotBeginsWith
Operátor StringNotBeginsWith se vyhodnotí jako true, pokud hodnota klíče nezačíná žádnou ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda hodnota key1
atributu v oddílu data
nezačíná event
nebo message
.
"advancedFilters": [{
"operatorType": "StringNotBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
FAIL_MATCH
StringEndsWith
Operátor StringEndsWith se vyhodnotí jako true, pokud hodnota klíče končí jednou ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda hodnota atributu key1
v oddílu data
končí jpg
nebo jpeg
nebo png
. Například eventgrid.png
končí na png
.
"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
MATCH
StringNotEndsWith
Operátor StringNotEndsWith se vyhodnotí jako true, pokud hodnota klíče nekončí žádnou ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda hodnota atributu key1
v oddílu data
nekončí jpg
nebo jpeg
nebo png
.
"advancedFilters": [{
"operatorType": "StringNotEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
FAIL_MATCH
StringIn
Operátor StringIn zkontroluje, jestli hodnota klíče přesně odpovídá jedné ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda je hodnota key1
atributu v oddílu data
nebo fabrikam
.factory
contoso
"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"contoso",
"fabrikam",
"factory"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
StringNotIn
Operátor StringNotIn zkontroluje, zda hodnota klíče neodpovídá žádné ze zadaných hodnot filtru. V následujícím příkladu zkontroluje, zda hodnota key1
atributu v oddílu data
není aws
a bridge
.
"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]
Pokud je klíčem matice, zkontrolují se všechny hodnoty v matici hodnot filtru. Tady je pseudokód s klíčem: [v1, v2, v3]
a filtr: [a,b,c]
. Všechny hodnoty klíče s datovými typy, které neodpovídají datovému typu filtru, se ignorují.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
Všechna porovnání řetězců nerozlišují malá a velká písmena.
Poznámka:
Pokud JSON události neobsahuje rozšířený klíč filtru, filtr se vyhodnotí jako neodpovídající pro následující operátory: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThan, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.
Filtr se vyhodnotí jako odpovídající pro následující operátory: NumberNotIn, StringNotIn.
IsNullOrUndefined
Operátor IsNullOrUndefined se vyhodnotí jako true, pokud je hodnota klíče NULL nebo nedefinovaná.
{
"operatorType": "IsNullOrUndefined",
"key": "data.key1"
}
V následujícím příkladu chybí klíč1, takže operátor by se vyhodnotil jako true.
{
"data":
{
"key2": 5
}
}
V následujícím příkladu je klíč1 nastaven na hodnotu null, takže operátor by se vyhodnotil jako true.
{
"data":
{
"key1": null
}
}
Pokud má klíč1 v těchto příkladech jinou hodnotu, operátor by se vyhodnotil jako false.
IsNotNull
Operátor IsNotNull se vyhodnotí jako true, pokud hodnota klíče není NULL nebo není definována.
{
"operatorType": "IsNotNull",
"key": "data.key1"
}
OR and AND
Pokud zadáte jeden filtr s více hodnotami, provede se operace OR , takže hodnota pole klíče musí být jedna z těchto hodnot. Tady je příklad:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/",
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
Pokud zadáte více různých filtrů, provede se operace AND , takže každá podmínka filtru musí být splněna. Tady je příklad:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
CloudEvents
U událostí ve schématu CloudEvents použijte pro klíč následující hodnoty: eventid
, source
, eventtype
, eventtypeversion
, nebo data události (napříkladdata.key1
).
V CloudEvents 1.0 můžete také použít atributy kontextu rozšíření. V následujícím příkladu comexampleextension1
jsou comexampleothervalue
atributy kontextu rozšíření.
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "C234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"subject": null,
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"appinfoA" : "abc",
"appinfoB" : 123,
"appinfoC" : true
}
}
Tady je příklad použití atributu kontextu rozšíření ve filtru.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "comexampleothervalue",
"values": [
"5",
"1"
]
}]
Omezení
Rozšířené filtrování má následující omezení:
- 25 rozšířených filtrů a 25 hodnot filtru napříč všemi filtry na odběr Služby Event Grid
- 512 znaků na řetězcovou hodnotu
- Klíče s znakem
.
(tečka) v nich. Například:http://schemas.microsoft.com/claims/authnclassreference
nebojohn.doe@contoso.com
. V současné době nejsou v klávesách podporovány řídicí znaky.
Stejný klíč lze použít ve více než jednom filtru.
Další kroky
- Další informace o filtrování událostí pomocí PowerShellu a Azure CLI najdete v tématu Filtrování událostí pro Event Grid.
- Pokud chcete rychle začít používat Event Grid, přečtěte si téma Vytváření a směrování vlastních událostí pomocí Služby Azure Event Grid.