事件通知类型和目标 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

事件通知类型和目标

Amazon S3 支持多种可以发布通知的事件通知类型和目标。配置事件通知时,您可以指定事件类型和目标。

受支持的事件类型

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:ObjectRemoved:*

s3:ObjectRemoved:Delete

s3:ObjectRemoved:DeleteMarkerCreated

通过使用 ObjectRemoved 事件类型,您可以在从存储桶中删除一个对象或一批对象时启用通知。

您可以使用 s3:ObjectRemoved:Delete 事件类型请求在删除对象或永久删除受版本控制的对象时收到通知。或者,也可以使用 s3:ObjectRemoved:DeleteMarkerCreated 请求在为受版本控制的对象创建删除标记时收到通知。有关删除受版本控制的对象的信息,请参阅 从启用了版本控制的存储桶中删除对象版本。您还可以使用通配符 s3:ObjectRemoved:* 来请求在每次删除对象时收到通知。

您不会从生命周期策略中的自动删除或失败的操作收到事件通知。

s3:ObjectRestore:Post

s3:ObjectRestore:Completed

使用还原对象事件类型,可在从 S3 Glacier 存储类还原对象时收到还原启动和完成的通知。

您可以使用 s3:ObjectRestore:Post 请求对象还原启动的通知。您可以使用 s3:ObjectRestore:Completed 请求对象还原完成的通知。

s3:ReducedRedundancyLostObject 您可以使用此事件类型来请求在 Amazon S3 检测到 RRS 存储类别的对象丢失时发送通知消息。
s3:Replication:OperationFailedReplication 当有资格使用 S3 复制时间控制进行复制的对象无法复制时,您会收到此通知事件。
s3:Replication:OperationMissedThreshold 当有资格使用 S3 复制时间控制进行复制的对象超过 15 分钟的复制阈值时,您会收到此通知事件。
s3:Replication:OperationReplicatedAfterThreshold 对于有资格使用 S3 复制时间控制功能在 15 分钟阈值后进行复制的对象,您会收到此通知事件。
s3:Replication:OperationNotTracked 对于有资格使用 S3 复制时间控制进行复制但不再由复制指标跟踪的对象,您会收到此通知事件。

受支持的事件目标

Amazon S3 可以将事件通知消息发送到以下目标。您在通知配置中指定这些目标的 Amazon 资源名称 (ARN) 值。

  • Amazon Simple Notification Service (Amazon SNS) 主题

  • Amazon Simple Queue Service (Amazon SQS) 队列

  • AWS Lambda 函数

您必须授予 Amazon S3 将消息发布到 Amazon SNS 主题或 Amazon SQS 队列的权限。您还必须授予 Amazon S3 代表您调用 AWS Lambda 函数的权限。有关授予这些权限的信息,请参阅授予将事件通知消息发布到目标的权限

Amazon SNS 主题

Amazon SNS 用于协调和管理向订阅终端节点或客户交付或发送消息的过程。您可以使用 Amazon SNS 控制台创建 Amazon SNS 主题以便向其发送通知。

该主题必须与您的 Amazon S3 存储桶位于同一 AWS 区域。有关创建 Amazon SNS 主题的信息,请参阅 Amazon Simple Notification Service 开发人员指南中的 Amazon SNS 入门Amazon SNS 常见问题

您先需要以下内容,然后才能将创建的 Amazon SNS 主题用作事件通知目标:

  • Amazon SNS 主题的 ARN

  • 一个有效的 Amazon SNS 主题订阅(主题订阅者在消息发布到 Amazon SNS 主题时会收到通知)

Amazon SQS 队列

Amazon SQS 提供了可靠且可扩展的托管队列,用于存储计算机之间传输的消息。您可以使用 Amazon SQS 控制台创建 Amazon SQS 队列以便向其发送通知。

Amazon SQS 队列必须与您的 Amazon S3 存储桶位于同一区域。有关创建 Amazon SQS 队列的信息,请参阅 Amazon Simple Queue Service 开发人员指南中的什么是 Amazon Simple Queue ServiceAmazon SQS 入门

您先需要以下内容,然后才能使用 Amazon SQS 队列作为事件通知目标:

  • Amazon SQS 主题的 ARN

Lambda 函数

您可以使用 AWS Lambda 控制台创建使用 AWS 基础设施代表您运行代码的 Lambda 函数。Lambda 函数必须与您的 S3 存储桶位于同一区域。您还必须具有 Lambda 函数的名称或 ARN 才能将 Lambda 函数设置为事件通知目标。

警告

如果您的通知写入触发通知的同一存储桶,则可能会导致执行循环。例如,如果每当上传一个对象,存储桶就触发某个 Lambda 函数,而该函数又上传一个对象给存储桶,则该函数间接触发了自身。为避免这种情况,请使用两个存储桶,或将触发器配置为仅适用于传入对象所用的前缀。

有关将 Amazon S3 通知与 AWS Lambda 结合使用的更多信息和示例,请参阅《AWS Lambda 开发人员指南》中的结合使用 AWS Lambda 和 Amazon S3