Event Grid abonelikleri için olay filtrelemeyi anlayınUnderstand event filtering for Event Grid subscriptions

Bu makalede, hangi olayların uç noktanıza gönderileceğini filtrelemeye yönelik farklı yollar açıklanmaktadır.This article describes the different ways to filter which events are sent to your endpoint. Bir olay aboneliği oluştururken filtreleme için üç seçeneğiniz vardır:When creating an event subscription, you have three options for filtering:

  • Olay türleriEvent types
  • Konu şununla başlıyor veya şununla bitiyorSubject begins with or ends with
  • Gelişmiş alanlar ve işleçlerAdvanced fields and operators

Olay türü filtrelemeEvent type filtering

Varsayılan olarak, olay kaynağı için tüm olay türleri uç noktaya gönderilir.By default, all event types for the event source are sent to the endpoint. Uç noktanıza yalnızca belirli olay türlerini gönderilmeye karar verebilirsiniz.You can decide to send only certain event types to your endpoint. Örneğin, kaynaklarınız için güncelleştirmeler hakkında bildirim alabilir, ancak silme işlemleri gibi diğer işlemlere yönelik bilgilendirilirsiniz.For example, you can get notified of updates to your resources, but not notified for other operations like deletions. Bu durumda, Microsoft.Resources.ResourceWriteSuccess olay türüne göre filtreleyin.In that case, filter by the Microsoft.Resources.ResourceWriteSuccess event type. Olay türlerine sahip bir dizi sağlayın veya olay kaynağı için All tüm olay türlerini almak üzere belirtin.Provide an array with the event types, or specify All to get all event types for the event source.

Olay türüne göre filtreleme için JSON sözdizimi şöyledir:The JSON syntax for filtering by event type is:

"filter": {
  "includedEventTypes": [
    "Microsoft.Resources.ResourceWriteFailure",
    "Microsoft.Resources.ResourceWriteSuccess"
  ]
}

Konu filtrelemeSubject filtering

Konuya göre basit filtreleme için, konu için bir başlangıç veya bitiş değeri belirtin.For simple filtering by subject, specify a starting or ending value for the subject. Örneğin, konunun bittiğini .txt yalnızca bir metin dosyasını depolama hesabına yüklemeyle ilgili olayları almak üzere belirtebilirsiniz.For example, you can specify the subject ends with .txt to only get events related to uploading a text file to storage account. Ya da, o kapsayıcının tüm olaylarını almak için /blobServices/default/containers/testcontainer , depolama hesabındaki diğer kapsayıcıları değil, konunun ile başlayan bir filtre uygulayabilirsiniz.Or, you can filter the subject begins with /blobServices/default/containers/testcontainer to get all events for that container but not other containers in the storage account.

Olayları özel konulara yayımlarken, etkinliklerinizin etkinlikleri oluşturun ve bu da abonelerin olayla ilgilenip ilgilenmediğini bilmesini kolaylaştırır.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. Aboneler olayları filtrelemek ve yönlendirmek için Subject özelliğini kullanır.Subscribers use the subject property to filter and route events. Örneğin, abonelerin bu yolun segmentlerine göre filtreleyebilmesi için olayın gerçekleştiği yolu eklemeyi göz önünde bulundurun.Consider adding the path for where the event happened, so subscribers can filter by segments of that path. Yol, abonelerin olayları en dar veya genel olarak filtrelemesine olanak sağlar.The path enables subscribers to narrowly or broadly filter events. Konu /A/B/C içinde üç segment yolu sağlarsanız, aboneler çok sayıda olayı almak için ilk kesime /A göre filtreleyebilirsiniz.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. Bu aboneler, veya /A/B/C /A/D/Egibi konularla olayları alır.Those subscribers get events with subjects like /A/B/C or /A/D/E. Diğer aboneler, daha dar /A/B bir olay kümesi almak için tarafından filtreleyebilirler.Other subscribers can filter by /A/B to get a narrower set of events.

Konuya göre filtrelemeye yönelik JSON sözdizimi şöyledir:The JSON syntax for filtering by subject is:

