

# 이벤트 알림 유형 및 대상
<a name="notification-how-to-event-types-and-destinations"></a>

Amazon S3는 알림을 게시할 수 있는 여러 이벤트 알림 유형 및 대상을 지원합니다. 이벤트 알림을 구성할 때 이벤트 유형 및 대상을 지정할 수 있습니다. 각 이벤트 알림에는 대상을 하나만 지정할 수 있습니다. Amazon S3 이벤트 알림은 각 알림 메시지에 대해 하나의 이벤트 항목을 전송합니다.

**Topics**
+ [지원되는 이벤트 대상](#supported-notification-destinations)
+ [SQS, SNS 및 Lambda에 지원되는 이벤트 유형](#supported-notification-event-types)
+ [Amazon EventBridge에 지원되는 이벤트 유형](#supported-notification-event-types-eventbridge)
+ [이벤트 주문 및 중복 이벤트](#event-ordering-and-duplicate-events)

## 지원되는 이벤트 대상
<a name="supported-notification-destinations"></a>

Amazon S3은 다음과 같은 대상으로 이벤트 알림 메시지를 보낼 수 있습니다.
+ Amazon Simple Notification Service(Amazon SNS) 주제
+ Amazon Simple Queue Service(Amazon SQS) 대기열
+ AWS Lambda
+ Amazon EventBridge

그러나 각 이벤트 알림에는 대상 유형을 하나만 지정할 수 있습니다.

**참고**  
Amazon SNS 주제 또는 Amazon SQS 대기열에 메시지를 게시할 수 있는 권한을 Amazon S3에 부여해야 합니다. 또한, 사용자를 대신하여 AWS Lambda 함수를 호출할 수 있는 권한을 Amazon S3에 부여해야 합니다. 이러한 권한을 부여하는 방법에 대한 지침은 [대상에 이벤트 알림 메시지를 게시할 권한 부여](grant-destinations-permissions-to-s3.md) 섹션을 참조하십시오.

### Amazon SNS 주제
<a name="amazon-sns-topic"></a>

Amazon SNS는 유연한 완전 관리형 푸시 메시징 서비스입니다. 이 서비스를 사용하여 모바일 디바이스 또는 분산 서비스로 메시지를 푸시할 수 있습니다. SNS를 사용해 메시지를 한 번 게시하고 한 번 이상 전송할 수 있습니다. 현재 표준 SNS는 S3 이벤트 알림 대상으로만 허용되지만 SNS FIFO는 허용되지 않습니다.

Amazon SNS는 구독 엔드포인트 또는 클라이언트로의 메시지 전송 및 전달을 조정하고 관리합니다. Amazon SNS 콘솔을 사용하여 알림을 수신할 Amazon SNS 주제를 만들 수 있습니다.

주제는 Amazon S3 버킷과 동일한 AWS 리전에 있어야 합니다. Amazon SNS 주제를 생성하는 방법에 대한 지침은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)와 [Amazon SNS FAQ](https://aws.amazon.com/sns/faqs/)를 참조하십시오.

이벤트 알림 대상으로 생성한 Amazon SNS 주제를 사용하려면 다음 항목이 필요합니다.
+ Amazon SNS 주제에 대한 Amazon 리소스 이름(ARN)
+ 유효한 Amazon SNS 주제 구독입니다. 이를 통해 Amazon SNS 주제에 메시지가 게시되면 해당 주제 구독자에게 알림이 전송됩니다.

### Amazon SQS 대기열
<a name="amazon-sqs-queue"></a>

Amazon SQS는 컴퓨터 간에 주고 받는 메시지를 저장하기 위한 안정적이고 확장성이 뛰어난 호스팅 대기열을 제공합니다. Amazon SQS를 사용하면 다른 서비스를 항상 가용 상태로 유지하지 않고도 모든 데이터 볼륨을 전송할 수 있습니다. Amazon SQS 콘솔을 사용하여 알림을 수신할 Amazon SQS 대기열을 만들 수 있습니다.

Amazon SQS 대기열은 Amazon S3 버킷과 동일한 AWS 리전에 있어야 합니다. Amazon SQS 대기열을 생성하는 방법에 대한 지침은 *Amazon Simple Queue Service 개발자 안내서*의 [Amazon Simple Queue Service란?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 및 [Amazon SQS 시작하기](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)를 참조하십시오.

이벤트 알림 대상으로 만든 Amazon SQS 대기열 사용하려면 다음 항목이 필요합니다.
+ Amazon SQS 대기열에 대한 Amazon 리소스 이름(ARN)

**참고**  
Amazon Simple Queue Service FIFO(선입선출) 대기열은 Amazon S3 이벤트 알림 대상으로 지원되지 않습니다. Amazon S3 이벤트에 대한 알림을 Amazon SQS FIFO 대기열로 보내려면 Amazon EventBridge를 사용하면 됩니다. 자세한 내용은 [Amazon EventBridge 사용 설정](enable-event-notifications-eventbridge.md) 섹션을 참조하세요.

### Lambda 함수
<a name="lambda-function"></a>

AWS Lambda을 사용하여 사용자 지정 로직으로 다른 AWS 서비스를 확장하거나 AWS 규모와 성능, 보안에 따라 작동하는 자체 백엔드를 만들 수 있습니다. Lambda를 사용하면 필요할 때만 실행되는 개별 이벤트 중심 애플리케이션을 생성할 수 있습니다. 또한 이를 통해 하루에 몇 번의 요청에서 초당 수천 개의 요청으로 이러한 애플리케이션을 자동으로 확장할 수 있습니다.

Lambda는 Amazon S3 버킷 이벤트에 대한 응답으로 사용자 지정 코드를 실행할 수 있습니다. 사용자 정의 코드를 Lambda에 업로드하여 Lambda 함수라는 것을 생성합니다. Amazon S3가 특정 유형의 이벤트를 감지하면 AWS Lambda에 이벤트를 게시하고 Lambda에서 함수를 호출할 수 있습니다. 이에 대한 응답으로 Lambda는 함수를 실행합니다. 예를 들어 이러한 애플리케이션에서 탐지할 수 있는 이벤트 유형 중 하나는 객체 생성 이벤트입니다.

AWS Lambda 콘솔에서 AWS 인프라를 사용하여 사용자 대신해 코드를 실행하는 Lambda 함수를 생성할 수 있습니다. Lambda 함수는 S3 버킷과 동일한 리전에 있어야 합니다. Lambda 함수를 이벤트 알림 대상으로 설정하려면 Lambda 함수의 이름이나 ARN도 있어야 합니다.

**주의**  
알림을 트리거하는 동일한 버킷에 알림이 기록되면 실행 루프가 발생할 수 있습니다. 예를 들어 객체가 업로드될 때마다 버킷이 Lambda 함수를 트리거하고 그 함수가 객체를 버킷에 업로드하는 경우, 함수는 간접적으로 자체 트리거됩니다 이렇게 되지 않도록 하려면 두 개의 버킷을 사용하거나, 수신 객체에 사용되는 접두사에만 적용되도록 트리거를 구성합니다.  
AWS Lambda에서 Amazon S3 알림을 사용하는 방법에 대한 자세한 내용과 예제는 *AWS Lambda 개발자 안내서*의 [Amazon S3에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html)을 참조하십시오.

### Amazon EventBridge
<a name="eventbridge-dest"></a>

Amazon EventBridge는 AWS 서비스로부터 이벤트를 수신하는 서버리스 이벤트 버스입니다. 이벤트를 일치시키고 AWS 서비스 또는 HTTP 엔드포인트와 같은 대상에 전달하도록 규칙을 설정할 수 있습니다. 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [EventBridge란?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)을 참조하세요.

다른 대상과 달리 버킷에 대해 EventBridge로 이벤트 전송을 사용 설정하거나 사용 중지할 수 있습니다. 전송을 사용 설정하면 모든 이벤트가 EventBridge로 전송됩니다. 또한 EventBridge 규칙을 사용하여 이벤트를 추가 대상으로 라우팅할 수 있습니다.

## SQS, SNS 및 Lambda에 지원되는 이벤트 유형
<a name="supported-notification-event-types"></a>

Amazon S3은 다음과 같은 유형의 이벤트를 게시할 수 있습니다. 알림 구성에 이러한 이벤트 유형을 지정합니다.


|  이벤트 유형 |  설명  | 
| --- | --- | 
| `s3:TestEvent` | 알림이 사용 설정되면 Amazon S3는 테스트 알림을 게시합니다. 이는 주제가 존재하고 버킷 소유자에게 지정된 주제를 게시할 권한이 있는지 확인하기 위한 것입니다.<br />알림 사용 설정이 실패하면 테스트 알림이 수신되지 않습니다. | 
| `s3:ObjectCreated:*`<br />`s3:ObjectCreated:Put`<br />`s3:ObjectCreated:Post`<br />`s3:ObjectCreated:Copy`<br />`s3:ObjectCreated:CompleteMultipartUpload` | `PUT`, `POST` 및 `COPY`와 같은 Amazon S3 API 작업은 객체를 생성할 수 있습니다. 이 이벤트 유형을 사용하면 특정 API 작업을 사용하여 객체가 생성될 때 알림을 사용 설정할 수 있습니다. 또는 `s3:ObjectCreated:*` 이벤트 유형을 사용하여 객체를 생성하는 데 사용된 API와 관계없이 알림을 요청할 수 있습니다.<br />`s3:ObjectCreated:CompleteMultipartUpload`에는 복사 작업을 위해 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)를 사용하여 생성된 객체가 포함되어 있습니다. | 
| `s3:ObjectRemoved:*`<br />`s3:ObjectRemoved:Delete`<br />`s3:ObjectRemoved:DeleteMarkerCreated` | `ObjectRemoved` 이벤트 유형을 사용하여 객체나 객체 그룹이 버킷에서 삭제될 경우 알림을 활성화할 수 있습니다.<br />`s3:ObjectRemoved:Delete` 이벤트 유형을 사용하여 객체가 삭제되거나 버전이 지정된 객체가 영구적으로 삭제될 경우 알림을 요청할 수 있습니다. 또한 `s3:ObjectRemoved:DeleteMarkerCreated`를 사용하여 버전이 지정된 객체에 대해 삭제 마커가 생성될 경우 알림을 요청할 수 있습니다. 버전이 지정된 객체를 삭제하는 방법에 대한 지침은 [버전 관리가 사용 설정된 버킷에서 객체 버전 삭제](DeletingObjectVersions.md) 섹션을 참조하십시오. `s3:ObjectRemoved:*` 와일드카드를 사용하여 객체가 삭제되는 모든 경우에 알림을 요청할 수도 있습니다.<br />이러한 이벤트 알림은 수명 주기 구성 또는 실패한 작업의 자동 삭제에 대해 경고하지 않습니다. | 
| `s3:ObjectRestore:*`<br />`s3:ObjectRestore:Post`<br />`s3:ObjectRestore:Completed`<br />`s3:ObjectRestore:Delete` | `ObjectRestore` 이벤트 유형을 사용하여 S3 Glacier Flexible Retrieval 스토리지 클래스, S3 Glacier Deep Archive 스토리지 클래스, S3 Intelligent Tiering Archive Access 계층, S3 Intelligent-Tiering Deep Archive Access 계층에서 객체를 복원할 때 이벤트 초기화 및 완료 알림을 받을 수 있습니다. 객체의 복원된 복사본이 만료될 때 알림을 받을 수도 있습니다.<br />`s3:ObjectRestore:Post` 이벤트 유형은 객체 복원 시작을 알립니다. `s3:ObjectRestore:Completed` 이벤트 유형은 복원 완료를 알립니다. `s3:ObjectRestore:Delete` 이벤트 유형은 복원된 객체의 임시 복사본이 만료될 때 알려줍니다. | 
| s3:ReducedRedundancyLostObject | Amazon S3가 RRS 스토리지 클래스의 객체가 손실되었음을 감지하면 이 알림 이벤트를 수신합니다. | 
| `s3:Replication:*`<br />`s3:Replication:OperationFailedReplication`<br />`s3:Replication:OperationMissedThreshold`<br />`s3:Replication:OperationReplicatedAfterThreshold`<br />`s3:Replication:OperationNotTracked` | `Replication` 이벤트 유형을 사용하여 S3 복제 지표 또는 S3 Replication Time Control(S3 RTC)이 활성화된 복제 구성에 대해 알림을 받을 수 있습니다. 보류 중인 바이트, 보류 중인 작업, 복제 대기 시간을 추적하여 복제 이벤트의 진행률을 분 단위로 모니터링할 수 있습니다. 복제 지표에 대한 자세한 내용은 [지표, 이벤트 알림 및 상태를 통한 복제 모니터링](replication-metrics.md) 섹션을 참조하세요.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html) | 
| `s3:LifecycleExpiration:*`<br />`s3:LifecycleExpiration:Delete`<br />`s3:LifecycleExpiration:DeleteMarkerCreated` | `LifecycleExpiration` 이벤트 유형을 사용하면 Amazon S3가 S3 수명 주기 구성에 따라 객체를 삭제할 때 알림을 받을 수 있습니다.<br />`s3:LifecycleExpiration:Delete` 이벤트 유형은 버전이 지정되지 않은 버킷의 객체가 삭제될 때 알려줍니다. S3 수명 주기 구성에 의해 객체 버전이 영구적으로 삭제될 때도 알려줍니다. `s3:LifecycleExpiration:DeleteMarkerCreated` 이벤트 유형은 버전이 지정된 버킷에 있는 객체의 현재 버전이 삭제되는 경우 S3 수명 주기가 삭제 마커를 생성할 때 알려줍니다. | 
| s3:LifecycleTransition | S3 수명 주기 구성에 의해 객체가 다른 Amazon S3 스토리지 클래스로 전환될 때 이 알림 이벤트를 수신합니다. | 
| s3:IntelligentTiering | S3 Intelligent-Tiering 스토리지 클래스 내의 객체가 Archive Access 계층 또는 Deep Archive Access 계층으로 이동할 때 이 알림 이벤트를 수신합니다. | 
| `s3:ObjectTagging:*`<br />`s3:ObjectTagging:Put`<br />`s3:ObjectTagging:Delete` | `ObjectTagging` 이벤트 유형을 사용하면 객체 태그가 객체에서 추가 또는 삭제될 때 알림을 활성화할 수 있습니다.<br />`s3:ObjectTagging:Put` 이벤트 유형은 태그가 객체에 PUT되거나 기존 태그가 업데이트될 때 알려줍니다. `s3:ObjectTagging:Delete` 이벤트 유형은 객체에서 태그가 제거될 때 알려줍니다. | 
| s3:ObjectAcl:Put | ACL이 객체에 PUT되거나 기존 ACL이 변경될 때 이 알림 이벤트를 수신합니다. 요청으로 인해 객체의 ACL이 변경되지 않으면 이벤트가 생성되지 않습니다. | 

## Amazon EventBridge에 지원되는 이벤트 유형
<a name="supported-notification-event-types-eventbridge"></a>

Amazon S3가 Amazon EventBridge로 전송할 이벤트 유형 목록은 [EventBridge 사용](EventBridge.md) 섹션을 참조하십시오.

## 이벤트 주문 및 중복 이벤트
<a name="event-ordering-and-duplicate-events"></a>

Amazon S3 이벤트 알림은 알림을 한 번 이상 전송하도록 설계되었지만 이벤트가 발생한 순서대로 도착하지 않을 수 있습니다. 드문 경우이긴 하지만 Amazon S3의 재시도 메커니즘으로 인해 동일한 객체 이벤트에 대해 중복된 S3 이벤트 알림이 발생할 수 있습니다. 중복 또는 비순차적 이벤트의 처리에 대한 자세한 내용은 *AWS 스토리지 블로그의* [Amazon S3 이벤트 알림을 사용하여 이벤트 주문 및 중복 이벤트 관리](https://aws.amazon.com/blogs/storage/manage-event-ordering-and-duplicate-events-with-amazon-s3-event-notifications/)를 참조하세요.