在 CodePipeline 阶段或操作失败时调用 Lambda 函数

Invoke Lambda function on CodePipeline Stage or Action Failure

当 CodePipeline 创建生产资产时,我们需要提交变更请求。

在进入生产阶段时打开 RFC 并在成功生产时关闭 RFC build/test 通过启动 Lambdas 很容易。当 CodePipeline 阶段或测试操作失败时就会出现问题。

如何在 CodePipeline 阶段失败时启动 Lambda? 同样,当 CodePipeline 测试操作失败时如何触发 Lambda?

Example cloudformation

来自 AWS:

当管道无法完成时获得相关详细信息通知的能力是一个受欢迎的功能请求(多个客户要求并且非常有效 use-case 拥有)并且我可以确认它在服务团队路线图,但他们没有为此请求提供 ETA(我建议查看此服务的发布历史页面:link https://aws.amazon.com/releasenotes/AWS-CodePipeline

作为替代方案,下面列出了使用 Lambda 实现此功能的其他方法:

1) 具有 Lambda 函数,该函数使用基于时间的 CloudWatch 事件轮询管道状态,并在发现失败的操作时触发 SNS 通知。

2) 将使用我们的 Lambda 集成的 Lambda 函数作为您要监控的操作的并行操作,然后从 Lambda 函数内监控其他操作的状态,以查看它是失败还是成功。使用延续令牌确保 Lambda 函数不断被调用,直到它在其他操作中看到结果,并相应地发送 SNS 通知。

AWS 尚未提供该功能。

以下是 Lambda 函数的示例,该函数在 CodePipeline 操作正在进行、成功或失败时发送 Slack 通知:https://github.com/sandtable/codepipelinetoslack

它使用延续令牌监视并行 CodePipeline 操作的状态。

截至 2017 年 7 月 12 日,亚马逊已宣布提供此功能。

公告:Amazon CloudWatch Events now supports AWS CodePipeline as a target

在 Cloudwatch 控制台中,您已经可以将其视为目标。