Event Grid abonelikleri için olay filtrelemeyi anlama
Bu makalede, uç noktanıza hangi olayların gönderileceğini filtrelemenin farklı yolları açıklanmaktadır. Olay aboneliği oluştururken filtreleme için üç seçeneğiniz vardır:
- Olay tipleri
- Konu ile başlar veya ile biter
- Gelişmiş alanlar ve işleçler
Azure Resource Manager şablonu
Bu makalede gösterilen örnekler, Azure Resource Manager (ARM) şablonlarında filtre tanımlamaya yönelik JSON kod parçacıklarıdır. Eksiksiz bir ARM şablonu ve ARM şablonu dağıtma örneği için bkz . Hızlı Başlangıç: ARM şablonu kullanarak Blob depolama olaylarını web uç noktasına yönlendirme. Hızlı başlangıçtaki örnekte yer alan bölümün filter
bazı bölümleri aşağıda verilmiştir. ARM şablonu aşağıdaki kaynakları tanımlar.
- Azure depolama hesabı
- Depolama hesabı için sistem konusu
- Sistem konusu için olay aboneliği. Alt bölümü olay aboneliği bölümünde görürsünüz
filter
.
Aşağıdaki örnekte, ve olayları için Microsoft.Storage.BlobCreated
Microsoft.Storage.BlobDeleted
olay aboneliği filtrelenir.
{
"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'))]"
]
}
]
}
Olay türü filtreleme
Varsayılan olarak, olay kaynağı için tüm olay türleri uç noktaya gönderilir. Uç noktanıza yalnızca belirli olay türlerini göndermeye karar vekleyebilirsiniz. Örneğin, kaynaklarınızdaki güncelleştirmeler için bildirim alabilir, ancak silme işlemleri gibi diğer işlemler için bildirim alamayabilirsiniz. Bu durumda, olay türüne Microsoft.Resources.ResourceWriteSuccess
göre filtreleyin. Olay türlerini içeren bir dizi sağlayın veya olay kaynağı için tüm olay türlerini almak üzere belirtin All
.
Olay türüne göre filtrelemeye yönelik JSON söz dizimi şöyledir:
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
Konu filtreleme
Konuya göre basit filtreleme için konu için bir başlangıç veya bitiş değeri belirtin. Örneğin, yalnızca bir metin dosyasını depolama hesabına yüklemeyle .txt
ilgili olayları almak için konu sonu değerini belirtebilirsiniz. Alternatif olarak, konu /blobServices/default/containers/testcontainer
başlığını filtreleyebilir ve bu kapsayıcının tüm olaylarını alabilir ancak depolama hesabındaki diğer kapsayıcıları alamayabilirsiniz.
Olayları özel konulara yayımlarken, abonelerin olayla ilgilenip ilgilenmediklerini bilmelerini kolaylaştıran etkinlikleriniz için konular oluşturun. Aboneler olayları filtrelemek ve yönlendirmek için subject özelliğini kullanır. Abonelerin bu yolun segmentlerine göre filtrelemesi için olayın gerçekleştiği yerin yolunu eklemeyi göz önünde bulundurun. Yol, abonelerin olayları dar veya geniş kapsamlı bir şekilde filtrelemesini sağlar. Konuda olduğu gibi /A/B/C
üç segment yolu sağlarsanız, aboneler geniş bir olay kümesi elde etmek için ilk segmente /A
göre filtreleyebilir. Bu aboneler veya /A/D/E
gibi /A/B/C
konularla ilgili olaylar alır. Diğer aboneler, daha dar bir olay kümesi elde etmek için ölçütüne göre filtreleyebilir /A/B
.
Örnekler (Blob Depolama olayları)
Blob olayları, oluşturulan veya silinen nesnenin olay türüne, kapsayıcı adına veya adına göre filtrelenebilir.
Blob depolama olaylarının konusu şu biçimi kullanır:
/blobServices/default/containers/<containername>/blobs/<blobname>
Depolama hesabının tüm olaylarını eşleştirmek için konu filtrelerini boş bırakabilirsiniz.
Ön eki paylaşan bir kapsayıcı kümesinde oluşturulan bloblardan gelen olayları eşleştirmek için aşağıdaki gibi bir subjectBeginsWith
filtre kullanın:
/blobServices/default/containers/containerprefix
Belirli bir kapsayıcıda oluşturulan bloblardan gelen olayları eşleştirmek için aşağıdaki gibi bir subjectBeginsWith
filtre kullanın:
/blobServices/default/containers/containername/
Blob adı ön ekini paylaşan belirli bir kapsayıcıda oluşturulan bloblardan gelen olayları eşleştirmek için aşağıdaki gibi bir subjectBeginsWith
filtre kullanın:
/blobServices/default/containers/containername/blobs/blobprefix
Kapsayıcının belirli bir alt klasöründe oluşturulan bloblardan gelen olayları eşleştirmek için aşağıdaki gibi bir subjectBeginsWith
filtre kullanın:
/blobServices/default/containers/{containername}/blobs/{subfolder}/
Blob sonekini paylaşan belirli bir kapsayıcıda oluşturulan bloblardan gelen olayları eşleştirmek için ".log" veya ".jpg" gibi bir subjectEndsWith
filtre kullanın.
Gelişmiş filtreleme
Veri alanlarındaki değerlere göre filtrelemek ve karşılaştırma işlecini belirtmek için gelişmiş filtreleme seçeneğini kullanın. Gelişmiş filtrelemede şunları belirtirsiniz:
- işleç türü - Karşılaştırma türü.
- key - Filtreleme için kullandığınız olay verilerindeki alan. Bir sayı, boole, dize veya dizi olabilir.
- values - Anahtarla karşılaştıracak değer veya değerler.
Tuş
Anahtar, filtreleme için kullandığınız olay verilerindeki alandır. Aşağıdaki türlerden biri olabilir:
Sayı
Boolean
String
Dizi. Bu özelliği kullanmak için özelliğini true olarak ayarlamanız
enableAdvancedFilteringOnArrays
gerekir."filter": { "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log", "subjectEndsWith": ".jpg", "enableAdvancedFilteringOnArrays": true }
Bulut Olayları şemasındaki olaylar için anahtar için aşağıdaki değerleri kullanın: eventid
, source
, eventtype
, veya eventtypeversion
olay verileri (gibidata.key1
).
Event Grid temel katmanını kullanıyorsanız, Event Grid şemasındaki olaylar için anahtar için şu değerleri kullanın: ID
, Topic
, Subject
, EventType
, , DataVersion
veya olay verileri (gibidata.key1
). Özel giriş şeması için olay verisi alanlarını (gibi data.key1
) kullanın. Veri bölümündeki alanlara erişmek için (nokta) gösterimini .
kullanın. Örneğin, data.siteName
data.appEventTypeDetail.action
erişmek siteName
için veya action
aşağıdaki örnek olay için .
"data": {
"appEventTypeDetail": {
"action": "Started"
},
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
},
Dekont
Event Grid, bir nesne dizisinde filtrelemeyi desteklemez. Yalnızca aynı türlerdeki Dize, Boole, Sayılar ve Dizi'ye (tamsayı dizisi veya dize dizisi gibi) izin verir.
Değerler
Değerler şunlar olabilir: sayı, dize, boole veya dizi
İşleçler
Sayılar için kullanılabilir işleçler şunlardır:
NumberIn
Anahtar değeri belirtilen filtre değerlerinden biriyse NumberIn işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin counter
5 mi yoksa 1 mi olduğunu denetler.
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "data.counter",
"values": [
5,
1
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a, b, c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
NumberNotIn
Anahtar değeri belirtilen filtre değerlerinden biri değilse NumberNotIn değeri true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin counter
41 ve 0 olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "data.counter",
"values": [
41,
0
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a, b, c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
NumberLessThan
Anahtar değeri belirtilen filtre değerinden küçükse NumberLessThan işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin değerinin counter
100'den data
küçük olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "data.counter",
"value": 100
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerine göre denetlenir. Anahtarı ile sahte kod aşağıdadır: [v1, v2, v3]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH key IN (v1, v2, v3)
IF key < filter
MATCH
NumberGreaterThan
Anahtar değeri belirtilen filtre değerinden büyükse NumberGreaterThan işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin değerinin counter
20'den data
büyük olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.counter",
"value": 20
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerine göre denetlenir. Anahtarı ile sahte kod aşağıdadır: [v1, v2, v3]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH key IN (v1, v2, v3)
IF key > filter
MATCH
NumberLessThanOrEquals
Anahtar değeri belirtilen filtre değerinden küçük veya buna eşitse NumberLessThanOrEquals işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin değerinin counter
100'den data
küçük veya buna eşit olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "data.counter",
"value": 100
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerine göre denetlenir. Anahtarı ile sahte kod aşağıdadır: [v1, v2, v3]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH key IN (v1, v2, v3)
IF key <= filter
MATCH
NumberGreaterThanOrEquals
Anahtar değeri belirtilen filtre değerinden büyük veya buna eşitse NumberGreaterThanOrEquals işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin değerinin counter
30'dan data
büyük veya buna eşit olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "data.counter",
"value": 30
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerine göre denetlenir. Anahtarı ile sahte kod aşağıdadır: [v1, v2, v3]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH key IN (v1, v2, v3)
IF key >= filter
MATCH
NumberInRange
Anahtar değeri belirtilen filtre aralıklarından birindeyse NumberInRange işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümdeki data
özniteliğin değerinin key1
iki aralık arasında olup olmadığını denetler: 3.14159 - 999.95, 3000 - 4000.
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
values
özelliği bir aralık dizisidir. Önceki örnekte, iki aralıklı bir dizidir. Denetlenecek tek aralıklı bir dizi örneği aşağıda verilmiştir.
Tek aralıklı dizi:
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtara sahip sahte kod ve [v1, v2, v3]
filtre: bir aralık dizisi. Bu sahte kodda a
ve b
dizideki her aralığın düşük ve yüksek değerleridir. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
MATCH
NumberNotInRange
Anahtar değeri belirtilen filtre aralıklarından birinde değilse NumberNotInRange işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümdeki data
özniteliğin değerinin key1
iki aralık arasında olup olmadığını denetler: 3.14159 - 999.95, 3000 - 4000. Bu ise, işleç false döndürür.
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
values
özelliği bir aralık dizisidir. Önceki örnekte, iki aralıklı bir dizidir. Denetlenecek tek aralıklı bir dizi örneği aşağıda verilmiştir.
Tek aralıklı dizi:
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtara sahip sahte kod ve [v1, v2, v3]
filtre: bir aralık dizisi. Bu sahte kodda a
ve b
dizideki her aralığın düşük ve yüksek değerleridir. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
FAIL_MATCH
Boole'lar için kullanılabilir işleç şu şekildedir:
BoolEquals
Anahtar değeri belirtilen boole değeri filtresiyse BoolEquals işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki true
özniteliğin data
değerinin isEnabled
olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "data.isEnabled",
"value": true
}]
Anahtar bir diziyse, dizideki tüm değerler filtre boole değeriyle denetlenir. Anahtarı ile sahte kod aşağıdadır: [v1, v2, v3]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
Dizeler için kullanılabilir işleçler şunlardır:
StringContains
Anahtar değeri belirtilen filtre değerlerinden herhangi birini içeriyorsa StringContains true olarak değerlendirilir (alt dizeler olarak). Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin key1
belirtilen alt dizelerden birini içerip içermediğini denetler: microsoft
veya azure
. Örneğin, azure data factory
içinde var azure
.
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
MATCH
StringNotContains
Anahtar, belirtilen filtre değerlerini alt dize olarak içermiyorsa StringNotContains işleci true olarak değerlendirilir. Anahtar, alt dize olarak belirtilen değerlerden birini içeriyorsa, işleç false olarak değerlendirilir. Aşağıdaki örnekte, işleç yalnızca bölümdeki özniteliğin değerinin key1
ve fabrikam
alt dizeleri yoksa contoso
true döndürür.data
"advancedFilters": [{
"operatorType": "StringNotContains",
"key": "data.key1",
"values": [
"contoso",
"fabrikam"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
FAIL_MATCH
Bu işlecin geçerli sınırlaması için Sınırlamalar bölümüne bakın.
StringBeginsWith
Anahtar değeri belirtilen filtre değerlerinden biriyle başlıyorsa StringBeginsWith işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin key1
veya message
ile event
başlayıp başlamayacağını denetler. Örneğin, event hubs
ile event
başlar.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
MATCH
StringNotBeginsWith
Anahtar değeri belirtilen filtre değerlerinden herhangi biriyle başlamazsa StringNotBeginsWith işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin key1
veya message
ile event
başlayıp başlamadığını denetler.
"advancedFilters": [{
"operatorType": "StringNotBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
FAIL_MATCH
StringEndsWith
Anahtar değeri belirtilen filtre değerlerinden biriyle bitiyorsa StringEndsWith işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin key1
veya png
jpeg
ile jpg
bitip bitmediğini denetler. Örneğin, eventgrid.png
ile png
biter.
"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
MATCH
StringNotEndsWith
Anahtar değeri belirtilen filtre değerlerinden herhangi biriyle bitmezse StringNotEndsWith işleci true olarak değerlendirilir. Aşağıdaki örnekte, bölümündeki özniteliğin data
değerinin key1
veya png
jpeg
ile jpg
bitip bitmediğini denetler.
"advancedFilters": [{
"operatorType": "StringNotEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
FAIL_MATCH
StringIn
StringIn işleci anahtar değerinin belirtilen filtre değerlerinden biriyle tam olarak eşleşip eşleşmediğini denetler. Aşağıdaki örnekte, bölümündeki contoso
özniteliğin data
değerinin key1
veya fabrikam
factory
olup olmadığını denetler.
"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"contoso",
"fabrikam",
"factory"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
StringNotIn
StringNotIn işleci, anahtar değerinin belirtilen filtre değerlerinden herhangi biriyle eşleşip eşleşmediğini denetler. Aşağıdaki örnekte, bölümündeki özniteliğin değerinin key1
ve bridge
olup olmadığını aws
denetler.data
"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]
Anahtar bir diziyse, dizideki tüm değerler filtre değerleri dizisine göre denetlenir. Anahtarı ve filtresini içeren sahte kod şu şekildedir: [v1, v2, v3]
[a,b,c]
. Filtrenin veri türüyle eşleşmeyen veri türlerine sahip tüm anahtar değerler yoksayılır.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
Tüm dize karşılaştırmaları büyük/küçük harfe duyarlı değildir.
Dekont
Olay JSON gelişmiş filtre anahtarını içermiyorsa, filtre şu işleçler için eşleşmemiş olarak değerlendirilir: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.
Filtre, aşağıdaki işleçler için eşleştirildi olarak değerlendirilir: NumberNotIn, StringNotIn.
IsNullOrUndefined
IsNullOrUndefined işleci, anahtarın değeri NULL veya tanımsız olduğunda true olarak değerlendirilir.
{
"operatorType": "IsNullOrUndefined",
"key": "data.key1"
}
Aşağıdaki örnekte anahtar1 eksik olduğundan işleç true olarak değerlendirilir.
{
"data":
{
"key2": 5
}
}
Aşağıdaki örnekte anahtar1 null olarak ayarlandığından işleç true olarak değerlendirilir.
{
"data":
{
"key1": null
}
}
Anahtar1 bu örneklerde başka bir değere sahipse işleç false olarak değerlendirilir.
Isnotnull
Anahtarın değeri NULL veya tanımsız değilse IsNotNull işleci true olarak değerlendirilir.
{
"operatorType": "IsNotNull",
"key": "data.key1"
}
OR and AND
Birden çok değer içeren tek bir filtre belirtirseniz, bir OR işlemi gerçekleştirilir, bu nedenle anahtar alanının değeri bu değerlerden biri olmalıdır. Bir örnek aşağıda verilmiştir:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/",
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
Birden çok farklı filtre belirtirseniz, bir AND işlemi yapılır, bu nedenle her filtre koşulu karşılanmalıdır. Bir örnek aşağıda verilmiştir:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
CloudEvents
CloudEvents şemasındaki olaylar için anahtar için aşağıdaki değerleri kullanın: eventid
, source
, eventtype
, eventtypeversion
veya olay verileri (gibidata.key1
).
CloudEvents 1.0'da uzantı bağlamı özniteliklerini de kullanabilirsiniz. Aşağıdaki örnekte comexampleextension1
ve comexampleothervalue
uzantı bağlamı öznitelikleridir.
{
"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
}
}
Aşağıda, bir filtrede uzantı bağlam özniteliği kullanma örneği verilmiştır.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "comexampleothervalue",
"values": [
"5",
"1"
]
}]
Sınırlamalar
Gelişmiş filtreleme aşağıdaki sınırlamalara sahiptir:
- Event Grid aboneliği başına tüm filtreler arasında 25 gelişmiş filtre ve 25 filtre değeri
- Dize değeri başına 512 karakter
.
İçlerinde (nokta) karakter bulunan tuşlar. Örneğin:http://schemas.microsoft.com/claims/authnclassreference
veyajohn.doe@contoso.com
. Şu anda anahtarlarda kaçış karakterleri için destek yoktur.
Aynı anahtar birden fazla filtrede kullanılabilir.
Sonraki adımlar
- PowerShell ve Azure CLI ile olayları filtreleme hakkında bilgi edinmek için bkz . Event Grid için olayları filtreleme.
- Event Grid'i kullanmaya hızlı bir şekilde başlamak için bkz . Azure Event Grid ile özel olaylar oluşturma ve yönlendirme.