내용으로 건너뛰기

EventBridge 파이프로 이벤트를 필터링하려면 어떻게 해야 합니까?

4분 분량
0

Amazon EventBridge 파이프를 사용하여 AWS 소스에서 이벤트를 캡처하고 이벤트를 대상에 연결하려고 합니다.

간략한 설명

EventBridge 파이프는 다음 소스로부터 이벤트 데이터를 수신합니다.

  • Amazon DynamoDB 스트림
  • Amazon Kinesis 스트림
  • Amazon MQ
  • Amazon Managed Streaming for Apache Kafka(Amazon MSK) 스트림
  • 자체 관리형 Apache Kafka 스트림
  • Amazon Simple Queue Service(Amazon SQS) 대기열

소스에서 대상으로 데이터 이벤트를 전송하면 리소스 오버헤드가 발생하고 추가 비용이 발생합니다. 대상은 모든 데이터 이벤트를 처리하고 불필요한 이벤트를 삭제하기 위한 비즈니스 로직을 구현해야 합니다. 특정 데이터 이벤트만 대상으로 보내는 것이 좋습니다.

필터링된 이벤트를 대상으로 전송하기 전에 개선하려면 API 대상 또는 다음 AWS 서비스를 사용하십시오.

  • Amazon API Gateway
  • AWS Lambda
  • AWS Step Functions

해결 방법

참고: EventBridge 파이프는 이벤트 패턴을 사용합니다. 모든 EventBridge 파이프 소스에는 코어 메시지 또는 데이터를 포함하는 필드가 있습니다.

필터 기준을 사용하여 오버헤드 감소

소스에서 전송한 이벤트를 필터링하기 위해 EventBridge 파이프는 다음 필터 기준을 사용합니다.

  • Metadata 속성에는 데이터 이벤트를 생성하는 소스에 관한 JSON 형식의 정보가 포함됩니다.
  • Data 속성에는 소스의 데이터 이벤트 메시지 본문이 포함됩니다. 메시지 본문의 형식은 소스별로 다릅니다.

Amazon SQS 대기열에서 전송한 메시지 본문의 예시:

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

파이프에서 수신한 예시 이벤트:

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

참고: 위의 예시 이벤트에서는 EventBridge가 폴링 중에 데이터를 추가하므로 eventSource, eventSourceARNawsRegion을 사용하여 이벤트 패턴을 생성할 수 없습니다.

이벤트 필터 패턴 예시 검토

메타데이터 속성과 이벤트 필터 패턴 일치

다음 이벤트 필터 패턴은 파이프에서 attributesstringValue 속성과 함께 수신한 이벤트를 일치시킵니다.

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

데이터 속성과 이벤트 필터 패턴 일치

다음 이벤트 필터 패턴은 파이프에서 Order Status 데이터 속성 및 Approved 값과 함께 수신한 이벤트를 일치시킵니다.

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

메타데이터 및 데이터 속성과 이벤트 필터 패턴 일치

다음 이벤트 필터 패턴은 ** Order Status ** 데이터 속성 및 ** SenderID ** 메타데이터 속성과 함께 파이프가 수신한 이벤트와 일치시킵니다.

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

**일치하는 항목이 없는 이벤트 필터 패턴 **

다음 이벤트 필터 패턴은 awsRegion 필드를 포함하므로 파이프에서 수신한 이벤트와 일치시킬 수 없습니다.

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

참고: EventBridge는 폴링 중에 데이터를 추가할 때 awsRegion 필드를 추가합니다. 데이터 속성 필드는 일치하지만 이벤트 필터 패턴은 실패했습니다.

성공적인 일치를 위한 기준 검토

수신 메시지 본문과 이벤트 필터 패턴을 올바르게 구성하지 않으면 EventBridge 파이프가가 메시지를 삭제합니다.

이벤트의 메시지 본문에 대한 이벤트 필터 패턴을 만들 때 패턴은 소스에서 사용하는 형식과 일치해야 합니다. 예를 들어, SQS의 메시지 본문은 일반 문자열이나 JSON 스크립트일 수 있습니다. Kinesis 스트림 및 DynamoDB 레코드는 유효한 JSON 형식이어야 합니다. 자체 관리형 Apache Kafka 스트림과 Amazon MQ 메시지는 일반 문자열 또는 JSON 형식의 UTF-8 인코딩 문자열을 사용합니다.

소스 및 해당 필터 패턴에 대한 자세한 내용은 Amazon EventBridge 파이프의 이벤트 필터링을 참조하십시오.

EventBridge 파이프 생성

다음 단계를 완료합니다.

  1. EventBridge 콘솔을 엽니다.
  2. 탐색 창에서 파이프를 선택합니다.
  3. 파이프 생성을 선택하고, 파이프 이름을 입력합니다.
  4. (선택 사항) 설명에 파이프의 설명을 추가합니다.
  5. 파이프 빌드 탭에서 소스 유형을 선택하고, 소스를 구성합니다.
  6. 소스에 매개변수를 입력하고, 다음을 선택합니다.
  7. 샘플 이벤트 유형에서 AWS 이벤트 또는 내 이벤트 입력을 선택합니다.
  8. 이벤트 패턴에서 이벤트 필터링에 필요한 이벤트 패턴을 입력합니다.
  9. (선택 사항) 테스트 패턴을 선택합니다.
  10. (선택 사항) 다음을 선택하여 강화로 이동합니다.
  11. 다음을 선택하여 대상으로 이동합니다.
  12. 세부 정보대상 서비스에 있는 드롭다운 목록에서 대상을 선택하고, 대상 리소스 정보를 입력합니다.
  13. 파이프 설정을 구성합니다.
  14. 파이프 생성을 선택합니다.

관련 정보

Amazon SQS 메시지의 올바른 필터링

Apache Kafka의 Amazon 관리형 스트리밍, 자체 관리형 Apache Kafka, Amazon MQ 메시지의 올바른 필터링

AWS 공식업데이트됨 일 년 전