【问题标题】:Move files between S3 and multiple EC2在 S3 和多个 EC2 之间移动文件
【发布时间】:2015-11-04 16:06:31
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: node.js amazon-s3


    【解决方案1】:

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

    然后在您的 EC2 实例上,您可以在 node.js 中编写一个 api 并将其放在 Elastic Load Balancer 下。这样,您可以将要处理的文件从您的 AWS Lambda 函数推送到您的弹性负载均衡器,以便您的实例处理它。

    这非常易于构建且易于扩展:Lambda 完全由 AWS 管理,因此您无需担心任何基础设施。虽然您的实例应该很容易自动扩展,例如基于来自负载均衡器的指标。
    您还可以为无法处理的文件设置流程,实例上的 api 可以在收到错误文件时执行某些操作 - 例如将其放回 S3 上的单独存储桶中、发送电子邮件等。

    对于您的 Elasticache Redis 服务器,您应该能够从您的 AWS Lambda 函数和您的 EC2 实例访问它,这样您就可以在那里获取和设置您需要的任何东西。

    【讨论】:

    • 听起来不错。问题是我在澳大利亚,而 Lambda 在下面不可用。我认为我不能开始使用美国或欧洲的数据中心。
    • 我看到它在东京地区有售,这是离你最近的。您仍然可以让您的 EC2 实例在悉尼的 ELB 和 AWS Lamba 下在东京运行。仅当您想添加仅在同一区域下可访问的具有 Elasticache 的 Redis 服务器时。您也可以尝试与您的客户经理交谈,看看是否有将 Lambda 添加到悉尼地区的计划。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2021-11-29
    • 2015-05-30
    • 2015-07-21
    • 2015-08-11
    • 2020-03-03
    • 2020-11-02
    相关资源
    最近更新 更多