哪一个是AWS Data Pipeline和AWS SWF中更好的调度程序

时间:2015-02-04 15:27:51

标签: amazon-web-services cron amazon-swf amazon-data-pipeline

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

3 个答案:

答案 0 :(得分:3)

这更像是@Chris的答案的必然结果。你仍然使用Lambda - 听S3 - Put Event触发器 - 所以每当有一个新对象被创建时 - 将调用lamdba函数。

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

重申你的陈述,

  1. 必须处理s3中的所有文件 [可以由Lambda完成]
  2. 然后在s3中有文件时再次启动 [可以通过SQS& EC2]

答案 1 :(得分:2)

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

答案 2 :(得分:2)

Data Pipeline支持Preconconditions的概念,它可以根据条件触发您的执行。 S3KeyExists先决条件似乎就像你要找的那样。当特定的S3密钥存在时,这将开始执行您的活动。

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