【问题标题】:How to run multiple AWS CodePipelines in order?如何按顺序运行多个 AWS CodePipelines?
【发布时间】:2021-11-24 20:47:10
【问题描述】:

我有一个带有 3 个 CodePipelines 的 AWS 环境。我们称它们为 P1、P2 和 P3。我想以“特定”顺序运行它们。该顺序将由 Lambda 函数确定。

此 Lambda 函数会进行一些计算,并确定管道需要运行的顺序。所以,它可能是-

P1 > P2 > P3

P3 > P2 > P1

P2 > P3 > P1

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

起初我尝试使用相同的 Lambda 函数,但它有 15 分钟的超时。我们不知道每条管道需要多长时间。他们总共可能需要大约 30 分钟。

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

有什么建议吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-codepipeline


    【解决方案1】:

    通常 EventBridge 可以解决问题(如 @Marcin 所述),但是,它不适用于我的特定场景。

    我通过在 Lambda 函数和管道之间引入“Step Function”解决了这个问题。

    Lambda 函数将一些参数传递给 Step Function。基于此,它需要不同的路径(不同的管道执行顺序)

    此外,它具有“等待”机制,以及用于检查状态的 GetPipelineExecution。它们共同确保一个管道需要在触发下一个管道之前成功结束。

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

    【讨论】:

      【解决方案2】:

      CP emits events 使用 EventBridge。因此,您将不得不使用它。

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

      【讨论】:

      • 感谢您的回复。 EventBridge 如何知道下一个管道是哪一个?假设 - 当 P1 成功完成时,触发 EB 规则。它如何知道是运行 P2 还是 P3?在这个阶段,只有我提到的 Lambda 函数会计算它。我觉得这整件事很棘手,因为 CP 顺序是动态的!
      • @AladdinKnight 如果您需要复杂的逻辑,事件桥规则将触发 lambda 函数。然后该函数将决定接下来要触发什么。
      • @AladdinKnight 进展如何?仍然不清楚你能做什么?
      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      相关资源
      最近更新 更多