Terraform 尝试创建列表时出错:应为类型';字符串';,获取了无法转换的类型';[]接口{}';

Terraform 尝试创建列表时出错:应为类型';字符串';,获取了无法转换的类型';[]接口{}';,terraform,Terraform,我正在尝试创建一个ID列表,如下所示: triggers = { cluster_instance_ids = "${list(aws_instance.controller.id, aws_instance.gateway.id, join(",", aws_instance.workers.*.id))}" } 然而,在以下方面应用结果: 触发器(群集\u实例\u ID):“”应为类型“string”,但获得了不可转换的类型“[]接口{}” 有什么想法吗?当null\u资源的试图将cl

我正在尝试创建一个ID列表,如下所示:

triggers = {
  cluster_instance_ids = "${list(aws_instance.controller.id, aws_instance.gateway.id, join(",", aws_instance.workers.*.id))}"
}
然而,在以下方面应用结果:

触发器(群集\u实例\u ID):“”应为类型“string”,但获得了不可转换的类型“[]接口{}”

有什么想法吗?

null\u资源的
试图将
cluster\u实例id的值作为字符串读取时,它会按照错误消息指出的那样,获取字符串映射(例如
map[string]string{}
),并失败:

触发器(群集\u实例\u ID):“”应为类型“string”,但获得了不可转换的类型“[]接口{}”

删除不必要的
list
函数应该可以解决这个问题,因为您只剩下一个串联字符串:

triggers = {
  cluster_instance_ids = "${aws_instance.controller.id, aws_instance.gateway.id, join(",", aws_instance.workers.*.id)}"
}

在您的例子中,当您认为它是一个实例ID列表时,
triggers
块只是在寻找要更改的内容,以便知道它应该被触发,因此实际上与数据类型无关,因此字符串是最简单的选项。事实上,您的
aws\u实例.workers.*.id
中已经有一个列表,您可以使用.

删除
list
函数将其转换为字符串。正如错误所提到的,它需要一个字符串。