Aracılığıyla paylaş


Event Grid için olayları filtreleme

Bu makalede, Event Grid aboneliği oluştururken olayların nasıl filtreleneceği gösterilmektedir. Olay filtreleme seçenekleri hakkında bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.

Olay türüne göre filtrele

Event Grid aboneliği oluştururken uç noktaya hangi olay türlerinin gönderileceğini belirtebilirsiniz. Bu bölümdeki örnekler, bir kaynak grubu için olay abonelikleri oluşturur, ancak ve Microsoft.Resources.ResourceWriteSuccessöğesine Microsoft.Resources.ResourceWriteFailure gönderilen olayları sınırlar. Olayları olay türlerine göre filtrelerken daha fazla esnekliğe ihtiyacınız varsa bkz . İşleçlere ve verilere göre filtreleme.

Azure PowerShell

PowerShell için, aboneliği oluştururken parametresini kullanın -IncludedEventType .

$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"

New-AzEventGridSubscription `
  -EventSubscriptionName demoSubToResourceGroup `
  -ResourceGroupName myResourceGroup `
  -Endpoint <endpoint-URL> `
  -IncludedEventType $includedEventTypes

Azure CLI

Azure CLI için parametresini --included-event-types kullanın. Aşağıdaki örnekte Bash kabuğunda Azure CLI kullanılmaktadır:

includedEventTypes="Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess"

az eventgrid event-subscription create \
  --name demoSubToResourceGroup \
  --resource-group myResourceGroup \
  --endpoint <endpoint-URL> \
  --included-event-types $includedEventTypes

Azure portalı

Bir sistem konusuna olay aboneliği oluştururken, aşağıdaki görüntüde gösterildiği gibi olay türlerini seçmek için açılan listeyi kullanın.

Screenshot showing the Create Subscription page with event types selected.

Mevcut bir sistem aboneliği konusu için, aşağıdaki görüntüde gösterildiği gibi Olay Aboneliği sayfasının Filtreler sekmesini kullanın.

Screenshot showing the Event Subscription page with the Filters tab selected.

Aşağıdaki görüntüde gösterildiği gibi Olay Türü Ekle bağlantısını seçerek özel konu oluştururken filtreleri belirtebilirsiniz.

Screenshot showing the Create Event Subscription page for a custom topic.

Özel konu başlığına var olan bir aboneliğin filtresini belirtmek için Olay Aboneliği sayfasındaki Filtreler sekmesini kullanın.

Screenshot of the Event Subscription page with Add Event Type button selected.

Azure Resource Manager şablonu

Resource Manager şablonu için includedEventTypes özelliğini kullanın.

"resources": [
  {
    "type": "Microsoft.EventGrid/eventSubscriptions",
    "name": "[parameters('eventSubName')]",
    "apiVersion": "2018-09-15-preview",
    "properties": {
      "destination": {
        "endpointType": "WebHook",
        "properties": {
          "endpointUrl": "[parameters('endpoint')]"
        }
      },
      "filter": {
        "subjectBeginsWith": "",
        "subjectEndsWith": "",
        "isSubjectCaseSensitive": false,
        "includedEventTypes": [
          "Microsoft.Resources.ResourceWriteFailure",
          "Microsoft.Resources.ResourceWriteSuccess"
        ]
      }
    }
  }
]

Dekont

Bu filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.

Konuya göre filtrele

Olayları olay verilerindeki konuya göre filtreleyebilirsiniz. Konunun başlangıcı veya sonu için eşleşecek bir değer belirtebilirsiniz. Olayları konuya göre filtrelerken daha fazla esnekliğe ihtiyacınız varsa bkz . İşleçlere ve verilere göre filtreleme.

Aşağıdaki PowerShell örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturursunuz. Belirli bir kaynağın -SubjectBeginsWith olaylarını bir olayla sınırlamak için parametresini kullanırsınız. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.

Azure PowerShell

$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId

New-AzEventGridSubscription `
  -Endpoint <endpoint-URL> `
  -EventSubscriptionName demoSubscriptionToResourceGroup `
  -ResourceGroupName myResourceGroup `
  -SubjectBeginsWith $resourceId

Sonraki PowerShell örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpgbir konuya sahip olanlarla sınırlar.

$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id

New-AzEventGridSubscription `
  -EventSubscriptionName demoSubToStorage `
  -Endpoint <endpoint-URL> `
  -ResourceId $storageId `
  -SubjectEndsWith ".jpg"

Azure CLI

Aşağıdaki Azure CLI örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturacaksınız. Belirli bir kaynağın --subject-begins-with olaylarını bir olayla sınırlamak için parametresini kullanırsınız. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.

resourceId=$(az network nsg show -g myResourceGroup -n demoSecurityGroup --query id --output tsv)

az eventgrid event-subscription create \
  --name demoSubscriptionToResourceGroup \
  --resource-group myResourceGroup \
  --endpoint <endpoint-URL> \
  --subject-begins-with $resourceId

Sonraki Azure CLI örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpgbir konuya sahip olanlarla sınırlar.