"filter": {
  "subjectBeginsWith": "/blobServices/default/containers/mycontainer/log",
  "subjectEndsWith": ".jpg"
}

Gelişmiş filtrelemeAdvanced filtering

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.To filter by values in the data fields and specify the comparison operator, use the advanced filtering option. Gelişmiş filtreleme ' de şunları belirtirsiniz:In advanced filtering, you specify the:

  • işleç türü-karşılaştırma türü.operator type - The type of comparison.
  • anahtar-filtreleme için kullanmakta olduğunuz olay verileri alanı.key - The field in the event data that you're using for filtering. Bir sayı, Boolean veya dize olabilir.It can be a number, boolean, or string.
  • değer veya değerler-anahtarla karşılaştırılacak değer veya değerler.value or values - The value or values to compare to the key.

Birden çok değer içeren tek bir filtre belirtirseniz, ya da bir işlem gerçekleştirilir, bu nedenle anahtar alanının değeri bu değerlerden biri olmalıdır.If you specify a single filter with multiple values, an OR operation is performed, so the value of the key field must be one of these values. Örnek aşağıda verilmiştir:Here is an example:

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/",
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

Birden çok farklı filtre belirtirseniz, ve bir işlem gerçekleştirilir, bu nedenle her filtre koşulu karşılanmalıdır.If you specify multiple different filters, an AND operation is performed, so each filter condition must be met. Örnek aşağıda verilmiştir:Here is an example:

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/"
        ]
    },
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

OperatorOperator

Rakamlar için kullanılabilir işleçler şunlardır:The available operators for numbers are:

  • NumberGreaterThanNumberGreaterThan
  • NumberGreaterThanOrEqualsNumberGreaterThanOrEquals
  • NumberLessThanNumberLessThan
  • NumberlessalsNumberLessThanOrEquals
  • NumberınNumberIn
  • NumbernotınNumberNotIn

Boole değerleri için kullanılabilir işleç: BoolEqualsThe available operator for booleans is: BoolEquals

Dizeler için kullanılabilir işleçler şunlardır:The available operators for strings are:

  • StringContainsStringContains
  • StringBeginsWithStringBeginsWith
  • StringEndsWithStringEndsWith
  • StringınStringIn
  • StringnotınStringNotIn

Tüm dize karşılaştırmaları durum-insensitve ' dir.All string comparisons are case-insensitve.

AnahtarKey

Event Grid şemasındaki olaylar için, anahtar için aşağıdaki değerleri kullanın:For events in the Event Grid schema, use the following values for the key:

  • IDID
  • KonuTopic
  • SubjectSubject
  • EventTypeEventType
  • Veri sürümüDataVersion
  • Olay verileri (Data. KEY1 gibi)Event data (like Data.key1)

Bulut olayları şemasındaki olaylar için, anahtar için aşağıdaki değerleri kullanın:For events in Cloud Events schema, use the following values for the key:

  • EventIDEventId
  • SourceSource
  • EventTypeEventType
  • EventTypeVersionEventTypeVersion
  • Olay verileri (Data. KEY1 gibi)Event data (like Data.key1)

Özel giriş şeması için, olay verileri alanlarını (Data. KEY1 gibi) kullanın.For custom input schema, use the event data fields (like Data.key1).

DeğerlerValues

Değerler şu şekilde olabilir:The values can be:

  • numarasınumber
  • dizestring
  • booleanboolean
  • arrayarray

SınırlamalarLimitations

Gelişmiş filtreleme aşağıdaki sınırlamalara sahiptir:Advanced filtering has the following limitations:

  • Olay Kılavuzu aboneliği başına beş gelişmiş filtreFive advanced filters per event grid subscription
  • dize değeri başına 512 karakter512 characters per string value
  • İçindeki ve Not işleçleri için beş değerFive values for in and not in operators

Aynı anahtar birden fazla filtrede kullanılabilir.The same key can be used in more than one filter.

Sonraki adımlarNext steps