想象一下以下场景:
我已经通过SNS订阅了一个Lambda到S3 PutObject
事件。这个S3 bucket的数据生产者将在成功写入时将_SUCCESS
文件写入分区,当检测到_SUCCESS
文件时,我的Lambda将触发下游作业并消耗该数据。一切正常。
我最近加入了一个新的数据生产者,我也订阅了S3 PutObject
事件-但是这个生产者在完成写入时不会写入任何_SUCCESS
文件。
是否有任何推荐的模式或方法可以有效可靠地检测已完成的“完全写入”?(显然不是完美的,因为可能存在大量边缘情况-寻找足够好的解决方案来开始)
到目前为止,我的想法是尝试检测一个分区的PutObject
事件的峰值,并跟踪最后一个事件的时间戳。一旦检测到活动已经停止了一段时间(后最近的活动),下游进程将被触发来消耗新的数据。
我该如何改进这一点?
1条答案
按热度按时间fcg9iug31#
我在使用DynamoDB作为作业的元数据跟踪器方面取得了巨大成功,这也有助于在失败的作业时发出警报。
但是您的数据生产者必须能够将元数据放置在那里。在作业成功时,只需更新DynamoDB中的作业项,这将触发Lambda函数,该函数将允许您继续下游处理。
第一个月