EventBridge 事件消息结构
Amazon S3 为发布事件而发送的通知消息采用 JSON 格式。当 Amazon S3 将事件发送到 Amazon EventBridge 时,会显示以下字段。
-
version:目前对于所有事件均为 0(零)。 -
id:为每个事件生成的 UUID。 -
detail-type:正在发送的事件的类型。有关事件类型的列表,请参阅 使用 EventBridge。 -
source:标识生成事件的服务。 -
account:存储桶拥有者的 12 位 AWS 账户 ID。 -
time:事件的发生时间。 -
region:标识存储桶的 AWS 区域。 -
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.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)
{ "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.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" } }
已删除对象(使用生命周期过期)
{ "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.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" } }
已完成对象还原
{ "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.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" } }
已创建对象注释
{ "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": "2.4", "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": "2.4", "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.minor1.0)。如果 Amazon S3 对不向后兼容的事件结构进行更改,则主要版本将递增。这包括删除已存在的 JSON 字段或更改字段内容的表示方式(例如,日期格式)。
如果 Amazon S3 对事件结构进行向后兼容的更改,则次要版本将递增。这包括向事件结构添加新字段或引入新的事件类型。要与事件结构的新次要版本保持兼容,我们建议应用程序忽略新字段。
为确保您的应用程序可以正确解析事件结构,我们建议您对主要版本号进行相等比较。为了确保您的应用程序所期望的字段存在,我们还建议对次要版本进行大于或等于比较。
-
bucket:有关事件中涉及的 Amazon S3 存储桶的信息。 -
object:有关事件中涉及的 Amazon S3 对象的信息。 -
request-id:S3 响应中的请求 ID。 -
requester:请求者的 AWS 账户 ID 或 AWS 服务主体。 -
source-ip-address:S3 请求的源 IP 地址。仅用于 S3 请求触发的事件。 -
reason:对于已创建对象事件,用于创建对象的 S3 API:PutObject、POST Object、CopyObject 或 CompleteMultipartUpload。对于已删除对象事件,当对象由 S3 API 调用删除时,此项设置为 DeleteObject,或者,当对象由 S3 生命周期过期规则删除时,此项设置为生命周期过期。有关更多信息,请参阅 即将过期的对象。 -
deletion-type:对于已删除对象事件,当删除未受版本控制的对象或永久删除受版本控制的对象时,这设置为永久删除。为受版本控制的对象创建删除标记时,此将设为 Delete Marker Created(已创建删除标记)。有关更多信息,请参阅 从启用了版本控制的存储桶中删除对象版本。注意
某些对象属性(例如
etag和size)仅在创建删除标记时才会出现。 -
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布尔字段,用于指示复制的对象是否有注释。