Gebeurtenissen filteren voor Event Grid

In dit artikel wordt beschreven hoe u gebeurtenissen filtert bij het maken van een Event Grid-abonnement. Zie Gebeurtenisfiltering voor Event Grid-abonnementen begrijpen voor meer informatie over de opties voor het filteren van gebeurtenissen.

Filteren op gebeurtenistype

Wanneer u een Event Grid-abonnement maakt, kunt u opgeven welke gebeurtenistypen naar het eindpunt moeten worden verzonden. In de voorbeelden in deze sectie worden gebeurtenisabonnementen gemaakt voor een resourcegroep, maar worden de gebeurtenissen beperkt die naar en Microsoft.Resources.ResourceWriteSuccessworden verzondenMicrosoft.Resources.ResourceWriteFailure. Zie Filteren op operators en gegevens als u meer flexibiliteit nodig hebt bij het filteren van gebeurtenissen op gebeurtenistypen.

Azure PowerShell

Gebruik voor PowerShell de -IncludedEventType parameter bij het maken van het abonnement.

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

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

Azure-CLI

Gebruik de --included-event-types parameter voor Azure CLI. In het volgende voorbeeld wordt Azure CLI gebruikt in een Bash-shell:

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

Wanneer u een gebeurtenisabonnement maakt op een systeemonderwerp, gebruikt u de vervolgkeuzelijst om de gebeurtenistypen te selecteren, zoals wordt weergegeven in de volgende afbeelding.

Screenshot showing the Create Subscription page with event types selected.

Voor een bestaand abonnement op een systeemonderwerp gebruikt u het tabblad Filters van de pagina Gebeurtenisabonnement , zoals wordt weergegeven in de volgende afbeelding.

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

U kunt filters opgeven tijdens het maken van een aangepast onderwerp door de koppeling Gebeurtenistype toevoegen te selecteren, zoals wordt weergegeven in de volgende afbeelding.

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

Als u een filter wilt opgeven voor een bestaand abonnement op een aangepast onderwerp, gebruikt u het tabblad Filters op de pagina Gebeurtenisabonnement .

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

Azure Resource Manager-sjabloon

Gebruik de includedEventTypes eigenschap voor een Resource Manager-sjabloon.

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

Notitie

Zie Gebeurtenisfiltering voor Event Grid-abonnementen voor meer informatie over deze filters (gebeurtenistypen, onderwerp en geavanceerd).

Filteren op onderwerp

U kunt gebeurtenissen filteren op het onderwerp in de gebeurtenisgegevens. U kunt een waarde opgeven die overeenkomt met het begin of einde van het onderwerp. Zie Filteren op operators en gegevens als u meer flexibiliteit nodig hebt bij het filteren van gebeurtenissen op onderwerp.

In het volgende PowerShell-voorbeeld maakt u een gebeurtenisabonnement dat wordt gefilterd aan het begin van het onderwerp. U gebruikt de -SubjectBeginsWith parameter om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U geeft de resource-id van een netwerkbeveiligingsgroep door.

Azure PowerShell

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

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

In het volgende PowerShell-voorbeeld wordt een abonnement voor een blobopslag gemaakt. Het beperkt gebeurtenissen tot gebeurtenissen met een onderwerp dat eindigt op .jpg.

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

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

Azure-CLI

In het volgende Azure CLI-voorbeeld maakt u een gebeurtenisabonnement dat wordt gefilterd aan het begin van het onderwerp. U gebruikt de --subject-begins-with parameter om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U geeft de resource-id van een netwerkbeveiligingsgroep door.

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

In het volgende Azure CLI-voorbeeld wordt een abonnement voor een blobopslag gemaakt. Het beperkt gebeurtenissen tot gebeurtenissen met een onderwerp dat eindigt op .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

