如何在 Terraform 中的资源属性块上使用 `for_each`?

How to use `for_each` on resource attribute blocks in Terraform?

我正在尝试在 OCI 中为单个路由创建多个路由规则 table。但是,for_each 元参数仅适用于资源本身,不适用于相关属性。伪代码示例:

resource "oci_core_route_table" "example-rt" {
  compartment_id = oci_identity_compartment.example-compartment.id
  vcn_id         = oci_core_vcn.example-vcn.id

  route_rules {

    for_each = {
      # Route dest CIDR
      dest1      = var.dest1-cidr
      dest2      = var.dest2-cidr
      dest3      = var.dest3-cidr
    }

    network_entity_id = oci_core_internet_gateway.example-igw.id
    destination = each.value
    destination_type = "CIDR_BLOCK"
  }

我显然可以在 OCI 中指向并单击以创建这些规则,但我希望这可以通过 Terraform 完成。

谢谢。

您可以使用 dynamic block:

resource "oci_core_route_table" "example-rt" {
  compartment_id = oci_identity_compartment.example-compartment.id
  vcn_id         = oci_core_vcn.example-vcn.id

  dynamic "route_rules" {
    for_each = toset([var.dest1-cidr, var.dest2-cidr, var.dest3-cidr])

    content {
      network_entity_id = oci_core_internet_gateway.example-igw.id
      destination = route_rules.key
      destination_type = "CIDR_BLOCK"
    }
  }
}