如何按顺序运行多个AWS codepipeline ?



我有一个带有3个CodePipelines的AWS环境。我们称它们为- P1 P2 P3。我想在"具体"中运行它们;序列。该序列将由Lambda函数确定。

这个Lambda函数做一些计算,并确定管道需要运行的顺序。所以它可以是-

P1 > P2 > P3
P3 > P2 > P1
P2 > P3 > P1

在运行下一个代码管道之前,每个代码管道必须成功完成。我怎样才能做到这一点呢?

起初我试图使用相同的Lambda函数,但它有15分钟超时。我们不知道每条管道需要多长时间。他们甚至可以~ 30分钟。

此外,由于序列是动态的,我不能只让一个管道将文件导出到S3,并将其用作另一个管道的源之一!

任何建议吗?

CP使用EventBridge发送事件。因此,您必须使用

。基本上,您将设置事件规则这将触发后续管道的执行,基于前一个管道的成功完成。

一般来说EventBridge可以做到这一点(正如@Marcin所提到的),但是,它不适用于我的特定场景。

我通过引入"步骤函数"解决了这个问题。

Lambda函数传递一些参数给阶跃函数。基于此,采用不同的路径(不同的管道执行顺序)

还有"wait"机制,以及GetPipelineExecution来检查状态。它们一起确保在触发下一个管道之前,一个管道需要成功结束。

希望这对将来的人有帮助:)