我有一种情况,我必须根据这个条件"It has to process all files in s3 and then start again when there are files in s3"
触发我的工作流程。但是,我发现数据管道在每个计划的持续时间内启动,而SWF启动和结束工作,这也关闭了我的EMR集群。在这种情况下,它们都不适合。因此,对于必须根据条件启动或触发的过程,我找到的并不合适。还有其他选择吗?或者是SWF和数据管道之一可以执行我的任务。
答案 0 :(得分:3)
这更像是@Chris的答案的必然结果。你仍然使用Lambda - 听S3 - Put Event触发器 - 所以每当有一个新对象被创建时 - 将调用lamdba函数。
Lambda函数可以获取S3对象的密钥并将其放入SQS中;您可以运行一个单独的工作进程,该进程可以从队列中选择项目。
重申你的陈述,
答案 1 :(得分:2)
看看Lambda。您可以设置触发器,以便每次将新对象上载到S3时调用您的代码。
答案 2 :(得分:2)
Data Pipeline支持Preconconditions的概念,它可以根据条件触发您的执行。 S3KeyExists
先决条件似乎就像你要找的那样。当特定的S3密钥存在时,这将开始执行您的活动。
Data Pipeline还将根据活动的执行情况管理资源(EC2或EMR)的创建和终止。如果您希望使用自己的EC2实例或EMR群集,则可以查看工作组。工作组资源由您管理,不会被服务终止。