Filtrera händelser för Event Grid
Den här artikeln visar hur du filtrerar händelser när du skapar en Event Grid prenumeration. Mer information om alternativen för händelsefiltrering finns i Förstå händelsefiltrering för Event Grid prenumerationer.
Filtrera efter händelsetyp
När du skapar Event Grid prenumeration kan du ange vilka händelsetyper som ska skickas till slutpunkten. Exemplen i det här avsnittet skapar händelseprenumerationer för en resursgrupp men begränsar de händelser som skickas Microsoft.Resources.ResourceWriteFailure till och Microsoft.Resources.ResourceWriteSuccess . Om du behöver mer flexibilitet när du filtrerar händelser efter händelsetyper kan du läsa Filtrera efter avancerade operatorer och datafält.
Azure PowerShell
För PowerShell använder du -IncludedEventType parametern när du skapar prenumerationen.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
För Azure CLI använder du --included-event-types parametern . I följande exempel används Azure CLI i ett Bash-gränssnitt:
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
På sidan Händelseprenumeration växlar du till fliken Filter.
Välj Lägg till händelsetyp bredvid Filtrera till Händelsetyper.
Skriv händelsetypen och tryck på RETUR. I följande exempel är händelsetypen
Microsoft.Resources.ResourceWriteSuccess.
Azure Resource Manager-mall
För en Resource Manager mall använder du includedEventTypes egenskapen .
"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"
]
}
}
}
]
Anteckning
Mer information om dessa filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid prenumerationer.
Filtrera efter ämne
Du kan filtrera händelser efter ämne i händelsedata. Du kan ange ett värde som ska matchas för början eller slutet av ämnet. Om du behöver mer flexibilitet när du filtrerar händelser efter ämne kan du läsa Filtrera efter avancerade operatorer och datafält.
I följande PowerShell-exempel skapar du en händelseprenumeration som filtrerar i början av ämnet. Du använder -SubjectBeginsWith parametern för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
I nästa PowerShell-exempel skapas en prenumeration för en bloblagring. Det begränsar händelser till sådana med ett ämne som slutar med .jpg .
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
I följande Azure CLI-exempel skapar du en händelseprenumeration som filtrerar i början av ämnet. Du använder --subject-begins-with parametern för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
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
I nästa Azure CLI-exempel skapas en prenumeration för en bloblagring. Det begränsar händelser till sådana med ett ämne som slutar med .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
På sidan Händelseprenumeration väljer du Aktivera ämnesfiltrering.
Ange värden för ett eller flera av följande fält: Ämne börjar med och Ämne slutar med. I följande alternativ är båda alternativen markerade.
Välj alternativet För matchning av ämneskänsliga objekt om du vill att ämnet för händelsen ska matcha de angivna filtrens fall.
Azure Resource Manager-mall
I följande exempel Resource Manager mall skapar du en händelseprenumeration som filtrerar i början av ämnet. Du använder egenskapen subjectBeginsWith för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
"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" ]
}
}
}
]
Nästa exempel Resource Manager skapar en prenumeration för en bloblagring. Det begränsar händelser till sådana med ett ämne som slutar med .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" ]
}
}
}
]
Anteckning
Mer information om dessa filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid prenumerationer.
Filtrera efter operatorer och data
Om du vill ha mer flexibilitet i filtreringen kan du använda operatorer och dataegenskaper för att filtrera händelser.
Prenumerera med avancerade filter
Mer information om operatorer och nycklar som du kan använda för avancerad filtrering finns i Avancerad filtrering.
De här exemplen skapar ett anpassat ämne. De prenumererar på det anpassade ämnet och filtrerar efter ett värde i dataobjektet. Händelser som har färgegenskapen inställd på blå, röd eller grön skickas till prenumerationen.
Azure PowerShell
Om du använder PowerShell använder du:
$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
Om du använder Azure CLI använder du:
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>"
Observera att ett förfallodatum har angetts för prenumerationen.
Azure Portal
På sidan Händelseprenumeration väljer du Lägg till nytt filter i avsnittet AVANCERADE FILTER.
Ange en nyckel, operator och ett värde eller värden som ska jämföras. I följande exempel används data.color som en nyckel, String är i som operator och blå, röd och grön värden anges för värden.
Anteckning
Mer information om avancerade filter finns i Förstå händelsefiltrering för Event Grid prenumerationer.
Testa filtret
Om du vill testa filtret skickar du en händelse med färgfältet inställt på grönt. Eftersom grönt är ett av värdena i filtret levereras händelsen till slutpunkten.
Azure PowerShell
Om du använder PowerShell använder du:
$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}
Om du vill testa ett scenario där händelsen inte skickas skickar du en händelse med färgfältet inställt på gult. Gult är inte ett av de värden som anges i prenumerationen, så händelsen levereras inte till din prenumeration.
$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
Om du använder Azure CLI använder du:
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
Om du vill testa ett scenario där händelsen inte skickas skickar du en händelse med färgfältet inställt på gult. Gult är inte ett av de värden som anges i prenumerationen, så händelsen levereras inte till din prenumeration.
Om du använder Azure CLI använder du:
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ästa steg
Mer information om filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid prenumerationer.