是否可以创建一个可以手动触发参数的aws数据管道?

时间:2015-03-19 13:13:18

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

是否可以创建一个可以手动运行的AWS数据管道,当我触发它时,我希望传递参数来执行。

3 个答案:

答案 0 :(得分:3)

当你说"手动运行管道"?

时,你的意思是什么?

您可以通过调用 activate-pipeline 命令从命令行激活("触发")管道。此命令需要管道标识,并可选择接受参数值包作为管道配置。要获取有关此命令的更多详细信息,请运行

  

aws datapipeline activate-pipeline help

e.g。

  

aws datapipeline activate-pipeline --pipeline-id df-ABCDEF1234 --parameter-values myStringValue =" Hello world" myArrayValue = value1 myArrayValue = value2

  

aws datapipeline activate-pipeline --pipeline-id df-ABCDEF1234 --parameter-values-uri s3://myBucket/withParameters/forPipeline.json

答案 1 :(得分:0)

不,数据管道当前不支持它。我相信您所寻找的是事件驱动的调度,可能会为特定的运行实例提供参数。

我建议您探索以下选项:

  1. 使用 Lambda - 支持基于S3的触发器执行任意代码。然后使用S3为运行实例提供任何内容或输入(作为参数)。
  2. 使用 AWS SWF和SQS
  3. 构建您自己的

    有些黑客可以使用Data Pipeline,但我建议不要使用这些并等待Data Pipeline支持此功能。

    Hack#1

    您可以按计划运行管道。您的管道将有三个组件:

    1. ShellCommandActivity(使用来自S3的暂存文件运行shell脚本.Data Pipeline将文件从S3暂存到您的资源)
    2. S3 Precondition
    3. (可选)运行ShellCommandActivity的资源
    4. 现在在shell脚本中检查S3文件。你可以有逻辑让这个执行成为无操作,如果在S3中没有/空文件或读取S3文件并将它们作为参数传递给你的程序。

      Hack#2

      您可以将S3前提条件(指向位置说:s3:// my-bucket / marker-file-#{scheduledStartTime})添加到管道中的活动,作为您的触发机制。无论何时想要运行特定的间隔,都可以在S3中输入相应的文件(比如s3:// my-bucket / marker-file-2015-10-01:00:00:00)。

      这个黑客很糟糕,我对解释更多感觉不太好。

答案 2 :(得分:0)

是的,有可能。自您发布问题以来,AWS已创建了一个新的“scheduleTypeondemand,它允许您在调用“激活管道”时运行管道。这是一个例子invoking a pipeline via AWS Lambda