作为我的需求的一部分,我正在尝试从Terraform创建一个AWS CodePipeline,并在创建后手动触发CodePipeline。但不幸的是,一旦从Terraform 创建,CodePipeline就会自动触发
我正试图找到一种方法来阻止代码管道在从Terraform部署后立即自动触发。我试着做下面两种方法中的一种,但我没有找到任何与之相关的方法。
- 查找将自动触发器设置为false的任何参数
- 或者启用";DisableInboundStageTransitions";源和第一阶段之间。因此,即使源已经启动,管道阶段也不会运行
我看到";DisableInboundStageTransitions";在CloudFormation中可用,但在Terraform中不可用。
如果有人能让我知道,在Terraform中有可能做到以上几点,那就太好了?有什么变通方法可以达到同样的效果吗?
提前感谢。
您可以在terraform中使用local-exec
provisioner来解决此问题,以便在创建管道后立即停止执行。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值。您可以在下面找到该属性的图像表示。
单击此处查看图像