

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Filtragem de eventos no Amazon Pipes EventBridge
<a name="eb-pipes-event-filtering"></a>

Com o EventBridge Pipes, você pode filtrar os eventos de uma determinada fonte e processar apenas um subconjunto deles. Essa filtragem funciona da mesma forma que a filtragem em um barramento de EventBridge eventos ou mapeamento de origem de eventos Lambda, usando padrões de eventos. Para obter mais informações sobre padrões de eventos, consulte [Criação de padrões de EventBridge eventos na Amazon](eb-event-patterns.md).

Um objeto `FilterCriteria` de critérios de filtro é uma estrutura que consiste em uma lista de filtros (`Filters`). Cada filtro é uma estrutura que define um padrão de filtragem (`Pattern`). Um `Pattern` é uma representação em string de uma regra de filtro JSON. Um objeto de `FilterCriteria` é como este exemplo:

```
{
  "Filters": [
    {"Pattern": "{ \"Metadata1\": [ pattern1 ], \"data\": { \"Data1\": [ pattern2 ] }}"
    }
  ]
}
```

Explicando melhor, aqui está o valor de `Pattern` do filtro expandido em JSON simples:

```
{
  "Metadata1": [ pattern1 ],
  "data": {"Data1": [ pattern2 ]}
}
```

O Amazon Kinesis, o Amazon MQ, o Amazon MSK e o Apache Kafka autogerenciado aplicam a codificação Base64 à carga, mas não aos campos de metadados. Por exemplo, suponha que seu stream do Kinesis contenha um evento como este:

```
{
  "kinesisSchemaVersion": "1.0",
  "partitionKey": "1",
  "sequenceNumber": "49590338271490256608559692538361571095921575989136588898",
  "data": {"City": "Seattle",
    "State": "WA",
    "Temperature": "46",
    "Month": "December"
  },
  "approximateArrivalTimestamp": 1545084650.987
}
```

Quando o evento fluir pelo seu pipe, ele terá a seguinte aparência com o campo `data` codificado em base64:

```
{
  "kinesisSchemaVersion": "1.0",
  "partitionKey": "1",
  "sequenceNumber": "49590338271490256608559692538361571095921575989136588898",
  "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
  "approximateArrivalTimestamp": 1545084650.987,
  "eventSource": "aws:kinesis",
  "eventVersion": "1.0",
  "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898",
  "eventName": "aws:kinesis:record",
  "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role",
  "awsRegion": "us-east-2",
  "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream"
}
```

Quando você está criando filtros de eventos, o EventBridge Pipes pode acessar o conteúdo do evento. Este conteúdo é um escape por JSON, como o campo `body` do Amazon SQS, ou codificado em base64, como o campo `data` do Kinesis. Se seus dados forem JSON válidos, seus modelos de entrada ou caminhos JSON para os parâmetros de destino podem referenciar o conteúdo diretamente, pois o EventBridge Pipes o decodificará automaticamente. Por exemplo, se uma origem de eventos do Kinesis for um JSON válido, será possível fazer referência a uma variável usando `<$.data.someKey>`.

Continuando nosso exemplo, para filtrar os `partitionKey` metadados não codificados fora do `data` objeto e a `City` propriedade codificada base64 dentro do `data` objeto, você usaria o seguinte filtro:

```
{
  "partitionKey": [ "1" ],
  "data": {
    "City": [ "Seattle" ]
  }
}
```

Ao criar padrões de eventos, é possível filtrar com base nos campos enviados pela API de origem e não nos campos adicionados pela operação de pesquisa. Os seguintes campos não podem ser usados em padrões de eventos:
+ `awsRegion`
+ `eventSource`
+ `eventSourceARN`
+ `eventVersion`
+ `eventID`
+ `eventName`
+ `invokeIdentityArn`
+ `eventSourceKey`

As seções a seguir explicam o comportamento de filtragem para cada tipo de fonte de eventos compatível.

## Filtrar mensagens do Amazon SQS
<a name="pipes-filter-sqs"></a>

Se uma mensagem do Amazon SQS não atender aos seus critérios de filtro, ela EventBridge será removida automaticamente da fila. Não é necessário excluir manualmente essas mensagens no Amazon SQS. É improvável que conectar vários canais a uma fila SQS seja uma configuração útil - os canais estariam competindo por mensagens que seriam descartadas se não fossem correspondidas.

O corpo de uma mensagem do Amazon SQS pode conter qualquer string, não apenas JSON. EventBridge O Pipes espera que seu `FilterCriteria` formato corresponda ao formato das mensagens recebidas, seja um JSON válido ou uma string simples. Se houver uma incompatibilidade, o EventBridge Pipes descarta a mensagem. Se você `FilterCriteria` não incluir`body`, o que significa que você filtra apenas por metadados, o EventBridge Pipes ignora essa verificação. A tabela a seguir resume a avaliação:


| Formato do do padrão de filtro | Formato de entrada | Resultado | 
| --- | --- | --- | 
|  String simples  |  String simples  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  String simples  |  JSON válido  |  EventBridge deixa cair a mensagem.  | 
|  JSON válido  |  String simples  |  EventBridge deixa cair a mensagem.  | 
|  JSON válido  |  JSON válido  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  Nenhum padrão de filtro para `body`  |  String simples  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  Nenhum padrão de filtro para `body`  |  JSON válido  |  EventBridge filtros com base em seus critérios de filtro.  | 

