Filtrar eventos para grelha de eventos

Este artigo mostra como filtrar eventos ao criar uma subscrição de Grade de Eventos. Para saber mais sobre as opções de filtragem de eventos, consulte a filtragem do evento para subscrições de Event Grid.

Filtro por tipo de evento

Ao criar uma subscrição de Grade de Eventos, pode especificar quais os tipos de eventos a enviar para o ponto final. Os exemplos nesta secção criam subscrições de eventos para um grupo de recursos, mas limitam os eventos que são enviados Microsoft.Resources.ResourceWriteFailure para e Microsoft.Resources.ResourceWriteSuccess. Se necessitar de mais flexibilidade na filtragem de eventos por tipos de eventos, consulte Filter por operadores avançados e campos de dados.

Azure PowerShell

Para PowerShell, utilize o parâmetro ao -IncludedEventType criar a subscrição.

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

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

CLI do Azure

Para Azure CLI, utilize o --included-event-types parâmetro. O exemplo a seguir utiliza o Azure CLI numa concha 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 do Azure

  1. Na página 'Subscrição de Eventos ', mude para o separador Filtros .

  2. Selecione adicionar o tipo de evento ao lado do filtro para os tipos de eventos.

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

  3. Digite o tipo de evento e prima ENTER. No exemplo seguinte, o tipo de evento é Microsoft.Resources.ResourceWriteSuccess.

    Screenshot of the Event Subscription page with a sample event type.

Modelo Azure Resource Manager

Para um modelo de Resource Manager, use a includedEventTypes propriedade.

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

Nota

Para saber mais sobre estes filtros (tipos de eventos, sujeito e avançado), consulte a filtragem do evento para subscrições de Event Grid.

Filtro por sujeito

Pode filtrar eventos pelo sujeito nos dados do evento. Pode especificar um valor a condizer com o início ou o fim do assunto. Se necessitar de mais flexibilidade na filtragem de eventos por sujeito, consulte Filter por operadores avançados e campos de dados.

No exemplo seguinte do PowerShell, cria-se uma subscrição de eventos que filtra até ao início do assunto. Usa o parâmetro para limitar os -SubjectBeginsWith eventos aos de um recurso específico. Passa-se a identificação de recursos de um grupo de segurança de rede.

Azure PowerShell

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

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

O próximo exemplo do PowerShell cria uma subscrição para um armazenamento de bolhas. Limita os eventos a aqueles com um assunto que termina em .jpg.

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

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

CLI do Azure

No exemplo Azure CLI, cria-se uma subscrição de eventos que filtra até ao início do assunto. Usa o parâmetro para limitar os --subject-begins-with eventos aos de um recurso específico. Passa-se a identificação de recursos de um grupo de segurança de rede.

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

O próximo exemplo do Azure CLI cria uma subscrição para um armazenamento de bolhas. Limita os eventos a aqueles com um assunto que termina em .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 do Azure

  1. Na página 'Subscrição do Evento ', selecione Ativar a filtragem do assunto.

  2. Introduza valores para um ou mais dos seguintes campos: O assunto começa com e o sujeito termina com. Nas seguintes opções são selecionadas ambas as opções.

    Screenshot of Event Subscription page with subject filtering example.

  3. Selecione a opção de correspondência de assunto sensível a caso se quiser que o objeto do evento corresponda à caixa dos filtros especificados.

Modelo Azure Resource Manager

No exemplo de modelo Resource Manager seguinte, cria-se uma subscrição de eventos que filtra até ao início do assunto. Você usa a subjectBeginsWith propriedade para limitar eventos a outros para um recurso específico. Passa-se a identificação de recursos de um grupo de segurança de rede.

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

O próximo exemplo de modelo Resource Manager cria uma subscrição para um armazenamento de bolhas. Limita os eventos a aqueles com um assunto que termina em .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" ]
      }
    }
  }
]

Nota

Para saber mais sobre estes filtros (tipos de eventos, sujeito e avançado), consulte a filtragem do evento para subscrições de Event Grid.

Filtrar por operadores e dados

Para uma maior flexibilidade na filtragem, pode utilizar operadores e propriedades de dados para filtrar eventos.

Inscreva-se com filtros avançados

Para saber mais sobre os operadores e chaves que pode utilizar para filtragem avançada, consulte a filtragem Avançada.

Estes exemplos criam um tópico personalizado. Subscrevem o tópico personalizado e filtram por um valor no objeto de dados. Os eventos que têm a propriedade de cor definida para azul, vermelho ou verde são enviados para a subscrição.

Azure PowerShell

Para o PowerShell, utilize:

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

CLI do Azure

Para a CLI do Azure, utilize:

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

Observe que está definida uma data de expiração para a subscrição.

Portal do Azure

  1. Na página 'Subscrição do Evento ', selecione Adicionar novo filtro na secção FILTROS AVANÇADOS .

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

  2. Especifique uma chave, operador e valor ou valores em comparação. No exemplo seguinte, data.color é usado como uma chave, String está em como um operador, e valores azuis, vermelhos e verdes são especificados para valores.

    Screenshot showing an example of an advanced filter.

    Nota

    Para saber mais sobre filtros avançados, consulte a filtragem do evento para subscrições de Event Grid.

Teste o filtro

Para testar o filtro, envie um evento com o campo de cores definido para verde. Como o verde é um dos valores do filtro, o evento é entregue ao ponto final.

Azure PowerShell

Para o PowerShell, utilize:

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

Para testar um cenário onde o evento não é enviado, envie um evento com o campo de cores definido para amarelo. Amarelo não é um dos valores especificados na subscrição, por isso o evento não é entregue na sua subscrição.

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

CLI do Azure

Para a CLI do Azure, utilize:

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

Para testar um cenário onde o evento não é enviado, envie um evento com o campo de cores definido para amarelo. Amarelo não é um dos valores especificados na subscrição, por isso o evento não é entregue na sua subscrição.

Para a CLI do Azure, utilize:

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

Passos seguintes

Para saber mais sobre filtros (tipos de eventos, assunto e avançado), consulte a filtragem do evento para subscrições de Grade de Eventos.