You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform如何将列表字符串逐个传入list(string)类型资源参数

解决方法

首先先把你的变量定义更严谨些,显式指定类型为list(string):

variable "mywords" {
  type        = list(string)
  default     = ["simple","but","lovely"]
}

接下来分两种场景处理:

场景1:资源的words参数确实是list(string)类型

你当前的写法words = var.mywords本身就是正确的,因为该参数设计用来接收字符串列表。如果觉得“整个列表传入”不符合预期,可能是对参数的使用场景理解有误,这个参数本身就需要接收完整列表,无需拆分。

场景2:资源要求逐个传入字符串(比如用嵌套块定义)

如果资源要求的是通过多个独立的嵌套块来定义每个字符串(比如类似word { value = "xxx" }的结构),可以用Terraform的dynamic块遍历你的列表变量,自动生成每个块:

resource "provider_resource" "example" {
  dynamic "word" {
    for_each = var.mywords
    content {
      value = word.value
    }
  }
}

这里的word是动态块的名称,需要替换成你实际资源中对应的嵌套块名称,value也要替换成块中对应的参数名。

如果资源允许重复设置同名参数(这种情况比较少见,因为Terraform通常会覆盖重复参数),可以用for表达式展开,但这种写法本质和直接传var.mywords效果一致,只有当需要对每个元素做额外处理时才有用:

resource "provider_resource" "example" {
  words = [for w in var.mywords : w]
}

内容的提问来源于stack exchange,提问作者Ogasontop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:15:55