转换terraform HCL变量type=map(any)到JSON



我正试图将用HCL编写的地形变量转换为包含该变量的动态生成的tf.json文件,但我遇到了错误。

我要转换的HCL版本:

variable "accounts" {
type        = map(any)
default = {
acct1     = ["000000000001"]
acct2     = ["000000000002"]
}
}

我试过以下格式:

{
"variable": {
"accounts": {
"type": "map(any)",
"default": [
{ "acct1": "000000000001" },
{ "acct2": "000000000002"}
]
}
}
}

{
"variable": {
"accounts": {
"type": "map(any)",
"default": [
{
"acct1": ["000000000001"],
"acct2": ["000000000002"]
}
]
}
}
}

我得到以下错误:

│ Error: Invalid default value for variable
│ 
│   on accounts.tf.json line 6, in variable.accounts:
│    6:       "default": [
This default value is not compatible with the variable's type constraint: map of any single type required.

是否有工具可以将HCL转换为有效的.tf.json配置?或者我在这里的格式上遗漏了什么?

您为变量指定的类型是map(any),因此该变量的默认值也必须是map(any),而不能是list(map(list(string)))

{
"variable": {
"accounts": {
"type": "map(any)",
"default": {
"acct1": ["000000000001"],
"acct2": ["000000000002"]
}
}
}
}

这将分配一个默认值类型object(list(string))匹配相同的object(list(string))类型结构在你的HCL2,也将是指定的map(any)的子集。

您的默认值是一个映射列表,但它应该只有map:

"default": {
"acct1": "000000000001",
"acct2": "000000000002"
}

相关内容

  • 没有找到相关文章

最新更新