Todos os produtos
Search
Central de documentação

ApsaraMQ for Kafka:Event patterns

Última atualização: Aug 25, 2026

O EventBridge usa padrões de eventos para filtrar e rotear eventos aos destinos. Um padrão de evento é um módulo do EventBridge que define critérios de correspondência: apenas eventos cuja estrutura e valores coincidam com o padrão são entregues ao destino. Os padrões de eventos devem ter a mesma estrutura dos eventos correspondentes.

Como funciona a correspondência

O EventBridge avalia cada evento recebido em relação ao seu padrão seguindo estas regras:

Regra

Descrição

Correspondência estrutural

O evento deve conter todos os campos do padrão, com aninhamento idêntico.

Comparação sensível a maiúsculas e minúsculas

Os caracteres são comparados exatamente como estão. O EventBridge não normaliza nem modifique strings durante a correspondência.

Apenas valores JSON

Os valores do evento devem ser JSON válido: strings entre aspas duplas, números sem aspas ou as palavras-chave true, false e null.

AND entre chaves, OR dentro de arrays

Múltiplas chaves em um padrão usam lógica AND. Múltiplos valores no array de uma única chave usam lógica OR.

Referência de operadores

Consulte a tabela abaixo para encontrar o operador adequado às suas necessidades de filtragem. A sintaxe detalhada e os exemplos estão disponíveis em cada seção subsequente.

Operador

Função

Exemplo de sintaxe

Valor exato

Corresponde a um valor de campo específico

"source": ["acs.oss"]

Prefixo

Corresponde ao início de uma string

"source": [{"prefix": "acs."}]

Sufixo

Corresponde ao final de uma string

"subject": [{"suffix": ".jpg"}]

Contém

Corresponde a uma substring dentro de um valor

"type": [{"contains": "Normal"}]

Qualquer-coisa-exceto

Exclui valores específicos

"state": [{"anything-but": "initializing"}]

Numérico

Corresponde a um número ou intervalo numérico

"c-count": [{"numeric": [">", 0, "<=", 5]}]

CIDR

Corresponde a um intervalo de endereços IPv4

"source-ip": [{"cidr": "10.0.0.0/24"}]

Existe

Verifica se um campo existe

"state": [{"exists": false}]

Null / string vazia

Corresponde a valores null ou ""

"responseElements": [null]

Array

Corresponde a qualquer valor em um array

"subject": ["val1", "val2"]

Combinado

Combina múltiplos operadores

Consulte Correspondência combinada

Correspondência de valor exato

Para corresponder a eventos em que um campo seja igual a um valor específico, coloque o valor dentro de um array.

Padrão:

{
    "source": ["acs.oss"]
}

Este padrão corresponde a eventos onde source é "acs.oss". Eventos com um source diferente, como "acs.ecs" ou "acs.imm", não correspondem.

Exemplo — O seguinte evento do OSS corresponde porque source é "acs.oss":

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

Eventos com um source diferente não correspondem:

  • Um evento com "source": "acs.ecs" (Elastic Compute Service)

  • Um evento com "source": "acs.imm" (Intelligent Media Management)

Correspondência por prefixo

Use o operador prefix para corresponder a eventos cujo valor de campo comece com uma string específica.

Padrão:

{
    "source": [{"prefix": "acs."}]
}

Esse padrão corresponde a eventos onde source começa com "acs.", como "acs.oss" e "acs.imm".

Correspondência por sufixo

Utilize o operador suffix para corresponder a eventos cujo valor de campo termine com uma string específica.

Combine prefix e suffix no mesmo array para aplicar ambas as condições. Múltiplas entradas de sufixo usam lógica OR: o evento corresponde se qualquer sufixo for compatível.

Padrão:

{
    "subject": [
        {"prefix": "acs:oss:cn-hangzhou:1234567:xls-papk/"},
        {"suffix": ".txt"},
        {"suffix": ".jpg"}
    ]
}

Este padrão corresponde a eventos onde subject começa com o prefixo de caminho OSS especificado E termina com .txt ou .jpg. Um evento com subject terminando em .png não corresponde.

Correspondência por conteúdo

Aplique o operador contains para corresponder a eventos cujo valor de campo contenha uma substring específica.

Substring única:

{
    "type": [{"contains": "Normal"}]
}

Corresponde a eventos como "type": "UserNormalEvent". Não corresponde a "type": "UserErrorEvent".

Múltiplas substrings (lógica OR):

{
    "type": [
        {"contains": "Normal"},
        {"contains": "Error"}
    ]
}

Corresponde a eventos onde type contém "Normal" ou "Error". Tanto "UserNormalEvent" quanto "UserErrorEvent" correspondem. Já "UserOtherEvent" não corresponde.

Correspondência anything-but

Para excluir eventos que correspondam a valores específicos, utilize o operador anything-but. Eventos com qualquer outro valor para o campo especificado serão aceitos.

Excluir uma única string

{
    "data": {
        "state": [{"anything-but": "initializing"}]
    }
}

Corresponde a eventos onde data.state é qualquer valor exceto "initializing". Por exemplo, "state": "running" corresponde.

Excluir um único número

{
    "data": {
        "x-limit": [{"anything-but": 123}]
    }
}

Corresponde a eventos onde data.x-limit é qualquer valor exceto 123. Por exemplo, "x-limit": 456 corresponde.

Excluir múltiplas strings

{
    "data": {
        "state": [{"anything-but": ["stopped", "overloaded"]}]
    }
}

Corresponde a eventos onde data.state é qualquer valor exceto "stopped" ou "overloaded". Por exemplo, "state": "terminated" corresponde.

Excluir múltiplos números

{
    "data": {
        "x-limit": [{"anything-but": [100, 200, 300]}]
    }
}

