Olayları Event Grid filtrele

Bu makalede, Event Grid aboneliği oluştururken olayların nasıl filtreleneceği gösterilir. 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 bir abonelik oluştururken, hangi olay türlerinin uç noktaya gönderileceğini belirtebilirsiniz. Bu bölümdeki örnekler, bir kaynak grubu için olay abonelikleri oluşturur ancak ve ' a gönderilen olayları sınırlandırır Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess . Olayları olay türlerine göre filtrelerken daha fazla esneklik gerekiyorsa bkz. filtre gelişmiş işleçler ve veri alanları.

Azure PowerShell

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

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

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

Azure CLI

Azure CLı için --included-event-types parametresini kullanın. Aşağıdaki örnek, bir bash kabuğu 'nda Azure CLı kullanı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

  1. Olay aboneliği sayfasında, Filtreler sekmesine geçin.

  2. Olay türlerine filtrele' nin yanına olay türü Ekle ' yi seçin.

    Olay türü Ekle düğmesi seçiliyken olay aboneliği sayfasının ekran görüntüsü.

  3. Olay türünü yazın ve ENTER tuşuna basın. Aşağıdaki örnekte, olay türü ' dir Microsoft.Resources.ResourceWriteSuccess .

    Örnek olay türü ile olay aboneliği sayfasının ekran görüntüsü.

Azure Resource Manager şablonu

Kaynak Yöneticisi ş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"
        ]
      }
    }
  }
]

Not

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

Konuya göre filtrele

Olayları olay verilerinde konuya göre filtreleyebilirsiniz. Konunun başlangıcı veya bitişi için eşleştirilecek bir değer belirtebilirsiniz. Olayları konuya göre filtrelerken daha fazla esneklik gerekiyorsa bkz. Gelişmiş Operatörler ve veri alanlarına göre filtreleme.

Aşağıdaki PowerShell örneğinde, konusunun başlangıcına göre filtreleyen bir olay aboneliği oluşturacaksınız. -SubjectBeginsWithBelirli bir kaynaktaki olayları sınırlamak için parametresini kullanabilirsiniz. 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 bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .jpg .

$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 CLı örneğinde, konunun başlangıcına göre filtreleyen bir olay aboneliği oluşturacaksınız. --subject-begins-withBelirli bir kaynaktaki olayları sınırlamak için parametresini kullanabilirsiniz. Bir ağ güvenlik grubunun kaynak KIMLIĞINI geçirirsiniz.

resourceId=$(az resource show --name demoSecurityGroup --resource-group myResourceGroup --resource-type Microsoft.Network/networkSecurityGroups --query id --output tsv)

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

Sonraki Azure CLı örneği bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .jpg .

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

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

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

    Konu filtreleme örneği içeren olay aboneliği sayfasının ekran görüntüsü.

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

Azure Resource Manager şablonu

Aşağıdaki Kaynak Yöneticisi şablonu örneğinde, konunun başlangıcına göre filtreleyen bir olay aboneliği oluşturursunuz. subjectBeginsWithBelirli bir kaynaktaki olayları sınırlamak için özelliğini kullanın. 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 Kaynak Yöneticisi şablonu örneği bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .jpg .

"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" ]
      }
    }
  }
]

Not

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

İşleçlere ve verilere göre filtrele

Filtrelemeye ilişkin daha fazla esneklik için İşleçleri ve veri özelliklerini kullanarak olayları filtreleyebilirsiniz.

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 olur ve veri nesnesindeki bir değere göre filtre uygulayın. Color özelliği mavi, Red 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, Gelişmiş filtreler bölümünde Yeni Filtre Ekle ' yi seçin.

    Yeni Filtre Ekle bağlantısı vurgulanmış şekilde olay aboneliği sayfasını gösteren ekran görüntüsü.

  2. Karşılaştırılacak bir anahtar, işleç ve değer ya da değerler belirtin. Aşağıdaki örnekte, Data. Color anahtar olarak kullanılır, dize bir işleç olarak içinde, dize ise mavi, kırmızı ve yeşil değerler değerler için belirtilir.

    Gelişmiş Filtre örneğini gösteren ekran görüntüsü.

    Not

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

Filtreyi test etme

Filtreyi test etmek için, Color alanı yeşil olarak ayarlanmış bir olay gönderin. Yeşil, filtredeki değerlerden biri 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, Color alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri değildir, bu nedenle etkinlik aboneliğinize teslim edilmemiş.

$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, Color alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri değildir, bu nedenle etkinlik aboneliğinize teslim edilmemiş.

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 için bkz. Event Grid abonelikler için olay filtrelemeyi anlama.