You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据布尔条件创建n个AWS公有子网?配置仅生成1个的问题

问题解决:pubsubnet为true时创建3个AWS公有子网

问题原因

当前aws_subnet.public_subnets的count参数在满足条件时固定返回1,导致仅创建1个子网,而非根据var.cidr-subnets的列表长度生成对应数量的子网:

count = var.pubsubnet && length(var.cidr-subnets) != 0 ? 1 : 0

修复方案

将count的返回值改为length(var.cidr-subnets),这样当pubsubnet为true且cidr-subnets非空时,会根据列表长度创建对应数量的子网:

修改modules/vpc/vpc.tf中的aws_subnet.public_subnets资源配置:

resource "aws_subnet" "public_subnets" {
  count                   = var.pubsubnet && length(var.cidr-subnets) != 0 ? length(var.cidr-subnets) : 0
  vpc_id                  = aws_vpc.vaya-vpc.id
  cidr_block              = var.cidr-subnets[count.index]
  map_public_ip_on_launch = true
  availability_zone       = element(data.aws_availability_zones.available.names, count.index)

  tags = {
    Name = format("%s-%s", var.subnet_ids[count.index], var.env)
  }
}

额外验证

确保var.subnet_ids的长度与var.cidr-subnets一致(当前dev.tfvars中两者均为3个元素,符合要求),避免count.index越界报错。

内容的提问来源于stack exchange,提问作者Vamsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:35:26