You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止CloudFormation栈部署后CodeBuild项目自动运行?

阻止CodePipeline部署CloudFormation栈时自动触发CodeBuild的方法

以下几种方法可以实现手动触发CodeBuild,避免部署CloudFormation栈时自动执行构建:

  • 添加手动审批步骤拦截自动执行
    在CodePipeline的Build阶段之前,插入一个手动审批动作。只有当你手动批准后,Pipeline才会继续执行CodeBuild。在CloudFormation模板的Pipeline阶段配置中添加如下Action:

    - Name: ManualApprovalForBuild
      ActionTypeId:
        Category: Approval
        Owner: AWS
        Provider: Manual
        Version: '1'
      RunOrder: 1
    

    把这个Action放在Build Action的前面(RunOrder设为1,Build Action的RunOrder设为2),这样每次Pipeline运行到此处会暂停,等待手动确认后才会触发构建。

  • 禁用源变更的自动触发
    如果你的CodePipeline是由代码仓库(如CodeCommit)或S3存储桶的变更自动触发的,直接关闭自动轮询即可。在CloudFormation的源阶段配置中设置PollForSourceChanges: false:

    Sources:
      - Name: MySourceRepo
        ActionTypeId:
          Category: Source
          Owner: AWS
          Provider: CodeCommit
          Version: '1'
        Configuration:
          RepositoryName: my-repository
          BranchName: main
          PollForSourceChanges: false
    

    这样Pipeline只会在你手动点击"Release change"时运行,自然不会自动触发CodeBuild。

  • 通过条件参数控制Build阶段的启用
    在CloudFormation模板中添加一个布尔类型的参数(比如EnableBuildAutoTrigger),默认设为false,然后用Condition判断是否将Build Action添加到Pipeline中。部署完成后,再更新参数为true或者手动添加Build阶段,实现手动触发的控制。
    示例条件配置:

    Parameters:
      EnableBuildAutoTrigger:
        Type: Boolean
        Default: false
    
    Conditions:
      ShouldAddBuildAction: !Equals [ !Ref EnableBuildAutoTrigger, true ]
    
    Resources:
      MyPipeline:
        Type: AWS::CodePipeline::Pipeline
        Properties:
          Stages:
            - Name: BuildStage
              Actions:
                - !If
                  - ShouldAddBuildAction
                  - Name: MyBuildAction
                    ActionTypeId:
                      Category: Build
                      Owner: AWS
                      Provider: CodeBuild
                      Version: '1'
                    Configuration:
                      ProjectName: !Ref MyCodeBuildProject
                  - !Ref AWS::NoValue
    
  • 清空CodeBuild的触发规则
    在CloudFormation定义CodeBuild项目时,显式设置Triggers为空对象,确保没有额外的自动触发规则(虽然集成到CodePipeline时主要由Pipeline控制触发,但这个设置可以避免意外的自动触发):

    Resources:
      MyCodeBuildProject:
        Type: AWS::CodeBuild::Project
        Properties:
          # 其他项目配置(如环境、构建规范等)
          Triggers: {}
    

内容的提问来源于stack exchange,提问作者fgonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:20:46