S3基于事件的触发器处理同一文件夹内多个文件
我正在尝试为一个S3存储桶写一个基于事件的触发器。我想让这个事件在每次有新的数据集被放入时触发一次。
不过,问题是这个S3存储桶里有超过140个数据集,它们在不同的时间和日期被放入(有的每天,有的每周,有的每两周,还有的每月)。因为这个存储桶每天都会接收到多个数据集或文件,有没有办法为每个文件名触发一个不同的Lambda函数呢?
文件名的格式是file_name_date.parquet
(比如file_name_20240322.parquet
)。文件名总是相同的,但日期总是不同的。
1 个回答
0
看起来你在说:
- 有很多文件被上传到一个亚马逊S3的存储桶里
- 一旦“所有”文件都上传完,你想要触发一个AWS Lambda函数
- 但是,Lambda函数会在每次创建对象时都被触发
这里的问题是怎么知道“所有”文件都上传完了。
解决这个问题的一个好方法是在上传文件的系统中添加一个操作,这样一来,一旦所有文件都上传完,就再上传一个额外的文件,这个文件可以有一个特殊的文件名,或者更好的是,放在一个不同的目录里。这个“额外文件”可以用来触发你的下一个流程。
- 如果是一个带有'特殊文件名'的文件,你实际上会在每次创建对象时都触发Lambda函数,但Lambda函数会在第一步检查文件名。如果它不是那个“特殊文件名”,那么就会立即退出(这样消耗很少的资源)。
- 如果是在不同目录中创建的文件,你只需配置S3事件,让它只在那个不同的目录中触发。