AWS中的CodePipeline在从Terraform创建时自动触发



作为我的需求的一部分,我正在尝试从Terraform创建一个AWS CodePipeline,并在创建后手动触发CodePipeline。但不幸的是,一旦从Terraform 创建,CodePipeline就会自动触发

我正试图找到一种方法来阻止代码管道在从Terraform部署后立即自动触发。我试着做下面两种方法中的一种,但我没有找到任何与之相关的方法。

  1. 查找将自动触发器设置为false的任何参数
  2. 或者启用";DisableInboundStageTransitions";源和第一阶段之间。因此,即使源已经启动,管道阶段也不会运行

我看到";DisableInboundStageTransitions";在CloudFormation中可用,但在Terraform中不可用。

如果有人能让我知道,在Terraform中有可能做到以上几点,那就太好了?有什么变通方法可以达到同样的效果吗?

提前感谢。

您可以在terraform中使用local-execprovisioner来解决此问题,以便在创建管道后立即停止执行。terraform的用户还必须安装和配置awscli,并安装jq

resource "aws_codepipeline" "my_pipeline" {
name     = "my-deploy"
...etc...
provisioner "local-exec" {
command = <<EOT
aws codepipeline stop-pipeline-execution 
--pipeline-name ${aws_codepipeline.my_pipeline.name} 
--pipeline-execution-id $( 
aws codepipeline list-pipeline-executions 
--pipeline-name ${aws_codepipeline.my_pipeline.name} 
| jq -r '.pipelineExecutionSummaries[].pipelineExecutionId' 
)
EOT
}
}

上面的脚本是匆忙构建的,如果;

  • 没有可停止的执行
  • 有多个执行要停止
  • 有一个执行,但它的status不是InProgress
  • 停止执行失败

希望这能有所帮助!

DetectChanges属性可以在代码管道资源块中使用,它对我很有效。请确保提供true或false值。您可以在下面找到该属性的图像表示。

单击此处查看图像

相关内容

  • 没有找到相关文章

最新更新