

# Amazon S3 이벤트 알림
<a name="EventNotifications"></a>

Amazon S3 이벤트 알림 기능을 사용하면 S3 버킷에서 특정 이벤트가 발생할 때 알림을 받을 수 있습니다. 알림을 사용 설정하려면 Amazon S3에서 게시하려는 이벤트를 식별하는 알림 구성을 추가합니다. 또한 해당 알림 구성이 Amazon S3에서 알림을 보낼 대상도 식별하는지 확인합니다. 버킷에 연결된 *알림* 하위 리소스에 이 구성을 저장합니다. 자세한 내용은 [범용 버킷 구성 옵션](UsingBucket.md#bucket-config-options-intro) 섹션을 참조하세요. Amazon S3는 이 하위 리소스를 관리하기 위한 API를 제공합니다.

**중요**  
Amazon S3 이벤트 알림은 한 번 이상 전송되도록 설계되었습니다. 이벤트 알림은 일반적으로 몇 초 안에 전송되지만 1분 이상 소요되는 경우도 있습니다.

## Amazon S3 이벤트 알림 개요
<a name="notification-how-to-overview"></a>

현재 Amazon S3은 다음 이벤트에 대한 알림을 게시할 수 있습니다.
+ 새 객체 생성 이벤트
+ 객체 제거 이벤트
+ 객체 이벤트 복원
+ RRS(Reduced Redundancy Storage) 객체 손실 이벤트
+ 복제 이벤트
+ S3 수명 주기 만료 이벤트
+ S3 수명 주기 전환 이벤트
+ S3 Intelligent-Tiering 자동 아카이브 이벤트
+ 객체 태깅 이벤트
+ 객체 ACL PUT 이벤트

지원되는 모든 이벤트 유형에 대한 자세한 설명은 [SQS, SNS 및 Lambda에 지원되는 이벤트 유형](notification-how-to-event-types-and-destinations.md#supported-notification-event-types) 섹션을 참조하십시오.

Amazon S3은 다음과 같은 대상으로 이벤트 알림 메시지를 보낼 수 있습니다. 알림 구성에서 이 대상의 Amazon 리소스 이름(ARN) 값을 지정합니다.
+ Amazon Simple Notification Service(Amazon SNS) 주제
+ Amazon Simple Queue Service(Amazon SQS) 대기열
+ AWS Lambda 함수
+ Amazon EventBridge

자세한 내용은 [지원되는 이벤트 대상](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) 섹션을 참조하세요.

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

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

버킷별로 생성할 수 있는 이벤트 알림 구성 수에 대한 자세한 내용은 *AWS 일반 참조*의 [Amazon S3 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3)을 참조하십시오.

이벤트 알림에 대한 자세한 내용은 다음 섹션을 참조하십시오.

**Topics**
+ [

## Amazon S3 이벤트 알림 개요
](#notification-how-to-overview)
+ [

# 이벤트 알림 유형 및 대상
](notification-how-to-event-types-and-destinations.md)
+ [

# Amazon SQS, Amazon SNS 및 Lambda 사용
](how-to-enable-disable-notification-intro.md)
+ [

# EventBridge 사용
](EventBridge.md)

# 이벤트 알림 유형 및 대상
<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는 테스트 알림을 게시합니다. 이는 주제가 존재하고 버킷 소유자에게 지정된 주제를 게시할 권한이 있는지 확인하기 위한 것입니다. 알림 사용 설정이 실패하면 테스트 알림이 수신되지 않습니다.  | 
|  `s3:ObjectCreated:*` `s3:ObjectCreated:Put` `s3:ObjectCreated:Post` `s3:ObjectCreated:Copy` `s3:ObjectCreated:CompleteMultipartUpload`  |  `PUT`, `POST` 및 `COPY`와 같은 Amazon S3 API 작업은 객체를 생성할 수 있습니다. 이 이벤트 유형을 사용하면 특정 API 작업을 사용하여 객체가 생성될 때 알림을 사용 설정할 수 있습니다. 또는 `s3:ObjectCreated:*` 이벤트 유형을 사용하여 객체를 생성하는 데 사용된 API와 관계없이 알림을 요청할 수 있습니다. `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:*` `s3:ObjectRemoved:Delete` `s3:ObjectRemoved:DeleteMarkerCreated`  |  `ObjectRemoved` 이벤트 유형을 사용하여 객체나 객체 그룹이 버킷에서 삭제될 경우 알림을 활성화할 수 있습니다. `s3:ObjectRemoved:Delete` 이벤트 유형을 사용하여 객체가 삭제되거나 버전이 지정된 객체가 영구적으로 삭제될 경우 알림을 요청할 수 있습니다. 또한 `s3:ObjectRemoved:DeleteMarkerCreated`를 사용하여 버전이 지정된 객체에 대해 삭제 마커가 생성될 경우 알림을 요청할 수 있습니다. 버전이 지정된 객체를 삭제하는 방법에 대한 지침은 [버전 관리가 사용 설정된 버킷에서 객체 버전 삭제](DeletingObjectVersions.md) 섹션을 참조하십시오. `s3:ObjectRemoved:*` 와일드카드를 사용하여 객체가 삭제되는 모든 경우에 알림을 요청할 수도 있습니다. 이러한 이벤트 알림은 수명 주기 구성 또는 실패한 작업의 자동 삭제에 대해 경고하지 않습니다.  | 
|  `s3:ObjectRestore:*` `s3:ObjectRestore:Post` `s3:ObjectRestore:Completed` `s3:ObjectRestore:Delete`  |  `ObjectRestore` 이벤트 유형을 사용하여 S3 Glacier Flexible Retrieval 스토리지 클래스, S3 Glacier Deep Archive 스토리지 클래스, S3 Intelligent Tiering Archive Access 계층, S3 Intelligent-Tiering Deep Archive Access 계층에서 객체를 복원할 때 이벤트 초기화 및 완료 알림을 받을 수 있습니다. 객체의 복원된 복사본이 만료될 때 알림을 받을 수도 있습니다. `s3:ObjectRestore:Post` 이벤트 유형은 객체 복원 시작을 알립니다. `s3:ObjectRestore:Completed` 이벤트 유형은 복원 완료를 알립니다. `s3:ObjectRestore:Delete` 이벤트 유형은 복원된 객체의 임시 복사본이 만료될 때 알려줍니다.  | 
| s3:ReducedRedundancyLostObject | Amazon S3가 RRS 스토리지 클래스의 객체가 손실되었음을 감지하면 이 알림 이벤트를 수신합니다. | 
|  `s3:Replication:*` `s3:Replication:OperationFailedReplication` `s3:Replication:OperationMissedThreshold` `s3:Replication:OperationReplicatedAfterThreshold` `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:*` `s3:LifecycleExpiration:Delete` `s3:LifecycleExpiration:DeleteMarkerCreated`  |  `LifecycleExpiration` 이벤트 유형을 사용하면 Amazon S3가 S3 수명 주기 구성에 따라 객체를 삭제할 때 알림을 받을 수 있습니다. `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:*` `s3:ObjectTagging:Put` `s3:ObjectTagging:Delete`  |  `ObjectTagging` 이벤트 유형을 사용하면 객체 태그가 객체에서 추가 또는 삭제될 때 알림을 활성화할 수 있습니다. `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/)를 참조하세요.

# 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="grant-destinations-permissions-to-s3"></a>

관련 API를 호출하여 SNS 주제, SQS 대기열 또는 Lambda 함수에 메시지를 게시할 수 있는 권한을 Amazon S3 보안 주체에 부여해야 합니다. 이는 Amazon S3가 이벤트 알림 메시지를 대상에 게시할 수 있도록 하기 위한 것입니다.

대상에 이벤트 알림 메시지를 게시하는 문제를 해결하려면 [Amazon Simple Notification Service 주제에 Amazon S3 이벤트 알림을 게시할 때의 문제 해결](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications)을 참조하십시오.

**Topics**
+ [

## AWS Lambda 함수 호출 권한 부여
](#grant-lambda-invoke-permission-to-s3)
+ [

## SNS 주제 또는 SQS 대기열로 메시지를 게시할 권한 부여
](#grant-sns-sqs-permission-for-s3)

## AWS Lambda 함수 호출 권한 부여
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3는 Lambda 함수를 호출하고 이벤트 메시지를 인수로 제공하여 AWS Lambda에 이벤트 메시지를 게시합니다.

Amazon S3 콘솔을 사용하여 Amazon S3 버킷에서 Lambda 함수에 대한 이벤트 알림을 구성할 때 콘솔은 Lambda 함수에 대해 필요한 권한을 설정합니다. 이는 Amazon S3가 버킷에서 함수를 호출할 수 있는 권한을 갖도록 하기 위한 것입니다. 자세한 내용은 [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md) 섹션을 참조하세요.

또한, AWS Lambda에서 Lambda 함수를 호출할 수 있는 권한을 Amazon S3에 부여할 수도 있습니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [자습서: Amazon S3에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)을 참조하십시오.

## SNS 주제 또는 SQS 대기열로 메시지를 게시할 권한 부여
<a name="grant-sns-sqs-permission-for-s3"></a>

Amazon S3에 SNS 주제 또는 SQS 대기열에 메시지를 게시할 수 있는 권한을 부여하려면 대상 SNS 주제 또는 SQS 대기열에 AWS Identity and Access Management(IAM) 정책을 연결합니다.

SNS 주제 또는 SQS 대기열에 정책을 연결하는 방법에 대한 예제는 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 단원을 참조하십시오. 권한에 대한 자세한 내용은 다음 섹션을 참조하십시오.
+ *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 액세스 제어 사례](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html)
+ *Amazon Simple Queue Service 개발자 안내서*의 [Amazon SQS의 Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html)

### 대상 SNS 주제에 대한 IAM 정책
<a name="sns-topic-policy"></a>

다음은 대상 SNS 주제에 연결하는 AWS Identity and Access Management(IAM) 정책의 예제입니다. 이 정책을 사용하여 이벤트 알림에 대한 대상 Amazon SNS 주제를 설정하는 방법에 대한 지침은 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 섹션을 참조하십시오.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### 대상 SQS 대기열에 대한 IAM 정책
<a name="sqs-queue-policy"></a>

다음은 대상 SQS 대기열에 연결하는 IAM 정책의 예제입니다. 이 정책을 사용하여 이벤트 알림에 대한 대상 Amazon SQS 대기열을 설정하는 방법에 대한 지침은 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 섹션을 참조하십시오.

이 정책을 사용하려면 Amazon SQS 대기열 ARN, 버킷 이름 및 버킷 소유자의 AWS 계정 ID를 업데이트해야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Amazon SNS 및 Amazon SQS IAM 정책 모두 `StringLike` 조건 대신, `ArnLike` 조건을 정책에 지정할 수 있습니다.

`ArnLike`를 사용하는 경우 ARN의 파티션, 서비스, 계정 ID, 리소스 유형, 부분 리소스 ID가 요청 컨텍스트의 ARN과 정확히 일치해야 합니다. 리전 및 리소스 경로만 부분 일치가 허용됩니다.

 `ArnLike` 대신 `StringLike`를 사용하는 경우 매칭 시 ARN 구조를 무시하고 와일드카드 문자로 대체된 부분에 관계없이 부분 일치를 허용합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 참조하십시오.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS 키 정책
<a name="key-policy-sns-sqs"></a>

SQS 대기열 또는 SNS 주제가 AWS Key Management Service(AWS KMS) 고객 관리형 키로 암호화되는 경우 Amazon S3 서비스 보안 주체에게 암호화된 주제 또는 대기열을 사용할 수 있는 권한을 부여해야 합니다. Amazon S3 서비스 보안 주체에게 권한을 부여하려면 고객 관리형 키의 주요 정책에 다음 설명을 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

AWS KMS 키 정책에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [AWS KMS에서 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하십시오.

Amazon SQS 및 Amazon SNS에 대해 AWS KMS의 서버 측 암호화를 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
+ *Amazon Simple Notification Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)
+ *Amazon Simple Queue Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)
+ *AWS 컴퓨팅 블로그*의 [AWS KMS를 활용하여 Amazon SNS에 게시된 메시지 암호화](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/)

# Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성
<a name="enable-event-notifications"></a>

특정 Amazon S3 범용 버킷 이벤트를 사용 설정해 이벤트가 발생할 때마다 대상에 알림을 보낼 수 있습니다. 이 섹션에서는 Amazon S3 콘솔로 이벤트 알림을 사용 설정하는 방법을 살펴봅니다. AWS SDK 및 Amazon S3 REST API를 통해 이벤트 알림을 사용하는 방법에 대한 자세한 내용은 [프로그래밍 방식으로 이벤트 알림 구성](how-to-enable-disable-notification-intro.md#event-notification-configuration) 섹션을 참조하십시오.

**사전 조건**: 버킷에 대한 이벤트 알림을 사용 설정하려면 먼저 대상 유형 중 하나를 설정한 후 권한을 구성해야 합니다. 자세한 내용은 [지원되는 이벤트 대상](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) 및 [대상에 이벤트 알림 메시지를 게시할 권한 부여](grant-destinations-permissions-to-s3.md)(을)를 참조하세요.

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

**Topics**
+ [

## Amazon S3 콘솔로 Amazon SNS, Amazon SQS 또는 Lambda 알림 사용 설정
](#enable-event-notifications-sns-sqs-lam)

## Amazon S3 콘솔로 Amazon SNS, Amazon SQS 또는 Lambda 알림 사용 설정
<a name="enable-event-notifications-sns-sqs-lam"></a>

**S3 버킷에 대한 이벤트 알림 사용 설정 및 구성**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. 버킷 목록에서 이벤트를 활성화하려는 버킷의 이름을 선택합니다.

1. [**속성(Properties)**]을 선택합니다.

1. **이벤트 알림(Event Notifications)** 섹션으로 이동하여 **이벤트 알림 생성(Create event notification)**을 선택합니다.

1. **일반 구성(General configuration)** 섹션에서 이벤트 알림을 설명하는 이벤트 이름을 지정합니다. 선택적으로 접두사와 접미사를 지정하여 지정된 문자로 끝나는 키가 있는 객체로 알림을 제한할 수도 있습니다.

   1. **이벤트 이름(Event name)**에 대한 설명을 입력합니다.

      이름을 입력하지 않으면 전역 고유 식별자(GUID)가 생성되어 이름에 사용됩니다.

   1. (선택 사항) 접두사를 기준으로 이벤트 알림을 필터링하려면 **접두사(Prefix)**를 입력합니다.

      예를 들어 특정 폴더에 파일이 추가될 때만 알림을 받도록 접두사 필터를 설정할 수 있습니다(예: `images/`).

   1. (선택 사항) 접미사를 기준으로 이벤트 알림을 필터링하려면 **접미사(Suffix)**를 입력합니다.

      자세한 내용은 [객체 키 이름 필터링을 사용하여 이벤트 알림 구성](notification-how-to-filtering.md) 섹션을 참조하세요.

1. **이벤트 유형(Event types)** 섹션에서 알림을 받을 이벤트 유형을 하나 이상 선택합니다.

   다양한 이벤트 유형 목록은 [SQS, SNS 및 Lambda에 지원되는 이벤트 유형](notification-how-to-event-types-and-destinations.md#supported-notification-event-types) 섹션을 참조하십시오.

1. **대상(Destination)** 섹션에서 이벤트 알림 대상을 선택합니다.
**참고**  
이벤트 알림을 게시하려면 관련 API를 호출하는 데 필요한 권한을 Amazon S3 보안 주체에 부여해야 합니다. 이는 Lambda 함수, SNS 주제 또는 SQS 대기열에 알림을 게시할 수 있도록 하기 위한 것입니다.

   1. **Lambda 함수**, **SNS 주제** 또는 **SQS 대기열**과 같은 대상 유형을 선택합니다.

   1. 대상 유형을 선택한 후 목록에서 함수, 주제 또는 대기열을 선택합니다.

   1. 또는 Amazon 리소스 이름(ARN)을 지정하려는 경우 [**ARN 입력(Enter ARN)**]을 선택하고 ARN을 입력합니다.

   자세한 내용은 [지원되는 이벤트 대상](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) 섹션을 참조하세요.

1. [**변경 사항 저장(Save changes)**]을 선택하면 Amazon S3가 이벤트 알림 대상으로 테스트 메시지를 보냅니다.

## 프로그래밍 방식으로 이벤트 알림 구성
<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)

# 연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)
<a name="ways-to-add-notification-config-to-bucket"></a>

Amazon Simple Notification Service(Amazon SNS) 또는 Amazon Simple Queue Service(Amazon SQS)를 통해 Amazon S3 알림을 받을 수 있습니다. 이 연습에서는 Amazon SNS 주제 및 Amazon SQS 대기열을 사용하여 버킷에 알림 구성을 추가합니다.

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

**Topics**
+ [

## 연습 요약
](#notification-walkthrough-summary)
+ [

## 1단계: Amazon SQS 대기열 생성
](#step1-create-sqs-queue-for-notification)
+ [

## 2단계: Amazon SNS 주제 생성
](#step1-create-sns-topic-for-notification)
+ [

## 3단계: 버킷에 알림 구성 추가
](#step2-enable-notification)
+ [

## 4단계: 설정 테스트
](#notification-walkthrough-1-test)

## 연습 요약
<a name="notification-walkthrough-summary"></a>

이 연습은 다음을 수행하는 데 도움이 됩니다.
+ Amazon SQS 대기열에 `s3:ObjectCreated:*` 유형의 이벤트를 게시합니다.
+ Amazon SNS 주제에 `s3:ReducedRedundancyLostObject` 유형의 이벤트를 게시합니다.

알림 구성에 대한 자세한 내용은 [Amazon SQS, Amazon SNS 및 Lambda 사용](how-to-enable-disable-notification-intro.md) 섹션을 참조하세요.

콘솔을 사용하면 코드를 생성하지 않고도 이러한 모든 단계를 수행할 수 있습니다. 또한, AWS SDK for Java 및 .NET을 사용하는 코드 예제가 제공되므로 프로그래밍 방식으로 알림 구성을 추가할 수 있습니다.

이 절차에는 다음 단계가 포함됩니다.

1. Amazon SQS 대기열 생성

   Amazon SQS 콘솔을 사용하여 SQS 대기열을 생성합니다. 프로그래밍 방식으로 Amazon S3이 대기열로 전송하는 모든 메시지에 액세스할 수 있습니다. 그러나 이 시연에서는 콘솔에서 알림 메시지를 확인합니다.

   대기열에 액세스 정책을 연결하여 메시지를 게시할 수 있는 권한을 Amazon S3에 부여합니다.

1. Amazon SNS 주제 생성

   Amazon SNS 콘솔을 사용하여 SNS 주제를 생성하고 주제를 구독합니다. 그렇게 하면 게시된 모든 이벤트가 사용자에게 전송됩니다. 통신 프로토콜로 이메일을 지정합니다. 주제를 생성하면 Amazon SNS에서 이메일을 전송합니다. 이메일에 포함된 링크를 사용하여 주제 구독을 확인합니다.

   주제에 액세스 정책을 연결하여 메시지를 게시할 수 있는 권한을 Amazon S3에 부여합니다.

1. 버킷에 알림 구성을 추가합니다.

## 1단계: Amazon SQS 대기열 생성
<a name="step1-create-sqs-queue-for-notification"></a>

단계에 따라 Amazon Simple Queue Service(Amazon SQS) 대기열을 생성하고 구독합니다.

1. Amazon SQS 콘솔을 사용하여 대기열을 생성합니다. 자세한 내용은 *Amazon Simple Queue Service 개발자 안내서*의 [Amazon SQS 시작하기](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)를 참조하십시오.

1. 대기열에 연결된 액세스 정책을 다음 정책으로 바꿉니다.

   1. Amazon SQS 콘솔의 **대기열** 목록에서 대기열 이름을 선택합니다.

   1. **액세스 정책** 탭에서 **편집**을 선택합니다.

   1. 대기열에 연결된 액세스 정책을 바꿉니다. 여기에 Amazon SQS ARN, 원본 버킷 이름 및 버킷 소유자 계정 ID를 제공합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. **저장**을 선택합니다.

1. (선택 사항) AWS Key Management Service(AWS KMS)를 사용하여 Amazon SQS 대기열 또는 Amazon SNS 주제에 서버 측 암호화가 사용되어 있는 경우 연결된 대칭 암호화 고객 관리형 키에 다음 정책을 추가합니다.

   Amazon SQS 또는 Amazon SNS용 AWS 관리형 키는 수정할 수 없으므로 고객 관리형 키에 정책을 추가해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   AWS KMS에서 Amazon SQS 및 Amazon SNS용 SSE를 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
   + *Amazon Simple Notification Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)
   + *Amazon Simple Queue Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

1. 대기열 ARN을 기록합니다.

   생성한 SQS 대기열은 AWS 계정에 있는 또 다른 리소스입니다. 고유한 Amazon 리소스 이름(ARN)을 가집니다. 다음 단계에서 이 ARN을 사용합니다. ARN의 형식은 다음과 같습니다.

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## 2단계: Amazon SNS 주제 생성
<a name="step1-create-sns-topic-for-notification"></a>

다음 단계에 따라 Amazon SNS 주제를 생성하고 구독합니다.

1. Amazon SNS 콘솔을 사용하여 주제를 생성합니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 주제 생성](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)을 참조하십시오.

1. 주제를 구독합니다. 이 실습에서는 통신 프로토콜로 전자 메일을 사용합니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 주제 구독](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)을 참조하십시오.

   주제 구독을 확인하도록 요청하는 전자 메일이 전송되면 구독을 확인합니다.

1. 주제에 연결된 액세스 정책을 다음 정책으로 교체합니다. 여기에 SNS 주제 ARN, 버킷 이름 및 버킷 소유자의 계정 ID를 제공합니다.

1. 주제 ARN을 기록합니다.

   생성된 SNS 주제는 AWS 계정의 리소스이며 따라서 고유한 ARN을 가집니다. 다음 단계에서 이 ARN을 사용합니다. ARN의 형식은 다음과 같습니다.

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## 3단계: 버킷에 알림 구성 추가
<a name="step2-enable-notification"></a>

Amazon S3 콘솔 또는 AWS SDK를 사용한 프로그래밍 방식으로 버킷 알림을 사용할 수 있습니다. 다음 옵션 중 하나를 선택하여 버킷에 알림을 구성합니다. 이 섹션에서는 AWS SDK for Java 및 .NET을 사용한 코드 예제를 제공합니다.

### 옵션 A: 콘솔을 사용하여 버킷에 대한 알림 사용 설정
<a name="step2-enable-notification-using-console"></a>

Amazon S3 콘솔을 사용하여 다음 작업을 Amazon S3에 요청하는 알림 구성을 추가합니다.
+ Amazon SQS 대기열에 **모든 객체 생성 이벤트** 유형의 이벤트를 게시합니다.
+ Amazon SNS 주제에 **RRS 객체 손실** 유형의 이벤트를 게시합니다.

알림 구성을 저장하면 Amazon S3이 테스트 메시지를 게시하고 이메일을 통해 이 테스트 메시지가 전송됩니다.

지침은 [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md) 단원을 참조하십시오.

### 옵션 B: AWS SDK를 사용하여 버킷에 대한 알림 사용
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

다음 C\$1 코드 예제는 버킷에 알림 구성을 추가하는 전체 코드를 제공합니다. 이 코드를 업데이트하여 버킷 이름과 SNS 주제 ARN을 제공해야 합니다. 코드 예제 설정 및 실행에 대한 자세한 내용은 *AWS SDK for .NET 개발자 안내서*의 [AWS SDK for .NET 시작하기](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)를 참조하세요.

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

------
#### [ Java ]

AWS SDK for Java를 사용하여 버킷 알림을 구성하는 방법의 예는 *Amazon S3 API 참조*의 [Process S3 event notifications](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html)를 참조하세요.

------

## 4단계: 설정 테스트
<a name="notification-walkthrough-1-test"></a>

이제 버킷에 객체를 업로드한 후 Amazon SQS 콘솔에서 이벤트 알림을 확인하여 설정을 테스트할 수 있습니다. 자세한 내용은 *Amazon Simple Queue Service 개발자 안내서의 '시작하기' 섹션*에서 [메시지 수신](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html)을 참조하십시오.

# 객체 키 이름 필터링을 사용하여 이벤트 알림 구성
<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>
```

# 이벤트 메시지 구조
<a name="notification-content-structure"></a>

이벤트를 게시하기 위해 Amazon S3이 전송하는 알림 메시지는 JSON 형식입니다.

이벤트 알림 구성에 대한 일반 개요와 지침은 [Amazon S3 이벤트 알림](EventNotifications.md) 섹션을 참조하십시오.

이 예제는 이벤트 알림 JSON 구조의 *버전 2.1*을 보여줍니다. Amazon S3는 이 이벤트 구조의 *버전 2.1*, *2.2* 및 *2.3*을 사용합니다. Amazon S3는 리전 간 복제 이벤트 알림에 버전 2.2를 사용합니다. S3 수명 주기, S3 Intelligent-Tiering, 객체 ACL, 객체 태깅 및 객체 복원 삭제 이벤트에는 버전 2.3을 사용합니다. 이러한 버전에는 작업과 관련된 추가 정보가 포함되어 있습니다. 버전 2.2 및 2.3은 Amazon S3가 현재 다른 모든 이벤트 알림 유형에 사용하는 버전 2.1과 호환됩니다.

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

이벤트 메시지 구조에 대한 다음 사항에 유의하십시오.
+ `eventVersion` 키 값에는 `major`.`minor` 형식의 메이저 및 마이너 버전이 포함됩니다.

  Amazon S3가 이전 버전과 호환되지 않는 이벤트 구조를 변경하는 경우 주 버전이 증가합니다. 여기에는 이미 존재하는 JSON 필드를 제거하거나 필드의 콘텐츠가 표시되는 방식(예: 날짜 형식)을 변경하는 것이 포함됩니다.

  Amazon S3이 이벤트 구조에 새 필드를 추가하는 경우 마이너 버전이 증가합니다. 이는 일부 또는 모든 기존 이벤트에 새 정보가 제공되는 경우 발생할 수 있습니다. 이는 새로 도입된 이벤트 유형에 대해서만 새 정보가 제공되는 경우에도 발생할 수 있습니다. 이벤트 구조의 새로운 마이너 버전과 호환성을 유지하려면 애플리케이션에서 새 필드를 무시하는 것이 좋습니다.

  새로운 이벤트 유형이 도입되었지만 그와 달리 이벤트 구조는 수정되지 않는 경우 이벤트 버전이 변경되지 않습니다.

  애플리케이션이 이벤트 구조의 구문을 올바로 분석할 수 있도록 메이저 버전 번호에 대해 같은 값인지 비교하는 것이 좋습니다. 애플리케이션이 예상하는 필드가 반드시 존재할 수 있도록 마이너 버전에 대해 크거나 같은 값인지 비교하는 것이 좋습니다.
+ `eventName` 키 값은 [이벤트 알림 유형](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html) 목록을 참조하지만 `s3:` 접두사는 포함하지 않습니다.
+ `userIdentity` 키 값은 이벤트를 발생시킨 AWS Identity and Access Management(IAM) 리소스(사용자, 역할, 그룹 등)의 고유 ID를 참조합니다. 각 IAM 식별 접두사(예: AIDA, AROA, AGPA)의 정의 및 고유 식별자를 얻는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [고유 식별자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids) 섹션을 참조하세요.
+ `responseElements`의 도움을 받아 요청을 추적하려는 경우 AWS Support 키 값을 유용하게 사용할 수 있습니다. `x-amz-request-id` 및 `x-amz-id-2` 모두 Amazon S3이 개별 요청을 추적하는 데 도움이 됩니다. 이러한 값은 이벤트를 시작한 요청에 대한 응답에서 Amazon S3가 반환하는 값과 동일합니다. 따라서 이러한 값을 사용하여 이벤트를 요청과 일치시킬 수 있습니다.
+ `s3` 키 값은 이벤트와 연관된 버킷 및 객체에 대한 정보를 제공합니다. 객체의 키 이름 값은 URL로 인코딩되어 있습니다. 예를 들어, `red flower.jpg`는 `red+flower.jpg`가 됩니다. (Amazon S3는 응답의 콘텐츠 유형으로 "`application/x-www-form-urlencoded`"를 반환합니다.)

  `ownerIdentity` 키 값은 버킷 소유자의 Amazon 소매(Amazon.com) 고객 ID에 해당합니다. 이 ID 값은 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해서만 유지됩니다.
+ `sequencer` 키 값은 이벤트 시퀀스를 정의하는 방법을 제공합니다. 이벤트 알림은 이벤트가 발생한 순서대로 도착하지 않을 수 있습니다. 단, 객체를 생성(`PUT` 요청)하고 객체를 삭제하는 이벤트의 알림에는 `sequencer`가 포함됩니다. 이 값을 사용하여 주어진 객체 키에 대한 이벤트 순서를 결정할 수 있습니다.

  `sequencer` 문자열을 동일한 객체 키의 두 가지 이벤트 알림과 비교할 경우 `sequencer` 16진수 값이 더 큰 이벤트 알림이 나중에 발생한 이벤트입니다. 이벤트 알림을 사용하여 별도의 데이터베이스 또는 Amazon S3 객체의 인덱스를 관리할 경우 각 이벤트 알림을 처리할 때 `sequencer` 값을 비교하고 저장하는 것이 좋습니다.

  다음 사항에 유의하세요.
  + `sequencer` 키 값을 사용하여 서로 다른 객체 키의 이벤트 순서를 결정할 수는 없습니다.
  + `sequencer` 문자열의 길이는 다를 수 있습니다. 따라서 이러한 값을 비교하려면 먼저 더 짧은 값을 0으로 왼쪽 채움한 뒤 사전순 비교를 수행합니다.
+ `glacierEventData` 키 값은 `s3:ObjectRestore:Completed` 이벤트에 대해서만 표시됩니다.
+ `restoreEventData` 키 값에는 복원 요청과 관련된 속성이 포함되어 있습니다.
+ `replicationEventData` 키 값은 복제 이벤트에 대해서만 표시됩니다.
+ `intelligentTieringEventData` 키 값은 S3 Intelligent-Tiering 이벤트에만 표시됩니다.
+ `lifecycleEventData` 키 값은 S3 수명 주기 전환 이벤트에만 표시됩니다.

## 예제 메시지
<a name="notification-content-structure-examples"></a>

다음은 Amazon S3 이벤트 알림 메시지의 예입니다.

**Amazon S3 테스트 메시지**  
버킷에 이벤트 알림을 구성한 후 Amazon S3가 다음과 같은 테스트 메시지를 전송합니다.

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**참고**  
`s3:TestEvent` 메시지는 일반 S3 이벤트 알림과 다른 형식을 사용합니다. 앞에 표시된 `Records` 배열 구조를 사용하는 다른 이벤트 알림과 달리 테스트 이벤트는 직접 필드가 있는 단순화된 형식을 사용합니다. 이벤트 처리를 구현할 때 코드가 두 메시지 형식을 구분하고 올바르게 처리할 수 있는지 확인합니다.

**`PUT` 요청을 사용하여 객체를 생성할 때의 예제 메시지**  
다음은 Amazon S3에서 `s3:ObjectCreated:Put` 이벤트를 게시하기 위해 전송하는 메시지의 예입니다.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```



# EventBridge 사용
<a name="EventBridge"></a>

Amazon S3는 버킷에서 특정 이벤트가 발생할 때마다 Amazon EventBridge에 이벤트를 보낼 수 있습니다. 다른 대상과 달리 전송할 이벤트 유형을 선택할 필요가 없습니다. EventBridge가 사용 설정되면 아래의 모든 이벤트가 EventBridge로 전송됩니다. EventBridge 규칙을 사용하여 이벤트를 추가 대상으로 라우팅할 수 있습니다. 다음은 Amazon S3가 EventBridge에 보내는 이벤트 목록입니다.


|  이벤트 유형 |  설명  | 
| --- | --- | 
|  *객체 생성됨(Object Created*  |  객체가 생성되었습니다. 이벤트 메시지 구조의 이유 필드는 객체 생성에 사용된 S3 API([https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 또는 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html))를 나타냅니다.  | 
|  *객체 삭제됨(DeleteObject)(Object Deleted (DeleteObject)*) *객체 삭제됨(수명 주기 만료)(Object Deleted (Lifecycle expiration)*)  |  객체가 삭제되었습니다. S3 API 직접 호출을 사용하여 객체를 삭제하면 이유 필드가 DeleteObject로 설정됩니다. S3 수명 주기 만료 규칙에 의해 객체가 삭제되면 이유 필드가 수명 주기 만료(Lifecycle Expiration)로 설정됩니다. 자세한 내용은 [객체 만료](lifecycle-expire-general-considerations.md) 섹션을 참조하세요. 버전이 지정되지 않은 객체가 삭제되거나 버전이 관리되는 객체가 영구적으로 삭제되면 deletion-type 필드가 Permanently Deleted로 설정됩니다. 버전이 관리되는 객체에 대해 삭제 마커가 생성되면 `deletion-type` 필드가 Delete Marker Created로 설정됩니다. 자세한 내용은 [버전 관리가 사용 설정된 버킷에서 객체 버전 삭제](DeletingObjectVersions.md) 섹션을 참조하세요.  | 
|  *객체 복원 시작됨*  |  객체 복원이 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스나 S3 Intelligent-Tiering Archive Access 또는 Deep Archive Access 계층에서 시작되었습니다. 자세한 내용은 [아카이브된 객체 작업](archived-objects.md) 섹션을 참조하세요.  | 
|  *객체 복원 완료됨(Object Restore Completed*  |  객체 복원이 완료되었습니다.  | 
|  *객체 복원 만료됨(Object Restore Expired*  |  S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에서 복원된 객체의 임시 사본이 만료되어 삭제되었습니다.  | 
|  *객체 스토리지 클래스 변경됨(Object Storage Class Changed*  |  객체가 다른 스토리지 클래스로 전환되었습니다. 자세한 내용은 [Amazon S3 수명 주기를 사용하여 객체 전환](lifecycle-transition-general-considerations.md) 섹션을 참조하세요.  | 
|  *객체 액세스 계층 변경됨(Object Access Tier Changed*  |  객체가 S3 Intelligent-Tiering Archive Access 계층 또는 Deep Archive Access 계층으로 전환되었습니다. 자세한 내용은 [Amazon S3 Intelligent-Tiering을 사용한 스토리지 비용 관리](intelligent-tiering.md) 섹션을 참조하세요.  | 
|  *객체 ACL 업데이트됨(Object ACL Updated*  |  `PutObjectAcl`을 사용하여 객체의 액세스 제어 목록(ACL)이 설정되었습니다. 요청으로 인해 객체의 ACL이 변경되지 않으면 이벤트가 생성되지 않습니다. 자세한 내용은 [ACL(액세스 제어 목록) 개요](acl-overview.md) 섹션을 참조하세요.  | 
|  *객체 태그 추가됨(Object Tags Added*  |  `PutObjectTagging`을 사용하여 태그 집합이 객체에 추가되었습니다. 자세한 내용은 [태그를 사용하여 객체 분류](object-tagging.md) 섹션을 참조하세요.  | 
|  *객체 태그 삭제됨(Object Tags Deleted*  |  `DeleteObjectTagging`을 사용하여 객체에서 모든 태그가 제거되었습니다. 자세한 내용은 [태그를 사용하여 객체 분류](object-tagging.md) 섹션을 참조하세요.  | 

**참고**  
Amazon S3 이벤트 유형이 EventBridge 이벤트 유형에 매핑되는 방법에 대한 자세한 내용은 [Amazon EventBridge 매핑 및 문제 해결](ev-mapping-troubleshooting.md) 섹션을 참조하십시오.

EventBridge와 함께 Amazon S3 이벤트 알림을 사용하여 버킷에서 이벤트가 발생할 때 조치를 취하는 규칙을 작성할 수 있습니다. 예를 들어 알림이 전송되도록 할 수 있습니다. 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [EventBridge란?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)을 참조하세요.

EventBridge API를 사용하여 상호 작용할 수 있는 작업 및 데이터 유형에 대한 자세한 내용은 **Amazon EventBridge API 참조의 [Amazon EventBridge API 참조](https://docs.aws.amazon.com/eventbridge/latest/APIReference/Welcome.html)를 참조하세요.

요금에 대한 자세한 내용은 [Amazon EventBridge 요금](https://aws.amazon.com/eventbridge/pricing)을 참조하십시오.

**Topics**
+ [

# Amazon EventBridge 권한
](ev-permissions.md)
+ [

# Amazon EventBridge 사용 설정
](enable-event-notifications-eventbridge.md)
+ [

# EventBridge 이벤트 메시지 구조
](ev-events.md)
+ [

# Amazon EventBridge 매핑 및 문제 해결
](ev-mapping-troubleshooting.md)

# Amazon EventBridge 권한
<a name="ev-permissions"></a>

Amazon S3는 이벤트를 Amazon EventBridge에 전송하기 위해 추가 권한이 필요하지 않습니다.

# Amazon EventBridge 사용 설정
<a name="enable-event-notifications-eventbridge"></a>

S3 콘솔, AWS Command Line Interface(AWS CLI) 또는 Amazon S3 REST API를 사용하여 Amazon EventBridge를 활성화할 수 있습니다.

**참고**  
EventBridge를 사용 설정한 후에는 변경 사항이 적용되는 데 5분 정도 걸립니다.

## S3 콘솔 사용
<a name="eventbridge-console"></a>

**S3 콘솔에서 EventBridge 이벤트 전송 사용 설정**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. 버킷 목록에서 이벤트를 활성화하려는 버킷의 이름을 선택합니다.

1. [**속성(Properties)**]을 선택합니다.

1. **이벤트 알림(Event Notifications)** 섹션으로 이동하고 **Amazon EventBridge** 하위 섹션을 찾습니다. **편집**을 선택합니다.

1. **이 버킷의 모든 이벤트에 대해 Amazon EventBridge에 알림 보내기(Send notifications to Amazon EventBridge for all events in this bucket)**에서 **설정(On)**을 선택합니다.

## AWS CLI 사용
<a name="eventbridge-cli"></a>

다음 예제에서는 Amazon EventBridge가 활성화된 버킷 *`amzn-s3-demo-bucket1`*에 대한 버킷 알림 구성을 생성합니다.

```
aws s3api put-bucket-notification-configuration --bucket amzn-s3-demo-bucket1 --notification-configuration='{ "EventBridgeConfiguration": {} }'
```

## REST API 사용
<a name="eventbridge-api"></a>

Amazon S3 REST API를 호출하여 프로그래밍 방식으로 버킷에서 Amazon EventBridge를 사용 설정할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)를 참조하세요.

다음 예에서는 Amazon EventBridge가 사용 설정된 버킷 알림 구성을 생성하는 데 사용된 XML을 보여줍니다.

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

## EventBridge 규칙 생성
<a name="ev-tutorial"></a>

사용 설정되면 특정 작업에 대한 Amazon EventBridge 규칙을 생성할 수 있습니다. 예를 들어 객체가 생성될 때 이메일 알림을 보낼 수 있습니다. 전체 자습서는 *Amazon EventBridge 사용 설명서*의 [자습서: Amazon S3 객체가 생성될 때 알림 보내기](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-s3-object-created-tutorial.html)를 참조하십시오.

# EventBridge 이벤트 메시지 구조
<a name="ev-events"></a>

이벤트를 게시하기 위해 Amazon S3이 전송하는 알림 메시지는 JSON 형식입니다. Amazon S3가 이벤트를 Amazon EventBridge로 전송하는 경우 때 다음 필드가 있습니다.
+ `version` – 현재 모든 이벤트에 대해 0(영)입니다.
+ `id` – 모든 이벤트에 대해 생성되는 UUID입니다.
+ `detail-type` – 전송 중인 이벤트의 유형입니다. 이벤트 유형 목록은 [EventBridge 사용](EventBridge.md) 섹션을 참조하십시오.
+ `source` – 이벤트를 생성한 서비스를 식별합니다.
+ `account` – 버킷 소유자의 12자리 AWS 계정 ID입니다.
+ `time` - 이벤트가 발생한 시간입니다.
+ `region` – 버킷의 AWS 리전을 식별합니다.
+ `resources` – 버킷의 Amazon 리소스 이름(ARN)을 포함하는 JSON 배열입니다.
+ `detail` – 이벤트에 대한 정보를 포함하는 JSON 객체입니다. 이 필드에 포함될 수 있는 항목에 대한 자세한 내용은 [이벤트 메시지 세부 정보 필드](#ev-events-detail) 섹션을 참조하십시오.

## 이벤트 메시지 구조 예제
<a name="ev-events-list"></a>

다음은 Amazon EventBridge로 전송할 수 있는 일부 Amazon S3 이벤트 알림 메시지의 예입니다.

### 객체 생성됨(Object created)
<a name="ev-events-object-created"></a>

```
{
  "version": "0",
  "id": "17793124-05d4-b198-2fde-7ededc63b103",
  "detail-type": "Object Created",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e",
      "sequencer": "617f08299329d189"
    },
    "request-id": "N4N7GDK58NMKJ12R",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "PutObject"
  }
}
```

### 객체 삭제됨(DeleteObject)(Object deleted (using DeleteObject))
<a name="ev-events-object-deleted"></a>

```
{
  "version": "0",
  "id": "2ee9cc15-d022-99ea-1fb8-1b1bac4850f9",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF",
      "sequencer": "617f0837b476e463"
    },
    "request-id": "0BH729840619AG5K",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "DeleteObject",
    "deletion-type": "Delete Marker Created"
  }
}
```

### 객체 삭제됨(수명 주기 만료)(Object deleted (using lifecycle expiration))
<a name="ev-events-object-deleted-lifecycle"></a>

```
{
  "version": "0",
  "id": "ad1de317-e409-eba2-9552-30113f8d88e3",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "mtB0cV.jejK63XkRNceanNMC.qXPWLeK",
      "sequencer": "617b398000000000"
    },
    "request-id": "20EB74C14654DC47",
    "requester": "s3.amazonaws.com",
    "reason": "Lifecycle Expiration",
    "deletion-type": "Delete Marker Created"
  }
}
```

### 객체 복원 완료됨(Object restore completed)
<a name="ev-events-object-restore-complete"></a>

```
{
  "version": "0",
  "id": "6924de0d-13e2-6bbf-c0c1-b903b753565e",
  "detail-type": "Object Restore Completed",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3"
    },
    "request-id": "189F19CB7FB1B6A4",
    "requester": "s3.amazonaws.com",
    "restore-expiry-time": "2021-11-13T00:00:00Z",
    "source-storage-class": "GLACIER"
  }
}
```

## 이벤트 메시지 세부 정보 필드
<a name="ev-events-detail"></a>

세부 정보 필드에는 이벤트에 대한 정보가 포함된 JSON 객체가 있습니다. 세부 정보 필드에 다음 필드가 있을 수 있습니다.
+ `version` – 현재 모든 이벤트에 대해 0(영)입니다.
+ `bucket` – 이벤트와 관련된 Amazon S3 버킷에 대한 정보입니다.
+ `object` – 이벤트와 관련된 Amazon S3 객체에 대한 정보입니다.
+ `request-id` – S3 응답의 요청 ID입니다.
+ `requester` – 요청자의 AWS 계정 ID 또는 AWS 서비스 보안 주체입니다.
+ `source-ip-address` – S3 요청의 소스 IP 주소입니다. S3 요청에 의해 트리거된 이벤트의 경우에만 있습니다.
+ `reason` – **객체 생성됨** 이벤트의 경우 객체를 생성하는 데 사용된 S3 API입니다(예: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 또는 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)). **객체 삭제됨** 이벤트의 경우 객체가 S3 API 직접 호출에 의해 삭제되면 **DeleteObject**로 설정되고, S3 수명 주기 만료 규칙에 의해 객체가 삭제되면 **수명 주기 만료**로 설정됩니다. 자세한 내용은 [객체 만료](lifecycle-expire-general-considerations.md) 섹션을 참조하세요.
+ `deletion-type` – **객체 삭제됨** 이벤트의 경우 버전이 지정되지 않은 객체가 삭제되거나 버전이 관리되는 객체가 영구적으로 삭제되면 **영구 삭제됨**으로 설정됩니다. 버전이 지정된 객체에 대해 삭제 마커가 생성되면 **삭제 마커 생성됨(Delete Marker Created)**으로 설정됩니다. 자세한 내용은 [버전 관리가 사용 설정된 버킷에서 객체 버전 삭제](DeletingObjectVersions.md) 섹션을 참조하세요.
**참고**  
일부 객체 속성(예: `etag` 및 `size`)은 삭제 마커가 생성된 경우에만 표시됩니다.
+ `restore-expiry-time` – **객체 복원 완료됨** 이벤트의 경우 객체의 임시 복사본이 S3에서 삭제되는 시간입니다. 자세한 내용은 [아카이브된 객체 작업](archived-objects.md) 섹션을 참조하세요.
+ `source-storage-class` – **객체 복원 시작됨** 및 **객체 복원 완료됨** 이벤트의 경우 복원 중인 객체의 스토리지 클래스입니다. 자세한 내용은 [아카이브된 객체 작업](archived-objects.md) 섹션을 참조하세요.
+ `destination-storage-class` – **객체 스토리지 클래스 변경됨** 이벤트의 경우 객체의 새 스토리지 클래스입니다. 자세한 내용은 [Amazon S3 수명 주기를 사용하여 객체 전환](lifecycle-transition-general-considerations.md) 섹션을 참조하세요.
+ `destination-access-tier` – **객체 액세스 계층 변경됨** 이벤트의 경우 객체의 새 액세스 계층입니다. 자세한 내용은 [Amazon S3 Intelligent-Tiering을 사용한 스토리지 비용 관리](intelligent-tiering.md) 섹션을 참조하세요.

# Amazon EventBridge 매핑 및 문제 해결
<a name="ev-mapping-troubleshooting"></a>

다음 표에서는 Amazon S3 이벤트 유형이 Amazon EventBridge 이벤트 유형에 매핑되는 방법을 설명합니다.


|  S3 이벤트 유형 |  Amazon EventBridge 세부 정보 유형  | 
| --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)  |  객체 생성됨(Object Created)  | 
|  ObjectRemoved:Delete ObjectRemoved:DeleteMarkerCreated LifecycleExpiration:Delete LifecycleExpiration:DeleteMarkerCreated  |  객체 삭제됨(Object Deleted)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)  |  객체 복원 시작됨(Object Restore Initiated)  | 
|  ObjectRestore:Completed  |  객체 복원 완료됨(Object Restore Completed)  | 
|  ObjectRestore:Delete  |  객체 복원 만료됨(Object Restore Expired)  | 
|  LifecycleTransition  |  객체 스토리지 클래스 변경됨(Object Storage Class Changed)  | 
|  IntelligentTiering  |  객체 액세스 계층 변경됨(Object Access Tier Changed)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)  |  객체 태그 추가됨(Object Tags Added)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)  |  객체 태그 삭제됨(Object Tags Deleted)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)  |  객체 ACL 업데이트됨(Object ACL Updated)  | 

## Amazon EventBridge 문제 해결
<a name="ev-troubleshooting"></a>

Eventbridge 문제 해결 방법에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [Amazon EventBridge 문제 해결](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-troubleshooting.html)을 참조하십시오.