使用 Amazon SQS、Amazon SNS 和 Lambda - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 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 存储在与存储桶关联的通知子资源中。有关存储桶子资源的信息,请参阅 存储桶配置选项

以编程方式配置事件通知

默认情况下,不为任何类型的事件启用通知。因此,通知子资源最初存储空配置。

<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 检测到特定类型的事件时,它会发布包含事件信息的消息。有关更多信息,请参阅 事件消息结构

有关配置事件通知的详细信息,请参阅以下主题: