如何按顺序 运行 多个 AWS CodePipelines?
How to run multiple AWS CodePipelines in order?
我有一个带有 3 个 CodePipelines 的 AWS 环境。我们称它们为 P1、P2 和 P3。我想 运行 按“特定”顺序排列的那些。该序列将由 Lambda 函数确定。
此 Lambda 函数会进行一些计算,并确定管道需要的顺序 运行。所以,它可能是-
P1 > P2 > P3
P3 > P2 > P1
P2 > P3 > P1
每个代码流水线都必须在下一个 运行 之前成功完成。我怎样才能做到这一点?
起初我尝试使用相同的 Lambda 函数来完成它,但它有 15 分钟的超时时间。我们不知道每条管道需要多长时间。他们加起来可能需要 ~30 分钟。
此外,由于序列是动态的,我不能只使用一个管道将文件导出到 S3,然后将其用作另一个文件的来源之一!
有什么建议吗?
CP emits events 使用 EventBridge。因此,您将不得不使用它。
基本上,您将设置事件规则,这将根据先前管道的成功完成触发后续管道的执行。
通常 EventBridge 可以解决问题(正如@Marcin 所提到的),但是,它不适用于我的特定场景。
我通过在 Lambda 函数和管道之间引入“Step Function”解决了这个问题。
Lambda 函数将一些参数传递给 Step Function。基于此,它采用不同的路径(不同的管道执行顺序)
此外,它还有“等待”机制,以及用于检查状态的 GetPipelineExecution。他们一起确保一个管道需要在下一个管道被触发之前成功结束。
希望这对以后的人有所帮助:)
我有一个带有 3 个 CodePipelines 的 AWS 环境。我们称它们为 P1、P2 和 P3。我想 运行 按“特定”顺序排列的那些。该序列将由 Lambda 函数确定。
此 Lambda 函数会进行一些计算,并确定管道需要的顺序 运行。所以,它可能是-
P1 > P2 > P3
P3 > P2 > P1
P2 > P3 > P1
每个代码流水线都必须在下一个 运行 之前成功完成。我怎样才能做到这一点?
起初我尝试使用相同的 Lambda 函数来完成它,但它有 15 分钟的超时时间。我们不知道每条管道需要多长时间。他们加起来可能需要 ~30 分钟。
此外,由于序列是动态的,我不能只使用一个管道将文件导出到 S3,然后将其用作另一个文件的来源之一!
有什么建议吗?
CP emits events 使用 EventBridge。因此,您将不得不使用它。
基本上,您将设置事件规则,这将根据先前管道的成功完成触发后续管道的执行。
通常 EventBridge 可以解决问题(正如@Marcin 所提到的),但是,它不适用于我的特定场景。
我通过在 Lambda 函数和管道之间引入“Step Function”解决了这个问题。
Lambda 函数将一些参数传递给 Step Function。基于此,它采用不同的路径(不同的管道执行顺序)
此外,它还有“等待”机制,以及用于检查状态的 GetPipelineExecution。他们一起确保一个管道需要在下一个管道被触发之前成功结束。
希望这对以后的人有所帮助:)