2

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

4

3 回答 3

3

当您说“手动运行管道”时,您到底是什么意思?

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

aws datapipeline 激活管道帮助

例如

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

于 2015-03-24T01:06:49.910 回答
0

不,Data Pipeline 目前不支持它。我相信您正在寻找的是事件驱动的调度,可以为特定的运行实例提供参数。

我建议您探索以下选项:

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

有一些技巧可以使其与 Data Pipeline 一起使用,但我建议不要使用这些技巧,而是等待 Data Pipeline 支持此功能。

黑客#1

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

  1. ShellCommandActivity(使用来自 S3 的暂存文件运行 shell 脚本。数据管道将文件从 S3 暂存到您的资源)
  2. S3 前提条件
  3. (可选)运行 ShellCommandActivity 的资源

现在在您的 shell 脚本中检查 S3 文件。如果 S3 中没有任何/空文件,您可以有逻辑让此执行成为无操作,或者读取 S3 文件并将它们作为参数传递给您的程序。

黑客#2

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

这个hack太糟糕了,我不想解释更多。

于 2015-04-01T20:06:33.777 回答
0

对的,这是可能的。自从您发布问题以来,AWS 已经创建了一个新的 " scheduleType", ondemand,它允许您在调用“激活管道”时运行管道。这是一个通过 AWS Lambda 调用管道的示例。

于 2016-10-26T13:37:39.427 回答