Delen via


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.

Schermopname van de pagina Abonnement maken met gebeurtenistypen geselecteerd.

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

Schermopname van de pagina Gebeurtenisabonnement met het tabblad Filters geselecteerd.

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.

Schermopname van de pagina Gebeurtenisabonnement maken voor een aangepast onderwerp.

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

Schermopname van de pagina Gebeurtenisabonnement met de knop Gebeurtenistype toevoegen geselecteerd.

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 het volgende voorbeeld zijn beide opties geselecteerd.

    Schermopname van de pagina Gebeurtenisabonnement met het voorbeeld van onderwerpfiltering.

  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.

Schermopname van de pagina Gebeurtenisabonnement maken met het tabblad Filters geselecteerd.

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=@{operatorType="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.

    Schermopname van de pagina Gebeurtenisabonnement met De koppeling Nieuw filter toevoegen gemarkeerd.

  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.

    Schermopname van een voorbeeld van een geavanceerd 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

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