我需要迭代从JSON文件解析的块,以创建一个Map块。我有多个JSON文件,键和值都是动态的(可以从一个JSON更改到另一个)。
解析通过jsondecode()函数执行。
这是JSON中的代码块:
"tags": {
"repo": "ingestion",
"cluster": "big"
}
解析后我想要得到的应该是这样的:
tags {
repo = "ingestion"
cluster = "big"
}
感谢在我所熟悉的大多数现有Terraform提供程序中,标签映射的典型设计是将其作为期望映射值的参数,这意味着您可以直接使用任意表达式分配合适类型的值:
locals {
data = jsondecode(file("${path.module}/example.json"))
}
resource "example" "example" {
# ...
tags = local.data.tags
}
如果您使用的提供者认为tags
是一个嵌套对象(以块的形式呈现)而不是一个值,那么它需要声明它所期望的参数作为其模式的一部分,因此您需要分别为每个参数赋值:
tags {
repo = local.data.tags.repo
cluster = local.data.tags.cluster
}
这是一个相当不寻常的提供者配置设计,因为它需要提供者本身解决一组特定的标记名称,而不是让它们被你决定在你的配置。因此,我希望上面的第一个例子是可以工作的,但是为了完整性,我已经包括了第二个例子,因为你在你的问题中没有提到你正在使用哪个提供程序和来自该提供程序的哪个资源类型。