使用 Amazon SQS、Amazon SNS 和 Lambda
启用通知是存储桶级操作。您可以在与该存储桶关联的通知子资源中存储通知配置信息。创建或更改存储桶通知配置后,通常必须等待 5 分钟才能使更改生效。首次启用通知时会发生 s3:TestEvent
。您可以使用以下任意方法来管理通知配置:
-
使用 Amazon S3 控制台 – 控制台 UI 允许您在存储桶上设置通知配置,而无需编写任何代码。有关更多信息,请参阅 使用 Amazon S3 控制台启用和配置事件通知。
-
以编程方式使用 Amazon SDK – 在内部,控制台和 SDK 都调用 Amazon S3 REST API 来管理与存储桶关联的通知子资源。有关使用 Amazon SDK 的通知配置示例,请参阅 演练:为存储桶配置通知(SNS 主题或 SQS 队列)。
注意
您也可以直接从代码中调用 Amazon S3 REST API。但是,这可能会比较繁琐,因为您必须编写代码对请求进行身份验证。
无论您使用哪种方法,Amazon S3 都将通知配置作为 XML 存储在与存储桶关联的通知子资源中。有关存储桶子资源的信息,请参阅 存储桶配置选项。
注意
如果您由于已删除的目标而收到多个失败事件通知,则在尝试删除这些通知时,您可能会收到无法验证以下目标配置。您可以在 S3 控制台中通过同时删除所有失败的通知来解决此问题。
主题
以编程方式配置事件通知
默认情况下,不为任何类型的事件启用通知。因此,通知子资源最初存储空配置。
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </NotificationConfiguration>
要为特定类型的事件启用通知,请将 XML 替换为适当的配置,该配置可标识您希望 Amazon S3 发布的事件类型和您希望将事件发布到的目标。对于每个目标,添加相应的 XML 配置。
将事件消息发布到 SQS 队列
要将 SQS 队列设置为一个或多个事件类型的通知目标,请添加 QueueConfiguration
。
<NotificationConfiguration> <QueueConfiguration> <Id>
optional-id-string
</Id> <Queue>sqs-queue-arn
</Queue> <Event>event-type
</Event> <Event>event-type
</Event> ... </QueueConfiguration> ... </NotificationConfiguration>
将事件消息发布到 SNS 主题
要将 SNS 主题设置为特定事件类型的通知目标,请添加 TopicConfiguration
。
<NotificationConfiguration> <TopicConfiguration> <Id>
optional-id-string
</Id> <Topic>sns-topic-arn
</Topic> <Event>event-type
</Event> <Event>event-type
</Event> ... </TopicConfiguration> ... </NotificationConfiguration>
调用 Amazon Lambda 函数并提供事件消息作为参数
要将 Lambda 函数设置为特定事件类型的通知目标,请添加CloudFunctionConfiguration
。
<NotificationConfiguration> <CloudFunctionConfiguration> <Id>
optional-id-string
</Id> <CloudFunction>cloud-function-arn
</CloudFunction> <Event>event-type
</Event> <Event>event-type
</Event> ... </CloudFunctionConfiguration> ... </NotificationConfiguration>
删除存储桶上配置的所有通知
要删除存储桶上配置的所有通知,请在通知子资源中保存一个空 <NotificationConfiguration/>
元素。
当 Amazon S3 检测到特定类型的事件时,它会发布包含事件信息的消息。有关更多信息,请参阅 事件消息结构。
有关配置事件通知的详细信息,请参阅以下主题: