我在循环中多次从EC2实例触发AWS,将350 it数据集的子集传递给lambda,Lambda操作传递给它的每个数据集。Lambda将输出写入流,然后将其写入一个S3桶。缓冲器大小为50 is,350秒为S3缓冲间隔,用于KinsisFire软管流。所以在6-7分钟后,我得到了大约7个文件,每个文件50 MB。
我想要触发一个Lambda,它结合了S3中的所有文件,其中包含JSON中的数据,并在完成流将所有文件写入S3之后,用它创建一个CSV文件。
挑战是如何知道所有Lambda的操作都完成了,而且KinsisFirehos缓冲区是空的,因为它已经将所有文件写入S3,这样我就可以触发这个Lambda,它可以从S3中的所有JSON文件创建CSV文件。
一个选项是,在循环之后,我等待350秒,然后在最后一个lambda被调用之后触发CSV创建lambda。
是否有一种方法来触发lambda后,所有的流数据被写入,而不是使用计时器。
发布于 2022-05-06 14:23:36
你的设计有一些缺陷,海事组织:
现在,您可以控制如何调用lambdas (异步与同步),您可以拥有一个S3触发器,但是您无法知道什么时候完成了运动/消防软管。你必须改变你的代码/设计,这样你才不会在噩梦中找到你自己。你不能只是等待X秒的运动/消防软管,有很多理由有一个在记录消费的延迟,这将打破你的设计。
以下任一项:
发布于 2022-05-07 08:11:41
我不确定你的用例为什么要使用火喉,但如果你想使用它,那么它可以在以下条件下工作。
这样,您将得到大小为350 MB的整个文件卡盘,然后可以触发lambda,将其转换为JSON。
无论如何,您正在等待6-7分钟才能得到350 MB数据的传输,因此使其具有350 MB的缓冲区大小和7分钟的时间与性能上是一样的。
https://stackoverflow.com/questions/44970023
复制相似问题