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

  1. På sidan Händelseprenumeration växlar du till fliken Filter.

  2. Välj Lägg till händelsetyp bredvid Filtrera till Händelsetyper.

    Skärmbild av sidan Händelseprenumeration med knappen Lägg till händelsetyp markerad.

  3. Skriv händelsetypen och tryck på RETUR. I följande exempel är händelsetypen Microsoft.Resources.ResourceWriteSuccess .

    Skärmbild av sidan Händelseprenumeration med en exempelhändelsetyp.

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

  1. På sidan Händelseprenumeration väljer du Aktivera ämnesfiltrering.

  2. 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.

    Skärmbild av sidan Händelseprenumeration med exempel på ämnesfiltrering.

  3. 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

  1. På sidan Händelseprenumeration väljer du Lägg till nytt filter i avsnittet AVANCERADE FILTER.

    Skärmbild som visar sidan Händelseprenumeration med länken Lägg till nytt filter markerad.

  2. 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.

    Skärmbild som visar ett exempel på ett avancerat filter.

    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.