Filtrování událostí pro Event Grid
Tento článek ukazuje, jak filtrovat události při vytváření předplatného Event Grid předplatného. Další informace o možnostech filtrování událostí najdete v tématu Principy filtrování událostí pro Event Grid odběry.
Filtrovat podle typu události
Při vytváření Event Grid předplatného můžete určit, které typy událostí se mají odeslat do koncového bodu. Příklady v této části vytvářejí odběry událostí pro skupinu prostředků, ale omezují události odesílané do a Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess . Pokud při filtrování událostí podle typů událostí potřebujete větší flexibilitu, podívejte se na stránku Filtrování podle pokročilých operátorů a datových polí.
Azure PowerShell
Pro PowerShell použijte při -IncludedEventType vytváření předplatného parametr .
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
V případě Azure CLI použijte --included-event-types parametr . Následující příklad používá Azure CLI v prostředí 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
portál Azure
Na stránce Odběr události přepněte na kartu Filtry.
Vedle možnosti Filtrovat na Typy událostí vyberte Přidat typ události.
Zadejte typ události a stiskněte ENTER. V následujícím příkladu je typ události
Microsoft.Resources.ResourceWriteSuccess.
Šablona Azure Resource Manageru
Pro Resource Manager šablony použijte includedEventTypes vlastnost .
"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"
]
}
}
}
]
Poznámka
Další informace o těchto filtrech (typy událostí, předmět a pokročilé) najdete v tématu Principy filtrování událostí pro Event Grid odběry.
Filtrovat podle předmětu
Události můžete filtrovat podle předmětu v datech události. Můžete zadat hodnotu, která se má shodovat pro začátek nebo konec předmětu. Pokud při filtrování událostí podle předmětu potřebujete větší flexibilitu, podívejte se na téma Filtrování podle pokročilých operátorů a datových polí.
V následujícím příkladu PowerShellu vytvoříte odběr události, který filtruje na začátku předmětu. Pomocí -SubjectBeginsWith parametru můžete omezit události na události pro konkrétní prostředek. Předáte ID prostředku skupiny zabezpečení sítě.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
Další příklad PowerShellu vytvoří předplatné pro úložiště objektů blob. Omezuje události na události s předmětem, který končí na .jpg .
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
V následujícím příkladu Azure CLI vytvoříte odběr události, který filtruje na začátku předmětu. Pomocí --subject-begins-with parametru můžete omezit události na události pro konkrétní prostředek. Předáte ID prostředku skupiny zabezpečení sítě.
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
Další příklad Azure CLI vytvoří předplatné pro úložiště objektů blob. Omezuje události na události s předmětem, který končí na .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"
portál Azure
Na stránce Odběr události vyberte Povolit filtrování předmětu.
Zadejte hodnoty pro jedno nebo více z následujících polí: Předmět začíná na a Předmět končí na. V následujících možnostech jsou vybrané obě možnosti.
Pokud chcete, aby předmět události odpovídal velká a malá písmena zadaným filtrům, vyberte možnost Shoda předmětu rozlišují malá a velká písmena.
Šablona Azure Resource Manageru
V následujícím Resource Manager šablony vytvoříte odběr události, který filtruje na začátku předmětu. Vlastnost slouží subjectBeginsWith k omezení událostí na události pro konkrétní prostředek. Předáte ID prostředku skupiny zabezpečení sí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" ]
}
}
}
]
Další příklad Resource Manager vytvoří předplatné pro úložiště objektů blob. Omezuje události na události s předmětem, který končí na .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" ]
}
}
}
]
Poznámka
Další informace o těchto filtrech (typy událostí, předmět a pokročilé) najdete v tématu Principy filtrování událostí pro Event Grid odběry.
Filtrování podle operátorů a dat
Pro větší flexibilitu při filtrování můžete k filtrování událostí použít operátory a vlastnosti dat.
Přihlášení k odběru pomocí rozšířených filtrů
Další informace o operátorech a klíčích, které můžete použít pro rozšířené filtrování, najdete v tématu Rozšířené filtrování.
Tyto příklady vytvoří vlastní téma. Přihlásí se k odběru vlastního tématu a vyfiltruje hodnotu v datovém objektu. Události, které mají vlastnost color nastavenou na modrou, červenou nebo zelenou, se odesílanou do odběru.
Azure PowerShell
Pokud používáte PowerShell, použijte:
$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
Pokud používáte Azure CLI, použijte:
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>"
Všimněte si, že je nastavené datum vypršení platnosti odběru.
portál Azure
Na stránce Odběr události vyberte v části ROZŠÍŘENÉ FILTRY možnost Přidat nový filtr.
Zadejte klíč, operátor a hodnotu nebo hodnoty, které se mají porovnat. V následujícím příkladu se data.color používá jako klíč, String je v jako operátor a modré , červené a zelené hodnoty jsou určené pro hodnoty.
Poznámka
Další informace o rozšířených filtrech najdete v tématu Principy filtrování událostí pro Event Grid předplatná.
Otestování filtru
Pokud chcete filtr otestovat, odešlete událost s polem barvy nastaveným na zelenou. Vzhledem k tomu, že zelená je jednou z hodnot ve filtru, událost se doručí do koncového bodu.
Azure PowerShell
Pokud používáte PowerShell, použijte:
$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}
Pokud chcete otestovat scénář, ve kterém se událost neposíleje, odešlete událost s barevným polem nastaveným na žlutou. Žlutá není jednou z hodnot zadaných v předplatném, takže se událost do vašeho předplatného doručí.
$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
Pokud používáte Azure CLI, použijte:
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
Pokud chcete otestovat scénář, ve kterém se událost neposíleje, odešlete událost s barevným polem nastaveným na žlutou. Žlutá není jednou z hodnot zadaných v předplatném, takže se událost do vašeho předplatného doručí.
Pokud používáte Azure CLI, použijte:
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
Další kroky
Další informace o filtrech (typy událostí, předmět a pokročilé) najdete v tématu Principy filtrování událostí pro Event Grid odběry.