1

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

4

3 回答 3

3

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

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

重申你的声明,

  1. 它必须处理 s3 中的所有文件[可以由 Lambda 完成]
  2. 然后当 s3 中有文件时重新开始[可以由 SQS 和 EC2 完成]
于 2015-02-05T09:15:43.623 回答
2

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

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

于 2015-02-11T18:45:08.253 回答
2

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

于 2015-02-04T19:13:20.197 回答