1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. networkservices
  5. LbEdgeExtension
Google Cloud v9.7.0 published on Wednesday, Dec 24, 2025 by Pulumi
gcp logo
Google Cloud v9.7.0 published on Wednesday, Dec 24, 2025 by Pulumi

    LbEdgeExtension is a resource that lets the extension service influence the selection of backend services and Cloud CDN cache keys by modifying request headers.

    To get more information about LbEdgeExtension, see:

    Example Usage

    Network Services Lb Edge Extension Basic

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const defaultBackendService = new gcp.compute.BackendService("default", {
        name: "elb-backend-subnet",
        portName: "http",
        protocol: "HTTP",
        timeoutSec: 10,
        loadBalancingScheme: "EXTERNAL_MANAGED",
    });
    const defaultURLMap = new gcp.compute.URLMap("default", {
        name: "elb-url-map",
        description: "a description",
        defaultService: defaultBackendService.id,
        hostRules: [{
            hosts: ["mysite.com"],
            pathMatcher: "allpaths",
        }],
        pathMatchers: [{
            name: "allpaths",
            defaultService: defaultBackendService.id,
            pathRules: [{
                paths: ["/*"],
                service: defaultBackendService.id,
            }],
        }],
    });
    const defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy("default", {
        name: "elb-target-http-proxy",
        description: "a description",
        urlMap: defaultURLMap.id,
    });
    // forwarding rule
    const _default = new gcp.compute.GlobalForwardingRule("default", {
        name: "elb-forwarding-rule",
        target: defaultTargetHttpProxy.id,
        portRange: "80",
        loadBalancingScheme: "EXTERNAL_MANAGED",
        networkTier: "PREMIUM",
    });
    const wasm_plugin = new gcp.networkservices.WasmPlugin("wasm-plugin", {
        name: "elb-wasm-plugin-data",
        description: "my wasm plugin",
        mainVersionId: "v1",
        labels: {
            test_label: "test_value",
        },
        logConfig: {
            enable: true,
            sampleRate: 1,
            minLogLevel: "WARN",
        },
        versions: [{
            versionName: "v1",
            description: "v1 version of my wasm plugin",
            imageUri: "projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1",
            labels: {
                test_label: "test_value",
            },
        }],
    });
    const defaultLbEdgeExtension = new gcp.networkservices.LbEdgeExtension("default", {
        name: "elb-edge-ext",
        description: "my edge extension",
        location: "global",
        loadBalancingScheme: "EXTERNAL_MANAGED",
        forwardingRules: [_default.selfLink],
        extensionChains: [{
            name: "chain1",
            matchCondition: {
                celExpression: "request.host == 'example.com'",
            },
            extensions: [{
                name: "ext11",
                service: wasm_plugin.id,
                failOpen: false,
                supportedEvents: ["REQUEST_HEADERS"],
                forwardHeaders: ["custom-header"],
            }],
        }],
        labels: {
            foo: "bar",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default_backend_service = gcp.compute.BackendService("default",
        name="elb-backend-subnet",
        port_name="http",
        protocol="HTTP",
        timeout_sec=10,
        load_balancing_scheme="EXTERNAL_MANAGED")
    default_url_map = gcp.compute.URLMap("default",
        name="elb-url-map",
        description="a description",
        default_service=default_backend_service.id,
        host_rules=[{
            "hosts": ["mysite.com"],
            "path_matcher": "allpaths",
        }],
        path_matchers=[{
            "name": "allpaths",
            "default_service": default_backend_service.id,
            "path_rules": [{
                "paths": ["/*"],
                "service": default_backend_service.id,
            }],
        }])
    default_target_http_proxy = gcp.compute.TargetHttpProxy("default",
        name="elb-target-http-proxy",
        description="a description",
        url_map=default_url_map.id)
    # forwarding rule
    default = gcp.compute.GlobalForwardingRule("default",
        name="elb-forwarding-rule",
        target=default_target_http_proxy.id,
        port_range="80",
        load_balancing_scheme="EXTERNAL_MANAGED",
        network_tier="PREMIUM")
    wasm_plugin = gcp.networkservices.WasmPlugin("wasm-plugin",
        name="elb-wasm-plugin-data",
        description="my wasm plugin",
        main_version_id="v1",
        labels={
            "test_label": "test_value",
        },
        log_config={
            "enable": True,
            "sample_rate": 1,
            "min_log_level": "WARN",
        },
        versions=[{
            "version_name": "v1",
            "description": "v1 version of my wasm plugin",
            "image_uri": "projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1",
            "labels": {
                "test_label": "test_value",
            },
        }])
    default_lb_edge_extension = gcp.networkservices.LbEdgeExtension("default",
        name="elb-edge-ext",
        description="my edge extension",
        location="global",
        load_balancing_scheme="EXTERNAL_MANAGED",
        forwarding_rules=[default.self_link],
        extension_chains=[{
            "name": "chain1",
            "match_condition": {
                "cel_expression": "request.host == 'example.com'",
            },
            "extensions": [{
                "name": "ext11",
                "service": wasm_plugin.id,
                "fail_open": False,
                "supported_events": ["REQUEST_HEADERS"],
                "forward_headers": ["custom-header"],
            }],
        }],
        labels={
            "foo": "bar",
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/networkservices"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		defaultBackendService, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{
    			Name:                pulumi.String("elb-backend-subnet"),
    			PortName:            pulumi.String("http"),
    			Protocol:            pulumi.String("HTTP"),
    			TimeoutSec:          pulumi.Int(10),
    			LoadBalancingScheme: pulumi.String("EXTERNAL_MANAGED"),
    		})
    		if err != nil {
    			return err
    		}
    		defaultURLMap, err := compute.NewURLMap(ctx, "default", &compute.URLMapArgs{
    			Name:           pulumi.String("elb-url-map"),
    			Description:    pulumi.String("a description"),
    			DefaultService: defaultBackendService.ID(),
    			HostRules: compute.URLMapHostRuleArray{
    				&compute.URLMapHostRuleArgs{
    					Hosts: pulumi.StringArray{
    						pulumi.String("mysite.com"),
    					},
    					PathMatcher: pulumi.String("allpaths"),
    				},
    			},
    			PathMatchers: compute.URLMapPathMatcherArray{
    				&compute.URLMapPathMatcherArgs{
    					Name:           pulumi.String("allpaths"),
    					DefaultService: defaultBackendService.ID(),
    					PathRules: compute.URLMapPathMatcherPathRuleArray{
    						&compute.URLMapPathMatcherPathRuleArgs{
    							Paths: pulumi.StringArray{
    								pulumi.String("/*"),
    							},
    							Service: defaultBackendService.ID(),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		defaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, "default", &compute.TargetHttpProxyArgs{
    			Name:        pulumi.String("elb-target-http-proxy"),
    			Description: pulumi.String("a description"),
    			UrlMap:      defaultURLMap.ID(),
    		})
    		if err != nil {
    			return err
    		}
    		// forwarding rule
    		_default, err := compute.NewGlobalForwardingRule(ctx, "default", &compute.GlobalForwardingRuleArgs{
    			Name:                pulumi.String("elb-forwarding-rule"),
    			Target:              defaultTargetHttpProxy.ID(),
    			PortRange:           pulumi.String("80"),
    			LoadBalancingScheme: pulumi.String("EXTERNAL_MANAGED"),
    			NetworkTier:         pulumi.String("PREMIUM"),
    		})
    		if err != nil {
    			return err
    		}
    		wasm_plugin, err := networkservices.NewWasmPlugin(ctx, "wasm-plugin", &networkservices.WasmPluginArgs{
    			Name:          pulumi.String("elb-wasm-plugin-data"),
    			Description:   pulumi.String("my wasm plugin"),
    			MainVersionId: pulumi.String("v1"),
    			Labels: pulumi.StringMap{
    				"test_label": pulumi.String("test_value"),
    			},
    			LogConfig: &networkservices.WasmPluginLogConfigArgs{
    				Enable:      pulumi.Bool(true),
    				SampleRate:  pulumi.Float64(1),
    				MinLogLevel: pulumi.String("WARN"),
    			},
    			Versions: networkservices.WasmPluginVersionArray{
    				&networkservices.WasmPluginVersionArgs{
    					VersionName: pulumi.String("v1"),
    					Description: pulumi.String("v1 version of my wasm plugin"),
    					ImageUri:    pulumi.String("projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1"),
    					Labels: pulumi.StringMap{
    						"test_label": pulumi.String("test_value"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkservices.NewLbEdgeExtension(ctx, "default", &networkservices.LbEdgeExtensionArgs{
    			Name:                pulumi.String("elb-edge-ext"),
    			Description:         pulumi.String("my edge extension"),
    			Location:            pulumi.String("global"),
    			LoadBalancingScheme: pulumi.String("EXTERNAL_MANAGED"),
    			ForwardingRules: pulumi.StringArray{
    				_default.SelfLink,
    			},
    			ExtensionChains: networkservices.LbEdgeExtensionExtensionChainArray{
    				&networkservices.LbEdgeExtensionExtensionChainArgs{
    					Name: pulumi.String("chain1"),
    					MatchCondition: &networkservices.LbEdgeExtensionExtensionChainMatchConditionArgs{
    						CelExpression: pulumi.String("request.host == 'example.com'"),
    					},
    					Extensions: networkservices.LbEdgeExtensionExtensionChainExtensionArray{
    						&networkservices.LbEdgeExtensionExtensionChainExtensionArgs{
    							Name:     pulumi.String("ext11"),
    							Service:  wasm_plugin.ID(),
    							FailOpen: pulumi.Bool(false),
    							SupportedEvents: pulumi.StringArray{
    								pulumi.String("REQUEST_HEADERS"),
    							},
    							ForwardHeaders: pulumi.StringArray{
    								pulumi.String("custom-header"),
    							},
    						},
    					},
    				},
    			},
    			Labels: pulumi.StringMap{
    				"foo": pulumi.String("bar"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var defaultBackendService = new Gcp.Compute.BackendService("default", new()
        {
            Name = "elb-backend-subnet",
            PortName = "http",
            Protocol = "HTTP",
            TimeoutSec = 10,
            LoadBalancingScheme = "EXTERNAL_MANAGED",
        });
    
        var defaultURLMap = new Gcp.Compute.URLMap("default", new()
        {
            Name = "elb-url-map",
            Description = "a description",
            DefaultService = defaultBackendService.Id,
            HostRules = new[]
            {
                new Gcp.Compute.Inputs.URLMapHostRuleArgs
                {
                    Hosts = new[]
                    {
                        "mysite.com",
                    },
                    PathMatcher = "allpaths",
                },
            },
            PathMatchers = new[]
            {
                new Gcp.Compute.Inputs.URLMapPathMatcherArgs
                {
                    Name = "allpaths",
                    DefaultService = defaultBackendService.Id,
                    PathRules = new[]
                    {
                        new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs
                        {
                            Paths = new[]
                            {
                                "/*",
                            },
                            Service = defaultBackendService.Id,
                        },
                    },
                },
            },
        });
    
        var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy("default", new()
        {
            Name = "elb-target-http-proxy",
            Description = "a description",
            UrlMap = defaultURLMap.Id,
        });
    
        // forwarding rule
        var @default = new Gcp.Compute.GlobalForwardingRule("default", new()
        {
            Name = "elb-forwarding-rule",
            Target = defaultTargetHttpProxy.Id,
            PortRange = "80",
            LoadBalancingScheme = "EXTERNAL_MANAGED",
            NetworkTier = "PREMIUM",
        });
    
        var wasm_plugin = new Gcp.NetworkServices.WasmPlugin("wasm-plugin", new()
        {
            Name = "elb-wasm-plugin-data",
            Description = "my wasm plugin",
            MainVersionId = "v1",
            Labels = 
            {
                { "test_label", "test_value" },
            },
            LogConfig = new Gcp.NetworkServices.Inputs.WasmPluginLogConfigArgs
            {
                Enable = true,
                SampleRate = 1,
                MinLogLevel = "WARN",
            },
            Versions = new[]
            {
                new Gcp.NetworkServices.Inputs.WasmPluginVersionArgs
                {
                    VersionName = "v1",
                    Description = "v1 version of my wasm plugin",
                    ImageUri = "projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1",
                    Labels = 
                    {
                        { "test_label", "test_value" },
                    },
                },
            },
        });
    
        var defaultLbEdgeExtension = new Gcp.NetworkServices.LbEdgeExtension("default", new()
        {
            Name = "elb-edge-ext",
            Description = "my edge extension",
            Location = "global",
            LoadBalancingScheme = "EXTERNAL_MANAGED",
            ForwardingRules = new[]
            {
                @default.SelfLink,
            },
            ExtensionChains = new[]
            {
                new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainArgs
                {
                    Name = "chain1",
                    MatchCondition = new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainMatchConditionArgs
                    {
                        CelExpression = "request.host == 'example.com'",
                    },
                    Extensions = new[]
                    {
                        new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainExtensionArgs
                        {
                            Name = "ext11",
                            Service = wasm_plugin.Id,
                            FailOpen = false,
                            SupportedEvents = new[]
                            {
                                "REQUEST_HEADERS",
                            },
                            ForwardHeaders = new[]
                            {
                                "custom-header",
                            },
                        },
                    },
                },
            },
            Labels = 
            {
                { "foo", "bar" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.BackendService;
    import com.pulumi.gcp.compute.BackendServiceArgs;
    import com.pulumi.gcp.compute.URLMap;
    import com.pulumi.gcp.compute.URLMapArgs;
    import com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;
    import com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;
    import com.pulumi.gcp.compute.TargetHttpProxy;
    import com.pulumi.gcp.compute.TargetHttpProxyArgs;
    import com.pulumi.gcp.compute.GlobalForwardingRule;
    import com.pulumi.gcp.compute.GlobalForwardingRuleArgs;
    import com.pulumi.gcp.networkservices.WasmPlugin;
    import com.pulumi.gcp.networkservices.WasmPluginArgs;
    import com.pulumi.gcp.networkservices.inputs.WasmPluginLogConfigArgs;
    import com.pulumi.gcp.networkservices.inputs.WasmPluginVersionArgs;
    import com.pulumi.gcp.networkservices.LbEdgeExtension;
    import com.pulumi.gcp.networkservices.LbEdgeExtensionArgs;
    import com.pulumi.gcp.networkservices.inputs.LbEdgeExtensionExtensionChainArgs;
    import com.pulumi.gcp.networkservices.inputs.LbEdgeExtensionExtensionChainMatchConditionArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var defaultBackendService = new BackendService("defaultBackendService", BackendServiceArgs.builder()
                .name("elb-backend-subnet")
                .portName("http")
                .protocol("HTTP")
                .timeoutSec(10)
                .loadBalancingScheme("EXTERNAL_MANAGED")
                .build());
    
            var defaultURLMap = new URLMap("defaultURLMap", URLMapArgs.builder()
                .name("elb-url-map")
                .description("a description")
                .defaultService(defaultBackendService.id())
                .hostRules(URLMapHostRuleArgs.builder()
                    .hosts("mysite.com")
                    .pathMatcher("allpaths")
                    .build())
                .pathMatchers(URLMapPathMatcherArgs.builder()
                    .name("allpaths")
                    .defaultService(defaultBackendService.id())
                    .pathRules(URLMapPathMatcherPathRuleArgs.builder()
                        .paths("/*")
                        .service(defaultBackendService.id())
                        .build())
                    .build())
                .build());
    
            var defaultTargetHttpProxy = new TargetHttpProxy("defaultTargetHttpProxy", TargetHttpProxyArgs.builder()
                .name("elb-target-http-proxy")
                .description("a description")
                .urlMap(defaultURLMap.id())
                .build());
    
            // forwarding rule
            var default_ = new GlobalForwardingRule("default", GlobalForwardingRuleArgs.builder()
                .name("elb-forwarding-rule")
                .target(defaultTargetHttpProxy.id())
                .portRange("80")
                .loadBalancingScheme("EXTERNAL_MANAGED")
                .networkTier("PREMIUM")
                .build());
    
            var wasm_plugin = new WasmPlugin("wasm-plugin", WasmPluginArgs.builder()
                .name("elb-wasm-plugin-data")
                .description("my wasm plugin")
                .mainVersionId("v1")
                .labels(Map.of("test_label", "test_value"))
                .logConfig(WasmPluginLogConfigArgs.builder()
                    .enable(true)
                    .sampleRate(1.0)
                    .minLogLevel("WARN")
                    .build())
                .versions(WasmPluginVersionArgs.builder()
                    .versionName("v1")
                    .description("v1 version of my wasm plugin")
                    .imageUri("projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1")
                    .labels(Map.of("test_label", "test_value"))
                    .build())
                .build());
    
            var defaultLbEdgeExtension = new LbEdgeExtension("defaultLbEdgeExtension", LbEdgeExtensionArgs.builder()
                .name("elb-edge-ext")
                .description("my edge extension")
                .location("global")
                .loadBalancingScheme("EXTERNAL_MANAGED")
                .forwardingRules(default_.selfLink())
                .extensionChains(LbEdgeExtensionExtensionChainArgs.builder()
                    .name("chain1")
                    .matchCondition(LbEdgeExtensionExtensionChainMatchConditionArgs.builder()
                        .celExpression("request.host == 'example.com'")
                        .build())
                    .extensions(LbEdgeExtensionExtensionChainExtensionArgs.builder()
                        .name("ext11")
                        .service(wasm_plugin.id())
                        .failOpen(false)
                        .supportedEvents("REQUEST_HEADERS")
                        .forwardHeaders("custom-header")
                        .build())
                    .build())
                .labels(Map.of("foo", "bar"))
                .build());
    
        }
    }
    
    resources:
      # forwarding rule
      default:
        type: gcp:compute:GlobalForwardingRule
        properties:
          name: elb-forwarding-rule
          target: ${defaultTargetHttpProxy.id}
          portRange: '80'
          loadBalancingScheme: EXTERNAL_MANAGED
          networkTier: PREMIUM
      defaultTargetHttpProxy:
        type: gcp:compute:TargetHttpProxy
        name: default
        properties:
          name: elb-target-http-proxy
          description: a description
          urlMap: ${defaultURLMap.id}
      defaultURLMap:
        type: gcp:compute:URLMap
        name: default
        properties:
          name: elb-url-map
          description: a description
          defaultService: ${defaultBackendService.id}
          hostRules:
            - hosts:
                - mysite.com
              pathMatcher: allpaths
          pathMatchers:
            - name: allpaths
              defaultService: ${defaultBackendService.id}
              pathRules:
                - paths:
                    - /*
                  service: ${defaultBackendService.id}
      defaultBackendService:
        type: gcp:compute:BackendService
        name: default
        properties:
          name: elb-backend-subnet
          portName: http
          protocol: HTTP
          timeoutSec: 10
          loadBalancingScheme: EXTERNAL_MANAGED
      defaultLbEdgeExtension:
        type: gcp:networkservices:LbEdgeExtension
        name: default
        properties:
          name: elb-edge-ext
          description: my edge extension
          location: global
          loadBalancingScheme: EXTERNAL_MANAGED
          forwardingRules:
            - ${default.selfLink}
          extensionChains:
            - name: chain1
              matchCondition:
                celExpression: request.host == 'example.com'
              extensions:
                - name: ext11
                  service: ${["wasm-plugin"].id}
                  failOpen: false
                  supportedEvents:
                    - REQUEST_HEADERS
                  forwardHeaders:
                    - custom-header
          labels:
            foo: bar
      wasm-plugin:
        type: gcp:networkservices:WasmPlugin
        properties:
          name: elb-wasm-plugin-data
          description: my wasm plugin
          mainVersionId: v1
          labels:
            test_label: test_value
          logConfig:
            enable: true
            sampleRate: 1
            minLogLevel: WARN
          versions:
            - versionName: v1
              description: v1 version of my wasm plugin
              imageUri: projects/my-project-name/locations/us-central1/repositories/repository-standard/genericArtifacts/my-wasm-plugin:v1
              labels:
                test_label: test_value
    

    Create LbEdgeExtension Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new LbEdgeExtension(name: string, args: LbEdgeExtensionArgs, opts?: CustomResourceOptions);
    @overload
    def LbEdgeExtension(resource_name: str,
                        args: LbEdgeExtensionArgs,
                        opts: Optional[ResourceOptions] = None)
    
    @overload
    def LbEdgeExtension(resource_name: str,
                        opts: Optional[ResourceOptions] = None,
                        extension_chains: Optional[Sequence[LbEdgeExtensionExtensionChainArgs]] = None,
                        forwarding_rules: Optional[Sequence[str]] = None,
                        load_balancing_scheme: Optional[str] = None,
                        location: Optional[str] = None,
                        description: Optional[str] = None,
                        labels: Optional[Mapping[str, str]] = None,
                        name: Optional[str] = None,
                        project: Optional[str] = None)
    func NewLbEdgeExtension(ctx *Context, name string, args LbEdgeExtensionArgs, opts ...ResourceOption) (*LbEdgeExtension, error)
    public LbEdgeExtension(string name, LbEdgeExtensionArgs args, CustomResourceOptions? opts = null)
    public LbEdgeExtension(String name, LbEdgeExtensionArgs args)
    public LbEdgeExtension(String name, LbEdgeExtensionArgs args, CustomResourceOptions options)
    
    type: gcp:networkservices:LbEdgeExtension
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args LbEdgeExtensionArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args LbEdgeExtensionArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args LbEdgeExtensionArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args LbEdgeExtensionArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args LbEdgeExtensionArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var lbEdgeExtensionResource = new Gcp.NetworkServices.LbEdgeExtension("lbEdgeExtensionResource", new()
    {
        ExtensionChains = new[]
        {
            new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainArgs
            {
                Extensions = new[]
                {
                    new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainExtensionArgs
                    {
                        Name = "string",
                        Service = "string",
                        FailOpen = false,
                        ForwardHeaders = new[]
                        {
                            "string",
                        },
                        SupportedEvents = new[]
                        {
                            "string",
                        },
                    },
                },
                MatchCondition = new Gcp.NetworkServices.Inputs.LbEdgeExtensionExtensionChainMatchConditionArgs
                {
                    CelExpression = "string",
                },
                Name = "string",
            },
        },
        ForwardingRules = new[]
        {
            "string",
        },
        LoadBalancingScheme = "string",
        Location = "string",
        Description = "string",
        Labels = 
        {
            { "string", "string" },
        },
        Name = "string",
        Project = "string",
    });
    
    example, err := networkservices.NewLbEdgeExtension(ctx, "lbEdgeExtensionResource", &networkservices.LbEdgeExtensionArgs{
    	ExtensionChains: networkservices.LbEdgeExtensionExtensionChainArray{
    		&networkservices.LbEdgeExtensionExtensionChainArgs{
    			Extensions: networkservices.LbEdgeExtensionExtensionChainExtensionArray{
    				&networkservices.LbEdgeExtensionExtensionChainExtensionArgs{
    					Name:     pulumi.String("string"),
    					Service:  pulumi.String("string"),
    					FailOpen: pulumi.Bool(false),
    					ForwardHeaders: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					SupportedEvents: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    				},
    			},
    			MatchCondition: &networkservices.LbEdgeExtensionExtensionChainMatchConditionArgs{
    				CelExpression: pulumi.String("string"),
    			},
    			Name: pulumi.String("string"),
    		},
    	},
    	ForwardingRules: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	LoadBalancingScheme: pulumi.String("string"),
    	Location:            pulumi.String("string"),
    	Description:         pulumi.String("string"),
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Name:    pulumi.String("string"),
    	Project: pulumi.String("string"),
    })
    
    var lbEdgeExtensionResource = new LbEdgeExtension("lbEdgeExtensionResource", LbEdgeExtensionArgs.builder()
        .extensionChains(LbEdgeExtensionExtensionChainArgs.builder()
            .extensions(LbEdgeExtensionExtensionChainExtensionArgs.builder()
                .name("string")
                .service("string")
                .failOpen(false)
                .forwardHeaders("string")
                .supportedEvents("string")
                .build())
            .matchCondition(LbEdgeExtensionExtensionChainMatchConditionArgs.builder()
                .celExpression("string")
                .build())
            .name("string")
            .build())
        .forwardingRules("string")
        .loadBalancingScheme("string")
        .location("string")
        .description("string")
        .labels(Map.of("string", "string"))
        .name("string")
        .project("string")
        .build());
    
    lb_edge_extension_resource = gcp.networkservices.LbEdgeExtension("lbEdgeExtensionResource",
        extension_chains=[{
            "extensions": [{
                "name": "string",
                "service": "string",
                "fail_open": False,
                "forward_headers": ["string"],
                "supported_events": ["string"],
            }],
            "match_condition": {
                "cel_expression": "string",
            },
            "name": "string",
        }],
        forwarding_rules=["string"],
        load_balancing_scheme="string",
        location="string",
        description="string",
        labels={
            "string": "string",
        },
        name="string",
        project="string")
    
    const lbEdgeExtensionResource = new gcp.networkservices.LbEdgeExtension("lbEdgeExtensionResource", {
        extensionChains: [{
            extensions: [{
                name: "string",
                service: "string",
                failOpen: false,
                forwardHeaders: ["string"],
                supportedEvents: ["string"],
            }],
            matchCondition: {
                celExpression: "string",
            },
            name: "string",
        }],
        forwardingRules: ["string"],
        loadBalancingScheme: "string",
        location: "string",
        description: "string",
        labels: {
            string: "string",
        },
        name: "string",
        project: "string",
    });
    
    type: gcp:networkservices:LbEdgeExtension
    properties:
        description: string
        extensionChains:
            - extensions:
                - failOpen: false
                  forwardHeaders:
                    - string
                  name: string
                  service: string
                  supportedEvents:
                    - string
              matchCondition:
                celExpression: string
              name: string
        forwardingRules:
            - string
        labels:
            string: string
        loadBalancingScheme: string
        location: string
        name: string
        project: string
    

    LbEdgeExtension Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The LbEdgeExtension resource accepts the following input properties:

    ExtensionChains List<LbEdgeExtensionExtensionChain>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    ForwardingRules List<string>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    LoadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    Location string
    The location of the edge extension
    Description string
    A human-readable description of the resource.
    Labels Dictionary<string, string>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    Name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    ExtensionChains []LbEdgeExtensionExtensionChainArgs
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    ForwardingRules []string
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    LoadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    Location string
    The location of the edge extension
    Description string
    A human-readable description of the resource.
    Labels map[string]string
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    Name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    extensionChains List<LbEdgeExtensionExtensionChain>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules List<String>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    loadBalancingScheme String
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location String
    The location of the edge extension
    description String
    A human-readable description of the resource.
    labels Map<String,String>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    name String
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    extensionChains LbEdgeExtensionExtensionChain[]
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules string[]
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    loadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location string
    The location of the edge extension
    description string
    A human-readable description of the resource.
    labels {[key: string]: string}
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    extension_chains Sequence[LbEdgeExtensionExtensionChainArgs]
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwarding_rules Sequence[str]
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    load_balancing_scheme str
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location str
    The location of the edge extension
    description str
    A human-readable description of the resource.
    labels Mapping[str, str]
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    name str
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    extensionChains List<Property Map>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules List<String>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    loadBalancingScheme String
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location String
    The location of the edge extension
    description String
    A human-readable description of the resource.
    labels Map<String>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    name String
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the LbEdgeExtension resource produces the following output properties:

    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id string
    The provider-assigned unique ID for this managed resource.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id str
    The provider-assigned unique ID for this managed resource.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.

    Look up Existing LbEdgeExtension Resource

    Get an existing LbEdgeExtension resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: LbEdgeExtensionState, opts?: CustomResourceOptions): LbEdgeExtension
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            description: Optional[str] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            extension_chains: Optional[Sequence[LbEdgeExtensionExtensionChainArgs]] = None,
            forwarding_rules: Optional[Sequence[str]] = None,
            labels: Optional[Mapping[str, str]] = None,
            load_balancing_scheme: Optional[str] = None,
            location: Optional[str] = None,
            name: Optional[str] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None) -> LbEdgeExtension
    func GetLbEdgeExtension(ctx *Context, name string, id IDInput, state *LbEdgeExtensionState, opts ...ResourceOption) (*LbEdgeExtension, error)
    public static LbEdgeExtension Get(string name, Input<string> id, LbEdgeExtensionState? state, CustomResourceOptions? opts = null)
    public static LbEdgeExtension get(String name, Output<String> id, LbEdgeExtensionState state, CustomResourceOptions options)
    resources:  _:    type: gcp:networkservices:LbEdgeExtension    get:      id: ${id}
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    Description string
    A human-readable description of the resource.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    ExtensionChains List<LbEdgeExtensionExtensionChain>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    ForwardingRules List<string>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    Labels Dictionary<string, string>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    LoadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    Location string
    The location of the edge extension
    Name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Description string
    A human-readable description of the resource.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    ExtensionChains []LbEdgeExtensionExtensionChainArgs
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    ForwardingRules []string
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    Labels map[string]string
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    LoadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    Location string
    The location of the edge extension
    Name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    description String
    A human-readable description of the resource.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    extensionChains List<LbEdgeExtensionExtensionChain>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules List<String>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    labels Map<String,String>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    loadBalancingScheme String
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location String
    The location of the edge extension
    name String
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    description string
    A human-readable description of the resource.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    extensionChains LbEdgeExtensionExtensionChain[]
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules string[]
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    labels {[key: string]: string}
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    loadBalancingScheme string
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location string
    The location of the edge extension
    name string
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    description str
    A human-readable description of the resource.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    extension_chains Sequence[LbEdgeExtensionExtensionChainArgs]
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwarding_rules Sequence[str]
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    labels Mapping[str, str]
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    load_balancing_scheme str
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location str
    The location of the edge extension
    name str
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    description String
    A human-readable description of the resource.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    extensionChains List<Property Map>
    A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource. Structure is documented below.
    forwardingRules List<String>
    A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. Only one LbEdgeExtension resource can be associated with a forwarding rule.
    labels Map<String>
    Set of labels associated with the LbEdgeExtension resource. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    loadBalancingScheme String
    All forwarding rules referenced by this extension must share the same load balancing scheme. Possible values are: EXTERNAL_MANAGED.
    location String
    The location of the edge extension
    name String
    Name of the LbEdgeExtension resource in the following format: projects/{project}/locations/{location}/lbEdgeExtensions/{lbEdgeExtensions}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.

    Supporting Types

    LbEdgeExtensionExtensionChain, LbEdgeExtensionExtensionChainArgs

    Extensions List<LbEdgeExtensionExtensionChainExtension>
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    MatchCondition LbEdgeExtensionExtensionChainMatchCondition
    Conditions under which this chain is invoked for a request. Structure is documented below.
    Name string
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.
    Extensions []LbEdgeExtensionExtensionChainExtension
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    MatchCondition LbEdgeExtensionExtensionChainMatchCondition
    Conditions under which this chain is invoked for a request. Structure is documented below.
    Name string
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.
    extensions List<LbEdgeExtensionExtensionChainExtension>
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    matchCondition LbEdgeExtensionExtensionChainMatchCondition
    Conditions under which this chain is invoked for a request. Structure is documented below.
    name String
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.
    extensions LbEdgeExtensionExtensionChainExtension[]
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    matchCondition LbEdgeExtensionExtensionChainMatchCondition
    Conditions under which this chain is invoked for a request. Structure is documented below.
    name string
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.
    extensions Sequence[LbEdgeExtensionExtensionChainExtension]
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    match_condition LbEdgeExtensionExtensionChainMatchCondition
    Conditions under which this chain is invoked for a request. Structure is documented below.
    name str
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.
    extensions List<Property Map>
    A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain. Structure is documented below.
    matchCondition Property Map
    Conditions under which this chain is invoked for a request. Structure is documented below.
    name String
    The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last character must be a letter or a number.

    LbEdgeExtensionExtensionChainExtension, LbEdgeExtensionExtensionChainExtensionArgs

    Name string
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    Service string
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    FailOpen bool
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    ForwardHeaders List<string>
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    SupportedEvents List<string>
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.
    Name string
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    Service string
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    FailOpen bool
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    ForwardHeaders []string
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    SupportedEvents []string
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.
    name String
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    service String
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    failOpen Boolean
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    forwardHeaders List<String>
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    supportedEvents List<String>
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.
    name string
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    service string
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    failOpen boolean
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    forwardHeaders string[]
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    supportedEvents string[]
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.
    name str
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    service str
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    fail_open bool
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    forward_headers Sequence[str]
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    supported_events Sequence[str]
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.
    name String
    The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
    service String
    The reference to the service that runs the extension.

    • To configure a callout extension, service must be a fully-qualified reference to a backend service.
    • To configure a plugin extension, service must be a reference to a WasmPlugin resource.
    failOpen Boolean
    Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.
    forwardHeaders List<String>
    List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
    supportedEvents List<String>
    A set of events during request or response processing for which this extension is called. This field is required for the LbEdgeExtension resource and only supports the value REQUEST_HEADERS.

    LbEdgeExtensionExtensionChainMatchCondition, LbEdgeExtensionExtensionChainMatchConditionArgs

    CelExpression string
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
    CelExpression string
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
    celExpression String
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
    celExpression string
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
    cel_expression str
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
    celExpression String
    A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.

    Import

    LbEdgeExtension can be imported using any of these accepted formats:

    • projects/{{project}}/locations/{{location}}/lbEdgeExtensions/{{name}}

    • {{project}}/{{location}}/{{name}}

    • {{location}}/{{name}}

    When using the pulumi import command, LbEdgeExtension can be imported using one of the formats above. For example:

    $ pulumi import gcp:networkservices/lbEdgeExtension:LbEdgeExtension default projects/{{project}}/locations/{{location}}/lbEdgeExtensions/{{name}}
    
    $ pulumi import gcp:networkservices/lbEdgeExtension:LbEdgeExtension default {{project}}/{{location}}/{{name}}
    
    $ pulumi import gcp:networkservices/lbEdgeExtension:LbEdgeExtension default {{location}}/{{name}}
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Google Cloud (GCP) Classic pulumi/pulumi-gcp
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the google-beta Terraform Provider.
    gcp logo
    Google Cloud v9.7.0 published on Wednesday, Dec 24, 2025 by Pulumi
      Meet Neo: Your AI Platform Teammate