Ir para o conteúdo

Como faço para filtrar eventos com o EventBridge Pipes?

5 minuto de leitura
0

Quero usar o Amazon EventBridge Pipes para capturar um evento de fontes da AWS e conectá-lo a destinos.

Breve descrição

O EventBridge Pipes recebe dados de eventos das seguintes fontes:

  • Stream do Amazon DynamoDB
  • Stream do Amazon Kinesis
  • Amazon MQ
  • Stream do Amazon Managed Streaming for Apache Kafka (Amazon MSK)
  • Stream do Apache Kafka autogerenciado
  • Fila do Amazon Simple Queue Service (Amazon SQS)

Se você enviar eventos de dados diretamente da fonte para o destino, haverá sobrecarga de recursos e custos adicionais. O destino deve processar todos os eventos de dados e implementar a lógica de negócios para descartar eventos desnecessários. É uma prática recomendada enviar somente eventos de dados específicos para o destino.

Para aprimorar os eventos filtrados antes de enviá-los ao destino, use um destino de API ou os seguintes serviços da AWS:

  • Amazon API Gateway
  • AWS Lambda
  • AWS Step Functions

Resolução

Observação: O EventBridge Pipes usa padrões de evento. Cada fonte do EventBridge Pipes possui campos que contêm a mensagem principal ou os dados.

Use os critérios de filtro para reduzir a sobrecarga

Para filtrar eventos enviados pela fonte, o EventBridge Pipes usa os seguintes critérios de filtro:

  • A propriedade Metadata inclui informações no formato JSON sobre a fonte que gera o evento de dados.
  • A propriedade Dados inclui o corpo da mensagem do evento de dados da fonte. O formato do corpo da mensagem varia de fonte para fonte.

Exemplo de corpo de mensagem que enviado por uma fila do Amazon SQS:

{    "key": "example-key-1",
    "tag": "eb-pipe-filter",
    "object name": "sampleimage-11.png",
    "sequencer": "617f0837b476e463",
    "Order Status": "Approved"
}

Exemplo de evento que o pipe recebeu:

{    "messageId": "c9652226-2d8f-49e9-9f06-beeb2a6f55ce",
    "receiptHandle": "AQEBoteuDChpmsb6765tA//hqtPta1W/utSYlmWuw3fjZnVvY+dxOUdj4cEjYZtLKGMGT4LUuvWbQPHb96Wwa+X0zUJo8ZiHC7dbul62hVbFTXjB7+cOKH91RXc3YMllpnd6nB3CNAOGIig6suCpEOGcrhTJ6dC45KoacROua1PIH454Ji8AP51TkQSnhkkeOJHInLHkvrd2sfoBo037kmMKJSo3kDgU7y92jbpJphRmijnNQX6gPQYSVifF3n3ApvSBMGQIUzQb65ZRLl6Mp2VPJQYF2RRjYShdrzhe3uON9H01m9f3LGcpL3yaX6yqFahfoEe3PiT6MMXHvIAaj+dKVSUqmnnk3n7X0n4WX1uFPgyjrI5KuJ64j2lf/dkcPMQEUPorjmagECmYpMrGlkBbZw==",
    "body": {
        "key": "example-key-1",
        "tag": "eb-pipe-filter",
        "object name": "sampleimage-11.png",
        "sequencer": "617f0837b476e463",
        "Order Status": "Approved"
    },
    "attributes": {
        "ApproximateReceiveCount": "1",
        "SentTimestamp": "1690589578649",
        "SenderId": "AIDAIMWXWRRSWVPYSJEH6",
        "ApproximateFirstReceiveTimestamp": "1690589578654"
    },
    "messageAttributes": {
        "Name": {
            "stringValue": "TestMessage",
            "stringListValues": [],
            "binaryListValues": [],
            "dataType": "String"
        }
    },
    "md5OfMessageAttributes": "62bd1c2ea8c5344caa6852a77543892d",
    "md5OfBody": "388e8d9be1776f61c0be0a089807afbc",
    "eventSource": "aws:sqs",
    "eventSourceARN": "arn:aws:sqs:ap-southeast-2:123456789012:test-sqs-source-pipe",
    "awsRegion": "ap-southeast-2"
}