Voor een bestaand gebeurtenisabonnement:

  1. Selecteer op de pagina Gebeurtenisabonnement de optie Onderwerpfiltering inschakelen.

  2. Voer waarden in voor een of meer van de volgende velden: Het onderwerp begint met en het onderwerp eindigt op. In de volgende opties zijn beide opties geselecteerd.

    Screenshot of Event Subscription page with subject filtering example.

  3. Selecteer de optie Hoofdlettergevoelige onderwerpkoppeling als u wilt dat het onderwerp van de gebeurtenis overeenkomt met het hoofdlettergebruik van de opgegeven filters.

Wanneer u een gebeurtenisabonnement maakt, gebruikt u het tabblad Filters in de wizard Maken.

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

Azure Resource Manager-sjabloon

In het volgende Resource Manager-sjabloonvoorbeeld maakt u een gebeurtenisabonnement dat wordt gefilterd aan het begin van het onderwerp. U gebruikt de subjectBeginsWith eigenschap om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U geeft de resource-id van een netwerkbeveiligingsgroep door.

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

In het volgende Resource Manager-sjabloonvoorbeeld wordt een abonnement voor een blobopslag gemaakt. Het beperkt gebeurtenissen tot gebeurtenissen met een onderwerp dat eindigt op .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" ]
      }
    }
  }
]

Notitie

Zie Gebeurtenisfiltering voor Event Grid-abonnementen voor meer informatie over deze filters (gebeurtenistypen, onderwerp en geavanceerd).

Filteren op operators en gegevens

Voor meer flexibiliteit bij het filteren kunt u operators en gegevenseigenschappen gebruiken om gebeurtenissen te filteren.

Abonneren met geavanceerde filters

Zie Geavanceerd filteren voor meer informatie over de operators en sleutels die u kunt gebruiken voor geavanceerd filteren.

In deze voorbeelden wordt een aangepast onderwerp gemaakt. Ze abonneren zich op het aangepaste onderwerp en filteren op een waarde in het gegevensobject. Gebeurtenissen waarvoor de kleureigenschap is ingesteld op blauw, rood of groen, worden verzonden naar het abonnement.

Azure PowerShell

Gebruik voor PowerShell:

$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

Gebruik voor Azure CLI:

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

U ziet dat er een vervaldatum is ingesteld voor het abonnement.

Azure Portal

  1. Selecteer op de pagina Gebeurtenisabonnement de optie Nieuw filter toevoegen in de sectie GEAVANCEERDE FILTERS.

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

  2. Geef een sleutel, operator en waarde of waarden op die moeten worden vergeleken. In het volgende voorbeeld wordt data.color gebruikt als een sleutel, tekenreeks bevindt zich als operator en worden blauwe, rode en groene waarden opgegeven voor waarden.

    Screenshot showing an example of an advanced filter.

    Notitie

    Zie Gebeurtenisfiltering voor Event Grid-abonnementen begrijpen voor meer informatie over geavanceerde filters.

Het filter testen

Als u het filter wilt testen, verzendt u een gebeurtenis met het kleurenveld ingesteld op groen. Omdat groen een van de waarden in het filter is, wordt de gebeurtenis aan het eindpunt geleverd.

Azure PowerShell

Gebruik voor PowerShell:

$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}

Als u een scenario wilt testen waarin de gebeurtenis niet wordt verzonden, verzendt u een gebeurtenis met het kleurenveld ingesteld op geel. Geel is geen van de waarden die zijn opgegeven in het abonnement, dus de gebeurtenis wordt niet aan uw abonnement geleverd.

$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

Gebruik voor Azure CLI:

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

Als u een scenario wilt testen waarin de gebeurtenis niet wordt verzonden, verzendt u een gebeurtenis met het kleurenveld ingesteld op geel. Geel is geen van de waarden die zijn opgegeven in het abonnement, dus de gebeurtenis wordt niet aan uw abonnement geleverd.

Gebruik voor Azure CLI:

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

Volgende stappen

Zie Gebeurtenisfiltering voor Event Grid-abonnementen voor meer informatie over filters (gebeurtenistypen, onderwerp en geavanceerd).