Filtern von Ereignissen für Event Grid
Dieser Artikel zeigt, wie Sie Ereignisse beim Erstellen eines Event Grid-Abonnements filtern können. Weitere Informationen zu den Optionen für die Ereignisfilterung finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.
Filtern nach Ereignistyp
Beim Erstellen eines Event Grid-Abonnements können Sie angeben, welche Ereignistypen an den Endpunkt gesendet werden sollen. Die Beispiele in diesem Abschnitt erstellen Ereignisabonnements für eine Ressourcengruppe, beschränken jedoch die Ereignisse, die an Microsoft.Resources.ResourceWriteFailure
und Microsoft.Resources.ResourceWriteSuccess
gesendet werden. Wenn Sie mehr Flexibilität beim Filtern von Ereignissen nach Ereignistypen benötigen, lesen Sie Filtern nach Operatoren und Daten.
Azure PowerShell
Verwenden Sie für PowerShell den Parameter -IncludedEventType
beim Erstellen des Abonnements.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
Verwenden Sie für die Azure CLI den Parameter --included-event-types
. Im folgenden Beispiel wird die Azure-CLI in einer Bash-Shell verwendet:
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
Verwenden Sie beim Erstellen eines Ereignisabonnements für ein Systemthema die Dropdownliste, um die Ereignistypen auszuwählen, wie in der folgenden Abbildung gezeigt:
Verwenden Sie für ein vorhandenes Abonnement eines Systemthemas die Registerkarte Filter der Seite Ereignisabonnement wie in der folgenden Abbildung dargestellt:
Sie können Filter beim Erstellen eines benutzerdefinierten Themas angeben, indem Sie den Link Ereignistyp hinzufügen wie in der folgenden Abbildung gezeigt:
Verwenden Sie zum Angeben eines Filters für ein vorhandenes Abonnement eines benutzerdefinierten Themas die Registerkarte Filter der Seite Ereignisabonnement.
Azure Resource Manager-Vorlage
Verwenden Sie für eine Resource Manager-Vorlage, die Eigenschaft includedEventTypes
.
"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"
]
}
}
}
]
Hinweis
Weitere Informationen zu diesen Filtern (Ereignistypen, Betreff und Erweitert) finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.
Filtern nach Betreff
Sie können Ereignisse nach dem Betreff in den Ereignisdaten filtern. Sie können einen Wert angeben, der dem Anfang oder Ende des Betreffs entspricht. Wenn Sie mehr Flexibilität beim Filtern von Ereignissen nach Betreff benötigen, lesen Sie Filtern nach Operatoren und Daten.
Im folgenden PowerShell-Beispiel erstellen Sie ein Ereignisabonnement, das nach dem Anfang des Betreffs filtert. Mit dem Parameter -SubjectBeginsWith
können Sie Ereignisse auf solche für eine bestimmte Ressource beschränken. Sie übergeben die Ressourcen-ID einer Netzwerksicherheitsgruppe.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
Im nächste PowerShell-Beispiel wird ein Abonnement für einen Blob Storage erstellt. Es begrenzt die Ereignisse auf die, deren Betreff auf .jpg
endet.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
Im folgenden Azure CLI-Beispiel erstellen Sie ein Ereignisabonnement, das nach dem Anfang des Betreffs filtert. Mit dem Parameter --subject-begins-with
können Sie Ereignisse auf solche für eine bestimmte Ressource beschränken. Sie übergeben die Ressourcen-ID einer Netzwerksicherheitsgruppe.
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
Das nächste Azure CLI-Beispiel erstellt ein Abonnement für einen Blob Storage. Es begrenzt die Ereignisse auf die, deren Betreff auf .jpg
endet.
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
Bei einem vorhandenen Ereignisabonnement:
Wählen Sie auf der Seite Ereignisabonnement die Option Betrefffilterung aktivieren aus.
Geben Sie Werte für mindestens eines der folgenden Felder ein: Betreff beginnt mit und Betreff endet mit. In den folgenden Optionen sind beide Optionen ausgewählt.
Wählen Sie die Option Betreffabgleich unter Beachtung von Groß-/Kleinschreibung aus, wenn der Betreff des Ereignisses mit der Groß-/Kleinschreibung der angegebenen Filter übereinstimmen soll.
Verwenden Sie beim Erstellen eines Ereignisabonnements die Registerkarte Filter im Erstellungs-Assistenten.
Azure Resource Manager-Vorlage
Im folgenden Beispiel für eine Resource Manager-Vorlage erstellen Sie ein Ereignisabonnement, das nach dem Anfang des Betreffs filtert. Mit der Eigenschaft subjectBeginsWith
können Sie Ereignisse auf solche für eine bestimmte Ressource beschränken. Sie übergeben die Ressourcen-ID einer Netzwerksicherheitsgruppe.
"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" ]
}
}
}
]
Das nächste Beispiel für eine Resource Manager-Vorlage erstellt ein Abonnement für einen Blob Storage. Es begrenzt die Ereignisse auf die, deren Betreff auf .jpg
endet.
"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" ]
}
}
}
]
Hinweis
Weitere Informationen zu diesen Filtern (Ereignistypen, Betreff und Erweitert) finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.
Filtern nach Operatoren und Daten
Um bei der Filterung mehr Flexibilität zu erhalten, können Sie Ereignisse nach Operatoren und Dateneigenschaften filtern.
Abonnieren mit erweiterten Filtern
Weitere Informationen zu den Operatoren und den Schlüsseln, die Sie für die erweiterte Filterung verwenden können, finden Sie unter Erweiterte Filterung.
Diese Beispiele erstellen ein benutzerdefiniertes Thema. Sie abonnieren das benutzerdefinierte Thema und filtern nach einem Wert im Datenobjekt. Ereignisse, bei denen die Farbeigenschaft auf „Blau“, „Rot“ oder „Grün“ eingestellt ist, werden an das Abonnement gesendet.
Azure PowerShell
Verwenden Sie für PowerShell Folgendes:
$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
Verwenden Sie für die Azure-Befehlszeilenschnittstelle den folgenden Befehl:
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>"
Beachten Sie, dass für das Abonnement ein Ablaufdatum festgelegt ist.
Azure-Portal
Wählen Sie auf der Seite Ereignisabonnement die Option Neuen Filter hinzufügen im Abschnitt ERWEITERTE FILTER aus.
Geben Sie einen Schlüssel, einen Operator und Werte an, die verglichen werden sollen. Im folgenden Beispiel wird data.color als Schlüssel und String is in als Operator angegeben. blue, red und green sind Werte.
Hinweis
Weitere Informationen zu erweiterten Filtern finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.
Testen des Filters
Um den Filter zu testen, senden Sie ein Ereignis, bei dem im Farbfeld „Grün“ festgelegt ist. Da „Grün“ einer der Werte im Filter ist, wird das Ereignis an den Endpunkt übermittelt.
Azure PowerShell
Verwenden Sie für PowerShell Folgendes:
$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}
Um ein Szenario zu testen, in dem das Ereignis nicht gesendet wird, senden Sie ein Ereignis, bei dem das Farbfeld auf „Gelb“ gesetzt ist. Gelb ist nicht einer der im Abonnement angegebenen Werte, sodass das Ereignis nicht an Ihr Abonnement gesendet wird.
$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
Verwenden Sie für die Azure-Befehlszeilenschnittstelle den folgenden Befehl:
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
Um ein Szenario zu testen, in dem das Ereignis nicht gesendet wird, senden Sie ein Ereignis, bei dem das Farbfeld auf „Gelb“ gesetzt ist. Gelb ist nicht einer der im Abonnement angegebenen Werte, sodass das Ereignis nicht an Ihr Abonnement gesendet wird.
Verwenden Sie für die Azure-Befehlszeilenschnittstelle den folgenden Befehl:
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
Nächste Schritte
Weitere Informationen zu Filtern (Ereignistypen, Betreff und Erweitert) finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.