我正在尝试创建一个ID列表,如下所示:
triggers = {
cluster_instance_ids = "${list(aws_instance.controller.id, aws_instance.gateway.id, join(",", aws_instance.workers.*.id))}"
}
但是,将结果应用于:
触发器(cluster_instance_ids):”预期类型为“字符串”,具有不可转换的类型为[[] interface {}'
有什么想法吗?
答案 0 :(得分:1)
null_resource
资源的triggers
block带有字符串映射(例如map[string]string{}
),因为您的错误消息在尝试读取cluster_instance_ids
的值时指出作为字符串,并失败:
触发器(cluster_instance_ids):”预期类型为“字符串”,具有不可转换的类型为[[] interface {}'
删除不必要的list
函数可以解决此问题,因为您剩下的是串联字符串:
triggers = {
cluster_instance_ids = "${aws_instance.controller.id, aws_instance.gateway.id, join(",", aws_instance.workers.*.id)}"
}
在您的情况下,当您考虑将其作为实例ID的列表时,triggers
块只是在寻找要更改的内容以知道它应该被触发,因此不会实际上很重要,因为数据类型是什么,所以字符串是最简单的选择。实际上,您在aws_instance.workers.*.id
中已经有了一个列表,您可以使用join
function将其转换为字符串。