连接列表,设置为资源属性

时间:2019-05-20 18:53:01

标签: terraform

我试图合并两个列表,并将其设置为资源的属性,但出现错误。这是最小复制:

  network_configuration {
    security_groups = "${concat([module.service_base.allow_lb_access_sg], [module.service_base.intraservice_communication_sg])}"
  }

我收到一个超级无用的错误

  

错误:加载模块时出错:模块load_balanced_service:加载.terraform / modules / 188cf031fdce92d75131be4747cedad9 / XXX.tf:读取aws_ecs_service [ecs_service]的配置时出错:在1:10解析错误:预期的表达式,但找到了“ [“

它声明第1行,但如果删除了security_groups行,则一切正常。

1 个答案:

答案 0 :(得分:0)

好的,因此文档非常不清楚。我解决这个问题的方法是

security_groups = ["${concat(list(module.service_base.allow_lb_access_sg), list(module.service_base.intraservice_communication_sg))}"]

请注意,list功能是强制性的。如果您使用[],它仍然会中断。

但是,如果您输入的内容之一是列表,则您不想将其放在list中,因为那样的话它就是包含您的列表的列表,例如你想要

security_groups = ["${concat(list(module.service_base.allow_lb_access_sg), var.my_list_type_variable)}"]

进一步阅读:https://github.com/hashicorp/terraform/issues/6657