【问题标题】:error trying to create a list: expected type 'string', got unconvertible type '[]interface {}'尝试创建列表时出错:预期类型“字符串”,得到不可转换类型“[]interface {}”
【发布时间】:2019-04-18 21:51:50
【问题描述】:

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

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

但是,将结果应用于:

触发器(cluster_instance_ids):''预期类型'string',得到不可转换类型'[]interface {}'

有什么想法吗?

【问题讨论】:

  • 删除list 函数。如错误所述,它需要一个字符串。

标签: terraform


【解决方案1】:

null_resource 资源的triggers block 采用字符串映射(例如map[string]string{}),因为您的错误消息指出,当它尝试将cluster_instance_ids 的值作为字符串读取并失败时:

触发器(cluster_instance_ids):''预期类型'string',得到不可转换类型'[]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 将其转换为字符串。

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2021-09-18
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多