Skip to content

googleComputeForwardingRule

A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.

To get more information about ForwardingRule, see:

Example Usage - Internal Http Lb With Mig Backend

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeNetworkIlbNetwork = new google.computeNetwork.ComputeNetwork(
  this,
  "ilb_network",
  {
    auto_create_subnetworks: false,
    name: "l7-ilb-network",
    provider: "${google-beta}",
  }
);
const googleComputeRegionHealthCheckDefault =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(
    this,
    "default",
    {
      http_health_check: [
        {
          port_specification: "USE_SERVING_PORT",
        },
      ],
      name: "l7-ilb-hc",
      provider: "${google-beta}",
      region: "europe-west1",
    }
  );
const googleComputeSubnetworkIlbSubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "ilb_subnet", {
    ip_cidr_range: "10.0.1.0/24",
    name: "l7-ilb-subnet",
    network: googleComputeNetworkIlbNetwork.id,
    provider: "${google-beta}",
    region: "europe-west1",
  });
const googleComputeSubnetworkProxySubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "proxy_subnet", {
    ip_cidr_range: "10.0.0.0/24",
    name: "l7-ilb-proxy-subnet",
    network: googleComputeNetworkIlbNetwork.id,
    provider: "${google-beta}",
    purpose: "INTERNAL_HTTPS_LOAD_BALANCER",
    region: "europe-west1",
    role: "ACTIVE",
  });
new google.computeFirewall.ComputeFirewall(this, "fw-iap", {
  allow: [
    {
      protocol: "tcp",
    },
  ],
  direction: "INGRESS",
  name: "l7-ilb-fw-allow-iap-hc",
  network: googleComputeNetworkIlbNetwork.id,
  provider: "${google-beta}",
  source_ranges: ["130.211.0.0/22", "35.191.0.0/16", "35.235.240.0/20"],
});
new google.computeFirewall.ComputeFirewall(this, "fw-ilb-to-backends", {
  allow: [
    {
      ports: ["80", "443", "8080"],
      protocol: "tcp",
    },
  ],
  direction: "INGRESS",
  name: "l7-ilb-fw-allow-ilb-to-backends",
  network: googleComputeNetworkIlbNetwork.id,
  provider: "${google-beta}",
  source_ranges: ["10.0.0.0/24"],
  target_tags: ["http-server"],
});
new google.computeInstance.ComputeInstance(this, "vm-test", {
  boot_disk: [
    {
      initialize_params: [
        {
          image: "debian-cloud/debian-10",
        },
      ],
    },
  ],
  machine_type: "e2-small",
  name: "l7-ilb-test-vm",
  network_interface: [
    {
      network: googleComputeNetworkIlbNetwork.id,
      subnetwork: googleComputeSubnetworkIlbSubnet.id,
    },
  ],
  provider: "${google-beta}",
  zone: "europe-west1-b",
});
const googleComputeInstanceTemplateInstanceTemplate =
  new google.computeInstanceTemplate.ComputeInstanceTemplate(
    this,
    "instance_template",
    {
      disk: [
        {
          auto_delete: true,
          boot: true,
          source_image: "debian-cloud/debian-10",
        },
      ],
      machine_type: "e2-small",
      metadata: [
        {
          "startup-script":
            '#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")\nIP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")\nMETADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq \'del(.["startup-script"])\')\n\ncat <<EOF > /var/www/html/index.html\n<pre>\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n</pre>\nEOF\n',
        },
      ],
      name: "l7-ilb-mig-template",
      network_interface: [
        {
          access_config: [{}],
          network: googleComputeNetworkIlbNetwork.id,
          subnetwork: googleComputeSubnetworkIlbSubnet.id,
        },
      ],
      provider: "${google-beta}",
      tags: ["http-server"],
    }
  );
googleComputeInstanceTemplateInstanceTemplate.addOverride("lifecycle", [
  {
    create_before_destroy: true,
  },
]);
const googleComputeRegionInstanceGroupManagerMig =
  new google.computeRegionInstanceGroupManager.ComputeRegionInstanceGroupManager(
    this,
    "mig",
    {
      base_instance_name: "vm",
      name: "l7-ilb-mig1",
      provider: "${google-beta}",
      region: "europe-west1",
      target_size: 2,
      version: [
        {
          instance_template: googleComputeInstanceTemplateInstanceTemplate.id,
          name: "primary",
        },
      ],
    }
  );
