Amazon EventBridge 파이프의 이벤트 필터링 - Amazon EventBridge

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EventBridge 파이프의 이벤트 필터링

EventBridge 파이프를 사용하면 특정 소스의 이벤트를 필터링하고 그 중 일부만 처리할 수 있습니다. 이 필터링은 이벤트 패턴을 사용하여 EventBridge 이벤트 버스 또는 Lambda 이벤트 소스 매핑에서 필터링하는 것과 동일한 방식으로 작동합니다. 이벤트 패턴에 대한 자세한 내용은 아마존 EventBridge 이벤트 패턴 섹션을 참조하세요.

필터 기준 FilterCriteria 객체는 필터(Filters) 목록으로 구성된 구조입니다. 각 필터는 필터링 패턴(Pattern)을 정의하는 구조입니다. A는 JSON 필터 규칙의 문자열 Pattern 표현입니다. FilterCriteria 객체는 다음 예제와 같은 형태를 가집니다.

{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}" } ] }

명확성을 높이기 위해 필터 값을 JSON 평범하게 Pattern 확장하면 다음과 같습니다.

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

FilterCriteria 객체의 주요 부분은 메타데이터 속성 및 데이터 속성입니다.

  • 메타데이터 속성은 이벤트 객체의 필드입니다. 예제에서 FilterCriteria.Metadata1은 메타데이터 속성을 가리킵니다.

  • 데이터 속성은 이벤트 본문의 필드입니다. 예제에서 FilterCriteria.Data1은 데이터 속성을 가리킵니다.

예를 들어 Kinesis 스트림에 다음과 같은 이벤트가 포함되어 있다고 가정해 보겠습니다.

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

이벤트가 파이프를 통과하여 흐르면 data 필드가 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" }

Kinesis 이벤트의 메타데이터 속성data 객체 외부의 모든 필드(예: partitionKey 또는 sequenceNumber)입니다.

Kinesis 이벤트의 데이터 속성은 data 객체 내부의 필드(예: City또는 Temperature)입니다.

이 이벤트와 일치하도록 필터링하면 디코딩된 필드에 필터를 사용하면 됩니다. 예를 들어 partitionKeyCity를 필터링하려면 다음 필터를 사용합니다.

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

이벤트 필터를 만들 때 EventBridge Pipes는 이벤트 콘텐츠에 액세스할 수 있습니다. 이 콘텐츠는 Amazon SQS body 필드와 같이 JSON 이스케이프 처리되거나 Kinesis 필드와 같이 base64로 인코딩됩니다. data 데이터가 JSON 유효하면 대상 매개변수의 입력 템플릿 또는 JSON 경로가 콘텐츠를 직접 참조할 수 있습니다. 예를 들어 Kinesis 이벤트 소스가 유효한 JSON 경우 를 사용하여 변수를 참조할 수 있습니다. <$.data.someKey>

이벤트 패턴을 생성할 때 폴링 작업으로 추가된 필드가 아니라 소스에서 API 전송한 필드를 기준으로 필터링할 수 있습니다. 다음 필드는 이벤트 패턴에 사용할 수 없습니다.

  • awsRegion

  • eventSource

  • eventSourceARN

  • eventVersion

  • eventID

  • eventName

  • invokeIdentityArn

  • eventSourceKey

메시지 및 데이터 필드

모든 EventBridge Pipe 소스에는 핵심 메시지 또는 데이터가 포함된 필드가 있습니다. 이를 메시지 필드 또는 데이터 필드라고 합니다. 이러한 필드는 JSON -이스케이프 또는 base64로 인코딩될 수 있기 때문에 특별하지만, 유효한 JSON 경우 본문이 이스케이프되지 않은 것처럼 JSON 패턴으로 필터링할 수 있습니다. 이러한 필드의 내용은 입력 변환기에서도 원활하게 사용할 수 있습니다.

Amazon SQS 메시지를 올바르게 필터링합니다.

Amazon SQS 메시지가 필터 기준을 충족하지 않는 경우 대기열에서 메시지가 EventBridge 자동으로 제거됩니다. Amazon에서는 이러한 메시지를 수동으로 삭제할 필요가 없습니다SQS.

Amazon의 SQS 경우 메시지는 임의의 문자열일 body 수 있습니다. 하지만 JSON 형식이 올바르다고 FilterCriteria 생각한다면 body 문제가 될 수 있습니다. 반대의 시나리오도 마찬가지입니다. 즉, 들어오는 메시지가 body 유효한 JSON 형식이지만 필터 기준이 일반 문자열이어야 body 하는 경우 의도하지 않은 동작이 발생할 수 있습니다.

이 문제를 방지하려면 FilterCriteria에서 body의 형식이 대기열에서 받은 메시지의 body의 예상 형식과 일치하는지 확인합니다. 메시지를 필터링하기 전에 수신 메시지의 body 형식과 필터 패턴을 EventBridge 자동으로 평가합니다. body 일치하지 않는 부분이 있는 경우 메시지를 EventBridge 삭제합니다. 다음 표에는 이 평가가 요약되어 있습니다.

수신 메시지 body 형식 필터 패턴 body 형식 결과적 작업

일반 문자열

일반 문자열

EventBridge 필터 기준에 따라 필터링합니다.

