Az Event Grid-előfizetések eseményszűrésének ismertetése
Ez a cikk a végpontnak küldött események szűrésének különböző módjait ismerteti. Esemény-előfizetés létrehozásakor három szűrési lehetőség közül választhat:
- Eseménytípusok
- A tárgy kezdőbetűje vagy vége:
- Speciális mezők és operátorok
Azure Resource Manager-sablon
A cikkben bemutatott példák JSON-kódrészletek az Azure Resource Manager-sablonok szűrőinek definiálásához. Egy teljes ARM-sablonra és egy ARM-sablon üzembe helyezésére vonatkozó példa: Rövid útmutató: Blob Storage-események átirányítása a webes végpontra ARM-sablon használatával. Íme néhány további szakasz a filter
rövid útmutatóban szereplő példából. Az ARM-sablon a következő erőforrásokat határozza meg.
- Azure Storage-fiók
- A tárfiók rendszertémaköre
- Esemény-előfizetés a rendszertémakörhöz. Az alszakasz az
filter
esemény-előfizetés szakaszban jelenik meg.
Az alábbi példában az esemény-előfizetés szűri az eseményeket és Microsoft.Storage.BlobDeleted
az Microsoft.Storage.BlobCreated
eseményeket.
{
"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'))]"
]
}
]
}
Eseménytípus-szűrés
Alapértelmezés szerint az eseményforrás összes eseménytípusa a végpontra kerül. Dönthet úgy, hogy csak bizonyos eseménytípusokat küld a végpontnak. Értesülhet például az erőforrások frissítéséről, de más műveletekről, például törlésekről nem. Ebben az esetben szűrjön az Microsoft.Resources.ResourceWriteSuccess
esemény típusa szerint. Adjon meg egy tömböt az eseménytípusokkal, vagy adja meg All
az eseményforrás összes eseménytípusának lekérését.
Az eseménytípus szerinti szűrés JSON-szintaxisa a következő:
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
Tárgyszűrés
A tárgy szerinti egyszerű szűréshez adja meg a tárgy kezdő vagy záró értékét. Megadhatja például, hogy a tárgy vége .txt
csak a szövegfájl tárfiókba való feltöltésével kapcsolatos események lekérése legyen. Vagy szűrheti a tárgyat /blobServices/default/containers/testcontainer
, hogy lekérje az adott tároló összes eseményét, de a tárfiók többi tárolójának nem.
Amikor eseményeket tesz közzé egyéni témakörökben, hozzon létre témákat az eseményekhez, amelyek megkönnyítik az előfizetők számára, hogy megtudják, érdekli-e őket az esemény. Az előfizetők a tárgytulajdonság használatával szűrik és irányítják az eseményeket. Fontolja meg az esemény helyszínének elérési útját, hogy az előfizetők az elérési út szegmensei alapján szűrhessenek. Az elérési út lehetővé teszi az előfizetők számára az események szűk vagy széles körű szűrését. Ha a tárgyhoz hasonlóan /A/B/C
három szegmensútvonalat ad meg, az előfizetők az első szegmens /A
alapján szűrhetnek az események széles körének lekéréséhez. Ezek az előfizetők eseményeket kapnak olyan témákkal, mint /A/B/C
vagy /A/D/E
. Más előfizetők szűrhetnek /A/B
az események szűkebb halmazának lekéréséhez.
Példák (Blob Storage-események)
A blobesemények szűrhetők a létrehozott vagy törölt objektum eseménytípusa, tárolóneve vagy neve alapján.
A Blob Storage-események tárgya a következő formátumot használja:
/blobServices/default/containers/<containername>/blobs/<blobname>
A tárfiók összes eseményének egyeztetéséhez üresen hagyhatja a tárgyszűrőket.
Az előtaggal rendelkező tárolókban létrehozott blobok eseményeinek egyeztetéséhez használjon egy szűrőt subjectBeginsWith
, például:
/blobServices/default/containers/containerprefix
Az adott tárolóban létrehozott blobok eseményeinek egyeztetéséhez használjon a következőhöz hasonló szűrőt subjectBeginsWith
:
/blobServices/default/containers/containername/
Ha egy adott tárolóban létrehozott blobok eseményeit szeretné egy blobnév-előtaggal megosztani, használjon a következőhöz hasonló szűrőt subjectBeginsWith
:
/blobServices/default/containers/containername/blobs/blobprefix
Ha egy tároló egy adott almappájában létrehozott blobokból származó eseményeket szeretné egyeztetni, használjon a következőhöz hasonló szűrőt subjectBeginsWith
:
/blobServices/default/containers/{containername}/blobs/{subfolder}/
Ha egy adott tárolóban létrehozott blobok eseményeit szeretné egy blob utótagjával megosztani, használjon olyan szűrőt subjectEndsWith
, mint a ".log" vagy a ".jpg".
Speciális szűrés
Az adatmezők értékei alapján történő szűréshez és az összehasonlító operátor megadásához használja a speciális szűrési lehetőséget. Speciális szűrés esetén a következőket kell megadnia:
- operátor típusa – Az összehasonlítás típusa.
- key – A szűréshez használt eseményadatok mezője. Ez lehet szám, logikai, sztring vagy tömb.
- értékek – A kulcshoz viszonyítandó érték vagy értékek.
Key
A kulcs a szűréshez használt eseményadatok mezője. A következő típusok egyike lehet:
Szám
Boolean
Sztring
Tömb. A funkció használatához igaz értékre kell állítania a
enableAdvancedFilteringOnArrays
tulajdonságot."filter": { "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log", "subjectEndsWith": ".jpg", "enableAdvancedFilteringOnArrays": true }
A Cloud Events-sémában lévő eseményekhez használja a következő értékeket a kulcshoz: eventid
, source
, eventtype
, eventtypeversion
, vagy eseményadatokhoz (példáuldata.key1
).
Ha alapszintű Event Grid-szintet használ, az Event Grid-sémában lévő eseményekhez használja a kulcs alábbi értékeit: ID
, Topic
, , Subject
, EventType
, DataVersion
vagy eseményadatok (például data.key1
). Egyéni bemeneti séma esetén használja az esemény adatmezőit (példáuldata.key1
). Az adatszakasz mezőinek eléréséhez használja a .
(pont) jelölést. Például data.siteName
data.appEventTypeDetail.action
a hozzáféréshez siteName
vagy action
a következő mintaeseményhez.
"data": {
"appEventTypeDetail": {
"action": "Started"
},
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
},
Megjegyzés:
Az Event Grid nem támogatja az objektumtömbök szűrését. Csak az azonos típusú sztringeket, logikai értékeket, számokat és tömböket engedélyezi (például egész számtömböt vagy sztringtömböt).
Értékek
Az értékek lehetnek: szám, sztring, logikai vagy tömb
Operátorok
A számokhoz elérhető operátorok a következők:
NumberIn
A NumberIn operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek egyike. Az alábbi példában ellenőrzi, hogy a counter
szakaszban szereplő data
attribútum értéke 5 vagy 1.
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "data.counter",
"values": [
5,
1
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a, b, c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
NumberNotIn
A NumberNotIn értéke igaz, ha a kulcs értéke nem a megadott szűrőértékek egyike. Az alábbi példában data
azt ellenőrzi, hogy a counter
szakasz attribútumának értéke nem 41 és 0-e.
"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "data.counter",
"values": [
41,
0
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a, b, c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
NumberLessThan
A NumberLessThan operátor igaz értéket ad vissza, ha a kulcs értéke kisebb a megadott szűrőértéknél. Az alábbi példában ellenőrzi, hogy a counter
szakaszban szereplő data
attribútum értéke kisebb-e 100-nál.
"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "data.counter",
"value": 100
}]
Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH key IN (v1, v2, v3)
IF key < filter
MATCH
NumberGreaterThan
A NumberGreaterThan operátor igaz értéket ad vissza, ha a kulcs értéke nagyobb a megadott szűrőértéknél. Az alábbi példában data
azt ellenőrzi, hogy a szakasz attribútumának counter
értéke nagyobb-e 20-nál.
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.counter",
"value": 20
}]
Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH key IN (v1, v2, v3)
IF key > filter
MATCH
NumberLessThanOrEquals
A NumberLessThanOrEquals operátor értéke igaz, ha a kulcs értéke kisebb vagy egyenlő a megadott szűrőértéknél . Az alábbi példában data
azt ellenőrzi, hogy a szakasz attribútumának counter
értéke kisebb-e, mint 100.
"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "data.counter",
"value": 100
}]
Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH key IN (v1, v2, v3)
IF key <= filter
MATCH
NumberGreaterThanOrEquals
A NumberGreaterThanOrEquals operátor értéke igaz, ha a kulcs értéke nagyobb vagy egyenlő a megadott szűrőértéknél . Az alábbi példában data
azt ellenőrzi, hogy a szakasz attribútumának counter
értéke nagyobb-e, mint 30.
"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "data.counter",
"value": 30
}]
Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH key IN (v1, v2, v3)
IF key >= filter
MATCH
NumberInRange
A NumberInRange operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőtartományok egyikében található. A következő példában data
ellenőrzi, hogy a szakasz attribútumának key1
értéke a két tartomány egyikében található-e: 3.14159 – 999.95, 3000 – 4000.
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
A values
tulajdonság tartománytömb. Az előző példában ez két tartományból álló tömb. Íme egy példa egy olyan tömbre, amelynek egy tartományát ellenőrizni kell.
Tömb egy tartománnyal:
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. A következő pszeudokódot kell megadni a kulccsal: [v1, v2, v3]
és a szűrővel: tartománytömb. Ebben a pszeudokódban a
b
a tömb minden tartományának alacsony és magas értékei vannak. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
MATCH
NumberNotInRange
A NumberNotInRange operátor igaz értéket ad vissza, ha a kulcs értéke nem szerepel a megadott szűrőtartományokban. A következő példában data
ellenőrzi, hogy a szakasz attribútumának key1
értéke a két tartomány egyikében található-e: 3.14159 – 999.95, 3000 – 4000. Ha így van, az operátor hamis értéket ad vissza.
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
A values
tulajdonság tartománytömb. Az előző példában ez két tartományból álló tömb. Íme egy példa egy olyan tömbre, amelynek egy tartományát ellenőrizni kell.
Tömb egy tartománnyal:
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. A következő pszeudokódot kell megadni a kulccsal: [v1, v2, v3]
és a szűrővel: tartománytömb. Ebben a pszeudokódban a
b
a tömb minden tartományának alacsony és magas értékei vannak. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
FAIL_MATCH
A logikai értékekhez elérhető operátor a következő:
BoolEquals
A BoolEquals operátor igaz értéket ad vissza, ha a kulcsérték a megadott logikai értékszűrő. Az alábbi példában ellenőrzi, hogy a szakaszban szereplő data
attribútum értéke isEnabled
a true
következő-e.
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "data.isEnabled",
"value": true
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrő logikai értékével. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
A sztringekhez elérhető operátorok a következők:
StringContains
A StringContains értéke igaz, ha a kulcsérték a megadott szűrőértékek bármelyikét tartalmazza (részszűrésekként). A következő példában ellenőrzi, hogy a szakaszban szereplő data
attribútum értéke key1
tartalmazza-e a megadott részsztringek egyikét: microsoft
vagy azure
. Például van azure data factory
azure
benne.
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
MATCH
StringNotContains
A StringNotContains operátor igaz értéket ad vissza, ha a kulcs nem tartalmazza a megadott szűrőértékeket alsztringként. Ha a kulcs a megadott értékek egyikét részsztringként tartalmazza, az operátor hamis értéket ad eredményül. Az alábbi példában data
az operátor csak akkor ad vissza igaz értéket, ha a key1
szakasz attribútumának értéke nem rendelkezik contoso
és fabrikam
alsztringként van megadva.
"advancedFilters": [{
"operatorType": "StringNotContains",
"key": "data.key1",
"values": [
"contoso",
"fabrikam"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
FAIL_MATCH
Az operátor aktuális korlátozásáról lásd a Korlátozások szakaszt.
StringBeginsWith
A StringBeginsWith operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek bármelyikével kezdődik. Az alábbi példában data
azt ellenőrzi, hogy a szakasz attribútumának key1
értéke a következővel event
kezdődik-e: vagy message
. Például a event hubs
következővel event
kezdődik: .
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
MATCH
StringNotBeginsWith
A StringNotBeginsWith operátor igaz értéket ad vissza, ha a kulcs értéke nem a megadott szűrőértékekkel kezdődik. Az alábbi példában data
ellenőrzi, hogy a szakasz attribútumának key1
értéke nem a következővel event
kezdődik-e, vagy message
.
"advancedFilters": [{
"operatorType": "StringNotBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
FAIL_MATCH
StringEndsWith
A StringEndsWith operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek egyikével végződik. Az alábbi példában azt ellenőrzi, hogy a szakasz attribútumának key1
értéke a következővel jpg
végződik-e: vagy jpeg
png
.data
Például a eventgrid.png
következővel png
végződik: .
"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
MATCH
StringNotEndsWith
A StringNotEndsWith operátor igaz értéket ad vissza, ha a kulcs értéke nem végződik a megadott szűrőértékekkel. A következő példában data
ellenőrzi, hogy a szakasz attribútumának key1
értéke nem végződik-e jpg
vagy jpeg
png
sem.
"advancedFilters": [{
"operatorType": "StringNotEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
FAIL_MATCH
StringIn
A StringIn operátor ellenőrzi, hogy a kulcs értéke pontosan megfelel-e a megadott szűrőértékek egyikének. Az alábbi példában ellenőrzi, hogy a szakaszban szereplő attribútum értéke key1
vagy fabrikam
factory
.data
contoso
"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"contoso",
"fabrikam",
"factory"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
StringNotIn
A StringNotIn operátor ellenőrzi, hogy a kulcs értéke nem felel-e meg a megadott szűrőértékek egyikének sem. Az alábbi példában data
ellenőrzi, hogy a szakasz attribútumának key1
értéke nem aws
és bridge
nem is.
"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]
Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3]
és a szűrő: [a,b,c]
. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
Az összes sztring-összehasonlítás nem megkülönbözteti a kis- és nagybetűket.
Megjegyzés:
Ha az esemény JSON-ja nem tartalmazza a speciális szűrőkulcsot, A szűrő nem egyezik a következő operátorokkal: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.
A szűrő kiértékelése a következő operátorok szerint történik: NumberNotIn, StringNotIn.
IsNullOrUndefined
Az IsNullOrUndefined operátor igaz értéket ad vissza, ha a kulcs értéke NULL vagy nem definiált.
{
"operatorType": "IsNullOrUndefined",
"key": "data.key1"
}
Az alábbi példában az 1. kulcs hiányzik, ezért az operátor értéke igaz.
{
"data":
{
"key2": 5
}
}
Az alábbi példában az 1. kulcs értéke null, így az operátor értéke igaz lesz.
{
"data":
{
"key1": null
}
}
Ha az 1. kulcsnak más értéke is van ezekben a példákban, az operátor hamis értéket ad ki.
IsNotNull
Az IsNotNull operátor igaz értéket ad vissza, ha a kulcs értéke nem NULL vagy nem definiált.
{
"operatorType": "IsNotNull",
"key": "data.key1"
}
VAGY és ÉS
Ha egyetlen szűrőt ad meg több értékkel, a rendszer OR műveletet hajt végre, így a kulcsmező értékének ezen értékek egyikének kell lennie. Here's an example:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/",
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
Ha több különböző szűrőt ad meg, az AND művelet befejeződik, így minden szűrőfeltételnek teljesülnie kell. Here's an example:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
CloudEvents
A CloudEvents sémában lévő eseményekhez használja a kulcs alábbi értékeit: eventid
, source
, , eventtype
, eventtypeversion
vagy eseményadatok (példáuldata.key1
).
A CloudEvents 1.0 bővítménykörnyezeti attribútumait is használhatja. Az alábbi példában comexampleextension1
comexampleothervalue
a bővítménykörnyezet attribútumai.
{
"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
}
}
Íme egy példa egy bővítménykörnyezet attribútumának szűrőben való használatára.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "comexampleothervalue",
"values": [
"5",
"1"
]
}]
Limitations
A speciális szűrésre a következő korlátozások vonatkoznak:
- 25 speciális szűrő és 25 szűrőérték az Event Grid-előfizetés összes szűrője között
- Sztringértékenként 512 karakter
- A (pont) karakterrel rendelkező
.
kulcsok. Például:http://schemas.microsoft.com/claims/authnclassreference
vagyjohn.doe@contoso.com
. A kulcsokban jelenleg nem támogatott a feloldó karakterek használata.
Ugyanaz a kulcs több szűrőben is használható.
Következő lépések
- Az események szűréséről a PowerShell és az Azure CLI használatával az Event Grid eseményeinek szűrése című témakörben olvashat.
- Az Event Grid használatának gyors megkezdéséhez tekintse meg az Egyéni események létrehozása és irányítása az Azure Event Griddel című témakört.