

# 객체 키 이름 필터링을 사용하여 이벤트 알림 구성
<a name="notification-how-to-filtering"></a>

Amazon S3 이벤트 알림을 구성할 때 Amazon S3에서 알림을 전송하도록 하는 지원되는 Amazon S3 이벤트 유형을 지정해야 합니다. 지정하지 않은 이벤트 유형이 S3 버킷에 발생하면 Amazon S3에서 알림을 전송하지 않습니다.

객체 키 이름의 접두사 및 접미사로 알림을 필터링하도록 구성할 수 있습니다. 예를 들어, 파일 이름 확장명이 "`.jpg`"인 이미지 파일이 버킷에 추가될 경우에만 알림을 받는 구성을 설정할 수 있습니다. 또는 접두사가 '`images/`'인 객체가 버킷에 추가될 때에는 Amazon SNS 주제에 알림을 전송하고, 동일한 버킷에서 접두사가 '`logs/`' 인 객체에 대한 알림은 AWS Lambda 함수로 전송하도록 구성할 수도 있습니다.

**참고**  
필터에서 접두사 또는 접미사로 와일드카드 문자("\$1")를 사용할 수 없습니다. 접두사 또는 접미사에 공백이 포함된 경우 공백을 “\$1” 문자로 대체해야 합니다. 접두사 또는 접미사 값에 다른 특수 문자를 사용하는 경우 [URL 인코딩(퍼센트 인코딩)](https://en.wikipedia.org/wiki/Percent-encoding) 형식으로 입력해야 합니다. 이벤트 알림의 접두사 또는 접미사에 사용할 때 URL 인코딩 형식으로 변환해야 하는 특수 문자의 전체 목록은 [사용 가능 문자](object-keys.md#object-key-guidelines-safe-characters) 페이지를 참조하십시오.

Amazon S3 콘솔에서 객체 키 이름 필터링을 사용하는 알림 구성을 설정할 수 있습니다. AWS SDK 또는 REST API를 통해 Amazon S3 API를 직접 사용하면 됩니다. 콘솔 UI를 사용하여 버킷에 알림 구성을 설정하는 방법에 대한 자세한 내용은 [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md) 섹션을 참조하십시오.

[Amazon SQS, Amazon SNS 및 Lambda 사용](how-to-enable-disable-notification-intro.md)에서 설명한 대로, Amazon S3은 버킷과 연결된 *알림* 하위 리소스에 XML로 알림 구성을 저장합니다. 알림의 규칙을 정의하여 객체 키 이름의 접두사 또는 접미사로 알림을 필터링하려면 `Filter` XML 구조를 사용합니다. `Filter` XML 구조에 대한 자세한 내용은 *Amazon Simple Storage Service API 참조*의 [PUT 버킷 알림](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html)을 참조하십시오.

`Filter`를 사용하는 알림 구성은 중첩 접두사, 중첩 접미사 또는 접두사 및 접미사 중첩을 포함하는 필터링 규칙을 정의할 수 있습니다. 다음 섹션에는 객체 키 이름 필터링을 사용하는 유효한 알림 구성의 예가 나와 있습니다. 또한 접두사 및 접미사 중첩으로 인해 유효하지 않은 알림 구성 예제가 포함되어 있습니다.

**Topics**
+ [

## 객체 키 이름 필터링을 포함하는 유효한 알림 구성 예제
](#notification-how-to-filtering-example-valid)
+ [

## 유효하지 않은 접두사 및 접미사 중첩을 포함하는 알림 구성 예제
](#notification-how-to-filtering-examples-invalid)

## 객체 키 이름 필터링을 포함하는 유효한 알림 구성 예제
<a name="notification-how-to-filtering-example-valid"></a>

다음 알림 구성에는 `s3:ObjectCreated:Put` 유형의 이벤트를 게시하기 위해 Amazon S3에 대한 Amazon SQS 대기열을 식별하는 대기열 구성이 포함되어 있습니다. 이 이벤트는 접두사가 `images/`이고 접미사가 `jpg`인 객체가 버킷에 추가(PUT)될 때마다 게시됩니다.

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

다음 알림 구성에는 여러 개의 비중첩 접두사가 있습니다. 이 구성은 `images/` 폴더에서 PUT 요청에 대한 알림을 대기열 A로 보내고, `logs/` 폴더에서 PUT 요청에 대한 알림은 대기열 B로 보내도록 정의합니다.

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

다음 알림 구성에는 여러 개의 비중첩 접미사가 있습니다. 이 구성은 버킷에 새로 추가된 모든 `.jpg` 이미지를 Lambda 클라우드 함수 A에서 처리하고, 새로 추가된 모든 `.png` 이미지는 클라우드 함수 B에서 처리하도록 정의합니다. `.png` 및 `.jpg` 접미사는 마지막 문자가 동일해도 중첩되지 않습니다. 지정된 문자열이 두 접미사로 끝날 수 있으면 2개의 접미사가 겹치는 것으로 간주됩니다. 문자열이 `.png`와 `.jpg`로 끝날 수 없으므로 예제 구성의 접미사는 중첩 접미사가 아닙니다.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

`Filter`를 사용하는 알림 구성은 동일한 이벤트 유형에 대해 중첩 접두사를 포함하는 필터링 규칙을 정의할 수 없습니다. 겹치지 않는 접미사와 함께 사용되는 겹치는 접두사가 있는 경우에만 그렇게 할 수 있습니다. 다음 예제 구성은 일반 접두사를 갖지만 접미사가 중첩되지 않게 생성된 객체가 어떻게 다른 대상으로 전송될 수 있는지를 보여줍니다.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## 유효하지 않은 접두사 및 접미사 중첩을 포함하는 알림 구성 예제
<a name="notification-how-to-filtering-examples-invalid"></a>

`Filter`를 사용하는 알림 구성은 대부분의 경우 동일한 이벤트 유형에 대해 중첩 접두사, 중첩 접미사 또는 접두사와 접미사의 중첩 조합을 포함하는 필터링 규칙을 정의할 수 없습니다. 접미사가 중첩되지 않을 경우에 한해 중첩 접두사를 사용할 수 있습니다. 관련 예제는 [객체 키 이름 필터링을 사용하여 이벤트 알림 구성](#notification-how-to-filtering) 섹션을 참조하십시오

이벤트 유형이 서로 다른 중첩 객체 키 이름 필터를 사용할 수 있습니다. 예를 들어, `image/` 이벤트 유형에 대해 `ObjectCreated:Put` 접두사를 사용하고, `image/` 이벤트 유형에 대해 `ObjectRemoved:*` 접두사를 사용하는 알림 구성을 생성할 수 있습니다.

Amazon S3 콘솔이나 API를 사용할 경우 동일한 이벤트 유형에 대해 유효하지 않은 중첩 이름 필터를 가진 알림 구성을 저장하려고 하면 오류가 발생합니다. 이 섹션에서는 중첩된 이름 필터로 인해 유효하지 않은 알림 구성의 예를 보여줍니다.

기존의 알림 구성 규칙이 다른 접두사 및 접미사와 각각 일치하는 기본 접두사와 접미사를 갖는다고 가정해 보겠습니다. 다음 알림 구성은 접두사가 중첩되기 때문에 유효하지 않습니다. 특히 루트 접두사는 다른 접두사와 겹칩니다. 이 예제에서 접두사 대신 접미사를 사용하는 경우에도 마찬가지입니다. 루트 접미사가 다른 접미사와 중첩됩니다.

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

다음 알림 구성은 중첩 접미사가 있기 때문에 유효하지 않습니다. 지정된 문자열이 두 접미사로 끝날 수 있으면 2개의 접미사가 겹치는 것으로 간주됩니다. 문자열은 `jpg`와 `pg`로 끝날 수 있습니다. 따라서 접미사가 겹칩니다. 접두사의 경우에도 마찬가지입니다. 지정된 문자열이 두 접두사로 시작할 수 있으면 2개의 접두사가 겹치는 것으로 간주됩니다.

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

다음 알림 구성은 접두사와 접미사가 중첩되기 때문에 유효하지 않습니다.

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```