Események szűrése az Event Gridhez

Ez a cikk bemutatja, hogyan szűrheti az eseményeket egy Event Grid-előfizetés létrehozásakor. Az eseményszűrési lehetőségekről további információt az Event Grid-előfizetések eseményszűrésének ismertetése című témakörben talál.

Szűrés eseménytípus szerint

Event Grid-előfizetés létrehozásakor megadhatja, hogy mely eseménytípusokat küldje el a végpontnak. Az ebben a szakaszban szereplő példák esemény-előfizetéseket hoznak létre egy erőforráscsoporthoz, de korlátozzák azokat az eseményeket, amelyekbe a rendszer elküldi Microsoft.Resources.ResourceWriteFailure őket Microsoft.Resources.ResourceWriteSuccess. Ha nagyobb rugalmasságra van szüksége az események eseménytípusok szerinti szűrése során, tekintse meg az operátorok és adatok szerinti szűrést.

Azure PowerShell

PowerShell esetén használja a -IncludedEventType paramétert az előfizetés létrehozásakor.

$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"

New-AzEventGridSubscription `
  -EventSubscriptionName demoSubToResourceGroup `
  -ResourceGroupName myResourceGroup `
  -Endpoint <endpoint-URL> `
  -IncludedEventType $includedEventTypes

Azure CLI

Az Azure CLI-hez használja a paramétert --included-event-types . Az alábbi példa az Azure CLI-t használja Bash-rendszerhéjban:

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

Rendszertémakörhöz tartozó esemény-előfizetés létrehozásakor a legördülő listával válassza ki az eseménytípusokat az alábbi képen látható módon.

Screenshot showing the Create Subscription page with event types selected.

Egy rendszertémakörhöz tartozó meglévő előfizetés esetén használja az Esemény-előfizetés lap Szűrők lapját az alábbi képen látható módon.

Screenshot showing the Event Subscription page with the Filters tab selected.

Egyéni témakör létrehozásakor szűrőket is megadhat az Alábbi képen látható Eseménytípus hozzáadása hivatkozás kiválasztásával.

Screenshot showing the Create Event Subscription page for a custom topic.

Ha meg szeretne adni egy szűrőt egy meglévő előfizetéshez egy egyéni témakörhöz, használja a Szűrők lapot az Esemény-előfizetés lapon.

Screenshot of the Event Subscription page with Add Event Type button selected.

Azure Resource Manager-sablon

Resource Manager-sablon esetén használja a tulajdonságot 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"
        ]
      }
    }
  }
]

Megjegyzés:

Ha többet szeretne megtudni ezekről a szűrőkről (eseménytípusok, tárgy és speciális), olvassa el az Event Grid-előfizetések eseményszűrésének ismertetése című témakört.

Szűrés tárgy szerint

Az eseményadatokban szűrheti a tárgy szerinti eseményeket. Megadhatja a tárgy elejéhez vagy végéhez illeszkedő értéket. Ha nagyobb rugalmasságra van szüksége az események tárgy szerinti szűrése során, olvassa el a Szűrés operátorok és adatok szerint című témakört.

A következő PowerShell-példában egy esemény-előfizetést hoz létre, amely a tárgy elejére szűr. A paraméterrel -SubjectBeginsWith egy adott erőforrás eseményeit korlátozhatja. Egy hálózati biztonsági csoport erőforrás-azonosítóját adja át.

Azure PowerShell

$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId

New-AzEventGridSubscription `
  -Endpoint <endpoint-URL> `
  -EventSubscriptionName demoSubscriptionToResourceGroup `
  -ResourceGroupName myResourceGroup `
  -SubjectBeginsWith $resourceId

A következő PowerShell-példa létrehoz egy előfizetést egy blobtárolóhoz. Az eseményeket olyan eseményekre korlátozza, amelyek tárgya a következő lesz .jpg: .

$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id

New-AzEventGridSubscription `
  -EventSubscriptionName demoSubToStorage `
  -Endpoint <endpoint-URL> `
  -ResourceId $storageId `
  -SubjectEndsWith ".jpg"

Azure CLI

A következő Azure CLI-példában egy esemény-előfizetést hoz létre, amely a tárgy elejére szűr. A paraméterrel --subject-begins-with egy adott erőforrás eseményeit korlátozhatja. Egy hálózati biztonsági csoport erőforrás-azonosítóját adja át.

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

