从控制台添加多个S3事件通知后缀

14

当类似于.log、.txt等多个扩展名的文件被添加到AWS S3存储桶时,我需要事件通知。我们可以从控制台中添加多个后缀来进行S3事件通知吗?


请问开发人员指南中的信息如何? - Jeroen Heier
我发现了像 <NotificationConfiguration> 这样的东西,根据 AWS 文档所述,它是与存储桶相关联的通知子资源中的 XML。由于我刚开始接触 AWS 和 AWS S3,我不知道应该把这个 XML 放在哪里。 - Aarati
2个回答

15

您可以在Amazon S3控制台中创建一个事件,然后通过SNS或SQS触发Lambda函数或发送消息。

此配置接受前缀(实际上是一个目录)和后缀(例如.jpg)。

只需打开存储桶,转到属性选项卡,然后单击事件(在底部)。

请参见:配置Amazon S3事件通知 - Amazon Simple Storage Service

您可以创建多个事件,每个事件具有不同的后缀。但是,您无法创建一个具有多个后缀的事件。一种替代方法是为任何后缀(任何文件类型)创建一个事件,并使Lambda函数检查文件名,如果它具有无趣的后缀,则退出。


1
是的。我按照文档中所述创建了事件通知。我只想知道,我们是否可以在S3控制台中添加多个后缀,而不仅仅是一个后缀?我还发现了类似于<NotificationConfiguration>的东西,根据AWS文档,它是与存储桶相关联的通知子资源中的XML。由于我是AWS和AWS S3的新手,我不知道应该将XML放在哪里。 - Aarati
12
您可以创建多个事件,每个事件都有不同的后缀。但您不能创建一个事件具有多个后缀。另一种选择是创建一个适用于_任何_后缀(任何文件类型)的事件,并使Lambda函数检查文件名,如果具有无趣的后缀,则退出。 - John Rotenstein
1
这个第二条评论应该是答案。 - Lucas Andrade
@JohnRotenstein 先生,如果我想让一个事件触发 .jpg.png.jpeg,但不触发 .gif 怎么办?实际上,我有一个现有的 Lambda 触发图像调整大小,但现在我想跳过 .gif 扩展名。 - A l w a y s S u n n y
1
@CristianSepulveda 不,无法“抑制一种文件”。我建议Lambda函数接受所有文件,然后可以在函数代码中过滤文件类型,就像NineCattoRules的答案所示。 - John Rotenstein
显示剩余3条评论

0

你应该使用带有 S3 触发器的 Lambda 来处理你的存储桶,并编辑函数代码以检查文件类型。

例如,对于 Node JS,可以使用以下代码:

  // Check that the file type is supported
  const fileType = typeMatch[1].toLowerCase();
  if (fileType != "txt" && fileType != "pdf") {
      console.log(`Unsupported file type: ${fileType}`);
      return;
  }

源代码


理想情况下,您应该使用触发器来进行此过滤,而不是进行大量不必要的 Lambda 执行。 - Harry Jones
@HarryJones 请发布你的答案,因为没有 Lambda,我甚至无法想象你如何完成它。 - NineCattoRules

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接