我正在尝试构建一个系统,该系统每年在每个S3对象上运行一次lambda函数。假设存储桶中有数百万个对象,因此lambda函数每天运行固定次数,但它能够区分哪些对象已被处理,哪些对象没有。我在如何构建逻辑方面遇到了麻烦。有没有人对什么是最好的方法有任何建议?任何建议表示赞赏。
答案 0 :(得分:0)
这是一个想法:在RDBMS(或DynamoDB)中维护S3对象的列表,其中每个记录具有S3密钥和下一个进程日期。每天安排一次Lambda函数,以便在DB中查询计划在今天(或更早)处理的对象。鉴于您有数百万个对象,平均每天超过3000个对象,因此您可能无法在单个Lambda超时内处理所有对象,因此您可以将要处理的对象扇出到您调用的更多Lambda函数使用要处理的对象的子集(甚至每个Lambda一个对象)。在Lambda处理完一个对象后,Lambda会重新编写数据库中的相关记录,以表明下一个进程日期是今天加一年。
要维护数据库中的S3对象列表,您还可以使用Lambda函数对正在上载或删除的S3对象做出反应。