

# Amazon SQS, Amazon SNS 및 Lambda 사용
<a name="how-to-enable-disable-notification-intro"></a>

알림 사용 설정은 버킷 수준 작업입니다. 알림 구성 정보는 버킷에 연결된 *알림* 하위 리소스에 저장됩니다. 버킷 알림 구성을 생성하거나 변경한 후 변경 사항이 적용되려면 일반적으로 5분 정도 걸립니다. 알림이 처음으로 사용 설정될 때 `s3:TestEvent`가 발생합니다. 다음과 같은 메서드를 사용하여 알림 구성을 관리할 수 있습니다.
+ **Amazon S3 콘솔 사용** - 콘솔 UI를 사용하면 코드를 작성할 필요 없이 버킷에서 알림 구성을 설정할 수 있습니다. 자세한 내용은 [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md) 섹션을 참조하세요.
+ **AWS SDK를 사용한 프로그래밍 방식** - 내부적으로는 콘솔이나 SDK 모두 Amazon S3 REST API를 호출하여 버킷과 연결된 *알림* 하위 리소스를 관리합니다. AWS SDK를 사용하는 알림 구성의 예는 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 섹션을 참조하십시오.
**참고**  
코드에서 직접 Amazon S3 REST API를 호출할 수도 있습니다. 그러나 이렇게 하려면 요청 인증을 위한 코드를 작성해야 하므로 번거로울 수 있습니다.

사용하는 방법에 관계없이 Amazon S3가 버킷과 연결된 *알림* 하위 리소스에 알림 구성을 XML로 저장합니다. 버킷 하위 리소스에 대한 자세한 내용은 [범용 버킷 구성 옵션](UsingBucket.md#bucket-config-options-intro) 단원을 참조하십시오.

**참고**  
삭제된 대상으로 인해 실패한 이벤트 알림이 여러 개 있는 경우 이를 삭제하려고 하면 **다음 대상 구성을 검증할 수 없음**이라는 메시지가 표시될 수 있습니다. S3 콘솔에서 모든 실패한 알림을 동시에 삭제하여 이 문제를 해결할 수 있습니다.

**Topics**
+ [대상에 이벤트 알림 메시지를 게시할 권한 부여](grant-destinations-permissions-to-s3.md)
+ [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md)
+ [프로그래밍 방식으로 이벤트 알림 구성](#event-notification-configuration)
+ [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md)
+ [객체 키 이름 필터링을 사용하여 이벤트 알림 구성](notification-how-to-filtering.md)
+ [이벤트 메시지 구조](notification-content-structure.md)

## 프로그래밍 방식으로 이벤트 알림 구성
<a name="event-notification-configuration"></a>

기본적으로 모든 유형의 이벤트에 대해 알림이 사용 중지되어 있습니다. 따라서 처음에 *알림* 하위 리소스에는 빈 구성이 저장되어 있습니다.

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</NotificationConfiguration>
```

특정 유형의 이벤트에 대해 알림을 설정하려면 먼저 Amazon S3이 게시할 이벤트 유형 및 이벤트 게시할 대상을 지정하는 구성으로 이 XML을 교체합니다. 각 대상에 대해 해당 XML 구성을 추가해야 합니다.

**SQS 대기열에 이벤트 메시지 게시**  
SQS 대기열을 하나 이상의 이벤트 유형에 대한 알림 대상으로 설정하려면 `QueueConfiguration`을 추가합니다.

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>{{optional-id-string}}</Id>
    <Queue>{{sqs-queue-arn}}</Queue>
    <Event>{{event-type}}</Event>
    <Event>{{event-type}}</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**SNS 주제에 이벤트 메시지 게시**  
SNS 주제를 특정 이벤트 유형의 알림 대상으로 설정하려면 `TopicConfiguration`을 추가합니다.

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>{{optional-id-string}}</Id>
     <Topic>{{sns-topic-arn}}</Topic>
     <Event>{{event-type}}</Event>
     <Event>{{event-type}}</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**AWS Lambda 함수 호출 및 인수로 이벤트 메시지 제공**  
Lambda 함수를 특정 이벤트 유형에 대한 알림 대상으로 설정하려면 `CloudFunctionConfiguration`을 추가합니다.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>{{optional-id-string}}</Id>   
     <CloudFunction>{{cloud-function-arn}}</CloudFunction>        
     <Event>{{event-type}}</Event>      
     <Event>{{event-type}}</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**버킷에 구성된 모든 알림 제거**  
버킷에 구성된 모든 알림을 제거하려면 *알림* 하위 리소스에 빈 `<NotificationConfiguration/>` 요소를 저장합니다.

Amazon S3이 특정 유형의 이벤트를 감지하면 이벤트 정보와 함께 메시지를 게시합니다. 자세한 내용은 [이벤트 메시지 구조](notification-content-structure.md) 섹션을 참조하세요.

이벤트 알림 구성에 대한 자세한 내용은 다음 주제를 참조하십시오.
+ [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md).
+ [객체 키 이름 필터링을 사용하여 이벤트 알림 구성](notification-how-to-filtering.md)