

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

# 구독자에 대한 이벤트 필터링
<a name="eb-custom-bus-filtering"></a>

필터는 구독자가 수신하는 이벤트를 선택합니다. EventBridge 이벤트 패턴 구문`Pattern`에서 각각 `Scope` 및의 이름을 지정하는 하나 이상의 필터를 사용하여 `FilterConfiguration` 구독자에를 연결합니다. 예를 들어 패턴이 있는 `DATA` 필터는에 게시된 500개 이상의 주문만 `{"detail":{"amount":[{"numeric":[">",500]}]}}` 전송합니다`PutEvents`. 이 페이지에서는 필터 모델을 설명합니다. 패턴 연산자는 섹션을 참조하세요[Amazon EventBridge 이벤트 패턴](eb-event-patterns.md). 구독자 필터는 와일드카드 일치를 지원하지 않습니다.

## 필터링 작동 방식
<a name="eb-custom-bus-filtering-how"></a>

각 필터에는 필터가 검사`Scope`하는 이벤트의 일부인 `METADATA`와(`DATA`, 또는 `SYSTEM_METADATA`, 참조[이벤트 구조: 데이터, 메타데이터 및 시스템 메타데이터](eb-custom-bus-addressing.md)) JSON 문자열로 제공되는 이벤트 패턴인 `Pattern`의 두 부분이 있습니다. EventBridge는 구성의 필터를 AND와 결합합니다. 이벤트는 구독자가 필터를 수신하기 전에 모든 필터와 일치해야 합니다. 가 없는 구독자는 모든 이벤트를 `FilterConfiguration` 수신합니다.

## 세 가지 범위
<a name="eb-custom-bus-filtering-scopes"></a>

`DATA`  
이벤트 데이터를 검사합니다. `PutRawEvents`의 경우 데이터는 전송한 페이로드입니다. `PutEvents`의 경우 데이터는 EventBridge 봉투이고는 `detail` 키 아래에 중첩됩니다. `DATA` 필터`Detail`는 와일드카드를 제외한 모든 이벤트 패턴 연산자를 지원합니다. EventBridge는 `application/avro` 및 `application/protobuf` 이벤트를 JSON으로 역직렬화하고 `DATA` 필터는 해당 JSON을 모든 JSON 이벤트처럼 검사합니다. `application/octet-stream` 이벤트에는 필터가 읽을 수 있는 데이터가 없으므로 `DATA` 필터가 있는 구독자는 일치하는 데이터가 없으며 `METADATA` `SYSTEM_METADATA` 필터는 여전히 작동합니다.

`METADATA`  
에서 게시자가 설정한 키-값 페어를 `Metadata`와 함께 검사합니다`PutRawEvents`. `METADATA` 필터는 정확한 값만 일치합니다. 패턴의 각 값은 정확한 값의 JSON 배열이어야 하며 , `prefix`, `numeric``exists`, 등의 연산`$or`자는 지원되지 않습니다. 이러한 연산자를 사용하려면 `DATA` 또는를 기준으로 필터링합니다`SYSTEM_METADATA`. `PutEvents` 이벤트에 게시자 메타데이터가 없으므로 `METADATA` 필터가 게시자 메타데이터와 일치하지 않습니다.

`SYSTEM_METADATA`  
다음 표에 나열된 이벤트에서 EventBridge가 설정하는 필드를 검사합니다. `SYSTEM_METADATA` 필터는 와일드카드를 제외한 모든 이벤트 패턴 연산자를 지원합니다. EventBridge가 생성하는 필드에는 `aws:` 접두사가 포함됩니다.


| 필드 | 설명 | 에 있음 | 
| --- | --- | --- | 
| ContentType | 이벤트 데이터의 콘텐츠 유형 | 모든 이벤트 | 
| DeduplicationId | 중복 제거 식별자 | 모든 이벤트 | 
| EventGroupId | 이벤트 그룹 | 모든 이벤트 | 
| aws:EventId | 할당된 식별자 EventBridge  | 모든 이벤트 | 
| aws:IngestionTime | EventBridge가 이벤트를 수신한 시간 | 모든 이벤트 | 
| aws:SequenceNumber | 할당된 EventBridge 시퀀스 번호 | 모든 이벤트 | 
| aws:DeliveryType | LIVE 또는 REPLAY | 전달된 모든 이벤트 | 
| aws:SchemaId | 레지스트리의 스키마 식별자: Glue용 UUID 버전, Confluent용 정수 | Avro 및 Protobuf 이벤트 | 
| aws:RegistryType | Glue 또는 Confluent | Avro 및 Protobuf 이벤트 | 
| aws:Source | 이벤트의 소스 | PutEvents, AWS 서비스 및 SaaS 파트너 이벤트 | 
| aws:DetailType | 이벤트의 세부 정보 유형 | PutEvents, AWS 서비스 및 SaaS 파트너 이벤트 | 

**참고**  
 AWS 서비스 이벤트 또는 SaaS 파트너 이벤트를 기준으로 필터링하려면 `aws:Source` 및를 사용합니다`aws:DetailType`. EventBridge는 이러한 필드를 작성하며 게시 호출은 로 시작하는 소스를 설정할 수 `aws.`없으므로 이벤트의 확인된 오리진을 식별합니다. 이러한 목적으로 이벤트 데이터의 `source` 및 `detail-type` 필드를 사용하지 마세요. 게시자는 해당 필드를 작성할 수 있습니다. [사용자 지정 이벤트 버스의 이벤트 소스](eb-custom-bus-event-sources.md) 섹션을 참조하세요.

