【问题标题】:Triggering AWS codepipeline/codebuild from a scheduled lambda and blocking commit trigger从计划的 lambda 触发 AWS codepipeline/codebuild 并阻止提交触发器
【发布时间】:2017-07-11 13:26:49
【问题描述】:

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

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

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

编辑:澄清

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

【问题讨论】:

  • 如果您不想在代码推送上运行,CodePipeline 可能不适合您,因为它围绕持续集成 (CI) 模型展开,每次推送都会显式触发。您是否出于其他原因依赖 CodePipeline?有关您的推出过程的一些额外细节可能会有所帮助。
  • 我添加了关于为什么 codepipeline cc: @Unsigned 的说明

标签: aws-codepipeline aws-codebuild


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 看起来是个有趣的解决方案!我去看看
    • 禁用阶段转换,有奇怪的副作用,但启动管道执行是要走的路。谢谢!
    • @alonisser 你能描述一下奇怪的副作用吗?我只是在玩一些测试
    【解决方案3】:

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

    即使这会将 CloudWatch 事件配置为在发生更改时自动启动,您也可以登录 Cloudwatch 控制台并禁用修改 活动随心所欲。

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

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2019-01-11
      • 2017-06-08
      相关资源
      最近更新 更多