从计划的 lambda 触发 AWS codepipeline/codebuild 并阻止提交触发器

alo*_*ser 5 aws-codepipeline aws-codebuild

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

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

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

编辑:澄清

为什么要使用代码管道?因为这个任务对于 lambda 来说太长了。我不想为此旋转一个 ec2 实例(按小时计费)或保留一个几乎不工作的实例。还有其他 AWS 工具可以处理这个问题吗?

Tim*_*imB 5

AWS CodePipeline现已可用作 CloudWatch 事件目标。CloudWatch events 支持计划,因此您可以使用它来按计划自动启动管道。

最近还在源操作上添加了一个名为 的选项PollForSourceChanges,当设置为该选项时,false将不会通过现有的轮询机制自动启动管道。

它旨在与 CloudWatch 事件结合使用,供希望仅从 CloudWatch 事件启动管道的客户使用。

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


gkr*_*zek 3

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

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

如果您根本不关心存储库中的更改,则无需打开入站源转换并只需调用该start-pipeline-execution命令即可。