S3基于事件的触发器处理同一文件夹内多个文件

-4 投票
1 回答
50 浏览
提问于 2025-04-13 00:40

我正在尝试为一个S3存储桶写一个基于事件的触发器。我想让这个事件在每次有新的数据集被放入时触发一次。

不过,问题是这个S3存储桶里有超过140个数据集,它们在不同的时间和日期被放入(有的每天,有的每周,有的每两周,还有的每月)。因为这个存储桶每天都会接收到多个数据集或文件,有没有办法为每个文件名触发一个不同的Lambda函数呢?

文件名的格式是file_name_date.parquet(比如file_name_20240322.parquet)。文件名总是相同的,但日期总是不同的。

1 个回答

0

看起来你在说:

  • 有很多文件被上传到一个亚马逊S3的存储桶里
  • 一旦“所有”文件都上传完,你想要触发一个AWS Lambda函数
  • 但是,Lambda函数会在每次创建对象时都被触发

这里的问题是怎么知道“所有”文件都上传完了

解决这个问题的一个好方法是在上传文件的系统中添加一个操作,这样一来,一旦所有文件都上传完,就再上传一个额外的文件,这个文件可以有一个特殊的文件名,或者更好的是,放在一个不同的目录里。这个“额外文件”可以用来触发你的下一个流程。

  • 如果是一个带有'特殊文件名'的文件,你实际上会在每次创建对象时都触发Lambda函数,但Lambda函数会在第一步检查文件名。如果它不是那个“特殊文件名”,那么就会立即退出(这样消耗很少的资源)。
  • 如果是在不同目录中创建的文件,你只需配置S3事件,让它只在那个不同的目录中触发。

撰写回答