Terraform导入AWS安全组入站规则时出现“Unexpected extra operators after address”错误求助
Terraform导入AWS安全组入站规则时出现“Unexpected extra operators after address”错误求助
嗨,我来帮你搞定这个导入问题!你遇到的错误主要是因为shell环境对导入命令里的引号解析出了问题,导致Terraform没法正确识别带for_each的资源地址。
咱们来一步步解决:
首先,你要确保shell把完整的资源地址原封不动地传给Terraform。不同的shell(比如bash/zsh和PowerShell)处理引号的方式略有不同,给你几个可行的命令格式:
针对bash/zsh环境
- 用单引号包裹整个资源地址,这样内部的双引号就不会被shell解析:
terraform import 'cluster.aws_vpc_security_group_ingress_rule.eks_cluster_https["15.0.0.0/8"]' sgr-0bdc5cc08c70f13c3 - 或者转义资源地址里的双引号,让shell忽略它们:
terraform import cluster.aws_vpc_security_group_ingress_rule.eks_cluster_https[\"15.0.0.0/8\"] sgr-0bdc5cc08c70f13c3
针对PowerShell环境
- 同样可以用单引号包裹整个资源地址:
terraform import 'cluster.aws_vpc_security_group_ingress_rule.eks_cluster_https["15.0.0.0/8"]' sgr-0bdc5cc08c70f13c3 - 或者用双引号包裹地址,同时转义内部的双引号:
terraform import "cluster.aws_vpc_security_group_ingress_rule.eks_cluster_https[\"15.0.0.0/8\"]" sgr-0bdc5cc08c70f13c3
另一个简化尝试
如果你的CIDR块里没有空格或者特殊字符,还可以试试去掉地址里的引号,直接这样写:
terraform import cluster.aws_vpc_security_group_ingress_rule.eks_cluster_https[15.0.0.0/8] sgr-0bdc5cc08c70f13c3
Terraform通常能识别这种不带引号的字符串键。
本质问题就是shell会提前解析你输入的引号,导致Terraform收到的资源地址格式混乱,没法正确识别for_each对应的键。按照上面的格式调整后,应该就能顺利导入了。
备注:内容来源于stack exchange,提问作者pkout
相关产品推荐
相关产品推荐

