

# 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)을 참조하십시오.