View a markdown version of this page

EventBridge 事件消息结构 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

EventBridge 事件消息结构

Amazon S3 为发布事件而发送的通知消息采用 JSON 格式。当 Amazon S3 将事件发送到 Amazon EventBridge 时,会显示以下字段。

  • version:目前对于所有事件均为 0(零)。这是一个 Amazon EventBridge 信封字段,不用于架构版本控制。有关事件架构版本控制的信息,请参阅 detail 字段中的 event-version 字段。

  • id:为每个事件生成的 UUID。

  • detail-type:正在发送的事件的类型。有关事件类型的列表,请参阅 使用 EventBridge

  • source:标识生成事件的服务。

  • account:存储桶拥有者的 12 位 Amazon Web Services 账户 ID。

  • time:事件的发生时间。

  • region:标识存储桶的 Amazon Web Services 区域。

  • resources:包含存储桶的 Amazon 资源名称(ARN)的 JSON 数组。

  • detail - 包含有关事件信息的 JSON 对象。有关此字段中可包含的内容的更多信息,请参阅事件消息详细信息

事件消息结构示例

以下是一些可以发送到 Amazon EventBridge 的 Amazon S3 事件通知消息的示例。

已创建对象

{ "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", "event-version": "1.1", "bucket": { "name": "amzn-s3-demo-bucket1", "aws-generated-tags": { "aws:cloudformation:stack-id": "arn:aws:cloudformation:us-east-1:111122223333:stack/amzn-s3-demo-stack/51af3dc0-da77-11e4-872e-1234567db123", "aws:cloudformation:logical-id": "S3DemoBucket", "aws:cloudformation:stack-name": "amzn-s3-demo-stack" } }, "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)

{ "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", "event-version": "1.1", "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" } }

已删除对象(使用生命周期过期)

{ "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", "event-version": "1.1", "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" } }

已完成对象还原

{ "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", "event-version": "1.1", "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" } }

已创建对象注释

{ "version": "0", "id": "8c2bfa57-4a67-b2ea-c4e0-6d420ea3b3a6", "detail-type": "Object Annotation Created", "source": "aws.s3", "account": "111122223333", "time": "2025-03-15T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ], "detail": { "version": "0", "event-version": "1.1", "bucket": { "name": "amzn-s3-demo-bucket1" }, "object": { "key": "example-key", "etag": "b1946ac92492d2347c6235b4d2611184", "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e", "sequencer": "617f08299329d189" }, "request-id": "4B4NGD358NMKJ12R", "requester": "123456789012", "source-ip-address": "1.2.3.4", "reason": "PutObjectAnnotation", "object-annotation": { "name": "my-annotation", "size": 24, "etag": "05df351ea190dffc26f55c74425b9d7a" } } }

已移除对象注释

{ "version": "0", "id": "a3d1bc94-5f82-c7e1-d290-7e531fb4c5b8", "detail-type": "Object Annotation Removed", "source": "aws.s3", "account": "111122223333", "time": "2025-03-15T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ], "detail": { "version": "0", "event-version": "1.1", "bucket": { "name": "amzn-s3-demo-bucket1" }, "object": { "key": "example-key", "etag": "b1946ac92492d2347c6235b4d2611184", "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e", "sequencer": "617f08299329d190" }, "request-id": "7C5NGD358NMKJ34S", "requester": "123456789012", "source-ip-address": "1.2.3.4", "reason": "DeleteObjectAnnotation", "object-annotation": { "name": "my-annotation" } } }

事件消息详细信息

详细信息字段包含一个 JSON 对象,其中包含事件相关信息。详细信息字段中可能存在以下字段。

  • version:目前对于所有事件均为 0(零)。

  • event-version:格式为 major.minor 的事件架构版本(例如 1.1)。

    如果 Amazon S3 对不向后兼容的事件结构进行更改,则主要版本将递增。这包括删除已存在的 JSON 字段或更改字段内容的表示方式(例如,日期格式)。

    如果 Amazon S3 对事件结构进行向后兼容的更改,则次要版本将递增。这包括向事件结构添加新字段或引入新的事件类型。要与事件结构的新次要版本保持兼容,我们建议应用程序忽略新字段。

    为确保您的应用程序可以正确解析事件结构,我们建议您对主要版本号进行相等比较。为了确保您的应用程序所期望的字段存在,我们还建议对次要版本进行大于或等于比较。

  • bucket:有关事件中涉及的 Amazon S3 存储桶的信息。

  • aws-generated-tags:由 Amazon 服务附加到存储桶的标签。仅当存储桶上存在 Amazon 生成的标签时才出现。对于跨区域复制事件,此字段不存在。

  • object:有关事件中涉及的 Amazon S3 对象的信息。

  • request-id:S3 响应中的请求 ID。

  • requester:请求者的 Amazon Web Services 账户 ID 或 Amazon 服务主体。

  • source-ip-address:S3 请求的源 IP 地址。仅用于 S3 请求触发的事件。

  • reason:对于已创建对象事件,用于创建对象的 S3 API:PutObjectPOST ObjectCopyObjectCompleteMultipartUpload。对于已删除对象事件,当对象由 S3 API 调用删除时,此项设置为 DeleteObject,或者,当对象由 S3 生命周期过期规则删除时,此项设置为生命周期过期。有关更多信息,请参阅 即将过期的对象

  • deletion-type:对于已删除对象事件,当删除未受版本控制的对象或永久删除受版本控制的对象时,这设置为永久删除。为受版本控制的对象创建删除标记时,此将设为 Delete Marker Created(已创建删除标记)。有关更多信息,请参阅 从启用了版本控制的存储桶中删除对象版本

    注意

    某些对象属性(例如 etagsize)仅在创建删除标记时才会出现。

  • restore-expiry-time:对于已完成对象还原事件,该对象的临时副本将从 S3 中删除的时间。有关更多信息,请参阅 使用归档的对象

  • source-storage-class:对于已启动对象还原已完成对象还原事件,即正在还原的对象的存储类别。有关更多信息,请参阅 使用归档的对象

  • destination-storage-class:对于已更改对象存储类别事件,即对象的新存储类别。有关更多信息,请参阅 使用 Amazon S3 生命周期转换对象

  • destination-access-tier:对于已更改对象访问层事件,即对象的新访问层。有关更多信息,请参阅 使用 Amazon S3 Intelligent-Tiering 管理存储成本

  • object-annotation:对于已创建对象注释已移除对象注释事件,detail 字段包含一个 object-annotation 字段,其中包含有关注释的信息。

  • has-object-annotation:对于原因为 CopyObject已创建对象事件,object 块包含一个 has-object-annotation 布尔字段,用于指示复制的对象是否有注释。