Memfilter peristiwa untuk Event Grid

Artikel ini memperlihatkan cara memfilter acara saat membuat langganan Event Grid. Untuk mempelajari tentang opsi pemfilteran peristiwa, lihat Memahami pemfilteran peristiwa untuk langganan Event Grid.

Memfilter berdasarkan jenis peristiwa

Saat membuat langganan Event Grid, Anda bisa menentukan jenis peristiwa mana yang akan dikirim ke titik akhir. Contoh di bagian ini membuat langganan peristiwa untuk grup sumber daya tetapi membatasi peristiwa yang dikirim ke Microsoft.Resources.ResourceWriteFailure dan Microsoft.Resources.ResourceWriteSuccess. Jika Anda memerlukan lebih banyak fleksibilitas saat memfilter peristiwa menurut jenis peristiwa, lihat Memfilter menurut operator dan data.

Azure PowerShell

Untuk PowerShell, gunakan parameter -IncludedEventType saat membuat langganan.

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

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

Azure CLI

Untuk Azure CLI, gunakan parameter --included-event-types. Contoh berikut menggunakan Azure CLI dalam shell Bash:

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

az eventgrid event-subscription create \
  --name demoSubToResourceGroup \
  --resource-group myResourceGroup \
  --endpoint <endpoint-URL> \
  --included-event-types $includedEventTypes

Portal Azure

Saat membuat langganan peristiwa ke topik sistem, gunakan daftar drop-down untuk memilih jenis peristiwa seperti yang ditunjukkan pada gambar berikut.

Screenshot showing the Create Subscription page with event types selected.

Untuk langganan yang sudah ada ke topik sistem, gunakan tab Filter dari halaman Langganan Peristiwa seperti yang diperlihatkan dalam gambar berikut.

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

Anda dapat menentukan filter saat membuat topik kustom dengan memilih tautan Tambahkan Jenis Peristiwa seperti yang diperlihatkan dalam gambar berikut.

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

Untuk menentukan filter untuk langganan yang sudah ada ke topik kustom, gunakan tab Filter di halaman Langganan Peristiwa.

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

Templat Azure Resource Manager

Untuk templat Resource Manager, gunakan properti 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"
        ]
      }
    }
  }
]

Catatan

Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.

Memfilter berdasarkan subjek

Anda dapat memfilter peristiwa berdasarkan subjek dalam data peristiwa. Anda dapat menentukan nilai yang cocok untuk awal atau akhir subjek. Jika Anda memerlukan lebih banyak fleksibilitas saat memfilter peristiwa menurut subjek, lihat Memfilter menurut operator dan data.

Dalam contoh PowerShell berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan parameter -SubjectBeginsWith untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.

Azure PowerShell

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

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

Contoh PowerShell berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .jpg.

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

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

Azure CLI

Dalam contoh Azure CLI berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan parameter --subject-begins-with untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.

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

Contoh Azure CLI berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .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"

Portal Azure

Untuk langganan peristiwa yang sudah ada:

  1. Pada halaman Event Subscription (Langganan Kejadian), pilih Enable subject filtering (Aktifkan pemfilteran subjek).

  2. Masukkan nilai untuk satu atau beberapa bidang berikut: Subjek dimulai dengan dan Subjek diakhiri dengan. Dalam opsi berikut, kedua opsi dipilih.

    Screenshot of Event Subscription page with subject filtering example.

  3. Pilih opsi pencocokan subjek yang peka huruf besar-kecil jika Anda ingin subjek kejadian cocok dengan kasus filter yang ditentukan.

Saat membuat langganan peristiwa, gunakan tab Filter pada wizard pembuatan.

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

Templat Azure Resource Manager

Dalam contoh Resource Manager berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan properti subjectBeginsWith untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.

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

Contoh Resource Manager berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .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" ]
      }
    }
  }
]

Catatan

Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.

Memfilter berdasarkan operator dan data

Untuk fleksibilitas lebih dalam pemfilteran, Anda dapat menggunakan operator dan properti data untuk memfilter peristiwa.

Berlangganan dengan filter tingkat lanjut

Untuk mempelajari tentang operator dan kunci yang bisa Anda gunakan untuk pemfilteran tingkat lanjut, lihat Pemfilteran tingkat lanjut.

Contoh-contoh berikut membuat topik kustom. Mereka berlangganan topik kustom dan memfilter berdasarkan nilai di objek data. Peristiwa yang sudah mengatur properti warnanya ke biru, merah, atau hijau dikirim ke langganan.

Azure PowerShell

Untuk PowerShell, gunakan:

$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

Untuk Azure CLI, gunakan:

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

Perhatikan bahwa tanggal kedaluwarsa ditetapkan untuk langganan.

Portal Azure

  1. Pada halaman Event Subscription (Langganan Kejadian), pilih Add new filter (Tambahkan filter baru) di bagian ADVANCED FILTERS (FILTER LANJUTAN).

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

  2. Tentukan kunci, operator, dan nilai atau nilai untuk dibandingkan. Dalam contoh berikut, data.color digunakan sebagai kunci, String sebagai operator, dan nilai biru, merah, dan hijau ditentukan untuk semua nilai.

    Screenshot showing an example of an advanced filter.

    Catatan

    Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.

Menguji filter

Untuk menguji filter, kirim peristiwa dengan bidang warna diatur ke hijau. Karena hijau adalah salah satu nilai dalam filter, maka peristiwa dikirimkan ke titik akhir.

Azure PowerShell

Untuk PowerShell, gunakan:

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

Untuk menguji skenario ketika peristiwa tidak dikirim, kirimkan peristiwa dengan bidang warna diatur ke kuning. Warna kuning bukanlah salah satu nilai yang ditentukan dalam langganan, sehingga peristiwanya tidak dikirimkan ke langganan Anda.

$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

Untuk Azure CLI, gunakan:

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

Untuk menguji skenario ketika peristiwa tidak dikirim, kirimkan peristiwa dengan bidang warna diatur ke kuning. Warna kuning bukanlah salah satu nilai yang ditentukan dalam langganan, sehingga peristiwanya tidak dikirimkan ke langganan Anda.

Untuk Azure CLI, gunakan:

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

Langkah berikutnya

Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.