从预定的 lambda 触发 AWS codepipeline/codebuild 并阻止提交触发器

Triggering AWS codepipeline/codebuild from a scheduled lambda and blocking commit trigger

我有一个使用 AWS codebuild 构建 AMI 的代码管道,我计划 运行 每周安排一个新的服务器映像。

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

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

编辑:澄清

为什么选择代码流水线?因为任务对于 lambda 来说太长了。而且我不想为此旋转 ec2 实例(按小时计费)或保留几乎不工作的实例。还有其他 AWS 工具可以处理吗?

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

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

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

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

An option 称为 PollForSourceChanges 最近也被添加到源操作中,当设置为 false 时将不会通过现有的轮询机制自动启动您的管道。

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

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

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

即使这将 CloudWatch Events 配置为 发生更改时自动启动,您也可以登录到 Cloudwatch 控制台并禁用根据需要修改 活动。

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