如何在Terraform中配置可通过字符串键引用的for_each资源实例
Terraform字符串键引用资源实例解决方案
你当前给出的for_each配置本身已经支持通过字符串值作为键引用资源实例,无需额外添加其他配置:
- 当
for_each传入的是toset(字符串元素集合)时,生成的资源实例的索引键天然就是集合内的字符串值,直接写type.myspecialresource["some thing"]即可正常引用对应实例。 - 如果你目前只能通过数字下标引用实例,说明你实际的资源配置用的是
count参数而非for_each:count参数生成的资源实例默认采用数字下标索引,你只需要将count配置替换为你示例中的for_each = toset(["some thing", "some other thing"])即可。
注意:Terraform语法要求资源声明的左大括号
{需要紧跟在资源标识之后,不要单独换行,避免出现解析错误,正确的资源定义写法参考如下:
resource "type" "myspecialresource" { for_each = toset(["some thing", "some other thing"]) # 其他资源配置项 }
如果你后续需要为每个实例绑定额外的自定义属性,也可以将for_each的值替换为map类型,写法为for_each = { "some thing" = "自定义值1", "some other thing" = "自定义值2" },仍然可以通过字符串键引用实例,同时还能通过each.value获取对应实例的自定义属性值。
内容的提问来源于stack exchange,提问作者JᴀʏMᴇᴇ
相关产品推荐
相关产品推荐

