

# 使用 EventBridge
<a name="EventBridge"></a>

无论何时在存储桶中发生某些事件，Amazon S3 都可以将事件发送到 Amazon EventBridge。与其他目的地不同，您无需选择要提供的活动类型。启用 EventBridge 后，以下所有事件都将发送到 EventBridge。您可以使用 EventBridge 规则将事件路由到其他目标。以下列出了 Amazon S3 发送给 EventBridge 的事件。


|  Event type |  说明  | 
| --- | --- | 
|  *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)* *已删除对象（生命周期过期）*  |  已删除对象。 使用 S3 API 调用删除对象时，原因字段设置为 DeleteObject。当 S3 生命周期过期规则删除对象时，原因字段将设置为生命周期过期。有关更多信息，请参阅 [即将过期的对象](lifecycle-expire-general-considerations.md)。 当删除未受版本控制的对象或永久删除受版本控制的对象时，删除类型字段设置为 Permanently Deleted。为受版本控制的对象创建删除标记时，`deletion-type` 字段设置为 Delete Marker Created。有关更多信息，请参阅 [从启用了版本控制的存储桶中删除对象版本](DeletingObjectVersions.md)。  | 
|  *Object Restore Initiated（已启动对象还原*  |  从 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类别或 S3 Intelligent-Tiering 归档访问层或深度归档访问层启动了对象还原。有关更多信息，请参阅 [使用归档的对象](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 归档访问层或深度归档访问层。有关更多信息，请参阅 [使用 Amazon S3 Intelligent-Tiering 管理存储成本](intelligent-tiering.md)。  | 
|  *Object ACL Updated（已更新对象 ACL*  |  对象的访问控制列表（ACL）是使用 `PutObjectAcl` 设置的。当请求导致对象的 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)。

您可以将 Amazon S3 事件通知与 EventBridge 结合使用，编写规则，以便在存储桶中发生事件时采取行动。例如，可获得向您发送的电子邮件通知。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[什么是 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)

有关可以使用 EventBridge API 进行交互的操作和数据类型的更多信息，请参阅《Amazon EventBridge API 参考》**中的 [Amazon EventBridge API Reference](https://docs.aws.amazon.com/eventbridge/latest/APIReference/Welcome.html)。

有关定价的更多信息，请参阅 [Amazon EventBridge pricing](https://aws.amazon.com/eventbridge/pricing)（Amazon EventBridge 定价）。

**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 后，所做的更改需要大约五分钟才能生效。

## 使用 S3 控制台
<a name="eventbridge-console"></a>

**在 S3 控制台中启用 EventBridge 事件传输。**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在存储桶列表中，选择要为其启用事件的存储桶的名称。

1. 选择**属性**。

1. 导航到 **Event Notifications**（事件通知）章节，然后找到 **Amazon EventBridge** 小节。请选择**编辑**。

1. 在 **Send notifications to Amazon EventBridge for all events in this bucket**（为此存储桶中的所有事件向 Amazon EventBridge 发送通知）下方，请选择 **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 User Guide*（Amazon EventBridge 用户指南）中的 [Tutorial: Send a notification when an Amazon S3 object is created](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-s3-object-created-tutorial.html)（教程：创建 Amazon S3 对象时发送通知）。

# 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 事件通知消息的示例。

### 已创建对象
<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）
<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"
  }
}
```

### 已删除对象（使用生命周期过期）
<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"
  }
}
```

### 已完成对象还原
<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)  |  已创建对象  | 
|  ObjectRemoved:Delete ObjectRemoved:DeleteMarkerCreated LifecycleExpiration:Delete LifecycleExpiration:DeleteMarkerCreated  |  已删除对象  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)  |  已启动对象还原  | 
|  ObjectRestore:Completed  |  已完成对象还原  | 
|  ObjectRestore:Delete  |  对象还原已过期  | 
|  LifecycleTransition  |  已更改对象存储类  | 
|  IntelligentTiering  |  已更改对象访问层  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)  |  已添加对象标签  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)  |  已删除对象标签  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)  |  已更新对象 ACL  | 

## Amazon EventBridge 故障排除
<a name="ev-troubleshooting"></a>

有关 EventBridge 故障排除的信息，请参阅 *Amazon EventBridge User Guide*（Amazon EventBridge 用户指南）中的 [Troubleshooting Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-troubleshooting.html)（对 Amazon EventBridge 进行故障排除）。