Gebeurtenissen filteren voor Event Grid
In dit artikel wordt beschreven hoe u gebeurtenissen filtert bij het maken van Event Grid abonnement. Zie Gebeurtenisfiltering begrijpen voor uw Event Grid voor meer informatie over de opties voor het filteren van gebeurtenissen.
Filteren op gebeurtenistype
Wanneer u een Event Grid maakt, kunt u opgeven welke gebeurtenistypen naar het eindpunt moeten worden verzenden. Met de voorbeelden in deze sectie maakt u gebeurtenisabonnementen voor een resourcegroep, maar beperkt u de gebeurtenissen die naar en Microsoft.Resources.ResourceWriteFailure worden Microsoft.Resources.ResourceWriteSuccess verzonden. Zie Filteren op geavanceerde operators en gegevensvelden 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 voor Azure CLI de --included-event-types parameter . In het volgende voorbeeld wordt Azure CLI in een Bash-shell gebruikt:
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
Ga op de pagina Gebeurtenisabonnement naar het tabblad Filters.
Selecteer Gebeurtenistype toevoegen naast Filteren op Gebeurtenistypen.
Typ het gebeurtenistype en druk op ENTER. In het volgende voorbeeld is het gebeurtenistype
Microsoft.Resources.ResourceWriteSuccess.
Azure Resource Manager-sjabloon
Gebruik voor Resource Manager sjabloon de includedEventTypes eigenschap .
"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 Gebeurtenisfilters voor uw abonnementen begrijpen voor meer informatie over Event Grid deze filters (gebeurtenistypen, onderwerp en geavanceerd).
Filteren op onderwerp
U kunt gebeurtenissen filteren op onderwerp in de gebeurtenisgegevens. U kunt een waarde opgeven die moet overeenkomen met het begin of einde van het onderwerp. Zie Filteren op geavanceerde operators en gegevensvelden als u meer flexibiliteit nodig hebt bij het filteren van gebeurtenissen op onderwerp.
In het volgende PowerShell-voorbeeld maakt u een gebeurtenisabonnement dat filtert aan het begin van het onderwerp. U gebruikt de -SubjectBeginsWith parameter om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U kunt de resource-id van een netwerkbeveiligingsgroep doorgeven.
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. Gebeurtenissen worden beperkt 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 filtert aan het begin van het onderwerp. U gebruikt de --subject-begins-with parameter om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U kunt de resource-id van een netwerkbeveiligingsgroep doorgeven.
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
In het volgende Azure CLI-voorbeeld wordt een abonnement voor een blobopslag gemaakt. Gebeurtenissen worden beperkt 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
Selecteer op de pagina Gebeurtenisabonnement de optie Onderwerpfiltering inschakelen.
Voer waarden in voor een of meer van de volgende velden: Onderwerp begint met en Onderwerp eindigt op. In de volgende opties zijn beide opties geselecteerd.
Selecteer de optie Overeenkomende casegevoelige onderwerpen als u wilt dat het onderwerp van de gebeurtenis overeenkomt met het geval van de opgegeven filters.
Azure Resource Manager-sjabloon
In het volgende Resource Manager sjabloonvoorbeeld maakt u een gebeurtenisabonnement dat filtert aan het begin van het onderwerp. U gebruikt de subjectBeginsWith eigenschap om gebeurtenissen te beperken tot gebeurtenissen voor een specifieke resource. U kunt de resource-id van een netwerkbeveiligingsgroep doorgeven.
"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 sjabloon wordt een abonnement voor een blobopslag gemaakt. Gebeurtenissen worden beperkt 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 Gebeurtenisfilters voor uw abonnementen begrijpen voor meer informatie over Event Grid 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 die de eigenschap color hebben ingesteld op blauw, rood of groen, worden naar het abonnement verzonden.
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
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 is in als een operator en worden blauwe, rode en groene waarden opgegeven voor waarden.
Notitie
Zie Gebeurtenisfiltering begrijpen voor Event Grid-abonnementen voor meer informatie over geavanceerde filters.
Het filter testen
Als u het filter wilt testen, verzendt u een gebeurtenis met het kleurveld 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 waarbij de gebeurtenis niet wordt verzonden, verzendt u een gebeurtenis waarbij het kleurveld is ingesteld op geel. Geel is niet een 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 waarbij de gebeurtenis niet wordt verzonden, verzendt u een gebeurtenis waarbij het kleurveld is ingesteld op geel. Geel is niet een 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 Gebeurtenisfilters voor uw abonnementen begrijpen voor meer informatie over filters (gebeurtenistypen Event Grid, onderwerp en geavanceerd).