我可以为terraform中的资源设置名称空间或层次结构吗?还是将资源组合在一起?

我可以为terraform中的资源设置名称空间或层次结构吗?还是将资源组合在一起?,terraform,infrastructure-as-code,hcl,Terraform,Infrastructure As Code,Hcl,作为一个特殊的例子,我有一组子网,它们都用于同一件事,但分布在多个可用区域 我希望能够将它们作为一个列表引用,这样我就可以执行类似于aws\u subnet.myname[*].id的操作来获取该组子网的所有子网id 有什么方法可以这样做吗?没有专门用于分组资源的功能,但您可以使用命名的本地值自己进行分组: locals { subnets = flatten([aws_subnet.a, aws_subnet.b, aws_subnet.c]) } 这里的flatte调用是在设置了cou

作为一个特殊的例子,我有一组子网,它们都用于同一件事,但分布在多个可用区域

我希望能够将它们作为一个列表引用,这样我就可以执行类似于
aws\u subnet.myname[*].id
的操作来获取该组子网的所有子网id


有什么方法可以这样做吗?

没有专门用于分组资源的功能,但您可以使用命名的本地值自己进行分组:

locals {
  subnets = flatten([aws_subnet.a, aws_subnet.b, aws_subnet.c])
}
这里的
flatte
调用是在设置了
count
和未设置
count
的资源之间进行规范化,因为没有
count
的资源表达式只返回一个对象,而设置了
count
的资源表达式是一个实例序列

然后在配置的其他地方,在需要所有这些id的情况下,可以编写
local.subnets[*].id