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.ResourceWriteSuccess
worden 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.
Voor een bestaand abonnement op een systeemonderwerp gebruikt u het tabblad Filters van de pagina Gebeurtenisabonnement , zoals wordt weergegeven in de volgende afbeelding.
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.
Als u een filter wilt opgeven voor een bestaand abonnement op een aangepast onderwerp, gebruikt u het tabblad Filters op de pagina Gebeurtenisabonnement .
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:
Selecteer op de pagina Gebeurtenisabonnement de optie Onderwerpfiltering inschakelen.
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.
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.
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
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
Selecteer op de pagina Gebeurtenisabonnement de optie Nieuw filter toevoegen in de sectie GEAVANCEERDE FILTERS.
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.
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).