如何使用Terraform启动已在AWS管理控制台手动关机的AWS实例
解决方法
首先明确:你在AWS控制台手动关闭实例的操作属于Terraform的状态漂移,默认情况下Terraform不会主动感知和修正实例的启停状态,除非你显式在配置中指定相关参数。
方案一:通过Terraform管控实例启停(推荐)
- 找到你项目中对应EC2实例的
aws_instance资源配置块,新增/修改两个参数:- 配置
running = true,明确要求Terraform确保该实例始终处于运行状态 - 可选配置
instance_initiated_shutdown_behavior = "stop",指定实例触发关机时默认执行停止操作而非终止
参考配置示例:
resource "aws_instance" "your_instance" { # 原有配置保持不变,比如ami、instance_type、vpc_security_group_ids等 ami = "ami-xxxxxx" instance_type = "t2.micro" # 新增以下配置 running = true instance_initiated_shutdown_behavior = "stop" } - 配置
- 在项目目录下执行
terraform plan,确认执行计划为更新实例运行状态,无资源销毁/重建操作 - 确认计划无误后执行
terraform apply,输入yes确认后Terraform会自动启动该已关机的实例。
方案二:不修改Terraform配置的临时处理
如果你只是临时要启动实例,不想让Terraform后续管控启停状态,直接通过AWS控制台或AWS CLI手动启动实例即可,只要你没有修改实例的核心配置参数,后续执行terraform apply不会覆盖启停状态。
注意:如果后续你不想让Terraform干涉实例的启停状态,把配置中的
running参数删除即可,Terraform将不再主动检测和修正实例的运行状态。
内容的提问来源于stack exchange,提问作者idiot one
相关产品推荐
相关产品推荐