Observação: No exemplo de evento anterior, não é possível usar eventSource, eventSourceARN e awsRegion para criar um padrão de evento porque o EventBridge adiciona os dados durante a sondagem.

Revise exemplos de padrões de filtro de eventos

Correspondência de padrão de filtro de eventos com propriedades de metadados

O padrão de filtro de eventos a seguir corresponde aos eventos que o pipe recebeu com os atributos e as propriedades de metadados stringValue:

{  "attributes": {
    "ApproximateReceiveCount": ["1"]
  },
  "messageAttributes": {
    "Name": {
      "stringValue": ["TestMessage"]
    }
  }
}

Correspondência de padrão de filtro de eventos com propriedades de dados

O padrão de filtro de eventos a seguir corresponde aos eventos que o pipe recebeu com a propriedade de dados Status do pedido e o valor aprovado:

{  "body": {
    "Order Status": ["Approved"]
  }
}

Correspondência do padrão de filtro de eventos com metadados e propriedades de dados

O padrão de filtro de eventos a seguir corresponde aos eventos que o pipe recebeu com a propriedade de dados Status do pedido e a propriedade de metadados SenderID:

{  "attributes": {
    "SenderId": ["AIDAIMWXWRRSWVPYSJEH6"]
  },
  "body": {
    "Order Status": ["Approved"]
  }
}

Padrão de filtro de eventos sem correspondências

O padrão de filtro de eventos a seguir não pode corresponder aos eventos que o pipe recebeu porque contém o campo awsRegion:

{  "body": {
    "Order Status": ["Approved"]
  },
  "awsRegion": ["ap-southeast-2"]
}

Observação: O EventBridge adiciona o campo AWSRegion ao adicionar os dados durante a sondagem. Embora os campos da propriedade de dados correspondam, o padrão do filtro de eventos falhou.

Revise os critérios para uma correspondência bem-sucedida

Se você não configurar corretamente o corpo da mensagem recebida e o padrão de filtro de eventos, o EventBridge Pipes descartará a mensagem.

Ao criar um padrão de filtro de eventos para o corpo da mensagem do evento, o padrão deve corresponder ao formato utilizado pelas fontes. Por exemplo, o corpo da mensagem do SQS pode ser uma string simples ou um script JSON. Os registros do Kinesis Stream e do DynamoDB devem estar em um formato JSON válido. Streams do Apache Kafka autogerenciado e mensagens do Amazon MQ usam strings codificadas em UTF-8, seja como strings simples ou no formato JSON.

Para mais informações sobre as fontes e seus padrões de filtro, consulte Event filtering in Amazon EventBridge Pipes.

Crie um pipe do EventBridge

Conclua as etapas a seguir:

  1. Abra o console do EventBridge.
  2. No painel de navegação, escolha Pipes.
  3. Escolha Criar pipe e, em seguida, insira um nome para o pipe.
  4. (Opcional) Em Descrição, adicione uma descrição para o pipe.
  5. Na guia Construir pipe, selecione o tipo de fonte e configure a fonte.
  6. Em Fonte, insira os parâmetros e escolha Avançar.
  7. Em tipo de evento de Amostra, selecione Eventos da AWS ou Inserir um próprio.
  8. Em Padrão de evento, insira o padrão de eventos necessário para filtrar os eventos.
  9. (Opcional) Escolha Padrão de teste.
  10. (Opcional) Escolha Avançar para navegar até Enrichment.
  11. Escolha Avançar para navegar até Destino.
  12. Em Detalhes, em Serviço do Destino, selecione o destino na lista suspensa e, em seguida, insira as informações do recurso de destino.
  13. Defina as configurações do pipe.
  14. Escolha Criar pipe.

Informações relacionadas

Filtrando corretamente as mensagens do Amazon SQS

Filtragem adequada de mensagens do Amazon Managed Streaming for Apache Kafka, do Apache Kafka autogerenciado e do Amazon MQ

AWS OFICIALAtualizada há um ano