簡體   English   中英

如果我通過 CloudFormation 部署 AWS,有什么方法可以阻止 AWS 自動啟動 CodePipeline?

[英]Is there any way to stop AWS from starting CodePipeline automatically if I deploy it via CloudFormation?

如果您通過 CloudFormation 創建 CodePipeline。 它會自動啟動,這可能是個問題,因為管道可以重寫相同的堆棧...

有什么辦法可以禁用此行為嗎?

謝謝。

可悲的是,這似乎沒有辦法。 Docs明確指出新創建的管道立即開始運行:

現在您已經創建了管道,您可以在控制台中查看它。 管道在您創建后開始運行

初始運行將始終發生。 后續運行取決於您的源操作。 例如,如果您使用 CodeCommit 作為源,則可以禁用觸發管道的 CloudWatch 事件

因此,如果您想在項目中使用 CodePipeline,您必須對其進行設計,使其不會因立即啟動而導致任何問題。

根據 Marcin 的評論,您似乎可以采取兩種方法來限制管道的運行。

  1. Source階段之后直接創建禁用的 StageTransitionManual Approval階段。 這將阻止管道執行任何其他操作,除了獲取不會影響或無法重寫任何內容的源。

  2. 或者,如果您的源階段來自存儲庫,您可以通過禁用 cloudformation 模板中的PollForSourceChanges參數來選擇自己處理管道觸發器。

     Pipeline: Type: AWS::CodePipeline::Pipeline Properties: Name: *NAME* RoleArn: *IAMROLE* Stages: - Name: Source Actions: - Name: CodeCommitSourceAction RunOrder: 1 ActionTypeId: Category: Source Provider: CodeCommit Owner: AWS Version: '1' OutputArtifacts: - Name: Source Configuration: RepositoryName: *REPOSITORYNAME* BranchName: *BRANCH* PollForSourceChanges: "false" #prevents codepipeline polling repository for changes.

所以正確答案是...

  1. 在首次部署之前提交代碼
  2. 部署管道
  3. 讓代碼管道做它的事

99% 的情況下,它會比您的機器更快完成。

有同樣的問題,我不希望在創建管道時啟動管道(這是默認行為)。

我找到的最佳解決方案是:

  1. 創建一個 EventBridge 規則,該規則在創建管道時捕獲 pipelineExecution
  2. 從 lambda 觸發停止管道執行

規則如下所示:

{
  "source": ["aws.codepipeline"],
  "detail-type": ["CodePipeline Pipeline Execution State Change"],
  "detail": {
    "state": ["STARTED"],
    "execution-trigger": {
      "trigger-type": ["CreatePipeline"]
    }
  }
}

它工作正常

您可以禁止事件規則自動啟動您的管道。 轉到Amazon EventBridge ->規則並禁用通知 CodePipeline 的規則。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM