Os padrões de eventos definem os critérios que os eventos recebidos devem atender antes que o EventBridge os encaminhe para um destino. Quando eventos chegam de diversas fontes com estruturas variadas, é necessário um mecanismo para selecionar apenas aqueles relevantes para o processamento subsequente. Um padrão de evento é um objeto JSON que especifica os campos e valores a serem correspondidos. O EventBridge compara cada evento recebido com o padrão e encaminha somente os eventos que apresentam correspondência.
Um padrão deve compartilhar a mesma estrutura aninhada dos eventos aos quais corresponde.
Operadores suportados
A tabela a seguir resume todos os operadores de padrão. Cada operador é encapsulado em um array como valor do campo.
|
Operador |
Corresponde quando... |
Exemplo de sintaxe |
|
Valor exato |
O campo é igual à string especificada |
|
|
|
O valor do campo começa com a string |
|
|
|
O valor do campo termina com a string |
|
|
|
O valor do campo inclui a string |
|
|
|
O valor do campo não é igual à string, número ou conjunto |
|
|
|
O valor do campo não começa com a string |
|
|
|
O valor do campo está dentro de um intervalo numérico |
|
|
|
O endereço IP está dentro de um bloco CIDR (apenas IPv4) |
|
|
|
O campo existe ou não existe no evento |
|
|
String vazia |
O campo é igual a uma string vazia |
|
|
Null |
O campo é null |
|
Como funciona a correspondência
O EventBridge avalia padrões usando dois operadores lógicos:
AND entre chaves: Todas as chaves no padrão devem corresponder. Se um padrão especificar tanto
sourcequantotype, o evento deve corresponder a ambos.OR entre valores em um array: O valor de cada chave é um array. Se o array contiver múltiplos valores, o evento corresponderá se qualquer um dos valores for compatível.
Regras adicionais de correspondência:
O evento deve conter todos os campos especificados no padrão. Campos extras no evento são ignorados.
A correspondência é caractere por caractere e diferencia maiúsculas de minúsculas. O EventBridge não modifica strings durante a avaliação.
Todos os valores devem ser JSON válido: strings entre aspas duplas (
""), palavras-chave sem aspas (true,false,null) ou valores numéricos.
Correspondência de valor exato
Faça a correspondência de eventos em que um campo seja igual a um valor específico. Encapsule o valor em um array.
O padrão a seguir corresponde a eventos onde source é acs.oss:
{
"source": [
"acs.oss"
]
}
Evento de exemplo (correspondido):
{
"id": "7adc8c1a-645d-4476-bdef-5d6fb57f****",
"source": "acs.oss",
"specversion": "1.0",
"type": "oss:ObjectCreated:PostObject",
"datacontenttype": "application/json",
"dataschema": "http://example.com/test.json",
"subject": "acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg",
"time": "2020-08-17T16:04:46.149Asia/Shanghai",
"data": {
"name": "test",
"scope": 100
}
}
Correspondência por prefixo
Identifique eventos cujo valor de campo comece com uma string especificada. Utilize o operador prefix.
O padrão abaixo corresponde a eventos onde source começa com acs.:
{
"source": [
{
"prefix": "acs."
}
]
}
Correspondência por sufixo
Selecione eventos em que o valor de um campo termine com uma string definida. Aplique o operador suffix.
O seguinte padrão combina condições de prefixo e sufixo. Um evento corresponde se o valor de subject começar com o prefixo especificado, OU terminar com .txt, OU terminar com .jpg:
{
"subject": [
{
"prefix": "acs:oss:cn-hangzhou:1234567:xls-papk/"
},
{
"suffix": ".txt"
},
{
"suffix": ".jpg"
}
]
}
Múltiplos valores no mesmo array são avaliados com lógica OR. Um evento corresponde se qualquer condição individual no array for satisfeita.
Correspondência por conteúdo (contains)
Encontre eventos onde o valor de um campo inclua uma substring especificada. Empregue o operador contains.
Substring única
Este padrão corresponde a eventos onde type contém Normal:
{
"type": [
{
"contains": "Normal"
}
]
}
Um evento com "type": "UserNormalEvent" corresponde. Já um evento com "type": "UserErrorEvent" não corresponde.
Múltiplas substrings (OR)
O padrão a seguir identifica eventos onde type contém Normal ou Error:
{
"type": [
{
"contains": "Normal"
},
{
"contains": "Error"
}
]
}
Um evento com "type": "UserNormalEvent" corresponde. Um evento com "type": "UserErrorEvent" também corresponde. Por outro lado, um evento com "type": "UserOtherEvent" não apresenta correspondência.
Correspondência por exclusão (anything-but)
Filtre eventos onde o valor de um campo NÃO seja igual aos valores especificados. O operador anything-but suporta strings, números, arrays e exclusões baseadas em prefixo.
Excluir uma única string
O padrão abaixo corresponde a eventos onde data.state não é initializing:
{
"data": {
"state": [
{
"anything-but": "initializing"
}
]
}
}
Excluir um único número
Use este padrão para corresponder a eventos onde data.x-limit não é 123:
{
"data": {
"x-limit": [
{
"anything-but": 123
}
]
}
}
Para combinar múltiplas exclusões com lógica AND, aplique condições anything-but em campos diferentes no mesmo padrão. O evento deve satisfazer todas as exclusões para haver correspondência.
Excluir múltiplas strings
O exemplo a seguir corresponde a eventos onde data.state não é nem stopped nem overloaded:
{
"data": {
"state": [
{
"anything-but": [
"stopped",
"overloaded"
]
}
]
}
}
Um evento com "state": "terminated" corresponde. Um evento com "state": "stopped" não corresponde.
Excluir múltiplos números
Este padrão seleciona eventos onde data.x-limit não é 100, 200 ou 300:
{
"data": {
"x-limit": [
{
"anything-but": [
100,
200,
300
]
}
]
}
}
Excluir por prefixo
O padrão a seguir corresponde a eventos onde data.state não começa com init:
{
"data": {
"state": [
{
"anything-but": {
"prefix": "init"
}
}
]
}
}
Um evento com "state": "pending" corresponde. Um evento com "state": "initializing" não corresponde.
Excluir uma fonte de evento específica
O padrão abaixo corresponde a eventos que não se originam do Elastic Compute Service (ECS):
{
"source": [
{
"anything-but": [
"acs.ecs"
]
}
]
}
Excluir todos os eventos de serviços Alibaba Cloud
Para corresponder apenas a eventos de aplicações personalizadas, exclua todas as fontes com o prefixo acs. usando o padrão abaixo:
{
"source": [
{
"anything-but": {
"prefix": "acs."
}
}
]
}
Correspondência numérica
Corresponda eventos onde um campo numérico seja igual a um valor específico ou esteja dentro de um intervalo. Use o operador numeric com um ou mais operadores de comparação: =, >, <, <=. Especifique um intervalo combinando dois operadores.
O padrão a seguir corresponde a eventos onde:
data.c-counté maior que 0 e menor ou igual a 5data.d-counté menor que 10data.x-limité igual a 301,8
{
"data": {
"c-count": [
{
"numeric": [
">",
0,
"<=",
5
]
}
],
"d-count": [
{
"numeric": [
"<",
10
]
}
],
"x-limit": [
{
"numeric": [
"=",
301.8
]
}
]
}
}
A correspondência numérica suporta valores entre -1,0e9 e +1,0e9, com precisão de até 15 dígitos e 6 casas decimais. Os valores devem estar no formato numérico JSON.
Correspondência de endereço IP
Selecione eventos onde um campo de endereço IP esteja dentro de um bloco CIDR. Utilize o operador cidr em um campo do objeto data. Apenas endereços IPv4 são suportados.
O padrão abaixo corresponde a eventos onde data.source-ip está na sub-rede 10.0.0.0/24:
{
"data": {
"source-ip": [
{
"cidr": "10.0.0.0/24"
}
]
}
}
Um evento com "source-ip": "10.0.0.123" corresponde. Um evento com "source-ip": "192.168.0.123" não corresponde.
Correspondência de null e string vazia
String vazia
Corresponda eventos onde um campo seja igual a uma string vazia (""):
{
"data": {
"eventVersion": [
""
]
}
}
Valor null
Identifique eventos onde um campo seja null:
{
"data": {
"responseElements": [
null
]
}
}
Um valor null e uma string vazia são diferentes. Um padrão que corresponde a""não corresponde anull, e um padrão que corresponde anullnão corresponde a"".
Correspondência por existência de campo
Filtre eventos com base na existência ou não de um campo no objeto data. Use o operador exists.
O padrão a seguir corresponde a eventos onde o campo data.state não existe:
{
"data": {
"state": [
{
"exists": false
}
]
}
}
Defina "exists": true para corresponder a eventos onde o campo existe.
Correspondência de array
Os valores do padrão são arrays. Quando um campo do evento também é um array, o EventBridge verifica se os dois arrays possuem elementos comuns (interseção de conjuntos). Se a interseção não for vazia, o evento corresponde.
O padrão abaixo corresponde a eventos onde subject é igual a um dos três valores especificados:
{
"subject": [
"acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg",
"acs:oss:cn-hangzhou:1112223:xls-papk/game_apk/123.jpg",
"acs:oss:cn-hangzhou:4455667:xls-papk/game_apk/123.jpg"
]
}
Se o subject do evento for uma string única correspondente a qualquer um dos três valores, o evento corresponde. Caso o subject do evento seja um array, a correspondência ocorre quando pelo menos um elemento se sobrepõe ao array do padrão.
Condições combinadas
Combine múltiplos operadores em um único padrão para criar filtros precisos. O EventBridge aplica lógica AND em todas as chaves.
O padrão a seguir combina correspondências de prefixo, exclusão, CIDR e numéricas:
{
"source": [
{
"prefix": "acs."
}
],
"data": {
"state": [
{
"anything-but": "initializing"
}
],
"source-ip": [
{
"cidr": "10.0.0.0/24"
}
],
"c-count": [
{
"numeric": [
">",
0,
"<=",
5
]
}
],
"d-count": [
{
"numeric": [
"<",
10
]
}
],
"x-limit": [
{
"anything-but": [
100,
200,
300
]
}
]
}
}
Um evento corresponde apenas quando TODAS as condições a seguir forem verdadeiras:
sourcecomeça comacs.data.statenão éinitializingdata.source-ipestá dentro de10.0.0.0/24data.c-counté maior que 0 e no máximo 5data.d-counté menor que 10data.x-limitnão é 100, 200 ou 300
Limites
|
Item |
Limite |
|
Intervalo de valores numéricos |
-1,0e9 a +1,0e9 |
|
Precisão numérica |
Até 15 dígitos, 6 casas decimais |
|
Correspondência de endereço IP |
Apenas IPv4 |