Terraform:我可以设置变量类型=任何字典/对象吗

Lew*_*wis 5 terraform

有没有办法允许任何类型的字典/对象作为输入变量?

我有一个使用 lambda 创建 cron 表达式的模块,并且我正在尝试添加一个变量来接受字典以传递到资源调用中。

我只想允许任何长度的字典。其中键和值的任何类型。

最初,我尝试过:

variable vars {
  type = object
}
Run Code Online (Sandbox Code Playgroud)

但这是不允许的。

现在我只是将类型设置为空,因此它会接受任何内容,但这似乎不是一个好的做法。

Mat*_*ard 5

理想情况下,这将是复杂类型map(any),以指定它必须是map嵌套any类型。但是,您声明:

我只想允许任何长度的字典。其中键和值的任何类型。

不幸的是,有一个规定,map(any)变量声明的类型必须在条目的所有值中具有一致的结构。map(any)因此,如果输入结构一致,您可以使用:

{ 
  "one" = { "a_key" = "a_value", "another_key" = "another_value" },
  "two" = { "a_key" = "value", "another_key" = "the_value" },
}
Run Code Online (Sandbox Code Playgroud)

然而,结构不一致:

{ 
  "one" = { "another_key" = "another_value" },
  "two" = { "a_key" = "value", "another_key" = 0 },
}
Run Code Online (Sandbox Code Playgroud)

会强制使用any限制最少的类型,并且您表示您不想要这种类型,但在这种情况下这是您唯一的选择。