AWS Data Pipeline 和 AWS SWF 中哪个调度器更好

Which one is a better scheduler in AWS Data Pipeline and AWS SWF

我有一种情况,我必须根据这种情况触发我的工作流 "It has to process all files in s3 and then start again when there are files in s3"。但是,我发现 Data Pipeline 在每个计划的持续时间内启动,而 SWF 启动和结束作业,这也关闭了我的 EMR 集群。在这种情况下,它们都不适合。因此,对于必须根据条件启动或触发的过程,我发现两者都不合适。还有其他选择吗?或者是 SWF 和数据管道之一可以执行我的任务。

看看 Lambda。您可以设置一个触发器,以便在每次将新对象上传到 S3 时调用您的代码。

这更像是@Chris 的回答的推论。您仍然使用 Lambda - 听 S3 - Put Event 触发器 - 所以每次创建新对象时 - 都会调用 lamdba 函数。

Lambda Function 可以获取S3 对象的密钥并将其放入SQS;您可以 运行 一个单独的工作进程,它可以从队列中挑选项目。

重申您的声明,

  1. 它必须处理 s3 中的所有文件[可以由 Lambda 完成]
  2. 然后当 s3 中有文件时再开始 [可以通过 SQS 和 EC2 完成]

Data Pipeline支持Preconconditions的概念,可以根据条件触发你的执行。 S3KeyExists 前提条件似乎正是您要查找的内容。这将在存在特定 S3 密钥时开始执行 activity。

Data Pipeline 还将根据 activity 的执行管理资源(EC2 或 EMR)的创建和终止。如果您希望使用自己的 EC2 实例或 EMR 集群,您可以查看工作组。工作组资源由您管理,不会被服务终止。