일반 문자열

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따른 필터 (다른 메타데이터 속성에만 해당).

일반 문자열

유효합니다. JSON

EventBridge 메시지를 삭제합니다.

유효합니다. JSON

일반 문자열

EventBridge 메시지를 삭제합니다.

유효합니다. JSON

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

유효합니다. JSON

유효 JSON

EventBridge 필터 기준에 따라 필터링합니다.

body일부로 포함하지 않는 경우 이 검사를 EventBridge 건너뛰십시오FilterCriteria.

Kinesis 및 DynamoDB 메시지를 올바르게 필터링

필터 기준에서 Kinesis 또는 DynamoDB 레코드를 처리한 후 스트림 반복기가 이 레코드를 너머 진행됩니다. 레코드가 필터 조건을 충족하지 않으면 이벤트 소스에서 레코드를 수동으로 삭제할 필요가 없습니다. 보존 기간이 지나면 Kinesis 및 DynamoDB는 이러한 이전 레코드를 자동으로 삭제합니다. 레코드를 더 빨리 삭제하려면 데이터 보존 기간 변경을 참조하세요.

스트림 이벤트 소스의 이벤트를 적절하게 필터링하려면 데이터 필드와 데이터 필드에 대한 필터 기준이 모두 유효한 형식이어야 합니다. JSON (Kinesis의 경우 데이터 필드는 data이고 DynamoDB의 경우 데이터 필드는 dynamodb입니다.) 필드 중 하나가 유효한 JSON 형식이 아닌 경우 메시지를 EventBridge 삭제하거나 예외가 발생합니다. 다음 표에는 특정 동작이 요약되어 있습니다.

수신 데이터 형식(data 또는 dynamodb) 데이터 속성에 대한 필터 패턴 형식 결과적 작업

유효합니다. JSON

유효 JSON

EventBridge 필터 기준에 따라 필터링합니다.

유효합니다. JSON

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

유효합니다. JSON

아니오- JSON

EventBridge 파이프 또는 업데이트 시 예외가 발생합니다. 데이터 속성의 필터 패턴은 올바른 JSON 형식이어야 합니다.

비- JSON

유효 JSON

EventBridge 기록을 삭제합니다.

아니에요. JSON

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

비- JSON

아니요- JSON

EventBridge 파이프 생성 또는 업데이트 시 예외가 발생합니다. 데이터 속성의 필터 패턴은 유효한 JSON 형식이어야 합니다.

Amazon Managed Streaming for Apache Kafka, 자체 관리형 Apache Kafka, Amazon MQ 메시지를 올바르게 필터링

Amazon MQ 소스의 경우 메시지 필드는 data입니다. Apache Kafka 소스 (Amazon MSK자체 관리형 Apache Kafka) 의 경우 두 개의 메시지 필드 (및) 가 있습니다. key value

EventBridge 필터에 포함된 모든 필드와 일치하지 않는 메시지를 삭제합니다. Apache Kafka의 경우 함수를 성공적으로 호출한 후 일치하는 메시지와 일치하지 않는 메시지에 대해 오프셋을 EventBridge 커밋합니다. Amazon MQ의 경우 함수를 성공적으로 호출한 후 일치하는 메시지를 확인하고, EventBridge 일치하지 않는 메시지를 필터링할 때 이를 확인합니다.

Apache Kafka 및 Amazon MQ 메시지는 일반 문자열 또는 형식의 UTF -8로 인코딩된 문자열이어야 합니다. JSON 필터 기준을 적용하기 전에 Apache Kafka와 Amazon MQ 바이트 배열을 -8로 EventBridge 디코딩하기 때문입니다. UTF 메시지가 UTF -16 또는 ASCII 같은 다른 인코딩을 사용하거나 메시지 형식이 형식과 일치하지 않는 경우 메타데이터 필터만 처리합니다. FilterCriteria EventBridge 다음 표에는 특정 동작이 요약되어 있습니다.

수신 메시지 형식 (data 또는 keyvalue) 메시지 속성에 대한 필터 패턴 형식 결과적 작업

일반 문자열

일반 문자열

EventBridge 필터 기준에 따라 필터링합니다.

일반 문자열

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따른 필터 (다른 메타데이터 속성에만 해당).

일반 문자열

유효합니다. JSON

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

유효합니다. JSON

일반 문자열

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

유효합니다. JSON

데이터 속성에 대한 필터 패턴 없음

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

유효합니다. JSON

유효 JSON

EventBridge 필터 기준에 따라 필터링합니다.

UTF-8로 인코딩되지 않은 문자열

JSON, 일반 문자열 또는 패턴 없음

EventBridge 필터 기준에 따라 필터링합니다 (다른 메타데이터 속성에만 해당).

ESMLambda와 파이프의 차이점 EventBridge

이벤트를 필터링할 때 ESM EventBridge Lambda와 Pipes는 일반적으로 같은 방식으로 작동합니다. 주요 차이점은 페이로드에 eventSourceKey ESM 필드가 없다는 것입니다.

파이프 필터에서 비교 연산자 사용

비교 연산자를 사용하면 이벤트의 필드 값과 일치하는 이벤트 패턴을 생성할 수 있습니다.

파이프 필터에서 사용할 수 있는 비교 연산자의 전체 목록은 을 참조하십시오비교 연산자.