我对地形和学习有点陌生。我在我的varables.tf中定义了以下内容作为对象映射,这将允许我配置多个子网(目前只有1个子网):
variable "subnets" {
type = map(object({name=string, cidr=string, az=string, public=bool}))
default = {
"public_subnet" = {
name="public",
cidr="10.123.1.0/24",
az="us-east-1a",
public=true
}
}
在main.tf中,我有以下内容:
resource "aws_subnet" "subnets" {
for_each = var.subnets
vpc_id = aws_vpc.vpc.id
cidr_block = each.value.cidr
availability_zone = each.value.az
map_public_ip_on_launch = each.value.public
tags = {
Name = "${each.value.name}_subnet"
}
}
现在我的问题是,如何对aws_route_table_association和aws_instance进行编码,以使用可变映射中的特定子网?
通常情况下,如果我没有地图,我会这样做:
resource "aws_route_table_association" "public_rta" {
subnet_id = aws_subnet.subnet.id
route_table_id = aws_route_table.public_rt.id
}
在这种情况下,我不知道如何引用在循环中创建的子网id。