【发布时间】:2017-09-12 19:32:08
【问题描述】:
情况:我有 2 个按需运行的数据管道。在管道 A 完成之前,管道 B 无法运行。我正在尝试在单个脚本/程序中自动运行两个管道,但我不确定如何在 Go 中完成所有这些操作。
我有一些激活数据管道的 Go 代码:
func awsActivatePipeline(pipelineID, region string) (*datapipeline.ActivatePipelineOutput, error) {
svc := datapipeline.New(session.New(&aws.Config{Region: aws.String(region)}))
input := &datapipeline.ActivatePipelineInput{
PipelineId: aws.String(pipelineID),
}
result, err := svc.ActivatePipeline(input)
if err != nil {
fmt.Println("error activating pipeline: ", err)
}
fmt.Println(result)
return result, nil
}
激活后,我希望能够监控该管道并确定它何时完成,以便我可以运行第二个管道。类似于list-runs CLI 命令,但我不确定对应的 Go 函数是什么。
$ aws datapipeline list-runs --region us-west-2 --pipeline-id df-EXAMPLE
Name Scheduled Start Status
ID Started Ended
---------------------------------------------------------------------------------------------------
1. EC2ResourceObj 2017-09-12T17:49:55 FINISHED
@EC2ResourceObj_2017-09-12T17:49:55 2017-09-12T17:49:58 2017-09-12T17:56:52
2. Installation 2017-09-12T17:49:55 FINISHED
@Installation_@ShellCommandActivityObj_2017-09-12T 2017-09-12T17:49:57 2017-09-12T17:54:09
3. S3OutputLocation 2017-09-12T17:49:55 FINISHED
@S3OutputLocation_2017-09-12T17:49:55 2017-09-12T17:49:58 2017-09-12T17:54:50
4. ShellCommandActivityObj 2017-09-12T17:49:55 FINISHED
@ShellCommandActivityObj_2017-09-12T17:49:55 2017-09-12T17:49:57 2017-09-12T17:54:49
因此,一旦所有操作都标记为“已完成”,我想激活我的第二个管道。完成此任务的最佳方法是什么?
【问题讨论】:
-
看起来 list-runs 是 CLI 的功能,而不是 API。 DataPipeline SDK 中没有 ListRuns 操作。通过快速浏览 CLI 的源代码,我认为他们只是对 ListObjects 的结果进行了一些花哨的过滤和格式化,但我不确定是否可以发布作为答案。跨度>
-
@Adrian - 到目前为止,我已经能够使用 DescribeObjects 检查操作状态
标签: amazon-web-services go amazon-data-pipeline data-pipeline