storageid=$(az storage account show --name $storageName --resource-group myResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --resource-id $storageid \
  --name demoSubToStorage \
  --endpoint <endpoint-URL> \
  --subject-ends-with ".jpg"

Azure portalı

Mevcut bir olay aboneliği için:

  1. Olay Aboneliği sayfasında Konu filtrelemeyi etkinleştir'i seçin.

  2. Aşağıdaki alanlardan biri veya daha fazlası için değerleri girin: Konu ile başlar ve Konu ile biter. Aşağıdaki seçeneklerde her iki seçenek de seçilidir.

    Screenshot of Event Subscription page with subject filtering example.

  3. Olayın konusunun belirtilen filtrelerin büyük/küçük harfle eşleşmesini istiyorsanız Büyük/küçük harfe duyarlı konu eşleştirme seçeneğini belirleyin.

Olay aboneliği oluştururken, oluşturma sihirbazındaki Filtreler sekmesini kullanın.

Screenshot of Create Event Subscription page with the Filters tab selected.

Azure Resource Manager şablonu

Aşağıdaki Resource Manager şablon örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturursunuz. özelliğini kullanarak belirli bir kaynağın subjectBeginsWith olaylarını şunlarla sınırlandırabilirsiniz. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.

"resources": [
  {
    "type": "Microsoft.EventGrid/eventSubscriptions",
    "name": "[parameters('eventSubName')]",
    "apiVersion": "2018-09-15-preview",
    "properties": {
      "destination": {
        "endpointType": "WebHook",
        "properties": {
          "endpointUrl": "[parameters('endpoint')]"
        }
      },
      "filter": {
        "subjectBeginsWith": "[resourceId('Microsoft.Network/networkSecurityGroups','demoSecurityGroup')]",
        "subjectEndsWith": "",
        "isSubjectCaseSensitive": false,
        "includedEventTypes": [ "All" ]
      }
    }
  }
]

Sonraki Resource Manager şablon örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpgbir konuya sahip olanlarla sınırlar.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
    "name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
    "apiVersion": "2018-09-15-preview",
    "properties": {
      "destination": {
        "endpointType": "WebHook",
        "properties": {
          "endpointUrl": "[parameters('endpoint')]"
        }
      },
      "filter": {
        "subjectEndsWith": ".jpg",
        "subjectBeginsWith": "",
        "isSubjectCaseSensitive": false,
        "includedEventTypes": [ "All" ]
      }
    }
  }
]

Dekont

Bu filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.

İşleçlere ve verilere göre filtreleme

Filtrelemede daha fazla esneklik için, olayları filtrelemek için işleçleri ve veri özelliklerini kullanabilirsiniz.

Gelişmiş filtrelerle abone olma

Gelişmiş filtreleme için kullanabileceğiniz işleçler ve anahtarlar hakkında bilgi edinmek için bkz . Gelişmiş filtreleme.

Bu örnekler özel bir konu oluşturur. Özel konuya abone olurlar ve veri nesnesindeki bir değere göre filtreleme yaparlar. Color özelliği mavi, kırmızı veya yeşil olarak ayarlanmış olaylar aboneliğe gönderilir.

Azure PowerShell

PowerShell için şunu kullanın:

$topicName = <your-topic-name>
$endpointURL = <endpoint-URL>

New-AzResourceGroup -Name gridResourceGroup -Location eastus2
New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location eastus2 -Name $topicName

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Id

$expDate = '<mm/dd/yyyy hh:mm:ss>' | Get-Date
$AdvFilter1=@{operator="StringIn"; key="Data.color"; Values=@('blue', 'red', 'green')}

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint $endpointURL `
  -ExpirationDate $expDate `
  -AdvancedFilter @($AdvFilter1)

Azure CLI

Azure CLI için şunu kullanın:

topicName=<your-topic-name>
endpointURL=<endpoint-URL>

az group create -n gridResourceGroup -l eastus2
az eventgrid topic create --name $topicName -l eastus2 -g gridResourceGroup

topicid=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  -n demoAdvancedSub \
  --advanced-filter data.color stringin blue red green \
  --endpoint $endpointURL \
  --expiration-date "<yyyy-mm-dd>"

Abonelik için bir sona erme tarihi belirlendiğine dikkat edin.

Azure portalı

  1. Olay Aboneliği sayfasında, GELİşMİş FİlTRELER bölümünde Yeni filtre ekle'yi seçin.

    Screenshot showing the Event Subscription page with Add new filter link highlighted.

  2. Karşılaştırılacak bir anahtar, işleç ve değer veya değerler belirtin. Aşağıdaki örnekte data.color anahtar olarak kullanılır, Dize işleç olarak içindedir ve değerler için mavi, kırmızı ve yeşil değerler belirtilir.

    Screenshot showing an example of an advanced filter.

    Dekont

    Gelişmiş filtreler hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.

Filtreyi test edin

Filtreyi test etmek için renk alanı yeşil olarak ayarlanmış bir olay gönderin. Filtredeki değerlerden biri yeşil olduğundan olay uç noktaya teslim edilir.

Azure PowerShell

PowerShell için şunu kullanın:

$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Endpoint
$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicName

$eventID = Get-Random 99999
$eventDate = Get-Date -Format s

$htbody = @{
    id= $eventID
    eventType="recordInserted"
    subject="myapp/vehicles/cars"
    eventTime= $eventDate
    data= @{
        model="SUV"
        color="green"
    }
    dataVersion="1.0"
}

$body = "["+(ConvertTo-Json $htbody)+"]"

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Olayın gönderilmediği bir senaryoyu test etmek için renk alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri olmadığından olay aboneliğinize teslim edilmemiştir.

$htbody = @{
    id= $eventID
    eventType="recordInserted"
    subject="myapp/vehicles/cars"
    eventTime= $eventDate
    data= @{
        model="SUV"
        color="yellow"
    }
    dataVersion="1.0"
}

$body = "["+(ConvertTo-Json $htbody)+"]"

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Azure CLI

Azure CLI için şunu kullanın:

topicEndpoint=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicName -g gridResourceGroup --query "key1" --output tsv)

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "green"},"dataVersion": "1.0"} ]'

curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint

Olayın gönderilmediği bir senaryoyu test etmek için renk alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri olmadığından olay aboneliğinize teslim edilmemiştir.

Azure CLI için şunu kullanın:

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "yellow"},"dataVersion": "1.0"} ]'

curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint

Sonraki adımlar

Filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.