获取触发 AWS CodePipeline 运行的网络钩子

时间:2021-02-13 00:54:42

标签: amazon-web-services boto3 aws-cli aws-codepipeline

背景:

我计划创建一个 Codepipeline,它在初始源阶段具有多个源操作。每个源操作都是一个 GitHub 存储库,将拥有自己的 AWS CodePipeline Webhook。在管道的下一阶段,我希望有一个调用操作,它将获取触发管道运行的管道执行的 webhook,并将下游构建阶段的输入工件设置为与触发的 webhook 关联的源操作。例如,如果 repo A 的 webhook 导致管道执行 #1,那么 invoke 操作将以某种方式识别 repo A 的 webhook 是触发器,然后将 repo A 的输出工件传递给下游构建阶段。

问题:

我还没有找到获取触发管道运行的 Codepipeline webhook 的解决方案。查看 boto3 Codepipeline 文档,我得到的最接近的是 list_webhooks,它标识了 webhook 关联的管道,但与 webhook 是否触发 Codepipeline 执行 ID 123 无关。

1 个答案:

答案 0 :(得分:1)

在这种情况下,list_pipeline_executions 命令应该可以帮助您。它为您提供 CodePipeline 执行摘要,其中第一个结果是最新执行 ID。每个摘要都有一个 trigger 属性,其中包含有关如何触发执行的信息。对于网络钩子,它看起来像这样:

"trigger": {
    "triggerType": "Webhook",
    "triggerDetail": "arn:aws:codepipeline:<region>:<account-id>:webhook:<webhook-id>"
}

如果您的管道可能同时运行,请确保首先获取当前执行 ID,以免混淆。您可以按照建议的 here 在 CodeBuild 中使用单行代码执行此操作。