A következő Azure CLI-példa létrehoz egy előfizetést egy blobtárolóhoz. Az eseményeket olyan eseményekre korlátozza, amelyek tárgya a következő lesz .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

Meglévő esemény-előfizetés esetén:

  1. Az Esemény-előfizetés lapon válassza a Tárgyszűrés engedélyezése lehetőséget.

  2. Adja meg az alábbi mezők egy vagy több értékének értékét: A tárgy a következővel kezdődik, és a Tárgy végződik. Az alábbi beállításokban mindkét beállítás be van jelölve.

    Screenshot of Event Subscription page with subject filtering example.

  3. Ha azt szeretné, hogy az esemény tárgya megegyezzen a megadott szűrők esetével, válassza a Kis- és nagybetűk megkülönböztetése jelölőnégyzetet.

Esemény-előfizetés létrehozásakor használja a Létrehozás varázsló Szűrők lapját.

Screenshot of Create Event Subscription page with the Filters tab selected.

Azure Resource Manager-sablon

A következő Resource Manager-sablon példában egy esemény-előfizetést hoz létre, amely a tárgy elejére szűr. A tulajdonság használatával subjectBeginsWith egy adott erőforrás eseményeit korlátozhatja. Egy hálózati biztonsági csoport erőforrás-azonosítóját adja át.

"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" ]
      }
    }
  }
]

A következő Resource Manager-sablon például létrehoz egy előfizetést egy blobtárolóhoz. Az eseményeket olyan eseményekre korlátozza, amelyek tárgya a következő lesz .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" ]
      }
    }
  }
]

Megjegyzés:

Ha többet szeretne megtudni ezekről a szűrőkről (eseménytípusok, tárgy és speciális), olvassa el az Event Grid-előfizetések eseményszűrésének ismertetése című témakört.

Szűrés operátorok és adatok szerint

A szűrés nagyobb rugalmassága érdekében operátorok és adattulajdonságok használatával szűrheti az eseményeket.

Feliratkozás speciális szűrőkkel

A speciális szűréshez használható operátorokról és kulcsokról további információt a Speciális szűrés című témakörben talál.

Ezek a példák létrehoznak egy egyéni témakört. Feliratkoznak az egyéni témakörre, és egy érték alapján szűrnek az adatobjektumban. A kék, piros vagy zöld színtulajdonságú eseményeket a rendszer elküldi az előfizetésnek.

Azure PowerShell

PowerShell esetén használja az alábbi parancsot:

$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

Azure CLI esetén használja az alábbi parancsot:

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>"

Vegye figyelembe, hogy az előfizetéshez lejárati dátum tartozik.

Azure Portal

  1. Az Esemény-előfizetés lapon válassza az Új szűrő hozzáadása lehetőséget a SPECIÁLIS SZŰRŐK szakaszban.

    Screenshot showing the Event Subscription page with Add new filter link highlighted.

  2. Adja meg az összehasonlítandó kulcsot, operátort és értéket vagy értékeket. A következő példában a data.color kulcsként, a sztring operátorként, az értékekhez pedig kék, piros és zöld értékeket ad meg.

    Screenshot showing an example of an advanced filter.

    Megjegyzés:

    A speciális szűrőkkel kapcsolatos további információkért tekintse meg az Event Grid-előfizetések eseményszűrésének ismertetése című témakört.

A szűrő tesztelése

A szűrő teszteléséhez küldjön egy eseményt a zöld színmezővel. Mivel a zöld a szűrő egyik értéke, az esemény a végpontra kerül.

Azure PowerShell

PowerShell esetén használja az alábbi parancsot:

$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}

Ha olyan forgatókönyvet szeretne tesztelni, amelyben nem küldi el az eseményt, küldjön egy eseményt sárga színmezővel. A sárga nem az előfizetésben megadott értékek egyike, ezért az esemény nem lesz kézbesítve az előfizetésnek.

$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

Azure CLI esetén használja az alábbi parancsot:

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

Ha olyan forgatókönyvet szeretne tesztelni, amelyben nem küldi el az eseményt, küldjön egy eseményt sárga színmezővel. A sárga nem az előfizetésben megadott értékek egyike, ezért az esemény nem lesz kézbesítve az előfizetésnek.

Azure CLI esetén használja az alábbi parancsot:

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

Következő lépések

A szűrőkkel (eseménytípusok, tárgy és speciális) kapcsolatos további információkért tekintse meg az Event Grid-előfizetések eseményszűrésének ismertetése című témakört.