AWS无服务器CSV队列到CSV架构
我目前正在使用AWS处理一些无服务器的CSV处理。对EC2和Dynamo非常熟悉。我确信有更好的方式来构造这个,我还没有找到一个有效的方式来存储数据。任何建筑建议将不胜感激。AWS无服务器CSV队列到CSV架构
该流程将采用上传到S3的CSV,处理元组的所有行,并将处理后的数据的新CSV输出到S3。
什么是1)结构优化和2)来存储数据之前的队列是完整的,直到CSV可建
最佳位置数据流和业务结构:
CSV(包含元组)( S3) - > CSV处理(Lambda) - >队列(SNS) - >队列处理(Lambda) - > ?????在写入CSV之前处理过的队列项的临时存储空间? (在这里使用什么?) - > CSV建设(Lambda) - > CSV存储(S3)
聪明的想法赞赏。
我相信你是在复杂的事情
S3可以触发事件发生时调用一个lambda函数。这是直接设置在S3桶事件通知
所以用这个方法,使CSV的转换后的版本在另一桶
亚马逊有一个如何做这样的事情划上
为例http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html
更新(回复this comment):
它没有的Paral任何东西
如果您有一个好的想法,可以在一个Lambda的时限内处理多少个元组,
例如,给出以下信息...
- 原来的CSV包含50000元组
- 一个LAMBDA可以处理的时限内5000元组。
然后,可以执行处理器 LAMBDA的10并行异步调用与它们中的每一个不同的工作offset
。
原来的答复:
你可以把它带有两个lambda表达式工作:
-
监听
- S3触发LAMBDA,其唯一的工作就是通过新上传的CSV的s3路径到处理器 Lambda。
-
处理器
- 由所述监听触发的λ。它将需要
s3 path
和offset
作为参数(其中offset
是它应该开始处理的CSV的一行 - 此Lambda执行CSV行的实际处理,它应该跟踪它当前处理的行和达到拉姆达时间限制之前,它会停下来和同
s3 path
但新offset
调用本身。
- 由所述监听触发的λ。它将需要
所以,基本上,这是一个递归LAMBDA调用本身,直到所有的CSV行是加工
要检查剩余时间,可以在处理程序中的while
或for
循环中使用context.getRemainingTimeInMillis()
方法(NodeJS)。
行的顺序是否有任何关系? – Sanandrea