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
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.
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:
awsRegioneventSourceeventSourceARNeventVersioneventIDeventNameinvokeIdentityArneventSourceKey
As seções a seguir explicam o comportamento de filtragem para cada tipo de fonte de eventos compatível.
Filtrar mensagens do Amazon SQS
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 incluirbody, 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 |
String simples |
EventBridge filtros com base em seus critérios de filtro. |
|
Nenhum padrão de filtro para |
JSON válido |
EventBridge filtros com base em seus critérios de filtro. |
Filtrar mensagens do Kinesis e do DynamoDB
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.
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 |
JSON válido |
EventBridge filtros com base em seus critérios de filtro. |
|
Nenhum padrão de filtro para |
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
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, o campo de mensagem é data. Em origens do Apache Kafka (Amazon MSK e Apache Kafka autogerenciado), 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 |
|
JSON válido |
String simples |
EventBridge filtra somente nos metadados, ignorando o |
|
JSON válido |
JSON válido |
EventBridge filtros com base em seus critérios de filtro. |
|
Nenhum padrão de filtro para |
String simples |
EventBridge filtra somente nos metadados, ignorando o |
|
Nenhum padrão de filtro para |
JSON válido |
EventBridge filtra somente nos metadados, ignorando o |
|
Any |
Cadeia de caracteres não codificada em UTF |
EventBridge filtra somente nos metadados, ignorando o |
Diferenças entre Lambda ESM e Pipes EventBridge
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
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.