如何为terraform destroy命令传入变量解决AWS Region报错问题
Terraform销毁指定AWS资源区域无效报错解决方案
报错原因
你的aws_region变量默认值为空,执行terraform destroy时如果未传入合法的区域参数,AWS Provider初始化时无法识别有效区域就会触发该错误。不存在destroy命令无法传入变量的限制,你只需要给destroy命令传入和apply时一致的变量参数即可。
可用解决方法
方法1:直接传入变量文件执行销毁
复用你apply时使用的JSON变量文件,执行命令:# 全量销毁所有资源 terraform destroy -var-file=<你的变量文件路径>.json # 销毁指定部分资源,后面加-target参数指定资源地址,可加多个 terraform destroy -var-file=<你的变量文件路径>.json -target=aws_xx.资源名1 -target=aws_xx.资源名2方法2:临时设置变量环境变量
不想传变量文件的话可以提前设置Terraform专属环境变量,再执行销毁:# Linux/macOS 终端 export TF_VAR_aws_region=<你实际使用的AWS区域,比如cn-north-1> # Windows cmd set TF_VAR_aws_region=<AWS区域> # Windows PowerShell $env:TF_VAR_aws_region="<AWS区域>" # 之后正常执行带target的destroy命令即可 terraform destroy -target=aws_xx.资源名方法3:生成销毁计划二次确认(更安全,避免误删)
先生成专门的销毁计划预览要删除的资源,确认无误后再执行销毁:# 生成销毁计划,指定变量文件和要销毁的目标资源 terraform plan -destroy -var-file=<你的变量文件路径>.json -target=aws_xx.资源名 -out=destroy.tfplan # 预览计划输出的资源列表确认无误后,执行计划完成销毁 terraform apply "destroy.tfplan"
内容的提问来源于stack exchange,提问作者Red Bottle
相关产品推荐
相关产品推荐