Corresponde a eventos onde data.x-limit é qualquer valor exceto 100, 200 ou 300. Por exemplo, "x-limit": 456 corresponde.

Excluir por prefixo

{
    "data": {
        "state": [{"anything-but": {"prefix": "init"}}]
    }
}

Corresponde a eventos onde data.state não começa com "init". Por exemplo, "state": "pending" corresponde, mas "state": "initializing" não corresponde.

Excluir uma source de evento específica

{
    "source": [{"anything-but": ["acs.ecs"]}]
}

Corresponde a eventos de qualquer source, exceto "acs.ecs". Por exemplo, eventos de "acs.oss" correspondem.

Excluir todos os eventos de service da Alibaba Cloud

{
    "source": [{"anything-but": {"prefix": "acs."}}]
}

Corresponde apenas a eventos de sources personalizadas (não Alibaba Cloud). Qualquer evento com source começando com "acs." é excluído.

Correspondência numérica

Para corresponder a eventos com base em valores numéricos ou intervalos, use o operador numeric com um ou mais operadores de comparação.

Operador de comparação

Descrição

=

Igual a

>

Maior que

>=

Maior ou igual a

<

Menor que

<=

Menor ou igual a

Defina um intervalo colocando dois operadores no mesmo array.

Condição única:

{
    "data": {
        "d-count": [{"numeric": ["<", 10]}]
    }
}

Corresponde a eventos onde data.d-count é menor que 10.

Condição de intervalo:

{
    "data": {
        "c-count": [{"numeric": [">", 0, "<=", 5]}]
    }
}

Corresponde a eventos onde data.c-count é maior que 0 e menor ou igual a 5.

Valor numérico exato:

{
    "data": {
        "x-limit": [{"numeric": ["=", 301.8]}]
    }
}

Corresponde a eventos onde data.x-limit é igual a 301.8. Um evento com "x-limit": 300 não corresponde.

Múltiplas condições numéricas em diferentes campos:

{
    "data": {
        "c-count": [{"numeric": [">", 0, "<=", 5]}],
        "d-count": [{"numeric": ["<", 10]}],
        "x-limit": [{"numeric": ["=", 301.8]}]
    }
}

Todas as três condições devem ser verdadeiras (lógica AND entre chaves).

Importante

A correspondência numérica funciona apenas com números formatados em JSON no intervalo de -1,0e9 a +1,0e9, com precisão de até 15 dígitos e 6 casas decimais.

Correspondência de endereço IP

Para corresponder a eventos com base em um endereço IPv4 ou bloco CIDR, use o operador cidr em um campo do objeto data.

Padrão:

{
    "data": {
        "source-ip": [{"cidr": "10.0.0.0/24"}]
    }
}

Corresponde a eventos onde data.source-ip está dentro do intervalo 10.0.0.0/24. Por exemplo, "source-ip": "10.0.0.123" corresponde, mas "source-ip": "192.168.0.123" não corresponde.

Nota

Apenas endereços IPv4 são suportados.

Correspondência combinada

Combine múltiplos operadores em um único padrão para obter uma filtragem precisa. Condições em campos diferentes usam lógica AND: todas as condições devem ser verdadeiras para que o evento corresponda.

O padrão a seguir combina os operadores prefixo, anything-but, CIDR e numérico:

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

Este evento corresponde apenas quando todas as condições são verdadeiras:

  • source começa com "acs."

  • data.state não é "initializing"

  • data.source-ip está no intervalo 10.0.0.0/24

  • data.c-count é maior que 0 e no máximo 5

  • data.d-count é menor que 10

  • data.x-limit não é 100, 200 ou 300

Exemplo de correspondência:

Um evento com source: "acs.oss", state: "pending", source-ip: "10.0.0.123", c-count: 5, d-count: 7 e x-limit: 301.8 satisfaz todas as condições.

Exemplo de não correspondência:

Um evento com state: "initializing" e source-ip: "192.168.0.123" falha nas condições anything-but e CIDR.

Correspondência de array

Quando um campo do padrão lista múltiplos valores em um array, o evento corresponde se o valor do seu campo for igual a qualquer valor desse array. Se o próprio campo do evento for um array, a correspondência ocorre quando os dois arrays compartilham pelo menos um elemento comum.

Valor único no evento, múltiplos valores no padrão:

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

Corresponde se o subject do evento for igual a qualquer um dos três valores.

Valor de array no evento:

Se o evento contiver "subject": ["acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg", "acs.ecs:cn-hangzhou:123456789098****:215672"], ele corresponde porque o primeiro elemento aparece tanto no array do padrão quanto no array do evento.

Correspondência de null e string vazia

Para corresponder a eventos onde um campo é null ou uma string vazia "", coloque o valor alvo dentro de um array.

Corresponder a uma string vazia:

{
    "data": {
        "eventVersion": [""]
    }
}

Corresponde a eventos onde data.eventVersion é "". Não corresponde se o valor for "1.0".

Corresponder a um valor null:

{
    "data": {
        "responseElements": [null]
    }
}

Corresponde a eventos onde data.responseElements é null. Não corresponde se o valor for "lss" ou qualquer outro valor não null.

Nota

Null e string vazia são valores distintos. Um padrão que corresponde a "" não corresponde a null, e vice-versa.

Correspondência de existência de campo

Para corresponder a eventos com base na existência de um campo no objeto data, utilize o operador exists.

Corresponder quando um campo não existe:

{
    "data": {
        "state": [{"exists": false}]
    }
}

Corresponde a eventos onde o objeto data não contém um campo state. Se state estiver presente com qualquer valor (incluindo null), o evento não corresponde.

Corresponder quando um campo existe:

{
    "data": {
        "state": [{"exists": true}]
    }
}

Corresponde a eventos onde o objeto data contém um campo state, independentemente do seu valor.