Terraform配置NACL关联时如何同时获取公网和私网子网ID
你可以使用Terraform内置的concat()函数完成两个子网ID列表的拼接,直接替换原有subnet_ids的赋值逻辑即可,修改后的配置示例如下:
vpc_id = aws_vpc.vpc.id # 用concat拼接公网、私网子网ID列表 subnet_ids = concat(aws_subnet.public_subnet.*.id, aws_subnet.private_subnet.*.id) egress { protocol = "tcp" rule_no = 200 action = "allow" cidr_block = "10.3.0.0/18" from_port = 443 to_port = 443 }
补充说明
concat()是Terraform原生的列表拼接函数,支持拼接任意多个同类型的列表,返回合并后的新列表,完全兼容NACL资源的subnet_ids参数要求- 如果你是用
for_each而非count声明的公网/私网子网资源,需要先把资源集合转成值列表再用splat表达式,示例写法为concat(values(aws_subnet.public_subnet)[*].id, values(aws_subnet.private_subnet)[*].id)
内容的提问来源于stack exchange,提问作者crewy_stack
相关产品推荐
相关产品推荐

