Terraform报错Unsupported attribute:module.net不存在vpcs属性
Terraform错误:Unsupported attribute 'vpcs' 修复方案
问题现象
调用gw模块时,Terraform报错module.net不存在vpcs属性,仅识别到cert_arn:
│ Error: Unsupported attribute │ │ on modules.tf line 47, in module "gw": │ 47: vpc_id = module.net.vpcs.inspire.id │ ├──────────────── │ │ module.net is object with 1 attribute "cert_arn" │ │ This object does not have an attribute named "vpcs".
根本原因
你的net模块output.tf中,所有输出的键值对使用了JSON语法的冒号(:),但Terraform的HCL语法要求用**等号(=)**定义键值对。这种语法错误导致Terraform无法解析vpcs、subnets、sg、dns这些输出,仅能识别语法正确的cert_arn。
修复步骤
修改net模块的output.tf,将所有冒号替换为等号,修正后的代码如下:
output "vpcs" { value = { inspire = aws_vpc.inspire } } output "subnets" { value = { public = [aws_subnet.public-a, aws_subnet.public-b] private = [aws_subnet.private-a, aws_subnet.private-b] } } output "sg" { value = { vpc_internal = aws_security_group.vpc_internal public_egress = aws_security_group.public_egress public_http_ingress = aws_security_group.public_http_ingress public_https_ingress = aws_security_group.public_https_ingress } } output "dns" { value = { private = aws_route53_zone.private public = aws_route53_zone.public } } output "cert_arn" { value = var.certify_domain ? aws_acm_certificate_validation.elb_cert[0].certificate_arn : "" }
额外验证
- 确认
net模块中已定义aws_subnet.public-a、aws_security_group.vpc_internal等输出依赖的资源,否则会触发新的报错。 - 执行
terraform init重新加载模块配置,再用terraform plan验证修复效果。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

