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 Padrões de EventBridge eventos da 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
). A Pattern
é uma representação em cadeia de caracteres de uma regra de JSON filtro. Um objeto de FilterCriteria
é como este exemplo:
{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}" } ] }
Para maior clareza, aqui está o valor da Pattern
expansão simples do filtroJSON:
{ "Metadata1": [ pattern1 ], "data": {"Data1": [ pattern2 ]} }
As partes principais para um objeto FilterCriteria
são as propriedades de metadados e propriedades de dados.
Metadata properties (Propriedades dos metadados) são os campos do objeto do evento. No exemplo,
FilterCriteria.Metadata1
se refere a uma propriedade de metadados.Data properties (Propriedades de dados) são os campos do corpo do evento. No exemplo,
FilterCriteria.Data1
se refere a uma propriedade de dados.
Por exemplo, suponha que seu fluxo 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" }
As propriedades de metadados do evento do Kinesis são os campos dentro do objeto data
, como partitionKey
ou sequenceNumber
.
As propriedades de dados do evento do Kinesis são os campos dentro do objeto data
, como City
ou Temperature
.
Ao filtrar para corresponder a esse evento, é possível usar filtros nos campos decodificados. Por exemplo, para filtrar partitionKey
e City
, o seguinte filtro deveria ser usado:
{ "partitionKey": [ "1" ], "data": { "City": [ "Seattle" ] } }
Quando você está criando filtros de eventos, o EventBridge Pipes pode acessar o conteúdo do evento. Esse conteúdo é JSON de escape, como o SQS body
campo Amazon, ou codificado em base64, como o campo Kinesis. data
Se seus dados forem válidosJSON, seus modelos de entrada ou JSON caminhos para os parâmetros de destino poderão referenciar o conteúdo diretamente. Por exemplo, se uma fonte de eventos do Kinesis for válidaJSON, você pode referenciar uma variável usando. <$.data.someKey>
Ao criar padrões de eventos, você pode filtrar com base nos campos enviados pela fonte API e não nos campos adicionados pela operação de sondagem. Os seguintes campos não podem ser usados em padrões de eventos:
awsRegion
eventSource
eventSourceARN
eventVersion
eventID
eventName
invokeIdentityArn
eventSourceKey
Mensagem e campos de dados
Cada fonte do EventBridge Pipe contém um campo que contém a mensagem ou os dados principais. Eles são referidos como campos de mensagem ou campos de dados. Esses campos são especiais porque podem ter JSON escape ou codificados em base64, mas quando são válidos, podem ser JSON filtrados com JSON padrões, como se o corpo não tivesse escapado. O conteúdo desses campos também pode ser usado perfeitamente em transformadores de entrada.
Filtrando corretamente as mensagens da Amazon SQS
Se uma SQS mensagem da Amazon não atender aos seus critérios de filtro, ela EventBridge será removida automaticamente da fila. Você não precisa excluir essas mensagens manualmente na AmazonSQS.
Para a AmazonSQS, a mensagem body
pode ser qualquer sequência de caracteres. No entanto, isso pode ser problemático se você FilterCriteria
espera body
estar em um JSON formato válido. O cenário inverso também é verdadeiro: se a mensagem recebida body
estiver em um JSON formato válido, mas seus critérios de filtro body
esperarem ser uma string simples, isso levará a um comportamento não intencional.
Para evitar este problema, certifique-se de que o formato do body
nos FilterCriteria
corresponde ao formato esperado de body
nas mensagens que recebidas da fila. Antes de filtrar suas mensagens, avalia EventBridge automaticamente o formato da mensagem recebida body
e do seu padrão de filtro para. body
Se houver uma incompatibilidade, EventBridge descarta a mensagem. A tabela a seguir resume essa avaliação:
Formato do body da mensagem recebida |
Formato do body do padrão de filtro |
Ação resultante |
---|---|---|
String simples |
String simples |
EventBridge filtros com base em seus critérios de filtro. |
String simples |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
String simples |
Válido JSON |
EventBridge deixa cair a mensagem. |
Válido JSON |
String simples |
EventBridge deixa cair a mensagem. |
Válido JSON |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Válido JSON |
Válido JSON |
EventBridge filtros com base em seus critérios de filtro. |
Se você não incluir body
como parte do seuFilterCriteria
, EventBridge ignora essa verificação.
Filtrar corretamente as 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 adequadamente os eventos das fontes de eventos de stream, tanto o campo de dados quanto seus critérios de filtro para o campo de dados devem estar em JSON formato 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 JSON formato válido, EventBridge descarta a mensagem ou gera uma exceção. A tabela a seguir resume o comportamento específico:
Formato dos dados recebidos (data ou dynamodb ) |
Formato de filtro padrão para propriedades de dados | Ação resultante |
---|---|---|
Válido JSON |
Válido JSON |
EventBridge filtros com base em seus critérios de filtro. |
Válido JSON |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Válido JSON |
Não- JSON |
EventBridge lança uma exceção no momento do pipe ou da atualização. O padrão de filtro para propriedades de dados deve estar em um JSON formato válido. |
Não- JSON |
Válido JSON |
EventBridge deixa cair o recorde. |
Não- JSON |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Não- JSON |
Não- JSON |
EventBridge lança uma exceção no momento da criação ou atualização do pipe. O padrão de filtro para propriedades de dados deve estar em um JSON formato válido. |
Filtrar adequadamente mensagens do Amazon Managed Streaming for Apache Kafka, Apache Kafka autogerenciado e Amazon MQ
Para origens do Amazon MQ, o campo de mensagem é data
. Para fontes do Apache Kafka (Amazon MSK e Apache Kafka autogerenciado), há dois campos de mensagem: e. key
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 a função com sucesso. 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 sequências de caracteres codificadas em UTF -8, sejam cadeias de caracteres simples ou em formato. JSON Isso porque EventBridge decodifica matrizes de bytes do Apache Kafka e do Amazon MQ em -8 antes de aplicar os critérios de filtro. UTF Se suas mensagens usarem outra codificação, como UTF -16 ouASCII, ou se o formato da mensagem não corresponder ao FilterCriteria
formato, EventBridge processará somente filtros de metadados. A tabela a seguir resume o comportamento específico:
Formato da mensagem recebida (data ou key e value ) |
Formato padrão de filtro para propriedades de mensagem | Ação resultante |
---|---|---|
String simples |
String simples |
EventBridge filtros com base em seus critérios de filtro. |
String simples |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
String simples |
Válido JSON |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Válido JSON |
String simples |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Válido JSON |
Nenhum padrão de filtro para propriedades de dados |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Válido JSON |
Válido JSON |
EventBridge filtros com base em seus critérios de filtro. |
Cadeia de caracteres não codificada em UTF -8 |
JSON, sequência simples ou sem padrão |
EventBridge filtros (somente nas outras propriedades de metadados) com base em seus critérios de filtro. |
Diferenças entre Lambda ESM e Pipes EventBridge
Ao filtrar eventos, o ESM Lambda EventBridge e o Pipes geralmente operam da mesma maneira. A principal diferença é que o eventSourceKey
campo não está presente nas ESM cargas úteis.
Usando operadores de comparação em filtros de tubulação
Os operadores de comparação permitem que você construa padrões de eventos que correspondam aos valores de campo em eventos.
Para obter uma lista completa dos operadores de comparação compatíveis com o uso em filtros de tubulação, consulteOperadores de comparação.