## Filtrar mensagens do Kinesis e do DynamoDB
<a name="pipes-filter-kinesis-dynamobd"></a>

Depois de filtrar os processos de um registro do Kinesis ou do DynamoDB, o iterador de fluxos avança além desse registro. Se o registro não atender aos critérios de filtro, não será necessário excluir manualmente o registro da origem de eventos. Após o período de retenção, o Kinesis e o DynamoDB excluem esses registros antigos automaticamente. Se quiser que os registros sejam excluídos antes, consulte [Alterar o período de retenção de dados](https://docs.aws.amazon.com/kinesis/latest/dev/kinesis-extended-retention.html).

Para filtrar corretamente eventos de fontes de eventos de fluxo, tanto o campo de dados como os critérios de filtro para o campo de dados devem estar no formato JSON válido. (Para o Kinesis, o campo de dados é `data`. Para o DynamoDB, o campo de dados é `dynamodb`.) Se um dos campos não estiver em um formato JSON válido, EventBridge descarta a mensagem ou gera uma exceção. A tabela a seguir resume o comportamento específico:


| Formato do do padrão de filtro | Formato de entrada | Resultado | 
| --- | --- | --- | 
|  JSON válido  |  JSON válido  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  JSON válido  |  Não JSON  |  EventBridge deixa cair a mensagem.  | 
|  Nenhum padrão de filtro para `data` (Kinesis) ou (`dynamodb`DynamoDB)  |  JSON válido  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  Nenhum padrão de filtro para `data` (Kinesis) ou (`dynamodb`DynamoDB)  |  Não JSON  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  Não JSON  |  Any  |  EventBridge lança uma exceção no momento da criação ou atualização do Pipe. O padrão de filtro deve ser um formato JSON válido.  | 

## Filtrando mensagens do Amazon Managed Streaming for Apache Kafka, Apache Kafka autogerenciado e Amazon MQ
<a name="pipes-filter-poller"></a>

**nota**  
Depois que anexar critérios de filtro a uma origem de eventos do Apache Kafka ou do Amazon MQ, pode levar até 15 minutos para as regras de filtragem serem aplicadas aos eventos.

Para [origens do Amazon MQ](eb-pipes-mq.md), o campo de mensagem é `data`. Em origens do Apache Kafka ([Amazon MSK](eb-pipes-msk.md) e [Apache Kafka autogerenciado](eb-pipes-kafka.md)), há dois campos de mensagem: `key` e `value`.

EventBridge elimina mensagens que não correspondem a todos os campos incluídos no filtro. Para o Apache Kafka, EventBridge confirma compensações para mensagens correspondentes e não correspondidas após invocar com sucesso o destino. Para o Amazon MQ, EventBridge confirma as mensagens correspondentes após invocar a função com sucesso e reconhece as mensagens não correspondentes ao filtrá-las.

As mensagens do Apache Kafka e do Amazon MQ devem ser strings codificadas em UTF-8, sejam em texto simples ou no formato JSON. Isso porque EventBridge decodifica matrizes de bytes do Apache Kafka e do Amazon MQ em UTF-8 antes de aplicar os critérios de filtro. Se suas mensagens usarem outra codificação, como UTF-16 ou ASCII, ou se o formato da mensagem não corresponder ao formato, EventBridge processará somente filtros de `FilterCriteria` metadados. A tabela a seguir resume o comportamento específico:


| Formato do do padrão de filtro | Formato de entrada | Resultado | 
| --- | --- | --- | 
|  String simples  |  String simples  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  String simples  |  JSON válido  |  EventBridge filtra somente nos metadados, ignorando o `data` campo (Amazon MQ) `key` ou os campos (Apache `value` Kafka)  | 
|  JSON válido  |  String simples  |  EventBridge filtra somente nos metadados, ignorando o `data` campo (Amazon MQ) `key` ou os campos (Apache `value` Kafka)  | 
|  JSON válido  |  JSON válido  |  EventBridge filtros com base em seus critérios de filtro.  | 
|  Nenhum padrão de filtro para `data` (Amazon MQ) ou `key` e `value` (Apache Kafka)  |  String simples  |  EventBridge filtra somente nos metadados, ignorando o `data` campo (Amazon MQ) `key` ou os campos (Apache `value` Kafka)  | 
|  Nenhum padrão de filtro para `data` (Amazon MQ) ou `key` e `value` (Apache Kafka)  |  JSON válido  |  EventBridge filtra somente nos metadados, ignorando o `data` campo (Amazon MQ) `key` ou os campos (Apache `value` Kafka)  | 
|  Any  |  Cadeia de caracteres não codificada em UTF  |  EventBridge filtra somente nos metadados, ignorando o `data` campo (Amazon MQ) `key` ou os campos (Apache `value` Kafka)  | 

## Diferenças entre Lambda ESM e Pipes EventBridge
<a name="pipes-filter-esm-diff"></a>

Ao filtrar eventos, o Lambda ESM EventBridge e o Pipes geralmente operam da mesma maneira. A principal diferença é que o campo `eventSourceKey` não está presente nas cargas úteis do ESM.

## Usar operadores de comparação em filtros de pipe
<a name="pipes-filter-comparison-operators"></a>

Os operadores de comparação permitem que você crie padrões de eventos que correspondam aos valores de campo nos eventos.

Para obter uma lista completa de operadores de comparação compatíveis com o uso em filtros de pipe, consulte [Operadores de comparação](eb-create-pattern-operators.md).