Terragrunt或Terraform在变量中定义具有未知数量的键/值的对象

Terragrunt或Terraform在变量中定义具有未知数量的键/值的对象,terraform,hcl,terragrunt,Terraform,Hcl,Terragrunt,我有一个要用模块创建的对象(bucket)列表 bucket=[ { name=“我的桶”, 地点=“欧盟” 存储\u class=“标准” 强制销毁=错误 版本控制=真 统一存储桶级别访问=错误 public_bucket=true 标签={ “应用程序”=“我的应用程序” } 有些字段是必需的,(比如名称和位置),有些不是,如果这里没有提供,我在参考资料中给了它们默认值;-完整的模块和所有内容都是可操作的,但是它在变量中没有定义“type”,所以它只需要所有内容,但我的问题是如何在变量块中

我有一个要用模块创建的对象(bucket)列表

bucket=[
{
name=“我的桶”,
地点=“欧盟”
存储\u class=“标准”
强制销毁=错误
版本控制=真
统一存储桶级别访问=错误
public_bucket=true
标签={
“应用程序”=“我的应用程序”
}
有些字段是必需的,(比如名称和位置),有些不是,如果这里没有提供,我在参考资料中给了它们默认值;-完整的模块和所有内容都是可操作的,但是它在变量中没有定义“type”,所以它只需要所有内容,但我的问题是如何在
变量
块中定义该对象

变量“bucket”{
#type=list(object())#?
类型=设置(对象)({
名称=字符串
位置=字符串
存储类=字符串
强制销毁=布尔值
版本控制=布尔值
统一存储桶级别访问=布尔值
public_bucket=boolean
标签=对象({
字符串=字符串#?
})
}))
}
具有可选字段的对象和对象的外观如何


这似乎还不太可能。

当你在这里的时候,我可以问另一个关于terraform的问题吗?我正在向我的模块传递一个类似上面的对象列表,并且所有的都工作了,但是当我将代码迁移到terragrunt时,我开始收到错误,说我的列表实际上是一个字符串,我不确定应该映射这个stringA值类型字符串的集合不能用作“for”表达式中的集合。使用tolist()我得到的“v”值无效参数:无法将字符串转换为任何单一类型的列表。知道如何将terragrunt映射此对象的字符串映射回此对象吗?这是版本0.14和启用此功能的实验功能吗?否则,这是不可能的。