Terraform中*.id的含义是什么?aws_subnet.private.*.id指代什么?
关于
aws_subnet.private.*.id的解释 核心含义
aws_subnet.private.*.id是Terraform的splat表达式(遍历语法),作用是提取所有由aws_subnet.private资源创建的子网实例的id属性,最终生成一个包含所有子网ID的列表。
结合你的代码拆解
资源集合的由来
你的aws_subnet.private资源块使用了count参数:count = length(split(",", var.cidrs))这意味着Terraform会根据
var.cidrs(逗号分隔的CIDR字符串)的分割结果数量,创建对应数量的私有子网。比如如果var.cidrs是"10.0.1.0/24,10.0.2.0/24",就会生成2个子网实例,对应aws_subnet.private[0]和aws_subnet.private[1]。splat表达式的作用
.*是Terraform的遍历运算符,用来遍历整个资源集合(这里就是count生成的多个子网实例),然后提取每个实例的id属性。最终输出结果
假设创建了2个子网,output "subnet_ids"的最终值会是类似这样的列表:[ "subnet-0a1b2c3d4e5f67890", "subnet-0a1b2c3d4e5f67891" ]
补充说明
如果后续你需要单独访问某个子网的ID,可以通过索引直接获取,比如aws_subnet.private[0].id就能拿到第一个子网的ID,而splat表达式是批量提取所有实例属性的快捷方式。
内容的提问来源于stack exchange,提问作者Jayleen
相关产品推荐
相关产品推荐