const googleComputeRegionBackendServiceDefault =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "default_9",
    {
      backend: [
        {
          balancing_mode: "UTILIZATION",
          capacity_scaler: 1,
          group: googleComputeRegionInstanceGroupManagerMig.instanceGroup,
        },
      ],
      health_checks: [googleComputeRegionHealthCheckDefault.id],
      load_balancing_scheme: "INTERNAL_MANAGED",
      name: "l7-ilb-backend-subnet",
      protocol: "HTTP",
      provider: "${google-beta}",
      region: "europe-west1",
      timeout_sec: 10,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionBackendServiceDefault.overrideLogicalId("default");
const googleComputeRegionUrlMapDefault =
  new google.computeRegionUrlMap.ComputeRegionUrlMap(this, "default_10", {
    default_service: googleComputeRegionBackendServiceDefault.id,
    name: "l7-ilb-regional-url-map",
    provider: "${google-beta}",
    region: "europe-west1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionUrlMapDefault.overrideLogicalId("default");
const googleComputeRegionTargetHttpProxyDefault =
  new google.computeRegionTargetHttpProxy.ComputeRegionTargetHttpProxy(
    this,
    "default_11",
    {
      name: "l7-ilb-target-http-proxy",
      provider: "${google-beta}",
      region: "europe-west1",
      url_map: googleComputeRegionUrlMapDefault.id,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionTargetHttpProxyDefault.overrideLogicalId("default");
new google.computeForwardingRule.ComputeForwardingRule(
  this,
  "google_compute_forwarding_rule",
  {
    depends_on: [`\${${googleComputeSubnetworkProxySubnet.fqn}}`],
    ip_protocol: "TCP",
    load_balancing_scheme: "INTERNAL_MANAGED",
    name: "l7-ilb-forwarding-rule",
    network: googleComputeNetworkIlbNetwork.id,
    network_tier: "PREMIUM",
    port_range: "80",
    provider: "${google-beta}",
    region: "europe-west1",
    subnetwork: googleComputeSubnetworkIlbSubnet.id,
    target: googleComputeRegionTargetHttpProxyDefault.id,
  }
);

Example Usage - Internal Tcp Udp Lb With Mig Backend

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeNetworkIlbNetwork = new google.computeNetwork.ComputeNetwork(
  this,
  "ilb_network",
  {
    auto_create_subnetworks: false,
    name: "l4-ilb-network",
    provider: "${google-beta}",
  }
);
const googleComputeRegionHealthCheckDefault =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(
    this,
    "default",
    {
      http_health_check: [
        {
          port: "80",
        },
      ],
      name: "l4-ilb-hc",
      provider: "${google-beta}",
      region: "europe-west1",
    }
  );
const googleComputeSubnetworkIlbSubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "ilb_subnet", {
    ip_cidr_range: "10.0.1.0/24",
    name: "l4-ilb-subnet",
    network: googleComputeNetworkIlbNetwork.id,
    provider: "${google-beta}",
    region: "europe-west1",
  });
new google.computeFirewall.ComputeFirewall(this, "fw_hc", {
  allow: [
    {
      protocol: "tcp",
    },
  ],
  direction: "INGRESS",
  name: "l4-ilb-fw-allow-hc",
  network: googleComputeNetworkIlbNetwork.id,
  provider: "${google-beta}",
  source_ranges: ["130.211.0.0/22", "35.191.0.0/16", "35.235.240.0/20"],
  target_tags: ["allow-health-check"],
});
new google.computeFirewall.ComputeFirewall(this, "fw_ilb_ssh", {
  allow: [
    {
      ports: ["22"],
      protocol: "tcp",
    },
  ],
  direction: "INGRESS",
  name: "l4-ilb-fw-ssh",
  network: googleComputeNetworkIlbNetwork.id,
  provider: "${google-beta}",
  source_ranges: ["0.0.0.0/0"],
  target_tags: ["allow-ssh"],
});
new google.computeFirewall.ComputeFirewall(this, "fw_ilb_to_backends", {
  allow: [
    {
      protocol: "tcp",
    },
    {
      protocol: "udp",
    },
    {
      protocol: "icmp",
    },
  ],
  direction: "INGRESS",
  name: "l4-ilb-fw-allow-ilb-to-backends",
  network: googleComputeNetworkIlbNetwork.id,
  provider: "${google-beta}",
  source_ranges: ["10.0.1.0/24"],
});
new google.computeInstance.ComputeInstance(this, "vm_test", {
  boot_disk: [
    {
      initialize_params: [
        {
          image: "debian-cloud/debian-10",
        },
      ],
    },
  ],
  machine_type: "e2-small",
  name: "l4-ilb-test-vm",
  network_interface: [
    {
      network: googleComputeNetworkIlbNetwork.id,
      subnetwork: googleComputeSubnetworkIlbSubnet.id,
    },
  ],
  provider: "${google-beta}",
  zone: "europe-west1-b",
});
const googleComputeInstanceTemplateInstanceTemplate =
  new google.computeInstanceTemplate.ComputeInstanceTemplate(
    this,
    "instance_template",
    {
      disk: [
        {
          auto_delete: true,
          boot: true,
          source_image: "debian-cloud/debian-10",
        },
      ],
      machine_type: "e2-small",
      metadata: [
        {
          "startup-script":
            '#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")\nIP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")\nMETADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq \'del(.["startup-script"])\')\n\ncat <<EOF > /var/www/html/index.html\n<pre>\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n</pre>\nEOF\n',
        },
      ],
      name: "l4-ilb-mig-template",
      network_interface: [
        {
          access_config: [{}],
          network: googleComputeNetworkIlbNetwork.id,
          subnetwork: googleComputeSubnetworkIlbSubnet.id,
        },
      ],
      provider: "${google-beta}",
      tags: ["allow-ssh", "allow-health-check"],
    }
  );
googleComputeInstanceTemplateInstanceTemplate.addOverride("lifecycle", [
  {
    create_before_destroy: true,
  },
]);
const googleComputeRegionInstanceGroupManagerMig =
  new google.computeRegionInstanceGroupManager.ComputeRegionInstanceGroupManager(
    this,
    "mig",
    {
      base_instance_name: "vm",
      name: "l4-ilb-mig1",
      provider: "${google-beta}",
      region: "europe-west1",
      target_size: 2,
      version: [
        {
          instance_template: googleComputeInstanceTemplateInstanceTemplate.id,
          name: "primary",
        },
      ],
    }
  );
const googleComputeRegionBackendServiceDefault =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "default_9",
    {
      backend: [
        {
          balancing_mode: "CONNECTION",
          group: googleComputeRegionInstanceGroupManagerMig.instanceGroup,
        },
      ],
      health_checks: [googleComputeRegionHealthCheckDefault.id],
      load_balancing_scheme: "INTERNAL",
      name: "l4-ilb-backend-subnet",
      protocol: "TCP",
      provider: "${google-beta}",
      region: "europe-west1",
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionBackendServiceDefault.overrideLogicalId("default");
new google.computeForwardingRule.ComputeForwardingRule(
  this,
  "google_compute_forwarding_rule",
  {
    all_ports: true,
    allow_global_access: true,
    backend_service: googleComputeRegionBackendServiceDefault.id,
    ip_protocol: "TCP",
    load_balancing_scheme: "INTERNAL",
    name: "l4-ilb-forwarding-rule",
    network: googleComputeNetworkIlbNetwork.id,
    provider: "${google-beta}",
    region: "europe-west1",
    subnetwork: googleComputeSubnetworkIlbSubnet.id,
  }
);

Example Usage - Forwarding Rule Externallb

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeRegionHealthCheckHc =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(this, "hc", {
    check_interval_sec: 1,
    name: "check-website-backend",
    provider: "${google-beta}",
    region: "us-central1",
    tcp_health_check: [
      {
        port: "80",
      },
    ],
    timeout_sec: 1,
  });
const googleComputeRegionBackendServiceBackend =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "backend",
    {
      health_checks: [googleComputeRegionHealthCheckHc.id],
      load_balancing_scheme: "EXTERNAL",
      name: "website-backend",
      provider: "${google-beta}",
      region: "us-central1",
    }
  );
new google.computeForwardingRule.ComputeForwardingRule(this, "default", {
  backend_service: googleComputeRegionBackendServiceBackend.id,
  name: "website-forwarding-rule",
  port_range: 80,
  provider: "${google-beta}",
  region: "us-central1",
});

Example Usage - Forwarding Rule Global Internallb

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeHealthCheckHc =
  new google.computeHealthCheck.ComputeHealthCheck(this, "hc", {
    check_interval_sec: 1,
    name: "check-website-backend",
    tcp_health_check: [
      {
        port: "80",
      },
    ],
    timeout_sec: 1,
  });
const googleComputeNetworkDefault = new google.computeNetwork.ComputeNetwork(
  this,
  "default",
  {
    auto_create_subnetworks: false,
    name: "website-net",
  }
);
const googleComputeRegionBackendServiceBackend =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "backend",
    {
      health_checks: [googleComputeHealthCheckHc.id],
      name: "website-backend",
      region: "us-central1",
    }
  );
const googleComputeSubnetworkDefault =
  new google.computeSubnetwork.ComputeSubnetwork(this, "default_3", {
    ip_cidr_range: "10.0.0.0/16",
    name: "website-net",
    network: googleComputeNetworkDefault.id,
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeSubnetworkDefault.overrideLogicalId("default");
const googleComputeForwardingRuleDefault =
  new google.computeForwardingRule.ComputeForwardingRule(this, "default_4", {
    all_ports: true,
    allow_global_access: true,
    backend_service: googleComputeRegionBackendServiceBackend.id,
    load_balancing_scheme: "INTERNAL",
    name: "website-forwarding-rule",
    network: googleComputeNetworkDefault.name,
    region: "us-central1",
    subnetwork: googleComputeSubnetworkDefault.name,
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeForwardingRuleDefault.overrideLogicalId("default");

Example Usage - Forwarding Rule Basic

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeTargetPoolDefault =
  new google.computeTargetPool.ComputeTargetPool(this, "default", {
    name: "website-target-pool",
  });
const googleComputeForwardingRuleDefault =
  new google.computeForwardingRule.ComputeForwardingRule(this, "default_1", {
    name: "website-forwarding-rule",
    port_range: "80",
    target: googleComputeTargetPoolDefault.id,
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeForwardingRuleDefault.overrideLogicalId("default");

Example Usage - Forwarding Rule L3 Default

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeRegionHealthCheckHealthCheck =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(
    this,
    "health_check",
    {
      name: "health-check",
      provider: "${google-beta}",
      region: "us-central1",
      tcp_health_check: [
        {
          port: 80,
        },
      ],
    }
  );
const googleComputeRegionBackendServiceService =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "service",
    {
      health_checks: [googleComputeRegionHealthCheckHealthCheck.id],
      load_balancing_scheme: "EXTERNAL",
      name: "service",
      protocol: "UNSPECIFIED",
      provider: "${google-beta}",
      region: "us-central1",
    }
  );
new google.computeForwardingRule.ComputeForwardingRule(this, "fwd_rule", {
  all_ports: true,
  backend_service: googleComputeRegionBackendServiceService.id,
  ip_protocol: "L3_DEFAULT",
  name: "l3-forwarding-rule",
  provider: "${google-beta}",
});

Example Usage - Forwarding Rule Internallb

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeHealthCheckHc =
  new google.computeHealthCheck.ComputeHealthCheck(this, "hc", {
    check_interval_sec: 1,
    name: "check-website-backend",
    tcp_health_check: [
      {
        port: "80",
      },
    ],
    timeout_sec: 1,
  });
const googleComputeNetworkDefault = new google.computeNetwork.ComputeNetwork(
  this,
  "default",
  {
    auto_create_subnetworks: false,
    name: "website-net",
  }
);
const googleComputeRegionBackendServiceBackend =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "backend",
    {
      health_checks: [googleComputeHealthCheckHc.id],
      name: "website-backend",
      region: "us-central1",
    }
  );
const googleComputeSubnetworkDefault =
  new google.computeSubnetwork.ComputeSubnetwork(this, "default_3", {
    ip_cidr_range: "10.0.0.0/16",
    name: "website-net",
    network: googleComputeNetworkDefault.id,
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeSubnetworkDefault.overrideLogicalId("default");
const googleComputeForwardingRuleDefault =
  new google.computeForwardingRule.ComputeForwardingRule(this, "default_4", {
    all_ports: true,
    backend_service: googleComputeRegionBackendServiceBackend.id,
    load_balancing_scheme: "INTERNAL",
    name: "website-forwarding-rule",
    network: googleComputeNetworkDefault.name,
    region: "us-central1",
    subnetwork: googleComputeSubnetworkDefault.name,
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeForwardingRuleDefault.overrideLogicalId("default");

Example Usage - Forwarding Rule Http Lb

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeNetworkDefault = new google.computeNetwork.ComputeNetwork(
  this,
  "default",
  {
    auto_create_subnetworks: false,
    name: "website-net",
    provider: "${google-beta}",
    routing_mode: "REGIONAL",
  }
);
const googleComputeSubnetworkDefault =
  new google.computeSubnetwork.ComputeSubnetwork(this, "default_1", {
    ip_cidr_range: "10.1.2.0/24",
    name: "website-net-default",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeSubnetworkDefault.overrideLogicalId("default");
const googleComputeSubnetworkProxy =
  new google.computeSubnetwork.ComputeSubnetwork(this, "proxy", {
    ip_cidr_range: "10.129.0.0/26",
    name: "website-net-proxy",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    purpose: "INTERNAL_HTTPS_LOAD_BALANCER",
    region: "us-central1",
    role: "ACTIVE",
  });
const dataGoogleComputeImageDebianImage =
  new google.dataGoogleComputeImage.DataGoogleComputeImage(
    this,
    "debian_image",
    {
      family: "debian-11",
      project: "debian-cloud",
      provider: "${google-beta}",
    }
  );
const googleComputeFirewallFw1 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw1",
  {
    allow: [
      {
        protocol: "tcp",
      },
      {
        protocol: "udp",
      },
      {
        protocol: "icmp",
      },
    ],
    direction: "INGRESS",
    name: "website-fw-1",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["10.1.2.0/24"],
  }
);
const googleComputeFirewallFw2 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw2",
  {
    allow: [
      {
        ports: ["22"],
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw1.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-2",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["0.0.0.0/0"],
    target_tags: ["allow-ssh"],
  }
);
const googleComputeFirewallFw3 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw3",
  {
    allow: [
      {
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw2.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-3",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["130.211.0.0/22", "35.191.0.0/16"],
    target_tags: ["load-balanced-backend"],
  }
);
const googleComputeFirewallFw4 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw4",
  {
    allow: [
      {
        ports: ["80"],
        protocol: "tcp",
      },
      {
        ports: ["443"],
        protocol: "tcp",
      },
      {
        ports: ["8000"],
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw3.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-4",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["10.129.0.0/26"],
    target_tags: ["load-balanced-backend"],
  }
);
const googleComputeInstanceTemplateInstanceTemplate =
  new google.computeInstanceTemplate.ComputeInstanceTemplate(
    this,
    "instance_template",
    {
      disk: [
        {
          auto_delete: true,
          boot: true,
          source_image: dataGoogleComputeImageDebianImage.selfLink,
        },
      ],
      machine_type: "e2-medium",
      name: "template-website-backend",
      network_interface: [
        {
          network: googleComputeNetworkDefault.id,
          subnetwork: googleComputeSubnetworkDefault.id,
        },
      ],
      provider: "${google-beta}",
      tags: ["allow-ssh", "load-balanced-backend"],
    }
  );
const googleComputeRegionHealthCheckDefault =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(
    this,
    "default_9",
    {
      depends_on: [`\${${googleComputeFirewallFw4.fqn}}`],
      http_health_check: [
        {
          port_specification: "USE_SERVING_PORT",
        },
      ],
      name: "website-hc",
      provider: "${google-beta}",
      region: "us-central1",
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionHealthCheckDefault.overrideLogicalId("default");
const googleComputeRegionInstanceGroupManagerRigm =
  new google.computeRegionInstanceGroupManager.ComputeRegionInstanceGroupManager(
    this,
    "rigm",
    {
      base_instance_name: "internal-glb",
      name: "website-rigm",
      provider: "${google-beta}",
      region: "us-central1",
      target_size: 1,
      version: [
        {
          instance_template: googleComputeInstanceTemplateInstanceTemplate.id,
          name: "primary",
        },
      ],
    }
  );
const googleComputeRegionBackendServiceDefault =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "default_11",
    {
      backend: [
        {
          balancing_mode: "UTILIZATION",
          capacity_scaler: 1,
          group: googleComputeRegionInstanceGroupManagerRigm.instanceGroup,
        },
      ],
      health_checks: [googleComputeRegionHealthCheckDefault.id],
      load_balancing_scheme: "INTERNAL_MANAGED",
      name: "website-backend",
      protocol: "HTTP",
      provider: "${google-beta}",
      region: "us-central1",
      timeout_sec: 10,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionBackendServiceDefault.overrideLogicalId("default");
const googleComputeRegionUrlMapDefault =
  new google.computeRegionUrlMap.ComputeRegionUrlMap(this, "default_12", {
    default_service: googleComputeRegionBackendServiceDefault.id,
    name: "website-map",
    provider: "${google-beta}",
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionUrlMapDefault.overrideLogicalId("default");
const googleComputeRegionTargetHttpProxyDefault =
  new google.computeRegionTargetHttpProxy.ComputeRegionTargetHttpProxy(
    this,
    "default_13",
    {
      name: "website-proxy",
      provider: "${google-beta}",
      region: "us-central1",
      url_map: googleComputeRegionUrlMapDefault.id,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionTargetHttpProxyDefault.overrideLogicalId("default");
const googleComputeForwardingRuleDefault =
  new google.computeForwardingRule.ComputeForwardingRule(this, "default_14", {
    depends_on: [`\${${googleComputeSubnetworkProxy.fqn}}`],
    ip_protocol: "TCP",
    load_balancing_scheme: "INTERNAL_MANAGED",
    name: "website-forwarding-rule",
    network: googleComputeNetworkDefault.id,
    network_tier: "PREMIUM",
    port_range: "80",
    provider: "${google-beta}",
    region: "us-central1",
    subnetwork: googleComputeSubnetworkDefault.id,
    target: googleComputeRegionTargetHttpProxyDefault.id,
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeForwardingRuleDefault.overrideLogicalId("default");

Example Usage - Forwarding Rule Regional Http Xlb

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeAddressDefault = new google.computeAddress.ComputeAddress(
  this,
  "default",
  {
    name: "website-ip-1",
    network_tier: "STANDARD",
    provider: "${google-beta}",
    region: "us-central1",
  }
);
const googleComputeNetworkDefault = new google.computeNetwork.ComputeNetwork(
  this,
  "default_1",
  {
    auto_create_subnetworks: false,
    name: "website-net",
    provider: "${google-beta}",
    routing_mode: "REGIONAL",
  }
);
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeNetworkDefault.overrideLogicalId("default");
const googleComputeSubnetworkDefault =
  new google.computeSubnetwork.ComputeSubnetwork(this, "default_2", {
    ip_cidr_range: "10.1.2.0/24",
    name: "website-net-default",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeSubnetworkDefault.overrideLogicalId("default");
const googleComputeSubnetworkProxy =
  new google.computeSubnetwork.ComputeSubnetwork(this, "proxy", {
    ip_cidr_range: "10.129.0.0/26",
    name: "website-net-proxy",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    purpose: "REGIONAL_MANAGED_PROXY",
    region: "us-central1",
    role: "ACTIVE",
  });
const dataGoogleComputeImageDebianImage =
  new google.dataGoogleComputeImage.DataGoogleComputeImage(
    this,
    "debian_image",
    {
      family: "debian-11",
      project: "debian-cloud",
      provider: "${google-beta}",
    }
  );
const googleComputeFirewallFw1 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw1",
  {
    allow: [
      {
        protocol: "tcp",
      },
      {
        protocol: "udp",
      },
      {
        protocol: "icmp",
      },
    ],
    direction: "INGRESS",
    name: "website-fw-1",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["10.1.2.0/24"],
  }
);
const googleComputeFirewallFw2 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw2",
  {
    allow: [
      {
        ports: ["22"],
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw1.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-2",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["0.0.0.0/0"],
    target_tags: ["allow-ssh"],
  }
);
const googleComputeFirewallFw3 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw3",
  {
    allow: [
      {
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw2.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-3",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["130.211.0.0/22", "35.191.0.0/16"],
    target_tags: ["load-balanced-backend"],
  }
);
const googleComputeFirewallFw4 = new google.computeFirewall.ComputeFirewall(
  this,
  "fw4",
  {
    allow: [
      {
        ports: ["80"],
        protocol: "tcp",
      },
      {
        ports: ["443"],
        protocol: "tcp",
      },
      {
        ports: ["8000"],
        protocol: "tcp",
      },
    ],
    depends_on: [`\${${googleComputeFirewallFw3.fqn}}`],
    direction: "INGRESS",
    name: "website-fw-4",
    network: googleComputeNetworkDefault.id,
    provider: "${google-beta}",
    source_ranges: ["10.129.0.0/26"],
    target_tags: ["load-balanced-backend"],
  }
);
const googleComputeInstanceTemplateInstanceTemplate =
  new google.computeInstanceTemplate.ComputeInstanceTemplate(
    this,
    "instance_template",
    {
      disk: [
        {
          auto_delete: true,
          boot: true,
          source_image: dataGoogleComputeImageDebianImage.selfLink,
        },
      ],
      machine_type: "e2-medium",
      name: "template-website-backend",
      network_interface: [
        {
          network: googleComputeNetworkDefault.id,
          subnetwork: googleComputeSubnetworkDefault.id,
        },
      ],
      provider: "${google-beta}",
      tags: ["allow-ssh", "load-balanced-backend"],
    }
  );
const googleComputeRegionHealthCheckDefault =
  new google.computeRegionHealthCheck.ComputeRegionHealthCheck(
    this,
    "default_10",
    {
      depends_on: [`\${${googleComputeFirewallFw4.fqn}}`],
      http_health_check: [
        {
          port_specification: "USE_SERVING_PORT",
        },
      ],
      name: "website-hc",
      provider: "${google-beta}",
      region: "us-central1",
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionHealthCheckDefault.overrideLogicalId("default");
const googleComputeRegionInstanceGroupManagerRigm =
  new google.computeRegionInstanceGroupManager.ComputeRegionInstanceGroupManager(
    this,
    "rigm",
    {
      base_instance_name: "internal-glb",
      name: "website-rigm",
      provider: "${google-beta}",
      region: "us-central1",
      target_size: 1,
      version: [
        {
          instance_template: googleComputeInstanceTemplateInstanceTemplate.id,
          name: "primary",
        },
      ],
    }
  );
const googleComputeRegionBackendServiceDefault =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "default_12",
    {
      backend: [
        {
          balancing_mode: "UTILIZATION",
          capacity_scaler: 1,
          group: googleComputeRegionInstanceGroupManagerRigm.instanceGroup,
        },
      ],
      health_checks: [googleComputeRegionHealthCheckDefault.id],
      load_balancing_scheme: "EXTERNAL_MANAGED",
      name: "website-backend",
      protocol: "HTTP",
      provider: "${google-beta}",
      region: "us-central1",
      timeout_sec: 10,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionBackendServiceDefault.overrideLogicalId("default");
const googleComputeRegionUrlMapDefault =
  new google.computeRegionUrlMap.ComputeRegionUrlMap(this, "default_13", {
    default_service: googleComputeRegionBackendServiceDefault.id,
    name: "website-map",
    provider: "${google-beta}",
    region: "us-central1",
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionUrlMapDefault.overrideLogicalId("default");
const googleComputeRegionTargetHttpProxyDefault =
  new google.computeRegionTargetHttpProxy.ComputeRegionTargetHttpProxy(
    this,
    "default_14",
    {
      name: "website-proxy",
      provider: "${google-beta}",
      region: "us-central1",
      url_map: googleComputeRegionUrlMapDefault.id,
    }
  );
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeRegionTargetHttpProxyDefault.overrideLogicalId("default");
const googleComputeForwardingRuleDefault =
  new google.computeForwardingRule.ComputeForwardingRule(this, "default_15", {
    depends_on: [`\${${googleComputeSubnetworkProxy.fqn}}`],
    ip_address: googleComputeAddressDefault.id,
    ip_protocol: "TCP",
    load_balancing_scheme: "EXTERNAL_MANAGED",
    name: "website-forwarding-rule",
    network: googleComputeNetworkDefault.id,
    network_tier: "STANDARD",
    port_range: "80",
    provider: "${google-beta}",
    region: "us-central1",
    target: googleComputeRegionTargetHttpProxyDefault.id,
  });
/*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
googleComputeForwardingRuleDefault.overrideLogicalId("default");

Example Usage - Forwarding Rule VPC Psc

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as google from "./.gen/providers/google";
/*The following providers are missing schema information and might need manual adjustments to synthesize correctly: google.
For a more precise conversion please use the --provider flag in convert.*/
const googleComputeHealthCheckProducerServiceHealthCheck =
  new google.computeHealthCheck.ComputeHealthCheck(
    this,
    "producer_service_health_check",
    {
      check_interval_sec: 1,
      name: "producer-service-health-check",
      provider: "${google-beta}",
      tcp_health_check: [
        {
          port: "80",
        },
      ],
      timeout_sec: 1,
    }
  );
const googleComputeNetworkConsumerNet =
  new google.computeNetwork.ComputeNetwork(this, "consumer_net", {
    auto_create_subnetworks: false,
    name: "consumer-net",
    provider: "${google-beta}",
  });
const googleComputeNetworkProducerNet =
  new google.computeNetwork.ComputeNetwork(this, "producer_net", {
    auto_create_subnetworks: false,
    name: "producer-net",
    provider: "${google-beta}",
  });
const googleComputeRegionBackendServiceProducerServiceBackend =
  new google.computeRegionBackendService.ComputeRegionBackendService(
    this,
    "producer_service_backend",
    {
      health_checks: [googleComputeHealthCheckProducerServiceHealthCheck.id],
      name: "producer-service-backend",
      provider: "${google-beta}",
      region: "us-central1",
    }
  );
const googleComputeSubnetworkConsumerSubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "consumer_subnet", {
    ip_cidr_range: "10.0.0.0/16",
    name: "consumer-net",
    network: googleComputeNetworkConsumerNet.id,
    provider: "${google-beta}",
    region: "us-central1",
  });
const googleComputeSubnetworkProducerSubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "producer_subnet", {
    ip_cidr_range: "10.0.0.0/16",
    name: "producer-net",
    network: googleComputeNetworkProducerNet.id,
    provider: "${google-beta}",
    region: "us-central1",
  });
const googleComputeSubnetworkPscProducerSubnet =
  new google.computeSubnetwork.ComputeSubnetwork(this, "psc_producer_subnet", {
    ip_cidr_range: "10.1.0.0/16",
    name: "producer-psc-net",
    network: googleComputeNetworkProducerNet.id,
    provider: "${google-beta}",
    purpose: "PRIVATE_SERVICE_CONNECT",
    region: "us-central1",
  });
const googleComputeAddressConsumerAddress =
  new google.computeAddress.ComputeAddress(this, "consumer_address", {
    address_type: "INTERNAL",
    name: "website-ip-1",
    provider: "${google-beta}",
    region: "us-central1",
    subnetwork: googleComputeSubnetworkConsumerSubnet.id,
  });
const googleComputeForwardingRuleProducerTargetService =
  new google.computeForwardingRule.ComputeForwardingRule(
    this,
    "producer_target_service",
    {
      all_ports: true,
      backend_service:
        googleComputeRegionBackendServiceProducerServiceBackend.id,
      load_balancing_scheme: "INTERNAL",
      name: "producer-forwarding-rule",
      network: googleComputeNetworkProducerNet.name,
      provider: "${google-beta}",
      region: "us-central1",
      subnetwork: googleComputeSubnetworkProducerSubnet.name,
    }
  );
const googleComputeServiceAttachmentProducerServiceAttachment =
  new google.computeServiceAttachment.ComputeServiceAttachment(
    this,
    "producer_service_attachment",
    {
      connection_preference: "ACCEPT_AUTOMATIC",
      description: "A service attachment configured with Terraform",
      enable_proxy_protocol: true,
      name: "producer-service",
      nat_subnets: [googleComputeSubnetworkPscProducerSubnet.name],
      provider: "${google-beta}",
      region: "us-central1",
      target_service: googleComputeForwardingRuleProducerTargetService.id,
    }
  );
new google.computeForwardingRule.ComputeForwardingRule(this, "default", {
  ip_address: googleComputeAddressConsumerAddress.id,
  load_balancing_scheme: "",
  name: "psc-endpoint",
  network: googleComputeNetworkConsumerNet.name,
  provider: "${google-beta}",
  region: "us-central1",
  target: googleComputeServiceAttachmentProducerServiceAttachment.id,
});

Argument Reference

The following arguments are supported:

  • name - (Required) Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [aZ]([AZ09]*[aZ09])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.

  • isMirroringCollector - (Optional) Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.

  • description - (Optional) An optional description of this resource. Provide this property when you create the resource.

  • ipAddress - (Optional) The IP address that this forwarding rule serves. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the target that you specify in the forwarding rule. The loadBalancingScheme and the forwarding rule's target determine the type of IP address that you can use. For detailed information, refer to IP address specifications. An address can be specified either by a literal IP address or a reference to an existing Address resource. If you don't specify a reserved IP address, an ephemeral IP address is assigned. The value must be set to 0.0.0.0 when the target is a targetGrpcProxy that has validateForProxyless field set to true. For Private Service Connect forwarding rules that forward traffic to Google APIs, IP address must be provided.

  • ipProtocol - (Optional) The IP protocol to which this rule applies. When the load balancing scheme is INTERNAL, only TCP and UDP are valid. Possible values are tcp, udp, esp, ah, sctp, icmp, and l3Default.

  • backendService - (Optional) A BackendService to receive the matched traffic. This is used only for INTERNAL load balancing.

  • loadBalancingScheme - (Optional) This signifies what the ForwardingRule will be used for and can be EXTERNAL, EXTERNAL_MANAGED, INTERNAL, or INTERNAL_MANAGED. EXTERNAL is used for Classic Cloud VPN gateways, protocol forwarding to VMs from an external IP address, and HTTP(S), SSL Proxy, TCP Proxy, and Network TCP/UDP load balancers. INTERNAL is used for protocol forwarding to VMs from an internal IP address, and internal TCP/UDP load balancers. EXTERNAL_MANAGED is used for regional external HTTP(S) load balancers. INTERNAL_MANAGED is used for internal HTTP(S) load balancers. (Beta only) Note: This field must be set to "" if the target is an URI of a service attachment. Default value is external. Possible values are external, externalManaged, internal, and internalManaged.

  • network - (Optional) For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used. This field is only used for INTERNAL load balancing.

  • portRange - (Optional) This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance. Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges. Some types of forwarding target have constraints on the acceptable ports:

    • TargetHttpProxy: 80, 8080
    • TargetHttpsProxy: 443
    • TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222
    • TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222
    • TargetVpnGateway: 500, 4500
  • ports - (Optional) This field is used along with internal load balancing and network load balancer when the forwarding rule references a backend service and when protocol is not L3_DEFAULT. A single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. You can only use one of ports and portRange, or allPorts. The three are mutually exclusive. You may specify a maximum of up to 5 ports, which can be non-contiguous.

  • subnetwork - (Optional) The subnetwork that the load balanced IP should belong to for this Forwarding Rule. This field is only used for INTERNAL load balancing. If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.

  • target - (Optional) The URL of the target resource to receive the matched traffic. The target must live in the same region as the forwarding rule. The forwarded traffic must be of a type appropriate to the target object.

  • allowGlobalAccess - (Optional) If true, clients can access ILB from all regions. Otherwise only allows from the local region the ILB is located at.

  • labels - (Optional, Beta) Labels to apply to this forwarding rule. A list of key->value pairs.

  • allPorts - (Optional) This field can be used with internal load balancer or network load balancer when the forwarding rule references a backend service, or with the target field when it references a TargetInstance. Set this to true to allow packets addressed to any ports to be forwarded to the backends configured with this forwarding rule. This can be used when the protocol is TCP/UDP, and it must be set to true when the protocol is set to L3_DEFAULT. Cannot be set if port or portRange are set.

  • networkTier - (Optional) The networking tier used for configuring this address. If this field is not specified, it is assumed to be PREMIUM. Possible values are premium and standard.

  • serviceDirectoryRegistrations - (Optional) Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource. Structure is documented below.

  • serviceLabel - (Optional) An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [aZ]([AZ09]*[aZ09])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for INTERNAL load balancing.

  • region - (Optional) A reference to the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.

  • project - (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

The serviceDirectoryRegistrations block supports:

  • namespace - (Optional) Service Directory namespace to register the forwarding rule under.

  • service - (Optional) Service Directory service to register the forwarding rule under.

Attributes Reference

In addition to the arguments listed above, the following computed attributes are exported:

  • id - an identifier for the resource with format projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}

  • creationTimestamp - Creation timestamp in RFC3339 text format.

  • pscConnectionId - The PSC connection id of the PSC Forwarding Rule.

  • pscConnectionStatus - The PSC connection status of the PSC Forwarding Rule. Possible values: STATUS_UNSPECIFIED, PENDING, ACCEPTED, REJECTED, CLOSED

  • labelFingerprint - (Beta) The fingerprint used for optimistic locking of this resource. Used internally during updates.

  • serviceName - The internal fully qualified service name for this Forwarding Rule. This field is only used for INTERNAL load balancing.

  • selfLink - The URI of the created resource.

Timeouts

This resource provides the following Timeouts configuration options:

  • create - Default is 20 minutes.
  • update - Default is 20 minutes.
  • delete - Default is 20 minutes.

Import

ForwardingRule can be imported using any of these accepted formats:

$ terraform import google_compute_forwarding_rule.default projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}
$ terraform import google_compute_forwarding_rule.default {{project}}/{{region}}/{{name}}
$ terraform import google_compute_forwarding_rule.default {{region}}/{{name}}
$ terraform import google_compute_forwarding_rule.default {{name}}

User Project Overrides

This resource supports User Project Overrides.