请求解析terraform-aws-vpc中aws_subnet资源的两个表达式
Terraform AWS VPC模块中aws_subnet资源的两个表达式解析
1. count 参数解析
表达式:
count = local.create_public_subnets && (!var.one_nat_gateway_per_az || local.len_public_subnets >= length(var.azs)) ? local.len_public_subnets : 0
这行代码用三元运算符控制公有子网的创建数量,逻辑如下:
- 只有同时满足两个前提,才会创建子网:
local.create_public_subnets为true(配置里开启了公有子网创建)- 满足二者其一:要么
var.one_nat_gateway_per_az为false(不需要每个可用区配NAT网关),要么公有子网数量local.len_public_subnets大于等于可用区列表var.azs的长度
- 满足条件时,创建
local.len_public_subnets个公有子网;不满足则不创建(count=0)
2. availability_zone 参数解析
表达式:
availability_zone = length(regexall("^[a-z]{2}-", element(var.azs, count.index))) > 0 ? element(var.azs, count.index) : null
这行代码用来验证并设置子网的可用区,逻辑如下:
- 先通过
element(var.azs, count.index)拿到当前子网对应的可用区值 - 用正则
^[a-z]{2}-匹配值的开头,判断是否符合AWS可用区的格式(比如us-east-1a开头的us-) - 如果匹配成功(结果长度大于0),就用这个可用区值;如果格式不对,就设为
null,让AWS自动分配可用区
内容的提问来源于stack exchange,提问作者meallhour
相关产品推荐
相关产品推荐

