如何连接 IP 集描述符

如何连接 IP 集描述符

在 Terraform 中为 AWS 提供商创建 时aws_waf_ipset,我有多个 IP 地址列表,我想在创建 时将它们连接在一起aws_waf_rule。当我尝试在 中使用 时,concat出现错误:。data_idaws_waf_rule* aws_waf_rule.production_wafrule: predicates.0.data_id must be a single value, not a list

这对我来说很有意义,但是如果我不能直接连接它,我该如何最好地创建一个连接列表作为我可以在数据 ID 中引用的资源aws_waf_rule

下面是产生此错误的示例代码:

resource "aws_waf_rule" "production_wafrule" {
  name        = "production_WAF_rule"
  metric_name = "ProductionWAFRule"

  predicates {
    data_id =  "${concat(list(aws_waf_ipset.vpn_ipset.id),list(aws_waf_ipset.production_ipset.id))}"
    negated = false
    type    = "IPMatch"
  }
}

答案1

flatten()https://www.terraform.io/docs/configuration/functions/flatten.html) 可能就是您要找的东西。

未经测试,但类似这样的事情应该可以做到(请注意,该函数以单个列表作为输入;您将所有列表都放在其中)-

"${flatten([list(aws_waf_ipset.vpn_ipset.id),list(aws_waf_ipset.production_ipset.id)])}"

我相信setunion()https://www.terraform.io/docs/configuration/functions/setunion.html) 也适用于列表(并且会对任何重复的项目进行重复数据删除)。

相关内容