从计划的lambda和阻塞提交触发器触发AWS codepipeline / codebuild

时间:2017-07-11 13:26:49

标签: aws-codepipeline aws-codebuild

我有一个使用AWS codebuild构建AMI的codepipeline,我计划按周计划运行新的服务器映像。

  1. 我想将它作为计划任务运行,我想为此使用lambda计划任务,但没有看到从lambda运行管道源的选项(我想到使用lambda的api) ,但我更喜欢使用现有工具的模式声明解决方案)有没有人知道内置的解决方案?

  2. 我不希望它在代码推送上运行,如何启用它?

  3. 编辑:澄清

    为什么使用codepipeline?因为lambda的任务太长了。而且我不想为此旋转ec2实例(按小时计费)或保持几乎不工作的实例。是否可以处理任何其他AWS工具?

3 个答案:

答案 0 :(得分:2)

您可以使用CLI命令disable-stage-transition(或与SDK相对应的API调用)

您可以禁用Inbound过渡到Source阶段。这将迫使它不注意变化。然后,您可以创建Lambda函数并将其设置为计划。在Lambda函数中,您可以使用enable-stage-transition调用来重新打开源输入。

如果您根本不关心存储库中的更改,则永远不必打开Inbound Source转换,只需调用start-pipeline-execution命令。

答案 1 :(得分:2)

AWS CodePipeline为now available as a CloudWatch events target。 CloudWatch事件支持计划,因此您可以使用它来按计划自动启动管道。

最近在源操作上添加了名为PollForSourceChanges的{​​p> An option,当设置为false时,将不会通过现有的轮询机制自动启动管道。

它旨在与希望仅从CloudWatch事件启动管道的客户一起使用CloudWatch事件。

听起来这两个功能的组合很适合您的用例。

答案 2 :(得分:0)

目前,这些是使用 Codecommit 时的 Codepipeline 检测选项 enter image description here

即使这将 CloudWatch Events 配置为发生更改时自动启动,您只需登录 Cloudwatch 控制台并禁用修改 随心所欲的活动。

由于事件可以按计划运行,您甚至可能不需要 lambda