检索地图变量的子网 ID

Retrieve Subnet ids for map variables

我已创建子网作为可用区和 CIDR 块的映射变量,并且

variable "public_subnets_list" {
  type        = map(any)
  description = "Public Subnets"
  default = {
    "ap-south-1a" = "10.0.1.0/24"
    "ap-south-1b" = "10.0.2.0/24"
  }
}

这适用于使用以下代码在我的自定义 VPC 下创建子网

resource "aws_subnet" "public_subnet" {

  depends_on = [
    aws_vpc.terraform_vpc
  ]

  for_each          = tomap(var.public_subnets_list)
  availability_zone = each.key
  cidr_block        = each.value
  vpc_id            = aws_vpc.terraform_vpc.id

  tags = {
    Name = "Public_Subnet_${each.key}"
  }
}

如何从 aws_subnet.public_subnet[*]

获得的输出中检索和显示为各个 AZ 创建的子网 ID

在 Terraform documentation 中,splat 表达式不适用于使用 for_each 参数的资源。

要使用您的 Terraform 配置检索子网 ID 列表,您可以执行以下操作:

output "subnet_ids" {
  value = [for subnet in aws_subnet.public_subnet : subnet.id]
}