## 예: PutRawEvents로 게시된 이벤트 필터링
<a name="eb-custom-bus-filtering-raw-example"></a>

`PutRawEvents`는 콘텐츠 유형으로 페이로드를 게시합니다. `DATA` 필터는 페이로드와 직접 일치하고 `METADATA` 필터는 게시자의 메타데이터 맵과 일치합니다. 다음 구성에는 범위당 하나의 필터가 있습니다. 구독자는 페이로드의가 500을 초과`EU`하고 메타데이터 키`amount`가 `region`이고 콘텐츠 유형이 JSON인 세 가지가 모두 일치하는 경우에만 이벤트를 수신합니다.

```
{
    "Filters": [
        { "Scope": "DATA", "Pattern": "{\"amount\":[{\"numeric\":[\">\",500]}]}" },
        { "Scope": "METADATA", "Pattern": "{\"region\":[\"EU\"]}" },
        { "Scope": "SYSTEM_METADATA", "Pattern": "{\"ContentType\":[\"application/json\"]}" }
    ]
}
```

## 예: PutEvents로 게시된 이벤트 필터링
<a name="eb-custom-bus-filtering-putevents-example"></a>

`PutEvents`는 항목의 , , `Source`, 및에서 빌드된 EventBridge 봉투에 이벤트를 게시합니다`DetailType``Resources``Time``Detail`. `DATA` 필터는에 `Detail` 중첩된이 봉투와 일치합니다`detail`. 이벤트의 `ContentType`는 `aws:Source`이고`application/eventbridge+json`, 항목의 `Source` 및에서 `aws:DetailType` 가져오며`DetailType`, 봉투는 `DATA` 범위 `detail-type` 내에 `source` 및 도 노출합니다. 다음 구성은 세부 `amount` 정보의이 500을 초과하고 소스가 인 경우 일치합니다`com.myapp.storage`.

```
{
    "Filters": [
        { "Scope": "DATA", "Pattern": "{\"detail\":{\"amount\":[{\"numeric\":[\">\",500]}]}}" },
        { "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:Source\":[\"com.myapp.storage\"]}" }
    ]
}
```

## 예: 이벤트 소스에서 이벤트 필터링
<a name="eb-custom-bus-filtering-event-source-example"></a>

이벤트 소스가 수집하는 이벤트는의 발신 서비스 또는 파트너와 함께 EventBridge 봉투에 도착합니다`aws:Source`. 버킷 하나에 대해 Amazon S3 객체 생성 이벤트만 수신하려면의 서비스와 `SYSTEM_METADATA`의 버킷을 일치시킵니다`DATA`. 파트너의 경우 파트너 이벤트 소스 이름을의와 일치`prefix`시킵니다`aws.partner/example.com`.

```
{
    "Filters": [
        { "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:Source\":[\"aws.s3\"]}" },
        { "Scope": "DATA", "Pattern": "{\"detail-type\":[\"Object Created\"],\"detail\":{\"bucket\":{\"name\":[\"amzn-s3-demo-bucket\"]}}}" }
    ]
}
```

## 동작 및 제한
<a name="eb-custom-bus-filtering-limits"></a>
+ **AND 조합**: 이벤트는 구성의 모든 필터와 일치해야 합니다.
+ **필터 없음**: 필터 구성이 없는 구독자는 모든 이벤트를 수신합니다.
+ **범위당 필터 1**개: 구성에는 각 범위에 대해 최대 1개의 필터가 포함되므로 최대 3개의 필터가 포함됩니다. EventBridge는 동일한 범위의 두 필터가 있는 구성을 거부합니다.
+ **와일드카드**: 와일드카드가 `anything-but` 있는 연`wildcard`산자 및는 거부되며 *필터 패턴에 와일드카드 매처(와일드카드, anything-but 와일드카드)가 포함되어서는 안* 됩니다.
+ **와의 패턴 조합`$or`**: EventBridge는 `$or` 사용량이 1,000개 이상의 패턴 조합을 생성하는 필터를 거부합니다. 각 `$or` 배열의 인수 수를 곱합니다. 3개로 구성된 하나의 배열은 세 가지 조합을 제공하고, 2개로 구성된 두 번째 배열은 6개를 제공합니다.
+ **크기**: 구성의 모든 필터는 세 가지 범위에서 4,096바이트의 한 가지 제한을 공유합니다.
+ **패턴 셰**이프: `DATA` 패턴은 루트에 배열을 가질 수 `METADATA` 있으며 `SYSTEM_METADATA` 패턴은 JSON 객체여야 합니다. 유효한 JSON이 아닌 패턴은 구독자를 생성하거나 업데이트할 때 거부됩니다.
+ **변경** 사항: 구독자의 필터는 24시간 동안 24번 변경할 수 있습니다. 섹션을 참조하세요[구독자 업데이트, 일시 중지 및 재개](eb-custom-bus-update.md).

잘못된 셰이프에 대해 작성된 패턴은 실패하지 않고 아무것도 일치하지 않습니다. 구독자에게 의존하기 전에 일치하는 이벤트 하나와 그렇지 않은 이벤트를 게시하고 대상에서 둘 다 확인합니다.