在S3和多个EC2之间移动文件

时间:2015-08-12 07:23:28

标签: node.js amazon-s3

我正在尝试找到一种在AWS S3存储桶和多个EC2服务器之间移动文件的有效方法。基本上我想要的是一个编排服务器循环访问S3存储桶中的文件,将它们移动到不同的EC2服务器进行处理。然后,业务流程服务器将记录(在redis / Elasticache中)每个单独的文件,以便它们都不会丢失。所有文件都按顺序排列。序列号包含在文件名中。

不幸的是,我只知道Node.js是一种脚本语言。我可以使用nodejs Knox库来获取文件,但我不想将文件加载到业务流程服务器上,因为这是不必要的,我想将文件推送到另一个EC2实例。这样做的最佳方式是什么?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用AWS Lambda处理S3存储桶中的文件。它可以在S3上发生的某些事件上运行 - 就像在S3存储桶中创建了一个新文件一样。您可以在node.js中编写代码 - AWS Lambda将调用node.js函数,您可以在其中获取刚刚发生的事件的参数。

然后在您的EC2实例上,您可以在node.js中编写api并将其放在Elastic Load Balancer下。通过这种方式,您可以将文件从AWS Lambda函数推送到Elastic Load Balancer,以便您的实例处理它。

这非常简单,易于扩展:Lambda完全由AWS管理,因此您无需担心任何基础架构。虽然您的实例应该很容易自动扩展,例如根据负载均衡器的指标。
您还可以为无法处理的文件设置流程,实例上的api可以在收到错误文件时执行某些操作 - 例如将其放回S3上的单独存储桶中,发送电子邮件等。
登记/> 对于您的Elasticache Redis服务器,您应该能够从AWS Lambda函数和EC2实例访问它,这样您就可以随意获取和设置它。