1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. composer
  5. Environment
Viewing docs for Google Cloud v9.16.0
published on Thursday, Mar 19, 2026 by Pulumi
gcp logo
Viewing docs for Google Cloud v9.16.0
published on Thursday, Mar 19, 2026 by Pulumi

    An environment for running orchestration tasks.

    Environments run Apache Airflow software on Google infrastructure.

    To get more information about Environments, see:

    Note Cloud Composer 1 is in the post-maintenance mode. Google does not release any further updates to Cloud Composer 1, including new versions of Airflow, bugfixes, and security updates. We recommend using Cloud Composer 2 or Cloud Composer 3 instead.

    We STRONGLY recommend you read the GCP guides as the Environment resource requires a long deployment process and involves several layers of GCP infrastructure, including a Kubernetes Engine cluster, Cloud Storage, and Compute networking resources. Due to limitations of the API, Pulumi will not be able to find or manage many of these underlying resources automatically. In particular:

    • Creating or updating an environment resource can take up to one hour. In addition, GCP may only detect some errors in the configuration when they are used (e.g., ~40-50 minutes into the creation process), and is prone to limited error reporting. If you encounter confusing or uninformative errors, please verify your configuration is valid against GCP Cloud Composer before filing bugs against the provider.
    • Environments create Google Cloud Storage buckets that are not automatically cleaned up on environment deletion. More about Composer’s use of Cloud Storage.
    • Please review the known issues for Composer if you are having problems.***

    Example Usage

    Basic Usage (Cloud Composer 3)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-3-airflow-2",
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test = gcp.composer.Environment("test",
        name="example-composer-env",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-3-airflow-2",
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-3-airflow-2"),
    				},
    			},
    		})
    		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 test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-3-airflow-2",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    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 test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-3-airflow-2")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-3-airflow-2
    

    Basic Usage (Cloud Composer 2)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-2-airflow-2",
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test = gcp.composer.Environment("test",
        name="example-composer-env",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-2-airflow-2",
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-2-airflow-2"),
    				},
    			},
    		})
    		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 test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-2-airflow-2",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    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 test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-2-airflow-2")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-2-airflow-2
    

    Basic Usage (Cloud Composer 1)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-1-airflow-2",
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test = gcp.composer.Environment("test",
        name="example-composer-env",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-1-airflow-2",
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-1-airflow-2"),
    				},
    			},
    		})
    		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 test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-1-airflow-2",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    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 test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-1-airflow-2")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-1-airflow-2
    

    With GKE and Compute Resource Dependencies

    Note To use custom service accounts, you must give at least the role/composer.worker role to the service account of the Cloud Composer environment. For more information, see the Access Control page in the Cloud Composer documentation. You might need to assign additional roles depending on specific workflows that the Airflow DAGs will be running.

    GKE and Compute Resource Dependencies (Cloud Composer 3)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const testAccount = new gcp.serviceaccount.Account("test", {
        accountId: "composer-env-account",
        displayName: "Test Service Account for Composer Environment",
    });
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env-tf-c3",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-3-airflow-2",
            },
            workloadsConfig: {
                scheduler: {
                    cpu: 0.5,
                    memoryGb: 2,
                    storageGb: 1,
                    count: 1,
                },
                triggerer: {
                    cpu: 0.5,
                    memoryGb: 1,
                    count: 1,
                },
                dagProcessor: {
                    cpu: 1,
                    memoryGb: 2,
                    storageGb: 1,
                    count: 1,
                },
                webServer: {
                    cpu: 0.5,
                    memoryGb: 2,
                    storageGb: 1,
                },
                worker: {
                    cpu: 0.5,
                    memoryGb: 2,
                    storageGb: 1,
                    minCount: 1,
                    maxCount: 3,
                },
            },
            environmentSize: "ENVIRONMENT_SIZE_SMALL",
            nodeConfig: {
                serviceAccount: testAccount.name,
            },
        },
    });
    const composer_worker = new gcp.projects.IAMMember("composer-worker", {
        project: "your-project-id",
        role: "roles/composer.worker",
        member: pulumi.interpolate`serviceAccount:${testAccount.email}`,
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test_account = gcp.serviceaccount.Account("test",
        account_id="composer-env-account",
        display_name="Test Service Account for Composer Environment")
    test = gcp.composer.Environment("test",
        name="example-composer-env-tf-c3",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-3-airflow-2",
            },
            "workloads_config": {
                "scheduler": {
                    "cpu": 0.5,
                    "memory_gb": 2,
                    "storage_gb": 1,
                    "count": 1,
                },
                "triggerer": {
                    "cpu": 0.5,
                    "memory_gb": 1,
                    "count": 1,
                },
                "dag_processor": {
                    "cpu": 1,
                    "memory_gb": 2,
                    "storage_gb": 1,
                    "count": 1,
                },
                "web_server": {
                    "cpu": 0.5,
                    "memory_gb": 2,
                    "storage_gb": 1,
                },
                "worker": {
                    "cpu": 0.5,
                    "memory_gb": 2,
                    "storage_gb": 1,
                    "min_count": 1,
                    "max_count": 3,
                },
            },
            "environment_size": "ENVIRONMENT_SIZE_SMALL",
            "node_config": {
                "service_account": test_account.name,
            },
        })
    composer_worker = gcp.projects.IAMMember("composer-worker",
        project="your-project-id",
        role="roles/composer.worker",
        member=test_account.email.apply(lambda email: f"serviceAccount:{email}"))
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		testAccount, err := serviceaccount.NewAccount(ctx, "test", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("composer-env-account"),
    			DisplayName: pulumi.String("Test Service Account for Composer Environment"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env-tf-c3"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-3-airflow-2"),
    				},
    				WorkloadsConfig: &composer.EnvironmentConfigWorkloadsConfigArgs{
    					Scheduler: &composer.EnvironmentConfigWorkloadsConfigSchedulerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(2),
    						StorageGb: pulumi.Float64(1),
    						Count:     pulumi.Int(1),
    					},
    					Triggerer: &composer.EnvironmentConfigWorkloadsConfigTriggererArgs{
    						Cpu:      pulumi.Float64(0.5),
    						MemoryGb: pulumi.Float64(1),
    						Count:    pulumi.Int(1),
    					},
    					DagProcessor: &composer.EnvironmentConfigWorkloadsConfigDagProcessorArgs{
    						Cpu:       pulumi.Float64(1),
    						MemoryGb:  pulumi.Float64(2),
    						StorageGb: pulumi.Float64(1),
    						Count:     pulumi.Int(1),
    					},
    					WebServer: &composer.EnvironmentConfigWorkloadsConfigWebServerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(2),
    						StorageGb: pulumi.Float64(1),
    					},
    					Worker: &composer.EnvironmentConfigWorkloadsConfigWorkerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(2),
    						StorageGb: pulumi.Float64(1),
    						MinCount:  pulumi.Int(1),
    						MaxCount:  pulumi.Int(3),
    					},
    				},
    				EnvironmentSize: pulumi.String("ENVIRONMENT_SIZE_SMALL"),
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					ServiceAccount: testAccount.Name,
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = projects.NewIAMMember(ctx, "composer-worker", &projects.IAMMemberArgs{
    			Project: pulumi.String("your-project-id"),
    			Role:    pulumi.String("roles/composer.worker"),
    			Member: testAccount.Email.ApplyT(func(email string) (string, error) {
    				return fmt.Sprintf("serviceAccount:%v", email), nil
    			}).(pulumi.StringOutput),
    		})
    		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 testAccount = new Gcp.ServiceAccount.Account("test", new()
        {
            AccountId = "composer-env-account",
            DisplayName = "Test Service Account for Composer Environment",
        });
    
        var test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env-tf-c3",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-3-airflow-2",
                },
                WorkloadsConfig = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigArgs
                {
                    Scheduler = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigSchedulerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 2,
                        StorageGb = 1,
                        Count = 1,
                    },
                    Triggerer = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigTriggererArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 1,
                        Count = 1,
                    },
                    DagProcessor = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigDagProcessorArgs
                    {
                        Cpu = 1,
                        MemoryGb = 2,
                        StorageGb = 1,
                        Count = 1,
                    },
                    WebServer = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWebServerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 2,
                        StorageGb = 1,
                    },
                    Worker = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWorkerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 2,
                        StorageGb = 1,
                        MinCount = 1,
                        MaxCount = 3,
                    },
                },
                EnvironmentSize = "ENVIRONMENT_SIZE_SMALL",
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    ServiceAccount = testAccount.Name,
                },
            },
        });
    
        var composer_worker = new Gcp.Projects.IAMMember("composer-worker", new()
        {
            Project = "your-project-id",
            Role = "roles/composer.worker",
            Member = testAccount.Email.Apply(email => $"serviceAccount:{email}"),
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigSchedulerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigTriggererArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigDagProcessorArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigWebServerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigWorkerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    import com.pulumi.gcp.projects.IAMMember;
    import com.pulumi.gcp.projects.IAMMemberArgs;
    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 testAccount = new Account("testAccount", AccountArgs.builder()
                .accountId("composer-env-account")
                .displayName("Test Service Account for Composer Environment")
                .build());
    
            var test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env-tf-c3")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-3-airflow-2")
                        .build())
                    .workloadsConfig(EnvironmentConfigWorkloadsConfigArgs.builder()
                        .scheduler(EnvironmentConfigWorkloadsConfigSchedulerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(2.0)
                            .storageGb(1.0)
                            .count(1)
                            .build())
                        .triggerer(EnvironmentConfigWorkloadsConfigTriggererArgs.builder()
                            .cpu(0.5)
                            .memoryGb(1.0)
                            .count(1)
                            .build())
                        .dagProcessor(EnvironmentConfigWorkloadsConfigDagProcessorArgs.builder()
                            .cpu(1.0)
                            .memoryGb(2.0)
                            .storageGb(1.0)
                            .count(1)
                            .build())
                        .webServer(EnvironmentConfigWorkloadsConfigWebServerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(2.0)
                            .storageGb(1.0)
                            .build())
                        .worker(EnvironmentConfigWorkloadsConfigWorkerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(2.0)
                            .storageGb(1.0)
                            .minCount(1)
                            .maxCount(3)
                            .build())
                        .build())
                    .environmentSize("ENVIRONMENT_SIZE_SMALL")
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .serviceAccount(testAccount.name())
                        .build())
                    .build())
                .build());
    
            var composer_worker = new IAMMember("composer-worker", IAMMemberArgs.builder()
                .project("your-project-id")
                .role("roles/composer.worker")
                .member(testAccount.email().applyValue(_email -> String.format("serviceAccount:%s", _email)))
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env-tf-c3
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-3-airflow-2
            workloadsConfig:
              scheduler:
                cpu: 0.5
                memoryGb: 2
                storageGb: 1
                count: 1
              triggerer:
                cpu: 0.5
                memoryGb: 1
                count: 1
              dagProcessor:
                cpu: 1
                memoryGb: 2
                storageGb: 1
                count: 1
              webServer:
                cpu: 0.5
                memoryGb: 2
                storageGb: 1
              worker:
                cpu: 0.5
                memoryGb: 2
                storageGb: 1
                minCount: 1
                maxCount: 3
            environmentSize: ENVIRONMENT_SIZE_SMALL
            nodeConfig:
              serviceAccount: ${testAccount.name}
      testAccount:
        type: gcp:serviceaccount:Account
        name: test
        properties:
          accountId: composer-env-account
          displayName: Test Service Account for Composer Environment
      composer-worker:
        type: gcp:projects:IAMMember
        properties:
          project: your-project-id
          role: roles/composer.worker
          member: serviceAccount:${testAccount.email}
    

    GKE and Compute Resource Dependencies (Cloud Composer 2)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const testNetwork = new gcp.compute.Network("test", {
        name: "composer-test-network3",
        autoCreateSubnetworks: false,
    });
    const testSubnetwork = new gcp.compute.Subnetwork("test", {
        name: "composer-test-subnetwork",
        ipCidrRange: "10.2.0.0/16",
        region: "us-central1",
        network: testNetwork.id,
    });
    const testAccount = new gcp.serviceaccount.Account("test", {
        accountId: "composer-env-account",
        displayName: "Test Service Account for Composer Environment",
    });
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env-tf-c2",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-2-airflow-2",
            },
            workloadsConfig: {
                scheduler: {
                    cpu: 0.5,
                    memoryGb: 1.875,
                    storageGb: 1,
                    count: 1,
                },
                webServer: {
                    cpu: 0.5,
                    memoryGb: 1.875,
                    storageGb: 1,
                },
                worker: {
                    cpu: 0.5,
                    memoryGb: 1.875,
                    storageGb: 1,
                    minCount: 1,
                    maxCount: 3,
                },
            },
            environmentSize: "ENVIRONMENT_SIZE_SMALL",
            nodeConfig: {
                network: testNetwork.id,
                subnetwork: testSubnetwork.id,
                serviceAccount: testAccount.name,
            },
        },
    });
    const composer_worker = new gcp.projects.IAMMember("composer-worker", {
        project: "your-project-id",
        role: "roles/composer.worker",
        member: pulumi.interpolate`serviceAccount:${testAccount.email}`,
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test_network = gcp.compute.Network("test",
        name="composer-test-network3",
        auto_create_subnetworks=False)
    test_subnetwork = gcp.compute.Subnetwork("test",
        name="composer-test-subnetwork",
        ip_cidr_range="10.2.0.0/16",
        region="us-central1",
        network=test_network.id)
    test_account = gcp.serviceaccount.Account("test",
        account_id="composer-env-account",
        display_name="Test Service Account for Composer Environment")
    test = gcp.composer.Environment("test",
        name="example-composer-env-tf-c2",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-2-airflow-2",
            },
            "workloads_config": {
                "scheduler": {
                    "cpu": 0.5,
                    "memory_gb": 1.875,
                    "storage_gb": 1,
                    "count": 1,
                },
                "web_server": {
                    "cpu": 0.5,
                    "memory_gb": 1.875,
                    "storage_gb": 1,
                },
                "worker": {
                    "cpu": 0.5,
                    "memory_gb": 1.875,
                    "storage_gb": 1,
                    "min_count": 1,
                    "max_count": 3,
                },
            },
            "environment_size": "ENVIRONMENT_SIZE_SMALL",
            "node_config": {
                "network": test_network.id,
                "subnetwork": test_subnetwork.id,
                "service_account": test_account.name,
            },
        })
    composer_worker = gcp.projects.IAMMember("composer-worker",
        project="your-project-id",
        role="roles/composer.worker",
        member=test_account.email.apply(lambda email: f"serviceAccount:{email}"))
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		testNetwork, err := compute.NewNetwork(ctx, "test", &compute.NetworkArgs{
    			Name:                  pulumi.String("composer-test-network3"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		testSubnetwork, err := compute.NewSubnetwork(ctx, "test", &compute.SubnetworkArgs{
    			Name:        pulumi.String("composer-test-subnetwork"),
    			IpCidrRange: pulumi.String("10.2.0.0/16"),
    			Region:      pulumi.String("us-central1"),
    			Network:     testNetwork.ID(),
    		})
    		if err != nil {
    			return err
    		}
    		testAccount, err := serviceaccount.NewAccount(ctx, "test", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("composer-env-account"),
    			DisplayName: pulumi.String("Test Service Account for Composer Environment"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env-tf-c2"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-2-airflow-2"),
    				},
    				WorkloadsConfig: &composer.EnvironmentConfigWorkloadsConfigArgs{
    					Scheduler: &composer.EnvironmentConfigWorkloadsConfigSchedulerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(1.875),
    						StorageGb: pulumi.Float64(1),
    						Count:     pulumi.Int(1),
    					},
    					WebServer: &composer.EnvironmentConfigWorkloadsConfigWebServerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(1.875),
    						StorageGb: pulumi.Float64(1),
    					},
    					Worker: &composer.EnvironmentConfigWorkloadsConfigWorkerArgs{
    						Cpu:       pulumi.Float64(0.5),
    						MemoryGb:  pulumi.Float64(1.875),
    						StorageGb: pulumi.Float64(1),
    						MinCount:  pulumi.Int(1),
    						MaxCount:  pulumi.Int(3),
    					},
    				},
    				EnvironmentSize: pulumi.String("ENVIRONMENT_SIZE_SMALL"),
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					Network:        testNetwork.ID(),
    					Subnetwork:     testSubnetwork.ID(),
    					ServiceAccount: testAccount.Name,
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = projects.NewIAMMember(ctx, "composer-worker", &projects.IAMMemberArgs{
    			Project: pulumi.String("your-project-id"),
    			Role:    pulumi.String("roles/composer.worker"),
    			Member: testAccount.Email.ApplyT(func(email string) (string, error) {
    				return fmt.Sprintf("serviceAccount:%v", email), nil
    			}).(pulumi.StringOutput),
    		})
    		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 testNetwork = new Gcp.Compute.Network("test", new()
        {
            Name = "composer-test-network3",
            AutoCreateSubnetworks = false,
        });
    
        var testSubnetwork = new Gcp.Compute.Subnetwork("test", new()
        {
            Name = "composer-test-subnetwork",
            IpCidrRange = "10.2.0.0/16",
            Region = "us-central1",
            Network = testNetwork.Id,
        });
    
        var testAccount = new Gcp.ServiceAccount.Account("test", new()
        {
            AccountId = "composer-env-account",
            DisplayName = "Test Service Account for Composer Environment",
        });
    
        var test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env-tf-c2",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-2-airflow-2",
                },
                WorkloadsConfig = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigArgs
                {
                    Scheduler = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigSchedulerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 1.875,
                        StorageGb = 1,
                        Count = 1,
                    },
                    WebServer = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWebServerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 1.875,
                        StorageGb = 1,
                    },
                    Worker = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWorkerArgs
                    {
                        Cpu = 0.5,
                        MemoryGb = 1.875,
                        StorageGb = 1,
                        MinCount = 1,
                        MaxCount = 3,
                    },
                },
                EnvironmentSize = "ENVIRONMENT_SIZE_SMALL",
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    Network = testNetwork.Id,
                    Subnetwork = testSubnetwork.Id,
                    ServiceAccount = testAccount.Name,
                },
            },
        });
    
        var composer_worker = new Gcp.Projects.IAMMember("composer-worker", new()
        {
            Project = "your-project-id",
            Role = "roles/composer.worker",
            Member = testAccount.Email.Apply(email => $"serviceAccount:{email}"),
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigSchedulerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigWebServerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWorkloadsConfigWorkerArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    import com.pulumi.gcp.projects.IAMMember;
    import com.pulumi.gcp.projects.IAMMemberArgs;
    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 testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name("composer-test-network3")
                .autoCreateSubnetworks(false)
                .build());
    
            var testSubnetwork = new Subnetwork("testSubnetwork", SubnetworkArgs.builder()
                .name("composer-test-subnetwork")
                .ipCidrRange("10.2.0.0/16")
                .region("us-central1")
                .network(testNetwork.id())
                .build());
    
            var testAccount = new Account("testAccount", AccountArgs.builder()
                .accountId("composer-env-account")
                .displayName("Test Service Account for Composer Environment")
                .build());
    
            var test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env-tf-c2")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-2-airflow-2")
                        .build())
                    .workloadsConfig(EnvironmentConfigWorkloadsConfigArgs.builder()
                        .scheduler(EnvironmentConfigWorkloadsConfigSchedulerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(1.875)
                            .storageGb(1.0)
                            .count(1)
                            .build())
                        .webServer(EnvironmentConfigWorkloadsConfigWebServerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(1.875)
                            .storageGb(1.0)
                            .build())
                        .worker(EnvironmentConfigWorkloadsConfigWorkerArgs.builder()
                            .cpu(0.5)
                            .memoryGb(1.875)
                            .storageGb(1.0)
                            .minCount(1)
                            .maxCount(3)
                            .build())
                        .build())
                    .environmentSize("ENVIRONMENT_SIZE_SMALL")
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .network(testNetwork.id())
                        .subnetwork(testSubnetwork.id())
                        .serviceAccount(testAccount.name())
                        .build())
                    .build())
                .build());
    
            var composer_worker = new IAMMember("composer-worker", IAMMemberArgs.builder()
                .project("your-project-id")
                .role("roles/composer.worker")
                .member(testAccount.email().applyValue(_email -> String.format("serviceAccount:%s", _email)))
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env-tf-c2
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-2-airflow-2
            workloadsConfig:
              scheduler:
                cpu: 0.5
                memoryGb: 1.875
                storageGb: 1
                count: 1
              webServer:
                cpu: 0.5
                memoryGb: 1.875
                storageGb: 1
              worker:
                cpu: 0.5
                memoryGb: 1.875
                storageGb: 1
                minCount: 1
                maxCount: 3
            environmentSize: ENVIRONMENT_SIZE_SMALL
            nodeConfig:
              network: ${testNetwork.id}
              subnetwork: ${testSubnetwork.id}
              serviceAccount: ${testAccount.name}
      testNetwork:
        type: gcp:compute:Network
        name: test
        properties:
          name: composer-test-network3
          autoCreateSubnetworks: false
      testSubnetwork:
        type: gcp:compute:Subnetwork
        name: test
        properties:
          name: composer-test-subnetwork
          ipCidrRange: 10.2.0.0/16
          region: us-central1
          network: ${testNetwork.id}
      testAccount:
        type: gcp:serviceaccount:Account
        name: test
        properties:
          accountId: composer-env-account
          displayName: Test Service Account for Composer Environment
      composer-worker:
        type: gcp:projects:IAMMember
        properties:
          project: your-project-id
          role: roles/composer.worker
          member: serviceAccount:${testAccount.email}
    

    GKE and Compute Resource Dependencies (Cloud Composer 1)

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const testNetwork = new gcp.compute.Network("test", {
        name: "composer-test-network",
        autoCreateSubnetworks: false,
    });
    const testSubnetwork = new gcp.compute.Subnetwork("test", {
        name: "composer-test-subnetwork",
        ipCidrRange: "10.2.0.0/16",
        region: "us-central1",
        network: testNetwork.id,
    });
    const testAccount = new gcp.serviceaccount.Account("test", {
        accountId: "composer-env-account",
        displayName: "Test Service Account for Composer Environment",
    });
    const test = new gcp.composer.Environment("test", {
        name: "example-composer-env",
        region: "us-central1",
        config: {
            softwareConfig: {
                imageVersion: "composer-1-airflow-2",
            },
            nodeCount: 4,
            nodeConfig: {
                zone: "us-central1-a",
                machineType: "n1-standard-1",
                network: testNetwork.id,
                subnetwork: testSubnetwork.id,
                serviceAccount: testAccount.name,
            },
            databaseConfig: {
                machineType: "db-n1-standard-2",
            },
            webServerConfig: {
                machineType: "composer-n1-webserver-2",
            },
        },
    });
    const composer_worker = new gcp.projects.IAMMember("composer-worker", {
        role: "roles/composer.worker",
        member: pulumi.interpolate`serviceAccount:${testAccount.email}`,
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    test_network = gcp.compute.Network("test",
        name="composer-test-network",
        auto_create_subnetworks=False)
    test_subnetwork = gcp.compute.Subnetwork("test",
        name="composer-test-subnetwork",
        ip_cidr_range="10.2.0.0/16",
        region="us-central1",
        network=test_network.id)
    test_account = gcp.serviceaccount.Account("test",
        account_id="composer-env-account",
        display_name="Test Service Account for Composer Environment")
    test = gcp.composer.Environment("test",
        name="example-composer-env",
        region="us-central1",
        config={
            "software_config": {
                "image_version": "composer-1-airflow-2",
            },
            "node_count": 4,
            "node_config": {
                "zone": "us-central1-a",
                "machine_type": "n1-standard-1",
                "network": test_network.id,
                "subnetwork": test_subnetwork.id,
                "service_account": test_account.name,
            },
            "database_config": {
                "machine_type": "db-n1-standard-2",
            },
            "web_server_config": {
                "machine_type": "composer-n1-webserver-2",
            },
        })
    composer_worker = gcp.projects.IAMMember("composer-worker",
        role="roles/composer.worker",
        member=test_account.email.apply(lambda email: f"serviceAccount:{email}"))
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		testNetwork, err := compute.NewNetwork(ctx, "test", &compute.NetworkArgs{
    			Name:                  pulumi.String("composer-test-network"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		testSubnetwork, err := compute.NewSubnetwork(ctx, "test", &compute.SubnetworkArgs{
    			Name:        pulumi.String("composer-test-subnetwork"),
    			IpCidrRange: pulumi.String("10.2.0.0/16"),
    			Region:      pulumi.String("us-central1"),
    			Network:     testNetwork.ID(),
    		})
    		if err != nil {
    			return err
    		}
    		testAccount, err := serviceaccount.NewAccount(ctx, "test", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("composer-env-account"),
    			DisplayName: pulumi.String("Test Service Account for Composer Environment"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = composer.NewEnvironment(ctx, "test", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-composer-env"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    					ImageVersion: pulumi.String("composer-1-airflow-2"),
    				},
    				NodeCount: pulumi.Int(4),
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					Zone:           pulumi.String("us-central1-a"),
    					MachineType:    pulumi.String("n1-standard-1"),
    					Network:        testNetwork.ID(),
    					Subnetwork:     testSubnetwork.ID(),
    					ServiceAccount: testAccount.Name,
    				},
    				DatabaseConfig: &composer.EnvironmentConfigDatabaseConfigArgs{
    					MachineType: pulumi.String("db-n1-standard-2"),
    				},
    				WebServerConfig: &composer.EnvironmentConfigWebServerConfigArgs{
    					MachineType: pulumi.String("composer-n1-webserver-2"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = projects.NewIAMMember(ctx, "composer-worker", &projects.IAMMemberArgs{
    			Role: pulumi.String("roles/composer.worker"),
    			Member: testAccount.Email.ApplyT(func(email string) (string, error) {
    				return fmt.Sprintf("serviceAccount:%v", email), nil
    			}).(pulumi.StringOutput),
    		})
    		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 testNetwork = new Gcp.Compute.Network("test", new()
        {
            Name = "composer-test-network",
            AutoCreateSubnetworks = false,
        });
    
        var testSubnetwork = new Gcp.Compute.Subnetwork("test", new()
        {
            Name = "composer-test-subnetwork",
            IpCidrRange = "10.2.0.0/16",
            Region = "us-central1",
            Network = testNetwork.Id,
        });
    
        var testAccount = new Gcp.ServiceAccount.Account("test", new()
        {
            AccountId = "composer-env-account",
            DisplayName = "Test Service Account for Composer Environment",
        });
    
        var test = new Gcp.Composer.Environment("test", new()
        {
            Name = "example-composer-env",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
                {
                    ImageVersion = "composer-1-airflow-2",
                },
                NodeCount = 4,
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    Zone = "us-central1-a",
                    MachineType = "n1-standard-1",
                    Network = testNetwork.Id,
                    Subnetwork = testSubnetwork.Id,
                    ServiceAccount = testAccount.Name,
                },
                DatabaseConfig = new Gcp.Composer.Inputs.EnvironmentConfigDatabaseConfigArgs
                {
                    MachineType = "db-n1-standard-2",
                },
                WebServerConfig = new Gcp.Composer.Inputs.EnvironmentConfigWebServerConfigArgs
                {
                    MachineType = "composer-n1-webserver-2",
                },
            },
        });
    
        var composer_worker = new Gcp.Projects.IAMMember("composer-worker", new()
        {
            Role = "roles/composer.worker",
            Member = testAccount.Email.Apply(email => $"serviceAccount:{email}"),
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigDatabaseConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigWebServerConfigArgs;
    import com.pulumi.gcp.projects.IAMMember;
    import com.pulumi.gcp.projects.IAMMemberArgs;
    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 testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name("composer-test-network")
                .autoCreateSubnetworks(false)
                .build());
    
            var testSubnetwork = new Subnetwork("testSubnetwork", SubnetworkArgs.builder()
                .name("composer-test-subnetwork")
                .ipCidrRange("10.2.0.0/16")
                .region("us-central1")
                .network(testNetwork.id())
                .build());
    
            var testAccount = new Account("testAccount", AccountArgs.builder()
                .accountId("composer-env-account")
                .displayName("Test Service Account for Composer Environment")
                .build());
    
            var test = new Environment("test", EnvironmentArgs.builder()
                .name("example-composer-env")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                        .imageVersion("composer-1-airflow-2")
                        .build())
                    .nodeCount(4)
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .zone("us-central1-a")
                        .machineType("n1-standard-1")
                        .network(testNetwork.id())
                        .subnetwork(testSubnetwork.id())
                        .serviceAccount(testAccount.name())
                        .build())
                    .databaseConfig(EnvironmentConfigDatabaseConfigArgs.builder()
                        .machineType("db-n1-standard-2")
                        .build())
                    .webServerConfig(EnvironmentConfigWebServerConfigArgs.builder()
                        .machineType("composer-n1-webserver-2")
                        .build())
                    .build())
                .build());
    
            var composer_worker = new IAMMember("composer-worker", IAMMemberArgs.builder()
                .role("roles/composer.worker")
                .member(testAccount.email().applyValue(_email -> String.format("serviceAccount:%s", _email)))
                .build());
    
        }
    }
    
    resources:
      test:
        type: gcp:composer:Environment
        properties:
          name: example-composer-env
          region: us-central1
          config:
            softwareConfig:
              imageVersion: composer-1-airflow-2
            nodeCount: 4
            nodeConfig:
              zone: us-central1-a
              machineType: n1-standard-1
              network: ${testNetwork.id}
              subnetwork: ${testSubnetwork.id}
              serviceAccount: ${testAccount.name}
            databaseConfig:
              machineType: db-n1-standard-2
            webServerConfig:
              machineType: composer-n1-webserver-2
      testNetwork:
        type: gcp:compute:Network
        name: test
        properties:
          name: composer-test-network
          autoCreateSubnetworks: false
      testSubnetwork:
        type: gcp:compute:Subnetwork
        name: test
        properties:
          name: composer-test-subnetwork
          ipCidrRange: 10.2.0.0/16
          region: us-central1
          network: ${testNetwork.id}
      testAccount:
        type: gcp:serviceaccount:Account
        name: test
        properties:
          accountId: composer-env-account
          displayName: Test Service Account for Composer Environment
      composer-worker:
        type: gcp:projects:IAMMember
        properties:
          role: roles/composer.worker
          member: serviceAccount:${testAccount.email}
    

    Cloud Composer 3 networking configuration

    In Cloud Composer 3, networking configuration is simplified compared to previous versions. You don’t need to specify network ranges, and can attach custom VPC networks to your environment.

    Note It’s not possible to detach a VPC network using Terraform. Instead, you can attach a different VPC network in its place, or detach the network using other tools like Google Cloud CLI.

    Use Private IP networking:

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const example = new gcp.composer.Environment("example", {
        name: "example-environment",
        region: "us-central1",
        config: {
            enablePrivateEnvironment: true,
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    example = gcp.composer.Environment("example",
        name="example-environment",
        region="us-central1",
        config={
            "enable_private_environment": True,
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "example", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-environment"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				EnablePrivateEnvironment: pulumi.Bool(true),
    			},
    		})
    		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 example = new Gcp.Composer.Environment("example", new()
        {
            Name = "example-environment",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                EnablePrivateEnvironment = true,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    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 example = new Environment("example", EnvironmentArgs.builder()
                .name("example-environment")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .enablePrivateEnvironment(true)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: gcp:composer:Environment
        properties:
          name: example-environment
          region: us-central1
          config:
            enablePrivateEnvironment: true
    

    Attach a custom VPC network (Cloud Composer creates a new network attachment):

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const example = new gcp.composer.Environment("example", {
        name: "example-environment",
        region: "us-central1",
        config: {
            nodeConfig: {
                network: "projects/example-project/global/networks/example-network",
                subnetwork: "projects/example-project/regions/us-central1/subnetworks/example-subnetwork",
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    example = gcp.composer.Environment("example",
        name="example-environment",
        region="us-central1",
        config={
            "node_config": {
                "network": "projects/example-project/global/networks/example-network",
                "subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork",
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "example", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-environment"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					Network:    pulumi.String("projects/example-project/global/networks/example-network"),
    					Subnetwork: pulumi.String("projects/example-project/regions/us-central1/subnetworks/example-subnetwork"),
    				},
    			},
    		})
    		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 example = new Gcp.Composer.Environment("example", new()
        {
            Name = "example-environment",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    Network = "projects/example-project/global/networks/example-network",
                    Subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    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 example = new Environment("example", EnvironmentArgs.builder()
                .name("example-environment")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .network("projects/example-project/global/networks/example-network")
                        .subnetwork("projects/example-project/regions/us-central1/subnetworks/example-subnetwork")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: gcp:composer:Environment
        properties:
          name: example-environment
          region: us-central1
          config:
            nodeConfig:
              network: projects/example-project/global/networks/example-network
              subnetwork: projects/example-project/regions/us-central1/subnetworks/example-subnetwork
    

    Attach a custom VPC network (use existing network attachment):

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const example = new gcp.composer.Environment("example", {
        name: "example-environment",
        region: "us-central1",
        config: {
            nodeConfig: {
                composerNetworkAttachment: projects / example_project / regions / us_central1 / networkAttachments / example_network_attachment,
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    example = gcp.composer.Environment("example",
        name="example-environment",
        region="us-central1",
        config={
            "node_config": {
                "composer_network_attachment": projects / example_project / regions / us_central1 / network_attachments / example_network_attachment,
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := composer.NewEnvironment(ctx, "example", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-environment"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					ComposerNetworkAttachment: pulumi.String(projects / example_project / regions / us_central1 / networkAttachments / example_network_attachment),
    				},
    			},
    		})
    		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 example = new Gcp.Composer.Environment("example", new()
        {
            Name = "example-environment",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    ComposerNetworkAttachment = projects / example_project / regions / us_central1 / networkAttachments / example_network_attachment,
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    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 example = new Environment("example", EnvironmentArgs.builder()
                .name("example-environment")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .composerNetworkAttachment(Output.tuple(projects, example_project, regions, us_central1, networkAttachments, example_network_attachment).applyValue(values -> {
                            var __convert = values.t1;
                            var __convert1 = values.t2;
                            var __convert2 = values.t3;
                            var __convert3 = values.t4;
                            var __convert4 = values.t5;
                            var __convert5 = values.t6;
                            return __convert / __convert1 / __convert2 / __convert3 / __convert4 / __convert5;
                        }).applyValue(_n -> _n))
                        .build())
                    .build())
                .build());
    
        }
    }
    
    Example coming soon!
    

    If you specify an existing network attachment that you also manage in Terraform, then Terraform will revert changes to the attachment done by Cloud Composer when you apply configuration changes. As a result, the environment will no longer use the attachment. To address this problem, make sure that Terraform ignores changes to the producer_accept_lists parameter of the attachment, as follows:

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const example = new gcp.compute.NetworkAttachment("example", {});
    const exampleEnvironment = new gcp.composer.Environment("example", {
        name: "example-environment",
        region: "us-central1",
        config: {
            nodeConfig: {
                composerNetworkAttachment: example.id,
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    example = gcp.compute.NetworkAttachment("example")
    example_environment = gcp.composer.Environment("example",
        name="example-environment",
        region="us-central1",
        config={
            "node_config": {
                "composer_network_attachment": example.id,
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/composer"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := compute.NewNetworkAttachment(ctx, "example", nil)
    		if err != nil {
    			return err
    		}
    		_, err = composer.NewEnvironment(ctx, "example", &composer.EnvironmentArgs{
    			Name:   pulumi.String("example-environment"),
    			Region: pulumi.String("us-central1"),
    			Config: &composer.EnvironmentConfigArgs{
    				NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    					ComposerNetworkAttachment: example.ID(),
    				},
    			},
    		})
    		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 example = new Gcp.Compute.NetworkAttachment("example");
    
        var exampleEnvironment = new Gcp.Composer.Environment("example", new()
        {
            Name = "example-environment",
            Region = "us-central1",
            Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
            {
                NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
                {
                    ComposerNetworkAttachment = example.Id,
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.NetworkAttachment;
    import com.pulumi.gcp.composer.Environment;
    import com.pulumi.gcp.composer.EnvironmentArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
    import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs;
    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 example = new NetworkAttachment("example");
    
            var exampleEnvironment = new Environment("exampleEnvironment", EnvironmentArgs.builder()
                .name("example-environment")
                .region("us-central1")
                .config(EnvironmentConfigArgs.builder()
                    .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                        .composerNetworkAttachment(example.id())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: gcp:compute:NetworkAttachment
      exampleEnvironment:
        type: gcp:composer:Environment
        name: example
        properties:
          name: example-environment
          region: us-central1
          config:
            nodeConfig:
              composerNetworkAttachment: ${example.id}
    

    Argument Reference - Cloud Composer 1

    The following arguments are supported:

    • name - (Required) Name of the environment

    • config - (Optional) Configuration parameters for this environment Structure is documented below.

    • labels - (Optional) User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

      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.

    • pulumi_labels - The combination of labels configured directly on the resource and default labels configured on the provider.

    • effective_labels - All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.

    • region - (Optional) The location or Compute Engine region for the environment.

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

    <a name=<span pulumi-lang-nodejs=““nestedConfigC1"” pulumi-lang-dotnet=““NestedConfigC1"” pulumi-lang-go=““nestedConfigC1"” pulumi-lang-python=““nested_config_c1"” pulumi-lang-yaml=““nestedConfigC1"” pulumi-lang-java=““nestedConfigC1"">“nested_config_c1”>The config block supports:

    • node_count - (Optional, Cloud Composer 1 only) The number of nodes in the Kubernetes Engine cluster of the environment.

    • node_config - (Optional) The configuration used for the Kubernetes Engine cluster. Structure is documented below.

    • software_config - (Optional) The configuration settings for software inside the environment. Structure is documented below.

    • private_environment_config - (Optional) The configuration used for the Private IP Cloud Composer environment. Structure is documented below.

    • web_server_network_access_control - The network-level access control policy for the Airflow web server. If unspecified, no network-level access restrictions are applied.

    • database_config - (Optional, Cloud Composer 1 only) The configuration settings for Cloud SQL instance used internally by Apache Airflow software.

    • web_server_config - (Optional, Cloud Composer 1 only) The configuration settings for the Airflow web server App Engine instance.

    • encryption_config - (Optional) The encryption options for the Cloud Composer environment and its dependencies.

    • maintenance_window - (Optional, Beta) The configuration settings for Cloud Composer maintenance windows.

    • master_authorized_networks_config - (Optional) Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. Structure is documented below.

    <a name=<span pulumi-lang-nodejs=““nestedNodeConfigC1"” pulumi-lang-dotnet=““NestedNodeConfigC1"” pulumi-lang-go=““nestedNodeConfigC1"” pulumi-lang-python=““nested_node_config_c1"” pulumi-lang-yaml=““nestedNodeConfigC1"” pulumi-lang-java=““nestedNodeConfigC1"">“nested_node_config_c1”>The node_config block supports:

    • zone - (Optional, Cloud Composer 1 only) The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. “projects/{project}/zones/{zone}”). Must belong to the enclosing environment’s project and region.

    • machine_type - (Optional, Cloud Composer 1 only) The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: “projects/{project}/zones/{zone}/machineTypes/{machineType}”. Must belong to the enclosing environment’s project and region/zone.

    • network - (Optional) The Compute Engine network to be used for machine communications, specified as a self-link, relative resource name (for example “projects/{project}/global/networks/{network}”), by name.

      The network must belong to the environment’s project. If unspecified, the “default” network ID in the environment’s project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.

    • subnetwork - (Optional) The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (for example, “projects/{project}/regions/{region}/subnetworks/{subnetwork}”), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment’s project and region.

    • disk_size_gb - (Optional, Cloud Composer 1 only) The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated.

    • oauth_scopes - (Optional, Cloud Composer 1 only) The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"].

    • service_account - (Optional) The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the “default” Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.

    • tags - (Optional) The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.

    • ip_allocation_policy - (Optional) Configuration for controlling how IPs are allocated in the GKE cluster. Structure is documented below. Cannot be updated.

    • max_pods_per_node - (Optional, Beta, Cloud Composer 1 only) The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated.

    • enable_ip_masq_agent - (Optional) Deploys ‘ip-masq-agent’ daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See the documentation.

    <a name=<span pulumi-lang-nodejs=““nestedSoftwareConfigC1"” pulumi-lang-dotnet=““NestedSoftwareConfigC1"” pulumi-lang-go=““nestedSoftwareConfigC1"” pulumi-lang-python=““nested_software_config_c1"” pulumi-lang-yaml=““nestedSoftwareConfigC1"” pulumi-lang-java=““nestedSoftwareConfigC1"">“nested_software_config_c1”>The software_config block supports:

    • airflow_config_overrides - (Optional) Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example “core-dags_are_paused_at_creation”.

      Section names must not contain hyphens (”-”), opening square brackets (”[”), or closing square brackets (”]”). The property name must not be empty and cannot contain “=” or “;”. Section and property names cannot contain characters: “.” Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.

    • pypi_packages - (Optional) Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. “numpy”). Values are the lowercase extras and version specifier (e.g. “==1.12.0”, “[devel,gcp_api]”, “[devel]>=1.8.2, <1.9.2”). To specify a package without pinning it to a version specifier, use the empty string as the value.

    • env_variables - (Optional) Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names:

      AIRFLOW_DATABASE_VERSION
      AIRFLOW_HOME
      AIRFLOW_SRC_DIR
      AIRFLOW_WEBSERVER
      AUTO_GKE
      CLOUDSDK_METRICS_ENVIRONMENT
      CLOUD_LOGGING_ONLY
      COMPOSER_ENVIRONMENT
      COMPOSER_GKE_LOCATION
      COMPOSER_GKE_NAME
      COMPOSER_GKE_ZONE
      COMPOSER_LOCATION
      COMPOSER_OPERATION_UUID
      COMPOSER_PYTHON_VERSION
      COMPOSER_VERSION
      CONTAINER_NAME
      C_FORCE_ROOT
      DAGS_FOLDER
      GCP_PROJECT
      GCP_TENANT_PROJECT
      GCSFUSE_EXTRACTED
      GCS_BUCKET
      GKE_CLUSTER_NAME
      GKE_IN_TENANT
      GOOGLE_APPLICATION_CREDENTIALS
      MAJOR_VERSION
      MINOR_VERSION
      PATH
      PIP_DISABLE_PIP_VERSION_CHECK
      PORT
      PROJECT_ID
      PYTHONPYCACHEPREFIX
      SQL_DATABASE
      SQL_HOST
      SQL_INSTANCE
      SQL_PASSWORD
      SQL_PROJECT
      SQL_REGION
      SQL_USER
      
    
    * <span pulumi-lang-nodejs="`imageVersion`" pulumi-lang-dotnet="`ImageVersion`" pulumi-lang-go="`imageVersion`" pulumi-lang-python="`image_version`" pulumi-lang-yaml="`imageVersion`" pulumi-lang-java="`imageVersion`">`image_version`</span> -
    (Required) In Composer 1, use a specific Composer 1 version in this parameter. If omitted, the default is the latest version of Composer 2.  
    
      The version of the software running in the environment. This encapsulates both the version of Cloud Composer
      functionality and the version of Apache Airflow. It must match the regular expression
      `composer-([0-9]+(\.[0-9]+\.[0-9]+(-preview\.[0-9]+)?)?|latest)-airflow-([0-9]+(\.[0-9]+(\.[0-9]+)?)?)`.
      The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major
      version number or 'latest'.
      The Apache Airflow portion of the image version is a full semantic version that points to one of the
      supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified.
      For more information about Cloud Composer images, see
      [Cloud Composer version list](https://cloud.google.com/composer/docs/concepts/versioning/composer-versions).
    
    * <span pulumi-lang-nodejs="`pythonVersion`" pulumi-lang-dotnet="`PythonVersion`" pulumi-lang-go="`pythonVersion`" pulumi-lang-python="`python_version`" pulumi-lang-yaml="`pythonVersion`" pulumi-lang-java="`pythonVersion`">`python_version`</span> -
      (Optional, Cloud Composer 1 only)
      The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes.
      Can be set to '2' or '3'. If not specified, the default is '3'.
    
    * <span pulumi-lang-nodejs="`schedulerCount`" pulumi-lang-dotnet="`SchedulerCount`" pulumi-lang-go="`schedulerCount`" pulumi-lang-python="`scheduler_count`" pulumi-lang-yaml="`schedulerCount`" pulumi-lang-java="`schedulerCount`">`scheduler_count`</span> -
      (Optional, Cloud Composer 1 with Airflow 2 only)
      The number of schedulers for Airflow.
    
    
    See [documentation](https://cloud.google.com/composer/docs/how-to/managing/configuring-private-ip) for setting up private environments. <a name=<span pulumi-lang-nodejs=""nestedPrivateEnvironmentConfigC1"" pulumi-lang-dotnet=""NestedPrivateEnvironmentConfigC1"" pulumi-lang-go=""nestedPrivateEnvironmentConfigC1"" pulumi-lang-python=""nested_private_environment_config_c1"" pulumi-lang-yaml=""nestedPrivateEnvironmentConfigC1"" pulumi-lang-java=""nestedPrivateEnvironmentConfigC1"">"nested_private_environment_config_c1"</span>></a>The <span pulumi-lang-nodejs="`privateEnvironmentConfig`" pulumi-lang-dotnet="`PrivateEnvironmentConfig`" pulumi-lang-go="`privateEnvironmentConfig`" pulumi-lang-python="`private_environment_config`" pulumi-lang-yaml="`privateEnvironmentConfig`" pulumi-lang-java="`privateEnvironmentConfig`">`private_environment_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`enablePrivateEndpoint`" pulumi-lang-dotnet="`EnablePrivateEndpoint`" pulumi-lang-go="`enablePrivateEndpoint`" pulumi-lang-python="`enable_private_endpoint`" pulumi-lang-yaml="`enablePrivateEndpoint`" pulumi-lang-java="`enablePrivateEndpoint`">`enable_private_endpoint`</span> -
      If true, access to the public endpoint of the GKE cluster is denied.
      If this field is set to true, the `ip_allocation_policy.use_ip_aliases` field must
      also be set to true for Cloud Composer 1 environments.
    
    * <span pulumi-lang-nodejs="`masterIpv4CidrBlock`" pulumi-lang-dotnet="`MasterIpv4CidrBlock`" pulumi-lang-go="`masterIpv4CidrBlock`" pulumi-lang-python="`master_ipv4_cidr_block`" pulumi-lang-yaml="`masterIpv4CidrBlock`" pulumi-lang-java="`masterIpv4CidrBlock`">`master_ipv4_cidr_block`</span> -
      (Optional)
      The IP range in CIDR notation to use for the hosted master network. This range is used
      for assigning internal IP addresses to the cluster master or set of masters and to the
      internal load balancer virtual IP. This range must not overlap with any other ranges
      in use within the cluster's network.
      If left blank, the default value of is used. See [documentation](https://cloud.google.com/composer/docs/how-to/managing/configuring-private-ip#defaults) for default values per region.
    
    * <span pulumi-lang-nodejs="`cloudSqlIpv4CidrBlock`" pulumi-lang-dotnet="`CloudSqlIpv4CidrBlock`" pulumi-lang-go="`cloudSqlIpv4CidrBlock`" pulumi-lang-python="`cloud_sql_ipv4_cidr_block`" pulumi-lang-yaml="`cloudSqlIpv4CidrBlock`" pulumi-lang-java="`cloudSqlIpv4CidrBlock`">`cloud_sql_ipv4_cidr_block`</span> -
      (Optional)
      The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from <span pulumi-lang-nodejs="`webServerIpv4CidrBlock`" pulumi-lang-dotnet="`WebServerIpv4CidrBlock`" pulumi-lang-go="`webServerIpv4CidrBlock`" pulumi-lang-python="`web_server_ipv4_cidr_block`" pulumi-lang-yaml="`webServerIpv4CidrBlock`" pulumi-lang-java="`webServerIpv4CidrBlock`">`web_server_ipv4_cidr_block`</span>
    
    * <span pulumi-lang-nodejs="`webServerIpv4CidrBlock`" pulumi-lang-dotnet="`WebServerIpv4CidrBlock`" pulumi-lang-go="`webServerIpv4CidrBlock`" pulumi-lang-python="`web_server_ipv4_cidr_block`" pulumi-lang-yaml="`webServerIpv4CidrBlock`" pulumi-lang-java="`webServerIpv4CidrBlock`">`web_server_ipv4_cidr_block`</span> -
      (Optional, Cloud Composer 1 only)
      The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from <span pulumi-lang-nodejs="`masterIpv4CidrBlock`" pulumi-lang-dotnet="`MasterIpv4CidrBlock`" pulumi-lang-go="`masterIpv4CidrBlock`" pulumi-lang-python="`master_ipv4_cidr_block`" pulumi-lang-yaml="`masterIpv4CidrBlock`" pulumi-lang-java="`masterIpv4CidrBlock`">`master_ipv4_cidr_block`</span> and <span pulumi-lang-nodejs="`cloudSqlIpv4CidrBlock`" pulumi-lang-dotnet="`CloudSqlIpv4CidrBlock`" pulumi-lang-go="`cloudSqlIpv4CidrBlock`" pulumi-lang-python="`cloud_sql_ipv4_cidr_block`" pulumi-lang-yaml="`cloudSqlIpv4CidrBlock`" pulumi-lang-java="`cloudSqlIpv4CidrBlock`">`cloud_sql_ipv4_cidr_block`</span>.
    
    * <span pulumi-lang-nodejs="`enablePrivatelyUsedPublicIps`" pulumi-lang-dotnet="`EnablePrivatelyUsedPublicIps`" pulumi-lang-go="`enablePrivatelyUsedPublicIps`" pulumi-lang-python="`enable_privately_used_public_ips`" pulumi-lang-yaml="`enablePrivatelyUsedPublicIps`" pulumi-lang-java="`enablePrivatelyUsedPublicIps`">`enable_privately_used_public_ips`</span> -
      (Optional)
      When enabled, IPs from public (non-RFC1918) ranges can be used for
      `ip_allocation_policy.cluster_ipv4_cidr_block` and `ip_allocation_policy.service_ipv4_cidr_block`.
    
    The <span pulumi-lang-nodejs="`webServerNetworkAccessControl`" pulumi-lang-dotnet="`WebServerNetworkAccessControl`" pulumi-lang-go="`webServerNetworkAccessControl`" pulumi-lang-python="`web_server_network_access_control`" pulumi-lang-yaml="`webServerNetworkAccessControl`" pulumi-lang-java="`webServerNetworkAccessControl`">`web_server_network_access_control`</span> supports:
    
    * <span pulumi-lang-nodejs="`allowedIpRange`" pulumi-lang-dotnet="`AllowedIpRange`" pulumi-lang-go="`allowedIpRange`" pulumi-lang-python="`allowed_ip_range`" pulumi-lang-yaml="`allowedIpRange`" pulumi-lang-java="`allowedIpRange`">`allowed_ip_range`</span> -
      A collection of allowed IP ranges with descriptions. Structure is documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedAllowedIpRangeC1"" pulumi-lang-dotnet=""NestedAllowedIpRangeC1"" pulumi-lang-go=""nestedAllowedIpRangeC1"" pulumi-lang-python=""nested_allowed_ip_range_c1"" pulumi-lang-yaml=""nestedAllowedIpRangeC1"" pulumi-lang-java=""nestedAllowedIpRangeC1"">"nested_allowed_ip_range_c1"</span>></a>The <span pulumi-lang-nodejs="`allowedIpRange`" pulumi-lang-dotnet="`AllowedIpRange`" pulumi-lang-go="`allowedIpRange`" pulumi-lang-python="`allowed_ip_range`" pulumi-lang-yaml="`allowedIpRange`" pulumi-lang-java="`allowedIpRange`">`allowed_ip_range`</span> supports:
    
    * <span pulumi-lang-nodejs="`value`" pulumi-lang-dotnet="`Value`" pulumi-lang-go="`value`" pulumi-lang-python="`value`" pulumi-lang-yaml="`value`" pulumi-lang-java="`value`">`value`</span> -
      (Required)
      IP address or range, defined using CIDR notation, of requests that this rule applies to.
      Examples: `192.168.1.1` or `192.168.0.0/16` or `2001:db8::/32` or `2001:0db8:0000:0042:0000:8a2e:0370:7334`.
      IP range prefixes should be properly truncated. For example,
      `1.2.3.4/24` should be truncated to `1.2.3.0/24`. Similarly, for IPv6, `2001:db8::1/32` should be truncated to `2001:db8::/32`.
    
    * <span pulumi-lang-nodejs="`description`" pulumi-lang-dotnet="`Description`" pulumi-lang-go="`description`" pulumi-lang-python="`description`" pulumi-lang-yaml="`description`" pulumi-lang-java="`description`">`description`</span> -
      (Optional)
      A description of this ip range.
    
    <a name=<span pulumi-lang-nodejs=""nestedIpAllocationPolicyC1"" pulumi-lang-dotnet=""NestedIpAllocationPolicyC1"" pulumi-lang-go=""nestedIpAllocationPolicyC1"" pulumi-lang-python=""nested_ip_allocation_policy_c1"" pulumi-lang-yaml=""nestedIpAllocationPolicyC1"" pulumi-lang-java=""nestedIpAllocationPolicyC1"">"nested_ip_allocation_policy_c1"</span>></a>The <span pulumi-lang-nodejs="`ipAllocationPolicy`" pulumi-lang-dotnet="`IpAllocationPolicy`" pulumi-lang-go="`ipAllocationPolicy`" pulumi-lang-python="`ip_allocation_policy`" pulumi-lang-yaml="`ipAllocationPolicy`" pulumi-lang-java="`ipAllocationPolicy`">`ip_allocation_policy`</span> block supports:
    
    * <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> -
      (Optional, Cloud Composer 1 only)
      Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created.
      Defaults to true if the <span pulumi-lang-nodejs="`ipAllocationPolicy`" pulumi-lang-dotnet="`IpAllocationPolicy`" pulumi-lang-go="`ipAllocationPolicy`" pulumi-lang-python="`ip_allocation_policy`" pulumi-lang-yaml="`ipAllocationPolicy`" pulumi-lang-java="`ipAllocationPolicy`">`ip_allocation_policy`</span> block is present in config.
    
    * <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> -
      (Optional)
      The name of the cluster's secondary range used to allocate IP addresses to pods.
      Specify either <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> or <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> but not both.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
    
    * <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> -
      (Optional)
      The name of the services' secondary range used to allocate IP addresses to the cluster.
      Specify either <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> or <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> but not both.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
    
    * <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> -
      (Optional)
      The IP address range used to allocate IP addresses to pods in the cluster.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
      Set to blank to have GKE choose a range with the default size.
      Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask.
      Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks
      (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
      Specify either <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> or <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> but not both.
    
    * <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> -
      (Optional)
      The IP address range used to allocate IP addresses in this cluster.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
      Set to blank to have GKE choose a range with the default size.
      Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask.
      Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks
      (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
      Specify either <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> or <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> but not both.
    
    <a name=<span pulumi-lang-nodejs=""nestedDatabaseConfigC1"" pulumi-lang-dotnet=""NestedDatabaseConfigC1"" pulumi-lang-go=""nestedDatabaseConfigC1"" pulumi-lang-python=""nested_database_config_c1"" pulumi-lang-yaml=""nestedDatabaseConfigC1"" pulumi-lang-java=""nestedDatabaseConfigC1"">"nested_database_config_c1"</span>></a>The <span pulumi-lang-nodejs="`databaseConfig`" pulumi-lang-dotnet="`DatabaseConfig`" pulumi-lang-go="`databaseConfig`" pulumi-lang-python="`database_config`" pulumi-lang-yaml="`databaseConfig`" pulumi-lang-java="`databaseConfig`">`database_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`machineType`" pulumi-lang-dotnet="`MachineType`" pulumi-lang-go="`machineType`" pulumi-lang-python="`machine_type`" pulumi-lang-yaml="`machineType`" pulumi-lang-java="`machineType`">`machine_type`</span> -
      (Optional)
      Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2,
      db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16.
    
    * `Zone` -
      (Optional)
      Preferred Cloud SQL database zone.
    
    <a name=<span pulumi-lang-nodejs=""nestedWebServerConfigC1"" pulumi-lang-dotnet=""NestedWebServerConfigC1"" pulumi-lang-go=""nestedWebServerConfigC1"" pulumi-lang-python=""nested_web_server_config_c1"" pulumi-lang-yaml=""nestedWebServerConfigC1"" pulumi-lang-java=""nestedWebServerConfigC1"">"nested_web_server_config_c1"</span>></a>The <span pulumi-lang-nodejs="`webServerConfig`" pulumi-lang-dotnet="`WebServerConfig`" pulumi-lang-go="`webServerConfig`" pulumi-lang-python="`web_server_config`" pulumi-lang-yaml="`webServerConfig`" pulumi-lang-java="`webServerConfig`">`web_server_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`machineType`" pulumi-lang-dotnet="`MachineType`" pulumi-lang-go="`machineType`" pulumi-lang-python="`machine_type`" pulumi-lang-yaml="`machineType`" pulumi-lang-java="`machineType`">`machine_type`</span> -
      (Required)
      Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2,
      composer-n1-webserver-4 or composer-n1-webserver-8.
      Value custom is returned only in response, if Airflow web server parameters were
      manually changed to a non-standard values.
    
    <a name=<span pulumi-lang-nodejs=""nestedEncryptionConfigC1"" pulumi-lang-dotnet=""NestedEncryptionConfigC1"" pulumi-lang-go=""nestedEncryptionConfigC1"" pulumi-lang-python=""nested_encryption_config_c1"" pulumi-lang-yaml=""nestedEncryptionConfigC1"" pulumi-lang-java=""nestedEncryptionConfigC1"">"nested_encryption_config_c1"</span>></a>The <span pulumi-lang-nodejs="`encryptionConfig`" pulumi-lang-dotnet="`EncryptionConfig`" pulumi-lang-go="`encryptionConfig`" pulumi-lang-python="`encryption_config`" pulumi-lang-yaml="`encryptionConfig`" pulumi-lang-java="`encryptionConfig`">`encryption_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`kmsKeyName`" pulumi-lang-dotnet="`KmsKeyName`" pulumi-lang-go="`kmsKeyName`" pulumi-lang-python="`kms_key_name`" pulumi-lang-yaml="`kmsKeyName`" pulumi-lang-java="`kmsKeyName`">`kms_key_name`</span> -
      (Required)
      Customer-managed Encryption Key available through Google's Key Management Service. It must
      be the fully qualified resource name,
      i.e. projects/project-id/locations/location/keyRings/keyring/cryptoKeys/key. Cannot be updated.
    
    <a name=<span pulumi-lang-nodejs=""nestedMaintenanceWindowC1"" pulumi-lang-dotnet=""NestedMaintenanceWindowC1"" pulumi-lang-go=""nestedMaintenanceWindowC1"" pulumi-lang-python=""nested_maintenance_window_c1"" pulumi-lang-yaml=""nestedMaintenanceWindowC1"" pulumi-lang-java=""nestedMaintenanceWindowC1"">"nested_maintenance_window_c1"</span>></a>The <span pulumi-lang-nodejs="`maintenanceWindow`" pulumi-lang-dotnet="`MaintenanceWindow`" pulumi-lang-go="`maintenanceWindow`" pulumi-lang-python="`maintenance_window`" pulumi-lang-yaml="`maintenanceWindow`" pulumi-lang-java="`maintenanceWindow`">`maintenance_window`</span> block supports:
    * <span pulumi-lang-nodejs="`startTime`" pulumi-lang-dotnet="`StartTime`" pulumi-lang-go="`startTime`" pulumi-lang-python="`start_time`" pulumi-lang-yaml="`startTime`" pulumi-lang-java="`startTime`">`start_time`</span> -
      (Required)
      Start time of the first recurrence of the maintenance window.
    
    * <span pulumi-lang-nodejs="`endTime`" pulumi-lang-dotnet="`EndTime`" pulumi-lang-go="`endTime`" pulumi-lang-python="`end_time`" pulumi-lang-yaml="`endTime`" pulumi-lang-java="`endTime`">`end_time`</span> -
      (Required)
      Maintenance window end time. It is used only to calculate the duration of the maintenance window.
      The value for end-time must be in the future, relative to 'start_time'.
    
    * <span pulumi-lang-nodejs="`recurrence`" pulumi-lang-dotnet="`Recurrence`" pulumi-lang-go="`recurrence`" pulumi-lang-python="`recurrence`" pulumi-lang-yaml="`recurrence`" pulumi-lang-java="`recurrence`">`recurrence`</span> -
      (Required)
      Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'.
      The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'.
      Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    
    <a name=<span pulumi-lang-nodejs=""nestedMasterAuthorizedNetworksConfigC1"" pulumi-lang-dotnet=""NestedMasterAuthorizedNetworksConfigC1"" pulumi-lang-go=""nestedMasterAuthorizedNetworksConfigC1"" pulumi-lang-python=""nested_master_authorized_networks_config_c1"" pulumi-lang-yaml=""nestedMasterAuthorizedNetworksConfigC1"" pulumi-lang-java=""nestedMasterAuthorizedNetworksConfigC1"">"nested_master_authorized_networks_config_c1"</span>></a>The <span pulumi-lang-nodejs="`masterAuthorizedNetworksConfig`" pulumi-lang-dotnet="`MasterAuthorizedNetworksConfig`" pulumi-lang-go="`masterAuthorizedNetworksConfig`" pulumi-lang-python="`master_authorized_networks_config`" pulumi-lang-yaml="`masterAuthorizedNetworksConfig`" pulumi-lang-java="`masterAuthorizedNetworksConfig`">`master_authorized_networks_config`</span> block supports:
    * <span pulumi-lang-nodejs="`enabled`" pulumi-lang-dotnet="`Enabled`" pulumi-lang-go="`enabled`" pulumi-lang-python="`enabled`" pulumi-lang-yaml="`enabled`" pulumi-lang-java="`enabled`">`enabled`</span> -
      (Required)
      Whether or not master authorized networks is enabled.
    
    * <span pulumi-lang-nodejs="`cidrBlocks`" pulumi-lang-dotnet="`CidrBlocks`" pulumi-lang-go="`cidrBlocks`" pulumi-lang-python="`cidr_blocks`" pulumi-lang-yaml="`cidrBlocks`" pulumi-lang-java="`cidrBlocks`">`cidr_blocks`</span> -
      <span pulumi-lang-nodejs="`cidrBlocks " pulumi-lang-dotnet="`CidrBlocks " pulumi-lang-go="`cidrBlocks " pulumi-lang-python="`cidr_blocks " pulumi-lang-yaml="`cidrBlocks " pulumi-lang-java="`cidrBlocks ">`cidr_blocks </span>`define up to 50 external networks that could access Kubernetes master through HTTPS. Structure is documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedCidrBlocksC1"" pulumi-lang-dotnet=""NestedCidrBlocksC1"" pulumi-lang-go=""nestedCidrBlocksC1"" pulumi-lang-python=""nested_cidr_blocks_c1"" pulumi-lang-yaml=""nestedCidrBlocksC1"" pulumi-lang-java=""nestedCidrBlocksC1"">"nested_cidr_blocks_c1"</span>></a>The <span pulumi-lang-nodejs="`cidrBlocks`" pulumi-lang-dotnet="`CidrBlocks`" pulumi-lang-go="`cidrBlocks`" pulumi-lang-python="`cidr_blocks`" pulumi-lang-yaml="`cidrBlocks`" pulumi-lang-java="`cidrBlocks`">`cidr_blocks`</span> supports:
    
    * <span pulumi-lang-nodejs="`displayName`" pulumi-lang-dotnet="`DisplayName`" pulumi-lang-go="`displayName`" pulumi-lang-python="`display_name`" pulumi-lang-yaml="`displayName`" pulumi-lang-java="`displayName`">`display_name`</span> -
      (Optional)
      <span pulumi-lang-nodejs="`displayName`" pulumi-lang-dotnet="`DisplayName`" pulumi-lang-go="`displayName`" pulumi-lang-python="`display_name`" pulumi-lang-yaml="`displayName`" pulumi-lang-java="`displayName`">`display_name`</span> is a field for users to identify CIDR blocks.
    
    * <span pulumi-lang-nodejs="`cidrBlock`" pulumi-lang-dotnet="`CidrBlock`" pulumi-lang-go="`cidrBlock`" pulumi-lang-python="`cidr_block`" pulumi-lang-yaml="`cidrBlock`" pulumi-lang-java="`cidrBlock`">`cidr_block`</span> -
      (Required)
      <span pulumi-lang-nodejs="`cidrBlock`" pulumi-lang-dotnet="`CidrBlock`" pulumi-lang-go="`cidrBlock`" pulumi-lang-python="`cidr_block`" pulumi-lang-yaml="`cidrBlock`" pulumi-lang-java="`cidrBlock`">`cidr_block`</span> must be specified in CIDR notation.
    
    ## Argument Reference - Cloud Composer 2
    
    The following arguments are supported:
    
    * <span pulumi-lang-nodejs="`name`" pulumi-lang-dotnet="`Name`" pulumi-lang-go="`name`" pulumi-lang-python="`name`" pulumi-lang-yaml="`name`" pulumi-lang-java="`name`">`name`</span> -
      (Required)
      Name of the environment
    
    * <span pulumi-lang-nodejs="`config`" pulumi-lang-dotnet="`Config`" pulumi-lang-go="`config`" pulumi-lang-python="`config`" pulumi-lang-yaml="`config`" pulumi-lang-java="`config`">`config`</span> -
      (Optional)
      Configuration parameters for this environment. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`labels`" pulumi-lang-dotnet="`Labels`" pulumi-lang-go="`labels`" pulumi-lang-python="`labels`" pulumi-lang-yaml="`labels`" pulumi-lang-java="`labels`">`labels`</span> -
      (Optional)
      User-defined labels for this environment. The labels map can contain
      no more than 64 entries. Entries of the labels map are UTF8 strings
      that comply with the following restrictions:
      Label keys must be between 1 and 63 characters long and must conform
      to the following regular expression: `a-z?`.
      Label values must be between 0 and 63 characters long and must
      conform to the regular expression `(a-z?)?`.
      No more than 64 labels can be associated with a given environment.
      Both keys and values must be <= 128 bytes in size.
    
    * <span pulumi-lang-nodejs="`region`" pulumi-lang-dotnet="`Region`" pulumi-lang-go="`region`" pulumi-lang-python="`region`" pulumi-lang-yaml="`region`" pulumi-lang-java="`region`">`region`</span> -
      (Optional)
      The location or Compute Engine region for the environment.
    
    * <span pulumi-lang-nodejs="`project`" pulumi-lang-dotnet="`Project`" pulumi-lang-go="`project`" pulumi-lang-python="`project`" pulumi-lang-yaml="`project`" pulumi-lang-java="`project`">`project`</span> -
      (Optional) The ID of the project in which the resource belongs.
      If it is not provided, the provider project is used.
    
    * <span pulumi-lang-nodejs="`storageConfig`" pulumi-lang-dotnet="`StorageConfig`" pulumi-lang-go="`storageConfig`" pulumi-lang-python="`storage_config`" pulumi-lang-yaml="`storageConfig`" pulumi-lang-java="`storageConfig`">`storage_config`</span> -
      (Optional)
      Configuration options for storage used by Composer environment. Structure is documented below.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedConfigC2"" pulumi-lang-dotnet=""NestedConfigC2"" pulumi-lang-go=""nestedConfigC2"" pulumi-lang-python=""nested_config_c2"" pulumi-lang-yaml=""nestedConfigC2"" pulumi-lang-java=""nestedConfigC2"">"nested_config_c2"</span>></a>The <span pulumi-lang-nodejs="`config`" pulumi-lang-dotnet="`Config`" pulumi-lang-go="`config`" pulumi-lang-python="`config`" pulumi-lang-yaml="`config`" pulumi-lang-java="`config`">`config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`nodeConfig`" pulumi-lang-dotnet="`NodeConfig`" pulumi-lang-go="`nodeConfig`" pulumi-lang-python="`node_config`" pulumi-lang-yaml="`nodeConfig`" pulumi-lang-java="`nodeConfig`">`node_config`</span> -
      (Optional)
      The configuration used for the Kubernetes Engine cluster. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`recoveryConfig`" pulumi-lang-dotnet="`RecoveryConfig`" pulumi-lang-go="`recoveryConfig`" pulumi-lang-python="`recovery_config`" pulumi-lang-yaml="`recoveryConfig`" pulumi-lang-java="`recoveryConfig`">`recovery_config`</span> -
      (Optional, Cloud Composer 2 only)
      The configuration settings for recovery. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`softwareConfig`" pulumi-lang-dotnet="`SoftwareConfig`" pulumi-lang-go="`softwareConfig`" pulumi-lang-python="`software_config`" pulumi-lang-yaml="`softwareConfig`" pulumi-lang-java="`softwareConfig`">`software_config`</span> -
      (Optional)
      The configuration settings for software (Airflow) inside the environment. Structure is
      documented below.
    
    * <span pulumi-lang-nodejs="`privateEnvironmentConfig`" pulumi-lang-dotnet="`PrivateEnvironmentConfig`" pulumi-lang-go="`privateEnvironmentConfig`" pulumi-lang-python="`private_environment_config`" pulumi-lang-yaml="`privateEnvironmentConfig`" pulumi-lang-java="`privateEnvironmentConfig`">`private_environment_config`</span> -
      (Optional)
      The configuration used for the Private IP Cloud Composer environment. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`encryptionConfig`" pulumi-lang-dotnet="`EncryptionConfig`" pulumi-lang-go="`encryptionConfig`" pulumi-lang-python="`encryption_config`" pulumi-lang-yaml="`encryptionConfig`" pulumi-lang-java="`encryptionConfig`">`encryption_config`</span> -
      (Optional)
      The encryption options for the Cloud Composer environment and its
      dependencies.
    
    * <span pulumi-lang-nodejs="`maintenanceWindow`" pulumi-lang-dotnet="`MaintenanceWindow`" pulumi-lang-go="`maintenanceWindow`" pulumi-lang-python="`maintenance_window`" pulumi-lang-yaml="`maintenanceWindow`" pulumi-lang-java="`maintenanceWindow`">`maintenance_window`</span> -
      (Optional)
      The configuration settings for Cloud Composer maintenance windows.
    
    * <span pulumi-lang-nodejs="`workloadsConfig`" pulumi-lang-dotnet="`WorkloadsConfig`" pulumi-lang-go="`workloadsConfig`" pulumi-lang-python="`workloads_config`" pulumi-lang-yaml="`workloadsConfig`" pulumi-lang-java="`workloadsConfig`">`workloads_config`</span> -
      (Optional)
      The Kubernetes workloads configuration for GKE cluster associated with the
      Cloud Composer environment.
    
    * <span pulumi-lang-nodejs="`environmentSize`" pulumi-lang-dotnet="`EnvironmentSize`" pulumi-lang-go="`environmentSize`" pulumi-lang-python="`environment_size`" pulumi-lang-yaml="`environmentSize`" pulumi-lang-java="`environmentSize`">`environment_size`</span> -
      (Optional)
      The environment size controls the performance parameters of the managed
      Cloud Composer infrastructure that includes the Airflow database. Values for
      environment size are `ENVIRONMENT_SIZE_SMALL`, `ENVIRONMENT_SIZE_MEDIUM`,
      and `ENVIRONMENT_SIZE_LARGE`.
    
    * <span pulumi-lang-nodejs="`resilienceMode`" pulumi-lang-dotnet="`ResilienceMode`" pulumi-lang-go="`resilienceMode`" pulumi-lang-python="`resilience_mode`" pulumi-lang-yaml="`resilienceMode`" pulumi-lang-java="`resilienceMode`">`resilience_mode`</span> -
      (Optional, Cloud Composer 2.1.15 or newer only)
      The resilience mode states whether high resilience is enabled for 
      the environment or not. Values for resilience mode are `HIGH_RESILIENCE` 
      for high resilience and `STANDARD_RESILIENCE` for standard
      resilience.
    
    * <span pulumi-lang-nodejs="`dataRetentionConfig`" pulumi-lang-dotnet="`DataRetentionConfig`" pulumi-lang-go="`dataRetentionConfig`" pulumi-lang-python="`data_retention_config`" pulumi-lang-yaml="`dataRetentionConfig`" pulumi-lang-java="`dataRetentionConfig`">`data_retention_config`</span> -
      (Optional, Cloud Composer 2.0.23 or newer only)
      Configuration setting for airflow data rentention mechanism. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedDataRetentionConfigC2"" pulumi-lang-dotnet=""NestedDataRetentionConfigC2"" pulumi-lang-go=""nestedDataRetentionConfigC2"" pulumi-lang-python=""nested_data_retention_config_c2"" pulumi-lang-yaml=""nestedDataRetentionConfigC2"" pulumi-lang-java=""nestedDataRetentionConfigC2"">"nested_data_retention_config_c2"</span>></a>The <span pulumi-lang-nodejs="`dataRetentionConfig`" pulumi-lang-dotnet="`DataRetentionConfig`" pulumi-lang-go="`dataRetentionConfig`" pulumi-lang-python="`data_retention_config`" pulumi-lang-yaml="`dataRetentionConfig`" pulumi-lang-java="`dataRetentionConfig`">`data_retention_config`</span> block supports:
    * <span pulumi-lang-nodejs="`taskLogsRetentionConfig`" pulumi-lang-dotnet="`TaskLogsRetentionConfig`" pulumi-lang-go="`taskLogsRetentionConfig`" pulumi-lang-python="`task_logs_retention_config`" pulumi-lang-yaml="`taskLogsRetentionConfig`" pulumi-lang-java="`taskLogsRetentionConfig`">`task_logs_retention_config`</span> - 
      (Optional)
      The configuration setting for Task Logs. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedTaskLogsRetentionConfigC2"" pulumi-lang-dotnet=""NestedTaskLogsRetentionConfigC2"" pulumi-lang-go=""nestedTaskLogsRetentionConfigC2"" pulumi-lang-python=""nested_task_logs_retention_config_c2"" pulumi-lang-yaml=""nestedTaskLogsRetentionConfigC2"" pulumi-lang-java=""nestedTaskLogsRetentionConfigC2"">"nested_task_logs_retention_config_c2"</span>></a>The <span pulumi-lang-nodejs="`taskLogsRetentionConfig`" pulumi-lang-dotnet="`TaskLogsRetentionConfig`" pulumi-lang-go="`taskLogsRetentionConfig`" pulumi-lang-python="`task_logs_retention_config`" pulumi-lang-yaml="`taskLogsRetentionConfig`" pulumi-lang-java="`taskLogsRetentionConfig`">`task_logs_retention_config`</span> block supports:
    * <span pulumi-lang-nodejs="`storageMode`" pulumi-lang-dotnet="`StorageMode`" pulumi-lang-go="`storageMode`" pulumi-lang-python="`storage_mode`" pulumi-lang-yaml="`storageMode`" pulumi-lang-java="`storageMode`">`storage_mode`</span> - 
      (Optional)
      The mode of storage for Airflow workers task logs. Values for storage mode are 
      `CLOUD_LOGGING_ONLY` to only store logs in cloud logging and 
      `CLOUD_LOGGING_AND_CLOUD_STORAGE` to store logs in cloud logging and cloud storage.
    
    * <span pulumi-lang-nodejs="`masterAuthorizedNetworksConfig`" pulumi-lang-dotnet="`MasterAuthorizedNetworksConfig`" pulumi-lang-go="`masterAuthorizedNetworksConfig`" pulumi-lang-python="`master_authorized_networks_config`" pulumi-lang-yaml="`masterAuthorizedNetworksConfig`" pulumi-lang-java="`masterAuthorizedNetworksConfig`">`master_authorized_networks_config`</span> -
      (Optional)
      Configuration options for the master authorized networks feature. Enabled
      master authorized networks will disallow all external traffic to access
      Kubernetes master through HTTPS except traffic from the given CIDR blocks,
      Google Compute Engine Public IPs and Google Prod IPs. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedMasterAuthorizedNetworksConfigC2"" pulumi-lang-dotnet=""NestedMasterAuthorizedNetworksConfigC2"" pulumi-lang-go=""nestedMasterAuthorizedNetworksConfigC2"" pulumi-lang-python=""nested_master_authorized_networks_config_c2"" pulumi-lang-yaml=""nestedMasterAuthorizedNetworksConfigC2"" pulumi-lang-java=""nestedMasterAuthorizedNetworksConfigC2"">"nested_master_authorized_networks_config_c2"</span>></a>The <span pulumi-lang-nodejs="`masterAuthorizedNetworksConfig`" pulumi-lang-dotnet="`MasterAuthorizedNetworksConfig`" pulumi-lang-go="`masterAuthorizedNetworksConfig`" pulumi-lang-python="`master_authorized_networks_config`" pulumi-lang-yaml="`masterAuthorizedNetworksConfig`" pulumi-lang-java="`masterAuthorizedNetworksConfig`">`master_authorized_networks_config`</span> block supports:
    * <span pulumi-lang-nodejs="`enabled`" pulumi-lang-dotnet="`Enabled`" pulumi-lang-go="`enabled`" pulumi-lang-python="`enabled`" pulumi-lang-yaml="`enabled`" pulumi-lang-java="`enabled`">`enabled`</span> -
      (Required)
      Whether or not master authorized networks is enabled.
    
    * <span pulumi-lang-nodejs="`cidrBlocks`" pulumi-lang-dotnet="`CidrBlocks`" pulumi-lang-go="`cidrBlocks`" pulumi-lang-python="`cidr_blocks`" pulumi-lang-yaml="`cidrBlocks`" pulumi-lang-java="`cidrBlocks`">`cidr_blocks`</span> -
      <span pulumi-lang-nodejs="`cidrBlocks " pulumi-lang-dotnet="`CidrBlocks " pulumi-lang-go="`cidrBlocks " pulumi-lang-python="`cidr_blocks " pulumi-lang-yaml="`cidrBlocks " pulumi-lang-java="`cidrBlocks ">`cidr_blocks </span>`define up to 50 external networks that could access Kubernetes master through HTTPS. Structure is documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedCidrBlocksC2"" pulumi-lang-dotnet=""NestedCidrBlocksC2"" pulumi-lang-go=""nestedCidrBlocksC2"" pulumi-lang-python=""nested_cidr_blocks_c2"" pulumi-lang-yaml=""nestedCidrBlocksC2"" pulumi-lang-java=""nestedCidrBlocksC2"">"nested_cidr_blocks_c2"</span>></a>The <span pulumi-lang-nodejs="`cidrBlocks`" pulumi-lang-dotnet="`CidrBlocks`" pulumi-lang-go="`cidrBlocks`" pulumi-lang-python="`cidr_blocks`" pulumi-lang-yaml="`cidrBlocks`" pulumi-lang-java="`cidrBlocks`">`cidr_blocks`</span> supports:
    
    * <span pulumi-lang-nodejs="`displayName`" pulumi-lang-dotnet="`DisplayName`" pulumi-lang-go="`displayName`" pulumi-lang-python="`display_name`" pulumi-lang-yaml="`displayName`" pulumi-lang-java="`displayName`">`display_name`</span> -
      (Optional)
      <span pulumi-lang-nodejs="`displayName`" pulumi-lang-dotnet="`DisplayName`" pulumi-lang-go="`displayName`" pulumi-lang-python="`display_name`" pulumi-lang-yaml="`displayName`" pulumi-lang-java="`displayName`">`display_name`</span> is a field for users to identify CIDR blocks.
    
    * <span pulumi-lang-nodejs="`cidrBlock`" pulumi-lang-dotnet="`CidrBlock`" pulumi-lang-go="`cidrBlock`" pulumi-lang-python="`cidr_block`" pulumi-lang-yaml="`cidrBlock`" pulumi-lang-java="`cidrBlock`">`cidr_block`</span> -
      (Required)
      <span pulumi-lang-nodejs="`cidrBlock`" pulumi-lang-dotnet="`CidrBlock`" pulumi-lang-go="`cidrBlock`" pulumi-lang-python="`cidr_block`" pulumi-lang-yaml="`cidrBlock`" pulumi-lang-java="`cidrBlock`">`cidr_block`</span> must be specified in CIDR notation.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedStorageConfigC2"" pulumi-lang-dotnet=""NestedStorageConfigC2"" pulumi-lang-go=""nestedStorageConfigC2"" pulumi-lang-python=""nested_storage_config_c2"" pulumi-lang-yaml=""nestedStorageConfigC2"" pulumi-lang-java=""nestedStorageConfigC2"">"nested_storage_config_c2"</span>></a>The <span pulumi-lang-nodejs="`storageConfig`" pulumi-lang-dotnet="`StorageConfig`" pulumi-lang-go="`storageConfig`" pulumi-lang-python="`storage_config`" pulumi-lang-yaml="`storageConfig`" pulumi-lang-java="`storageConfig`">`storage_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`bucket`" pulumi-lang-dotnet="`Bucket`" pulumi-lang-go="`bucket`" pulumi-lang-python="`bucket`" pulumi-lang-yaml="`bucket`" pulumi-lang-java="`bucket`">`bucket`</span> -
      (Required)
      Name of an existing Cloud Storage bucket to be used by the environment.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedNodeConfigC2"" pulumi-lang-dotnet=""NestedNodeConfigC2"" pulumi-lang-go=""nestedNodeConfigC2"" pulumi-lang-python=""nested_node_config_c2"" pulumi-lang-yaml=""nestedNodeConfigC2"" pulumi-lang-java=""nestedNodeConfigC2"">"nested_node_config_c2"</span>></a>The <span pulumi-lang-nodejs="`nodeConfig`" pulumi-lang-dotnet="`NodeConfig`" pulumi-lang-go="`nodeConfig`" pulumi-lang-python="`node_config`" pulumi-lang-yaml="`nodeConfig`" pulumi-lang-java="`nodeConfig`">`node_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`network`" pulumi-lang-dotnet="`Network`" pulumi-lang-go="`network`" pulumi-lang-python="`network`" pulumi-lang-yaml="`network`" pulumi-lang-java="`network`">`network`</span> -
      (Optional)
      The Compute Engine network to be used for machine
      communications, specified as a self-link, relative resource name
      (for example "projects/{project}/global/networks/{network}"), by name.
    
      The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's
      project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    
    * <span pulumi-lang-nodejs="`subnetwork`" pulumi-lang-dotnet="`Subnetwork`" pulumi-lang-go="`subnetwork`" pulumi-lang-python="`subnetwork`" pulumi-lang-yaml="`subnetwork`" pulumi-lang-java="`subnetwork`">`subnetwork`</span> -
      (Optional)
      The Compute Engine subnetwork to be used for machine
      communications, specified as a self-link, relative resource name (for example,
      "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided,
      network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    
    * <span pulumi-lang-nodejs="`serviceAccount`" pulumi-lang-dotnet="`ServiceAccount`" pulumi-lang-go="`serviceAccount`" pulumi-lang-python="`service_account`" pulumi-lang-yaml="`serviceAccount`" pulumi-lang-java="`serviceAccount`">`service_account`</span> -
      (Optional)
      The Google Cloud Platform Service Account to be used by the
      node VMs. If a service account is not specified, the "default"
      Compute Engine service account is used. Cannot be updated. If given,
      note that the service account must have `roles/composer.worker`
      for any GCP resources created under the Cloud Composer Environment.
    
    * <span pulumi-lang-nodejs="`tags`" pulumi-lang-dotnet="`Tags`" pulumi-lang-go="`tags`" pulumi-lang-python="`tags`" pulumi-lang-yaml="`tags`" pulumi-lang-java="`tags`">`tags`</span> -
      (Optional)
      The list of instance tags applied to all node VMs. Tags are
      used to identify valid sources or targets for network
      firewalls. Each tag within the list must comply with RFC1035.
      Cannot be updated.
    
    * <span pulumi-lang-nodejs="`ipAllocationPolicy`" pulumi-lang-dotnet="`IpAllocationPolicy`" pulumi-lang-go="`ipAllocationPolicy`" pulumi-lang-python="`ip_allocation_policy`" pulumi-lang-yaml="`ipAllocationPolicy`" pulumi-lang-java="`ipAllocationPolicy`">`ip_allocation_policy`</span> -
      (Optional)
      Configuration for controlling how IPs are allocated in the GKE cluster.
      Structure is documented below.
      Cannot be updated.
    
    * <span pulumi-lang-nodejs="`enableIpMasqAgent`" pulumi-lang-dotnet="`EnableIpMasqAgent`" pulumi-lang-go="`enableIpMasqAgent`" pulumi-lang-python="`enable_ip_masq_agent`" pulumi-lang-yaml="`enableIpMasqAgent`" pulumi-lang-java="`enableIpMasqAgent`">`enable_ip_masq_agent`</span> -
      (Optional)
      IP Masq Agent translates Pod IP addresses to node IP addresses, so that 
      destinations and services targeted from Airflow DAGs and tasks only receive 
      packets from node IP addresses instead of Pod IP addresses
      See the [documentation](https://cloud.google.com/composer/docs/enable-ip-masquerade-agent).
    
    <a name=<span pulumi-lang-nodejs=""nestedSoftwareConfigC2"" pulumi-lang-dotnet=""NestedSoftwareConfigC2"" pulumi-lang-go=""nestedSoftwareConfigC2"" pulumi-lang-python=""nested_software_config_c2"" pulumi-lang-yaml=""nestedSoftwareConfigC2"" pulumi-lang-java=""nestedSoftwareConfigC2"">"nested_software_config_c2"</span>></a>The <span pulumi-lang-nodejs="`softwareConfig`" pulumi-lang-dotnet="`SoftwareConfig`" pulumi-lang-go="`softwareConfig`" pulumi-lang-python="`software_config`" pulumi-lang-yaml="`softwareConfig`" pulumi-lang-java="`softwareConfig`">`software_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`airflowConfigOverrides`" pulumi-lang-dotnet="`AirflowConfigOverrides`" pulumi-lang-go="`airflowConfigOverrides`" pulumi-lang-python="`airflow_config_overrides`" pulumi-lang-yaml="`airflowConfigOverrides`" pulumi-lang-java="`airflowConfigOverrides`">`airflow_config_overrides`</span> -
      (Optional) Apache Airflow configuration properties to override. Property keys contain the section and property names,
      separated by a hyphen, for example "core-dags_are_paused_at_creation".
    
      Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]").
      The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain
      characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can
      contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration
      property values are [blacklisted](https://cloud.google.com/composer/docs/concepts/airflow-configurations#airflow_configuration_blacklists),
      and cannot be overridden.
    
    * <span pulumi-lang-nodejs="`pypiPackages`" pulumi-lang-dotnet="`PypiPackages`" pulumi-lang-go="`pypiPackages`" pulumi-lang-python="`pypi_packages`" pulumi-lang-yaml="`pypiPackages`" pulumi-lang-java="`pypiPackages`">`pypi_packages`</span> -
      (Optional)
      Custom Python Package Index (PyPI) packages to be installed
      in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and
      version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without
      pinning it to a version specifier, use the empty string as the value.
    
    * <span pulumi-lang-nodejs="`envVariables`" pulumi-lang-dotnet="`EnvVariables`" pulumi-lang-go="`envVariables`" pulumi-lang-python="`env_variables`" pulumi-lang-yaml="`envVariables`" pulumi-lang-java="`envVariables`">`env_variables`</span> -
      (Optional)
      Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes.
      Environment variable names must match the regular expression `[a-zA-Z_][a-zA-Z0-9_]*`.
      They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression
      `AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+`), and they cannot match any of the following reserved names:
    

    AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER

    
    * <span pulumi-lang-nodejs="`imageVersion`" pulumi-lang-dotnet="`ImageVersion`" pulumi-lang-go="`imageVersion`" pulumi-lang-python="`image_version`" pulumi-lang-yaml="`imageVersion`" pulumi-lang-java="`imageVersion`">`image_version`</span> -
    (Optional) If omitted, the default is the latest version of Composer 2.
    
    
      The version of the software running in the environment. This encapsulates both the version of Cloud Composer
      functionality and the version of Apache Airflow. It must match the regular expression
      `composer-([0-9]+(\.[0-9]+\.[0-9]+(-preview\.[0-9]+)?)?|latest)-airflow-([0-9]+(\.[0-9]+(\.[0-9]+)?)?)`.
      The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major
      version number or 'latest'.
      The Apache Airflow portion of the image version is a full semantic version that points to one of the
      supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified.
      **Important**: In-place upgrade is only available between minor or
      patch versions of Cloud Composer or Apache Airflow. For example, you can upgrade your environment from
      `composer-1.16.x` to `composer-1.17.x`, or from `airflow-2.1.x` to `airflow-2.2.x`. You cannot upgrade between
      major Cloud Composer or Apache Airflow versions (from `1.x.x` to `2.x.x`). To do so, create a new environment.
    
    * <span pulumi-lang-nodejs="`cloudDataLineageIntegration`" pulumi-lang-dotnet="`CloudDataLineageIntegration`" pulumi-lang-go="`cloudDataLineageIntegration`" pulumi-lang-python="`cloud_data_lineage_integration`" pulumi-lang-yaml="`cloudDataLineageIntegration`" pulumi-lang-java="`cloudDataLineageIntegration`">`cloud_data_lineage_integration`</span> -
      (Optional, Cloud Composer environments in versions composer-2.1.2-airflow-*.*.* and newer)
      The configuration for Cloud Data Lineage integration. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedCloudDataLineageIntegrationC2"" pulumi-lang-dotnet=""NestedCloudDataLineageIntegrationC2"" pulumi-lang-go=""nestedCloudDataLineageIntegrationC2"" pulumi-lang-python=""nested_cloud_data_lineage_integration_c2"" pulumi-lang-yaml=""nestedCloudDataLineageIntegrationC2"" pulumi-lang-java=""nestedCloudDataLineageIntegrationC2"">"nested_cloud_data_lineage_integration_c2"</span>></a>The <span pulumi-lang-nodejs="`cloudDataLineageIntegration`" pulumi-lang-dotnet="`CloudDataLineageIntegration`" pulumi-lang-go="`cloudDataLineageIntegration`" pulumi-lang-python="`cloud_data_lineage_integration`" pulumi-lang-yaml="`cloudDataLineageIntegration`" pulumi-lang-java="`cloudDataLineageIntegration`">`cloud_data_lineage_integration`</span> block supports:
    * <span pulumi-lang-nodejs="`enabled`" pulumi-lang-dotnet="`Enabled`" pulumi-lang-go="`enabled`" pulumi-lang-python="`enabled`" pulumi-lang-yaml="`enabled`" pulumi-lang-java="`enabled`">`enabled`</span> -
      (Required)
      Whether or not Cloud Data Lineage integration is enabled.
    
    <a name=<span pulumi-lang-nodejs=""nestedPrivateEnvironmentConfigC2"" pulumi-lang-dotnet=""NestedPrivateEnvironmentConfigC2"" pulumi-lang-go=""nestedPrivateEnvironmentConfigC2"" pulumi-lang-python=""nested_private_environment_config_c2"" pulumi-lang-yaml=""nestedPrivateEnvironmentConfigC2"" pulumi-lang-java=""nestedPrivateEnvironmentConfigC2"">"nested_private_environment_config_c2"</span>></a>See [documentation](https://cloud.google.com/composer/docs/how-to/managing/configuring-private-ip) for setting up private environments. The <span pulumi-lang-nodejs="`privateEnvironmentConfig`" pulumi-lang-dotnet="`PrivateEnvironmentConfig`" pulumi-lang-go="`privateEnvironmentConfig`" pulumi-lang-python="`private_environment_config`" pulumi-lang-yaml="`privateEnvironmentConfig`" pulumi-lang-java="`privateEnvironmentConfig`">`private_environment_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`connectionType`" pulumi-lang-dotnet="`ConnectionType`" pulumi-lang-go="`connectionType`" pulumi-lang-python="`connection_type`" pulumi-lang-yaml="`connectionType`" pulumi-lang-java="`connectionType`">`connection_type`</span> -
      (Optional, Cloud Composer 2 only)
      Mode of internal communication within the Composer environment. Must be one
      of `"VPC_PEERING"` or `"PRIVATE_SERVICE_CONNECT"`.
    
    * <span pulumi-lang-nodejs="`enablePrivateEndpoint`" pulumi-lang-dotnet="`EnablePrivateEndpoint`" pulumi-lang-go="`enablePrivateEndpoint`" pulumi-lang-python="`enable_private_endpoint`" pulumi-lang-yaml="`enablePrivateEndpoint`" pulumi-lang-java="`enablePrivateEndpoint`">`enable_private_endpoint`</span> -
      If true, access to the public endpoint of the GKE cluster is denied.
    
    * <span pulumi-lang-nodejs="`masterIpv4CidrBlock`" pulumi-lang-dotnet="`MasterIpv4CidrBlock`" pulumi-lang-go="`masterIpv4CidrBlock`" pulumi-lang-python="`master_ipv4_cidr_block`" pulumi-lang-yaml="`masterIpv4CidrBlock`" pulumi-lang-java="`masterIpv4CidrBlock`">`master_ipv4_cidr_block`</span> -
      (Optional)
      The IP range in CIDR notation to use for the hosted master network. This range is used
      for assigning internal IP addresses to the cluster master or set of masters and to the
      internal load balancer virtual IP. This range must not overlap with any other ranges
      in use within the cluster's network.
      If left blank, the default value of is used. See [documentation](https://cloud.google.com/composer/docs/how-to/managing/configuring-private-ip#defaults) for default values per region.
    
    * <span pulumi-lang-nodejs="`cloudSqlIpv4CidrBlock`" pulumi-lang-dotnet="`CloudSqlIpv4CidrBlock`" pulumi-lang-go="`cloudSqlIpv4CidrBlock`" pulumi-lang-python="`cloud_sql_ipv4_cidr_block`" pulumi-lang-yaml="`cloudSqlIpv4CidrBlock`" pulumi-lang-java="`cloudSqlIpv4CidrBlock`">`cloud_sql_ipv4_cidr_block`</span> -
      (Optional)
      The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from <span pulumi-lang-nodejs="`webServerIpv4CidrBlock`" pulumi-lang-dotnet="`WebServerIpv4CidrBlock`" pulumi-lang-go="`webServerIpv4CidrBlock`" pulumi-lang-python="`web_server_ipv4_cidr_block`" pulumi-lang-yaml="`webServerIpv4CidrBlock`" pulumi-lang-java="`webServerIpv4CidrBlock`">`web_server_ipv4_cidr_block`</span>
    
    * <span pulumi-lang-nodejs="`cloudComposerNetworkIpv4CidrBlock"" pulumi-lang-dotnet="`CloudComposerNetworkIpv4CidrBlock"" pulumi-lang-go="`cloudComposerNetworkIpv4CidrBlock"" pulumi-lang-python="`cloud_composer_network_ipv4_cidr_block"" pulumi-lang-yaml="`cloudComposerNetworkIpv4CidrBlock"" pulumi-lang-java="`cloudComposerNetworkIpv4CidrBlock"">`cloud_composer_network_ipv4_cidr_block"</span>` -
      (Optional, Cloud Composer 2 only)
      The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block.
    
    * <span pulumi-lang-nodejs="`enablePrivatelyUsedPublicIps`" pulumi-lang-dotnet="`EnablePrivatelyUsedPublicIps`" pulumi-lang-go="`enablePrivatelyUsedPublicIps`" pulumi-lang-python="`enable_privately_used_public_ips`" pulumi-lang-yaml="`enablePrivatelyUsedPublicIps`" pulumi-lang-java="`enablePrivatelyUsedPublicIps`">`enable_privately_used_public_ips`</span> -
      (Optional)
      When enabled, IPs from public (non-RFC1918) ranges can be used for
      `ip_allocation_policy.cluster_ipv4_cidr_block` and `ip_allocation_policy.service_ipv4_cidr_block`.
    
    * <span pulumi-lang-nodejs="`cloudComposerConnectionSubnetwork`" pulumi-lang-dotnet="`CloudComposerConnectionSubnetwork`" pulumi-lang-go="`cloudComposerConnectionSubnetwork`" pulumi-lang-python="`cloud_composer_connection_subnetwork`" pulumi-lang-yaml="`cloudComposerConnectionSubnetwork`" pulumi-lang-java="`cloudComposerConnectionSubnetwork`">`cloud_composer_connection_subnetwork`</span> -
      (Optional)
      When specified, the environment will use Private Service Connect instead of VPC peerings to connect
      to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP
      address from this subnetwork. This field is supported for Cloud Composer environments in
      versions `composer-2.*.*-airflow-*.*.*` and newer.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedIpAllocationPolicyC2"" pulumi-lang-dotnet=""NestedIpAllocationPolicyC2"" pulumi-lang-go=""nestedIpAllocationPolicyC2"" pulumi-lang-python=""nested_ip_allocation_policy_c2"" pulumi-lang-yaml=""nestedIpAllocationPolicyC2"" pulumi-lang-java=""nestedIpAllocationPolicyC2"">"nested_ip_allocation_policy_c2"</span>></a>The <span pulumi-lang-nodejs="`ipAllocationPolicy`" pulumi-lang-dotnet="`IpAllocationPolicy`" pulumi-lang-go="`ipAllocationPolicy`" pulumi-lang-python="`ip_allocation_policy`" pulumi-lang-yaml="`ipAllocationPolicy`" pulumi-lang-java="`ipAllocationPolicy`">`ip_allocation_policy`</span> block supports:
    
    * <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> -
      (Optional)
      The name of the cluster's secondary range used to allocate IP addresses to pods.
      Specify either <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> or <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> but not both.
    
    * <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> -
      (Optional)
      The name of the services' secondary range used to allocate IP addresses to the cluster.
      Specify either <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> or <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> but not both.
    
    * <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> -
      (Optional)
      The IP address range used to allocate IP addresses to pods in the cluster.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
      Set to blank to have GKE choose a range with the default size.
      Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask.
      Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks
      (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
      Specify either <span pulumi-lang-nodejs="`clusterSecondaryRangeName`" pulumi-lang-dotnet="`ClusterSecondaryRangeName`" pulumi-lang-go="`clusterSecondaryRangeName`" pulumi-lang-python="`cluster_secondary_range_name`" pulumi-lang-yaml="`clusterSecondaryRangeName`" pulumi-lang-java="`clusterSecondaryRangeName`">`cluster_secondary_range_name`</span> or <span pulumi-lang-nodejs="`clusterIpv4CidrBlock`" pulumi-lang-dotnet="`ClusterIpv4CidrBlock`" pulumi-lang-go="`clusterIpv4CidrBlock`" pulumi-lang-python="`cluster_ipv4_cidr_block`" pulumi-lang-yaml="`clusterIpv4CidrBlock`" pulumi-lang-java="`clusterIpv4CidrBlock`">`cluster_ipv4_cidr_block`</span> but not both.
    
    * <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> -
      (Optional)
      The IP address range used to allocate IP addresses in this cluster.
      For Cloud Composer 1 environments, this field is applicable only when <span pulumi-lang-nodejs="`useIpAliases`" pulumi-lang-dotnet="`UseIpAliases`" pulumi-lang-go="`useIpAliases`" pulumi-lang-python="`use_ip_aliases`" pulumi-lang-yaml="`useIpAliases`" pulumi-lang-java="`useIpAliases`">`use_ip_aliases`</span> is true.
      Set to blank to have GKE choose a range with the default size.
      Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask.
      Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks
      (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
      Specify either <span pulumi-lang-nodejs="`servicesSecondaryRangeName`" pulumi-lang-dotnet="`ServicesSecondaryRangeName`" pulumi-lang-go="`servicesSecondaryRangeName`" pulumi-lang-python="`services_secondary_range_name`" pulumi-lang-yaml="`servicesSecondaryRangeName`" pulumi-lang-java="`servicesSecondaryRangeName`">`services_secondary_range_name`</span> or <span pulumi-lang-nodejs="`servicesIpv4CidrBlock`" pulumi-lang-dotnet="`ServicesIpv4CidrBlock`" pulumi-lang-go="`servicesIpv4CidrBlock`" pulumi-lang-python="`services_ipv4_cidr_block`" pulumi-lang-yaml="`servicesIpv4CidrBlock`" pulumi-lang-java="`servicesIpv4CidrBlock`">`services_ipv4_cidr_block`</span> but not both.
    
    <a name=<span pulumi-lang-nodejs=""nestedEncryptionConfigComp2"" pulumi-lang-dotnet=""NestedEncryptionConfigComp2"" pulumi-lang-go=""nestedEncryptionConfigComp2"" pulumi-lang-python=""nested_encryption_config_comp_2"" pulumi-lang-yaml=""nestedEncryptionConfigComp2"" pulumi-lang-java=""nestedEncryptionConfigComp2"">"nested_encryption_config_comp_2"</span>></a>The <span pulumi-lang-nodejs="`encryptionConfig`" pulumi-lang-dotnet="`EncryptionConfig`" pulumi-lang-go="`encryptionConfig`" pulumi-lang-python="`encryption_config`" pulumi-lang-yaml="`encryptionConfig`" pulumi-lang-java="`encryptionConfig`">`encryption_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`kmsKeyName`" pulumi-lang-dotnet="`KmsKeyName`" pulumi-lang-go="`kmsKeyName`" pulumi-lang-python="`kms_key_name`" pulumi-lang-yaml="`kmsKeyName`" pulumi-lang-java="`kmsKeyName`">`kms_key_name`</span> -
      (Required)
      Customer-managed Encryption Key available through Google's Key Management Service. It must
      be the fully qualified resource name,
      i.e. projects/project-id/locations/location/keyRings/keyring/cryptoKeys/key. Cannot be updated.
    
    <a name=<span pulumi-lang-nodejs=""nestedMaintenanceWindowComp2"" pulumi-lang-dotnet=""NestedMaintenanceWindowComp2"" pulumi-lang-go=""nestedMaintenanceWindowComp2"" pulumi-lang-python=""nested_maintenance_window_comp_2"" pulumi-lang-yaml=""nestedMaintenanceWindowComp2"" pulumi-lang-java=""nestedMaintenanceWindowComp2"">"nested_maintenance_window_comp_2"</span>></a>The <span pulumi-lang-nodejs="`maintenanceWindow`" pulumi-lang-dotnet="`MaintenanceWindow`" pulumi-lang-go="`maintenanceWindow`" pulumi-lang-python="`maintenance_window`" pulumi-lang-yaml="`maintenanceWindow`" pulumi-lang-java="`maintenanceWindow`">`maintenance_window`</span> block supports:
    
    * <span pulumi-lang-nodejs="`startTime`" pulumi-lang-dotnet="`StartTime`" pulumi-lang-go="`startTime`" pulumi-lang-python="`start_time`" pulumi-lang-yaml="`startTime`" pulumi-lang-java="`startTime`">`start_time`</span> -
      (Required)
      Start time of the first recurrence of the maintenance window.
    
    * <span pulumi-lang-nodejs="`endTime`" pulumi-lang-dotnet="`EndTime`" pulumi-lang-go="`endTime`" pulumi-lang-python="`end_time`" pulumi-lang-yaml="`endTime`" pulumi-lang-java="`endTime`">`end_time`</span> -
      (Required)
      Maintenance window end time. It is used only to calculate the duration of the maintenance window.
      The value for end-time must be in the future, relative to 'start_time'.
    
    * <span pulumi-lang-nodejs="`recurrence`" pulumi-lang-dotnet="`Recurrence`" pulumi-lang-go="`recurrence`" pulumi-lang-python="`recurrence`" pulumi-lang-yaml="`recurrence`" pulumi-lang-java="`recurrence`">`recurrence`</span> -
      (Required)
      Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'.
      The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'.
      Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    
    <a name=<span pulumi-lang-nodejs=""nestedRecoveryConfigC2"" pulumi-lang-dotnet=""NestedRecoveryConfigC2"" pulumi-lang-go=""nestedRecoveryConfigC2"" pulumi-lang-python=""nested_recovery_config_c2"" pulumi-lang-yaml=""nestedRecoveryConfigC2"" pulumi-lang-java=""nestedRecoveryConfigC2"">"nested_recovery_config_c2"</span>></a>The <span pulumi-lang-nodejs="`recoveryConfig`" pulumi-lang-dotnet="`RecoveryConfig`" pulumi-lang-go="`recoveryConfig`" pulumi-lang-python="`recovery_config`" pulumi-lang-yaml="`recoveryConfig`" pulumi-lang-java="`recoveryConfig`">`recovery_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`scheduledSnapshotsConfig`" pulumi-lang-dotnet="`ScheduledSnapshotsConfig`" pulumi-lang-go="`scheduledSnapshotsConfig`" pulumi-lang-python="`scheduled_snapshots_config`" pulumi-lang-yaml="`scheduledSnapshotsConfig`" pulumi-lang-java="`scheduledSnapshotsConfig`">`scheduled_snapshots_config`</span> -
      (Optional)
      The recovery configuration settings for the Cloud Composer environment.
    
    The <span pulumi-lang-nodejs="`scheduledSnapshotsConfig`" pulumi-lang-dotnet="`ScheduledSnapshotsConfig`" pulumi-lang-go="`scheduledSnapshotsConfig`" pulumi-lang-python="`scheduled_snapshots_config`" pulumi-lang-yaml="`scheduledSnapshotsConfig`" pulumi-lang-java="`scheduledSnapshotsConfig`">`scheduled_snapshots_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`enabled`" pulumi-lang-dotnet="`Enabled`" pulumi-lang-go="`enabled`" pulumi-lang-python="`enabled`" pulumi-lang-yaml="`enabled`" pulumi-lang-java="`enabled`">`enabled`</span> -
      (Optional)
      When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    
    * <span pulumi-lang-nodejs="`snapshotLocation`" pulumi-lang-dotnet="`SnapshotLocation`" pulumi-lang-go="`snapshotLocation`" pulumi-lang-python="`snapshot_location`" pulumi-lang-yaml="`snapshotLocation`" pulumi-lang-java="`snapshotLocation`">`snapshot_location`</span> -
      (Optional)
      The URI of a bucket folder where to save the snapshot.
    
    * <span pulumi-lang-nodejs="`snapshotCreationSchedule`" pulumi-lang-dotnet="`SnapshotCreationSchedule`" pulumi-lang-go="`snapshotCreationSchedule`" pulumi-lang-python="`snapshot_creation_schedule`" pulumi-lang-yaml="`snapshotCreationSchedule`" pulumi-lang-java="`snapshotCreationSchedule`">`snapshot_creation_schedule`</span> -
      (Optional)
      Snapshot schedule, in the unix-cron format.
    
    * <span pulumi-lang-nodejs="`timeZone`" pulumi-lang-dotnet="`TimeZone`" pulumi-lang-go="`timeZone`" pulumi-lang-python="`time_zone`" pulumi-lang-yaml="`timeZone`" pulumi-lang-java="`timeZone`">`time_zone`</span> -
      (Optional)
      A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    
    The <span pulumi-lang-nodejs="`workloadsConfig`" pulumi-lang-dotnet="`WorkloadsConfig`" pulumi-lang-go="`workloadsConfig`" pulumi-lang-python="`workloads_config`" pulumi-lang-yaml="`workloadsConfig`" pulumi-lang-java="`workloadsConfig`">`workloads_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`scheduler`" pulumi-lang-dotnet="`Scheduler`" pulumi-lang-go="`scheduler`" pulumi-lang-python="`scheduler`" pulumi-lang-yaml="`scheduler`" pulumi-lang-java="`scheduler`">`scheduler`</span> -
      (Optional)
      Configuration for resources used by Airflow schedulers.
    
    * <span pulumi-lang-nodejs="`triggerer`" pulumi-lang-dotnet="`Triggerer`" pulumi-lang-go="`triggerer`" pulumi-lang-python="`triggerer`" pulumi-lang-yaml="`triggerer`" pulumi-lang-java="`triggerer`">`triggerer`</span> -
      (Optional)
      Configuration for resources used by Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`webServer`" pulumi-lang-dotnet="`WebServer`" pulumi-lang-go="`webServer`" pulumi-lang-python="`web_server`" pulumi-lang-yaml="`webServer`" pulumi-lang-java="`webServer`">`web_server`</span> -
      (Optional)
      Configuration for resources used by Airflow web server.
    
    * <span pulumi-lang-nodejs="`worker`" pulumi-lang-dotnet="`Worker`" pulumi-lang-go="`worker`" pulumi-lang-python="`worker`" pulumi-lang-yaml="`worker`" pulumi-lang-java="`worker`">`worker`</span> -
      (Optional)
      Configuration for resources used by Airflow workers.
    
    The <span pulumi-lang-nodejs="`scheduler`" pulumi-lang-dotnet="`Scheduler`" pulumi-lang-go="`scheduler`" pulumi-lang-python="`scheduler`" pulumi-lang-yaml="`scheduler`" pulumi-lang-java="`scheduler`">`scheduler`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span> -
      (Optional)
      The amount of storage (GB) for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`count`" pulumi-lang-dotnet="`Count`" pulumi-lang-go="`count`" pulumi-lang-python="`count`" pulumi-lang-yaml="`count`" pulumi-lang-java="`count`">`count`</span> -
      (Optional)
      The number of schedulers.
    
    The <span pulumi-lang-nodejs="`triggerer`" pulumi-lang-dotnet="`Triggerer`" pulumi-lang-go="`triggerer`" pulumi-lang-python="`triggerer`" pulumi-lang-yaml="`triggerer`" pulumi-lang-java="`triggerer`">`triggerer`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Required)
      The number of CPUs for a single Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Required)
      The amount of memory (GB) for a single Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`count`" pulumi-lang-dotnet="`Count`" pulumi-lang-go="`count`" pulumi-lang-python="`count`" pulumi-lang-yaml="`count`" pulumi-lang-java="`count`">`count`</span> -
      (Required)
      The number of Airflow triggerers.
    
    The <span pulumi-lang-nodejs="`webServer`" pulumi-lang-dotnet="`WebServer`" pulumi-lang-go="`webServer`" pulumi-lang-python="`web_server`" pulumi-lang-yaml="`webServer`" pulumi-lang-java="`webServer`">`web_server`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for the Airflow web server.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for the Airflow web server.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span> -
      (Optional)
      The amount of storage (GB) for the Airflow web server.
    
    The <span pulumi-lang-nodejs="`worker`" pulumi-lang-dotnet="`Worker`" pulumi-lang-go="`worker`" pulumi-lang-python="`worker`" pulumi-lang-yaml="`worker`" pulumi-lang-java="`worker`">`worker`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span>
      (Optional)
      The amount of storage (GB) for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`minCount`" pulumi-lang-dotnet="`MinCount`" pulumi-lang-go="`minCount`" pulumi-lang-python="`min_count`" pulumi-lang-yaml="`minCount`" pulumi-lang-java="`minCount`">`min_count`</span> -
      (Optional)
      The minimum number of Airflow workers that the environment can run. The number of workers in the
      environment does not go below this number, even if a lower number of workers can handle the load.
    
    * <span pulumi-lang-nodejs="`maxCount`" pulumi-lang-dotnet="`MaxCount`" pulumi-lang-go="`maxCount`" pulumi-lang-python="`max_count`" pulumi-lang-yaml="`maxCount`" pulumi-lang-java="`maxCount`">`max_count`</span> -
      (Optional)
      The maximum number of Airflow workers that the environment can run. The number of workers in the
      environment does not go above this number, even if a higher number of workers is required to
      handle the load.
    
    
    ## Argument Reference - Cloud Composer 3
    
    The following arguments are supported:
    
    * <span pulumi-lang-nodejs="`name`" pulumi-lang-dotnet="`Name`" pulumi-lang-go="`name`" pulumi-lang-python="`name`" pulumi-lang-yaml="`name`" pulumi-lang-java="`name`">`name`</span> -
      (Required)
      Name of the environment
    
    * <span pulumi-lang-nodejs="`config`" pulumi-lang-dotnet="`Config`" pulumi-lang-go="`config`" pulumi-lang-python="`config`" pulumi-lang-yaml="`config`" pulumi-lang-java="`config`">`config`</span> -
      (Optional)
      Configuration parameters for this environment. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`labels`" pulumi-lang-dotnet="`Labels`" pulumi-lang-go="`labels`" pulumi-lang-python="`labels`" pulumi-lang-yaml="`labels`" pulumi-lang-java="`labels`">`labels`</span> -
      (Optional)
      User-defined labels for this environment. The labels map can contain
      no more than 64 entries. Entries of the labels map are UTF8 strings
      that comply with the following restrictions:
      Label keys must be between 1 and 63 characters long and must conform
      to the following regular expression: `a-z?`.
      Label values must be between 0 and 63 characters long and must
      conform to the regular expression `(a-z?)?`.
      No more than 64 labels can be associated with a given environment.
      Both keys and values must be <= 128 bytes in size.
    
    * <span pulumi-lang-nodejs="`region`" pulumi-lang-dotnet="`Region`" pulumi-lang-go="`region`" pulumi-lang-python="`region`" pulumi-lang-yaml="`region`" pulumi-lang-java="`region`">`region`</span> -
      (Optional)
      The location or Compute Engine region for the environment.
    
    * <span pulumi-lang-nodejs="`project`" pulumi-lang-dotnet="`Project`" pulumi-lang-go="`project`" pulumi-lang-python="`project`" pulumi-lang-yaml="`project`" pulumi-lang-java="`project`">`project`</span> -
      (Optional) The ID of the project in which the resource belongs.
      If it is not provided, the provider project is used.
    
    * <span pulumi-lang-nodejs="`storageConfig`" pulumi-lang-dotnet="`StorageConfig`" pulumi-lang-go="`storageConfig`" pulumi-lang-python="`storage_config`" pulumi-lang-yaml="`storageConfig`" pulumi-lang-java="`storageConfig`">`storage_config`</span> -
      (Optional)
      Configuration options for storage used by Composer environment. Structure is documented below.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedConfigC3"" pulumi-lang-dotnet=""NestedConfigC3"" pulumi-lang-go=""nestedConfigC3"" pulumi-lang-python=""nested_config_c3"" pulumi-lang-yaml=""nestedConfigC3"" pulumi-lang-java=""nestedConfigC3"">"nested_config_c3"</span>></a>The <span pulumi-lang-nodejs="`config`" pulumi-lang-dotnet="`Config`" pulumi-lang-go="`config`" pulumi-lang-python="`config`" pulumi-lang-yaml="`config`" pulumi-lang-java="`config`">`config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`nodeConfig`" pulumi-lang-dotnet="`NodeConfig`" pulumi-lang-go="`nodeConfig`" pulumi-lang-python="`node_config`" pulumi-lang-yaml="`nodeConfig`" pulumi-lang-java="`nodeConfig`">`node_config`</span> -
      (Optional)
      The configuration used for the Kubernetes Engine cluster. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`softwareConfig`" pulumi-lang-dotnet="`SoftwareConfig`" pulumi-lang-go="`softwareConfig`" pulumi-lang-python="`software_config`" pulumi-lang-yaml="`softwareConfig`" pulumi-lang-java="`softwareConfig`">`software_config`</span> -
      (Optional)
      The configuration settings for software (Airflow) inside the environment. Structure is documented below.
    
    * <span pulumi-lang-nodejs="`enablePrivateEnvironment`" pulumi-lang-dotnet="`EnablePrivateEnvironment`" pulumi-lang-go="`enablePrivateEnvironment`" pulumi-lang-python="`enable_private_environment`" pulumi-lang-yaml="`enablePrivateEnvironment`" pulumi-lang-java="`enablePrivateEnvironment`">`enable_private_environment`</span> -
      (Optional, Cloud Composer 3 only)
      If true, a private Composer environment will be created.
    
    * <span pulumi-lang-nodejs="`enablePrivateBuildsOnly`" pulumi-lang-dotnet="`EnablePrivateBuildsOnly`" pulumi-lang-go="`enablePrivateBuildsOnly`" pulumi-lang-python="`enable_private_builds_only`" pulumi-lang-yaml="`enablePrivateBuildsOnly`" pulumi-lang-java="`enablePrivateBuildsOnly`">`enable_private_builds_only`</span> -
      (Optional, Cloud Composer 3 only)
      If true, builds performed during operations that install Python packages have only private connectivity to Google services.
      If false, the builds also have access to the internet.
    
    * <span pulumi-lang-nodejs="`encryptionConfig`" pulumi-lang-dotnet="`EncryptionConfig`" pulumi-lang-go="`encryptionConfig`" pulumi-lang-python="`encryption_config`" pulumi-lang-yaml="`encryptionConfig`" pulumi-lang-java="`encryptionConfig`">`encryption_config`</span> -
      (Optional)
      The encryption options for the Cloud Composer environment and its
      dependencies.
    
    * <span pulumi-lang-nodejs="`maintenanceWindow`" pulumi-lang-dotnet="`MaintenanceWindow`" pulumi-lang-go="`maintenanceWindow`" pulumi-lang-python="`maintenance_window`" pulumi-lang-yaml="`maintenanceWindow`" pulumi-lang-java="`maintenanceWindow`">`maintenance_window`</span> -
      (Optional)
      The configuration settings for Cloud Composer maintenance windows.
    
    * <span pulumi-lang-nodejs="`workloadsConfig`" pulumi-lang-dotnet="`WorkloadsConfig`" pulumi-lang-go="`workloadsConfig`" pulumi-lang-python="`workloads_config`" pulumi-lang-yaml="`workloadsConfig`" pulumi-lang-java="`workloadsConfig`">`workloads_config`</span> -
      (Optional)
      The Kubernetes workloads configuration for GKE cluster associated with the
      Cloud Composer environment.
    
    * <span pulumi-lang-nodejs="`environmentSize`" pulumi-lang-dotnet="`EnvironmentSize`" pulumi-lang-go="`environmentSize`" pulumi-lang-python="`environment_size`" pulumi-lang-yaml="`environmentSize`" pulumi-lang-java="`environmentSize`">`environment_size`</span> -
      (Optional)
      The environment size controls the performance parameters of the managed
      Cloud Composer infrastructure that includes the Airflow database. Values for
      environment size are `ENVIRONMENT_SIZE_SMALL`, `ENVIRONMENT_SIZE_MEDIUM`,
      and `ENVIRONMENT_SIZE_LARGE`.
    
    * <span pulumi-lang-nodejs="`dataRetentionConfig`" pulumi-lang-dotnet="`DataRetentionConfig`" pulumi-lang-go="`dataRetentionConfig`" pulumi-lang-python="`data_retention_config`" pulumi-lang-yaml="`dataRetentionConfig`" pulumi-lang-java="`dataRetentionConfig`">`data_retention_config`</span> -
      (Optional)
      Configuration setting for Airflow database retention mechanism. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedDataRetentionConfigC3"" pulumi-lang-dotnet=""NestedDataRetentionConfigC3"" pulumi-lang-go=""nestedDataRetentionConfigC3"" pulumi-lang-python=""nested_data_retention_config_c3"" pulumi-lang-yaml=""nestedDataRetentionConfigC3"" pulumi-lang-java=""nestedDataRetentionConfigC3"">"nested_data_retention_config_c3"</span>></a>The <span pulumi-lang-nodejs="`dataRetentionConfig`" pulumi-lang-dotnet="`DataRetentionConfig`" pulumi-lang-go="`dataRetentionConfig`" pulumi-lang-python="`data_retention_config`" pulumi-lang-yaml="`dataRetentionConfig`" pulumi-lang-java="`dataRetentionConfig`">`data_retention_config`</span> block supports:
    * <span pulumi-lang-nodejs="`airflowMetadataRetentionConfig`" pulumi-lang-dotnet="`AirflowMetadataRetentionConfig`" pulumi-lang-go="`airflowMetadataRetentionConfig`" pulumi-lang-python="`airflow_metadata_retention_config`" pulumi-lang-yaml="`airflowMetadataRetentionConfig`" pulumi-lang-java="`airflowMetadataRetentionConfig`">`airflow_metadata_retention_config`</span> - 
      (Optional)
      The retention policy for airflow metadata database. Structure is
      documented below.
    
    <a name=<span pulumi-lang-nodejs=""nestedAirflowMetadataRetentionConfigC3"" pulumi-lang-dotnet=""NestedAirflowMetadataRetentionConfigC3"" pulumi-lang-go=""nestedAirflowMetadataRetentionConfigC3"" pulumi-lang-python=""nested_airflow_metadata_retention_config_c3"" pulumi-lang-yaml=""nestedAirflowMetadataRetentionConfigC3"" pulumi-lang-java=""nestedAirflowMetadataRetentionConfigC3"">"nested_airflow_metadata_retention_config_c3"</span>></a>The <span pulumi-lang-nodejs="`airflowMetadataRetentionConfig`" pulumi-lang-dotnet="`AirflowMetadataRetentionConfig`" pulumi-lang-go="`airflowMetadataRetentionConfig`" pulumi-lang-python="`airflow_metadata_retention_config`" pulumi-lang-yaml="`airflowMetadataRetentionConfig`" pulumi-lang-java="`airflowMetadataRetentionConfig`">`airflow_metadata_retention_config`</span> block supports:
    * <span pulumi-lang-nodejs="`retentionMode`" pulumi-lang-dotnet="`RetentionMode`" pulumi-lang-go="`retentionMode`" pulumi-lang-python="`retention_mode`" pulumi-lang-yaml="`retentionMode`" pulumi-lang-java="`retentionMode`">`retention_mode`</span> - 
      (Optional)
      Retention can be either enabled or disabled. Values for<span pulumi-lang-nodejs=" retentionMode " pulumi-lang-dotnet=" RetentionMode " pulumi-lang-go=" retentionMode " pulumi-lang-python=" retention_mode " pulumi-lang-yaml=" retentionMode " pulumi-lang-java=" retentionMode "> retention_mode </span>are 
      `RETENTION_MODE_ENABLED` to enable retention and `RETENTION_MODE_DISABLED` 
      to disable retention.
    * <span pulumi-lang-nodejs="`retentionDays`" pulumi-lang-dotnet="`RetentionDays`" pulumi-lang-go="`retentionDays`" pulumi-lang-python="`retention_days`" pulumi-lang-yaml="`retentionDays`" pulumi-lang-java="`retentionDays`">`retention_days`</span> - 
      (Optional)
      How many days data should be retained for.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedStorageConfigC3"" pulumi-lang-dotnet=""NestedStorageConfigC3"" pulumi-lang-go=""nestedStorageConfigC3"" pulumi-lang-python=""nested_storage_config_c3"" pulumi-lang-yaml=""nestedStorageConfigC3"" pulumi-lang-java=""nestedStorageConfigC3"">"nested_storage_config_c3"</span>></a>The <span pulumi-lang-nodejs="`storageConfig`" pulumi-lang-dotnet="`StorageConfig`" pulumi-lang-go="`storageConfig`" pulumi-lang-python="`storage_config`" pulumi-lang-yaml="`storageConfig`" pulumi-lang-java="`storageConfig`">`storage_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`bucket`" pulumi-lang-dotnet="`Bucket`" pulumi-lang-go="`bucket`" pulumi-lang-python="`bucket`" pulumi-lang-yaml="`bucket`" pulumi-lang-java="`bucket`">`bucket`</span> -
      (Required)
      Name of an existing Cloud Storage bucket to be used by the environment.
    
    
    <a name=<span pulumi-lang-nodejs=""nestedNodeConfigC3"" pulumi-lang-dotnet=""NestedNodeConfigC3"" pulumi-lang-go=""nestedNodeConfigC3"" pulumi-lang-python=""nested_node_config_c3"" pulumi-lang-yaml=""nestedNodeConfigC3"" pulumi-lang-java=""nestedNodeConfigC3"">"nested_node_config_c3"</span>></a>The <span pulumi-lang-nodejs="`nodeConfig`" pulumi-lang-dotnet="`NodeConfig`" pulumi-lang-go="`nodeConfig`" pulumi-lang-python="`node_config`" pulumi-lang-yaml="`nodeConfig`" pulumi-lang-java="`nodeConfig`">`node_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`network`" pulumi-lang-dotnet="`Network`" pulumi-lang-go="`network`" pulumi-lang-python="`network`" pulumi-lang-yaml="`network`" pulumi-lang-java="`network`">`network`</span> -
      (Optional)
      The Compute Engine network to be used for machine
      communications, specified as a self-link, relative resource name
      (for example "projects/{project}/global/networks/{network}"), by name.
    
      The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's
      project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    
    * <span pulumi-lang-nodejs="`subnetwork`" pulumi-lang-dotnet="`Subnetwork`" pulumi-lang-go="`subnetwork`" pulumi-lang-python="`subnetwork`" pulumi-lang-yaml="`subnetwork`" pulumi-lang-java="`subnetwork`">`subnetwork`</span> -
      (Optional)
      The Compute Engine subnetwork to be used for machine
      communications, specified as a self-link, relative resource name (for example,
      "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided,
      network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    
    * <span pulumi-lang-nodejs="`composerNetworkAttachment`" pulumi-lang-dotnet="`ComposerNetworkAttachment`" pulumi-lang-go="`composerNetworkAttachment`" pulumi-lang-python="`composer_network_attachment`" pulumi-lang-yaml="`composerNetworkAttachment`" pulumi-lang-java="`composerNetworkAttachment`">`composer_network_attachment`</span> -
      (Optional, Cloud Composer 3 only)
      PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment 
      and point Cloud Composer environment to use. It is possible to share network attachment among many environments, 
      provided enough IP addresses are available.
    
    * <span pulumi-lang-nodejs="`serviceAccount`" pulumi-lang-dotnet="`ServiceAccount`" pulumi-lang-go="`serviceAccount`" pulumi-lang-python="`service_account`" pulumi-lang-yaml="`serviceAccount`" pulumi-lang-java="`serviceAccount`">`service_account`</span> -
      (Optional)
      The Google Cloud Platform Service Account to be used by the
      node VMs. If a service account is not specified, the "default"
      Compute Engine service account is used. Cannot be updated. If given,
      note that the service account must have `roles/composer.worker`
      for any GCP resources created under the Cloud Composer Environment.
    
      This field is required for newly created environments.
    
    * <span pulumi-lang-nodejs="`tags`" pulumi-lang-dotnet="`Tags`" pulumi-lang-go="`tags`" pulumi-lang-python="`tags`" pulumi-lang-yaml="`tags`" pulumi-lang-java="`tags`">`tags`</span> -
      (Optional)
      The list of instance tags applied to all node VMs. Tags are
      used to identify valid sources or targets for network
      firewalls. Each tag within the list must comply with RFC1035.
      Cannot be updated.
    
    * <span pulumi-lang-nodejs="`composerInternalIpv4CidrBlock`" pulumi-lang-dotnet="`ComposerInternalIpv4CidrBlock`" pulumi-lang-go="`composerInternalIpv4CidrBlock`" pulumi-lang-python="`composer_internal_ipv4_cidr_block`" pulumi-lang-yaml="`composerInternalIpv4CidrBlock`" pulumi-lang-java="`composerInternalIpv4CidrBlock`">`composer_internal_ipv4_cidr_block`</span> -
      (Optional, Cloud Composer 3 only)
      /20 IPv4 cidr range that will be used by Composer internal components.
      Cannot be updated.
    
    <a name=<span pulumi-lang-nodejs=""nestedSoftwareConfigC3"" pulumi-lang-dotnet=""NestedSoftwareConfigC3"" pulumi-lang-go=""nestedSoftwareConfigC3"" pulumi-lang-python=""nested_software_config_c3"" pulumi-lang-yaml=""nestedSoftwareConfigC3"" pulumi-lang-java=""nestedSoftwareConfigC3"">"nested_software_config_c3"</span>></a>The <span pulumi-lang-nodejs="`softwareConfig`" pulumi-lang-dotnet="`SoftwareConfig`" pulumi-lang-go="`softwareConfig`" pulumi-lang-python="`software_config`" pulumi-lang-yaml="`softwareConfig`" pulumi-lang-java="`softwareConfig`">`software_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`airflowConfigOverrides`" pulumi-lang-dotnet="`AirflowConfigOverrides`" pulumi-lang-go="`airflowConfigOverrides`" pulumi-lang-python="`airflow_config_overrides`" pulumi-lang-yaml="`airflowConfigOverrides`" pulumi-lang-java="`airflowConfigOverrides`">`airflow_config_overrides`</span> -
      (Optional) Apache Airflow configuration properties to override. Property keys contain the section and property names,
      separated by a hyphen, for example "core-dags_are_paused_at_creation".
    
      Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]").
      The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain
      characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can
      contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration
      property values are [blacklisted](https://cloud.google.com/composer/docs/concepts/airflow-configurations#airflow_configuration_blacklists),
      and cannot be overridden.
    
    * <span pulumi-lang-nodejs="`pypiPackages`" pulumi-lang-dotnet="`PypiPackages`" pulumi-lang-go="`pypiPackages`" pulumi-lang-python="`pypi_packages`" pulumi-lang-yaml="`pypiPackages`" pulumi-lang-java="`pypiPackages`">`pypi_packages`</span> -
      (Optional)
      Custom Python Package Index (PyPI) packages to be installed
      in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and
      version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without
      pinning it to a version specifier, use the empty string as the value.
    
    * <span pulumi-lang-nodejs="`envVariables`" pulumi-lang-dotnet="`EnvVariables`" pulumi-lang-go="`envVariables`" pulumi-lang-python="`env_variables`" pulumi-lang-yaml="`envVariables`" pulumi-lang-java="`envVariables`">`env_variables`</span> -
      (Optional)
      Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes.
      Environment variable names must match the regular expression `[a-zA-Z_][a-zA-Z0-9_]*`.
      They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression
      `AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+`), and they cannot match any of the following reserved names:
    

    AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER

    
    * <span pulumi-lang-nodejs="`imageVersion`" pulumi-lang-dotnet="`ImageVersion`" pulumi-lang-go="`imageVersion`" pulumi-lang-python="`image_version`" pulumi-lang-yaml="`imageVersion`" pulumi-lang-java="`imageVersion`">`image_version`</span> -
      (Required) If omitted, the default is the latest version of Composer 2.
    
      In Cloud Composer 3, you can only specify 3 in the Cloud Composer portion of the image version. Example: composer-3-airflow-x.y.z-build.t.
    
      The Apache Airflow portion of the image version is a full semantic version that points to one of the
      supported Apache Airflow versions, or an alias in the form of only major, major.minor or major.minor.patch versions specified.
      Like in Composer 1 and 2, a given Airflow version is released multiple times in Composer, with different patches
      and versions of dependencies. To distinguish between these versions in Composer 3, you can optionally specify a
      build number to pin to a specific Airflow release.
      Example: composer-3-airflow-2.6.3-build.4.
    
      The image version in Composer 3 must match the regular expression:
      `composer-(([0-9]+)(\.[0-9]+\.[0-9]+(-preview\.[0-9]+)?)?|latest)-airflow-(([0-9]+)((\.[0-9]+)(\.[0-9]+)?)?(-build\.[0-9]+)?)`
      Example: composer-3-airflow-2.6.3-build.4
    
      **Important**: In-place upgrade in Composer 3 is only available between minor or patch versions of Apache Airflow.
      You can also upgrade to a different Airflow build within the same version by specifying the build number.
      For example, you can upgrade your environment from composer-3-airflow-2.6.x to composer-3-airflow-2.9.x,
      or from composer-3-airflow-2.9.3-build.4 to composer-3-airflow-2.9.3-build.5.
    
    * <span pulumi-lang-nodejs="`cloudDataLineageIntegration`" pulumi-lang-dotnet="`CloudDataLineageIntegration`" pulumi-lang-go="`cloudDataLineageIntegration`" pulumi-lang-python="`cloud_data_lineage_integration`" pulumi-lang-yaml="`cloudDataLineageIntegration`" pulumi-lang-java="`cloudDataLineageIntegration`">`cloud_data_lineage_integration`</span> -
      (Optional, Cloud Composer environments in versions composer-2.1.2-airflow-*.*.* and later)
      The configuration for Cloud Data Lineage integration. Structure is
      documented below.
    
    * <span pulumi-lang-nodejs="`webServerPluginsMode`" pulumi-lang-dotnet="`WebServerPluginsMode`" pulumi-lang-go="`webServerPluginsMode`" pulumi-lang-python="`web_server_plugins_mode`" pulumi-lang-yaml="`webServerPluginsMode`" pulumi-lang-java="`webServerPluginsMode`">`web_server_plugins_mode`</span> -
      (Optional, Cloud Composer 3 only)
      Web server plugins configuration. Can be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'.
    
    <a name=<span pulumi-lang-nodejs=""nestedCloudDataLineageIntegrationC3"" pulumi-lang-dotnet=""NestedCloudDataLineageIntegrationC3"" pulumi-lang-go=""nestedCloudDataLineageIntegrationC3"" pulumi-lang-python=""nested_cloud_data_lineage_integration_c3"" pulumi-lang-yaml=""nestedCloudDataLineageIntegrationC3"" pulumi-lang-java=""nestedCloudDataLineageIntegrationC3"">"nested_cloud_data_lineage_integration_c3"</span>></a>The <span pulumi-lang-nodejs="`cloudDataLineageIntegration`" pulumi-lang-dotnet="`CloudDataLineageIntegration`" pulumi-lang-go="`cloudDataLineageIntegration`" pulumi-lang-python="`cloud_data_lineage_integration`" pulumi-lang-yaml="`cloudDataLineageIntegration`" pulumi-lang-java="`cloudDataLineageIntegration`">`cloud_data_lineage_integration`</span> block supports:
    * <span pulumi-lang-nodejs="`enabled`" pulumi-lang-dotnet="`Enabled`" pulumi-lang-go="`enabled`" pulumi-lang-python="`enabled`" pulumi-lang-yaml="`enabled`" pulumi-lang-java="`enabled`">`enabled`</span> -
      (Required)
      Whether or not Cloud Data Lineage integration is enabled.
    
    <a name=<span pulumi-lang-nodejs=""nestedEncryptionConfigComp2"" pulumi-lang-dotnet=""NestedEncryptionConfigComp2"" pulumi-lang-go=""nestedEncryptionConfigComp2"" pulumi-lang-python=""nested_encryption_config_comp_2"" pulumi-lang-yaml=""nestedEncryptionConfigComp2"" pulumi-lang-java=""nestedEncryptionConfigComp2"">"nested_encryption_config_comp_2"</span>></a>The <span pulumi-lang-nodejs="`encryptionConfig`" pulumi-lang-dotnet="`EncryptionConfig`" pulumi-lang-go="`encryptionConfig`" pulumi-lang-python="`encryption_config`" pulumi-lang-yaml="`encryptionConfig`" pulumi-lang-java="`encryptionConfig`">`encryption_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`kmsKeyName`" pulumi-lang-dotnet="`KmsKeyName`" pulumi-lang-go="`kmsKeyName`" pulumi-lang-python="`kms_key_name`" pulumi-lang-yaml="`kmsKeyName`" pulumi-lang-java="`kmsKeyName`">`kms_key_name`</span> -
      (Required)
      Customer-managed Encryption Key available through Google's Key Management Service. It must
      be the fully qualified resource name,
      i.e. projects/project-id/locations/location/keyRings/keyring/cryptoKeys/key. Cannot be updated.
    
    <a name=<span pulumi-lang-nodejs=""nestedMaintenanceWindowComp2"" pulumi-lang-dotnet=""NestedMaintenanceWindowComp2"" pulumi-lang-go=""nestedMaintenanceWindowComp2"" pulumi-lang-python=""nested_maintenance_window_comp_2"" pulumi-lang-yaml=""nestedMaintenanceWindowComp2"" pulumi-lang-java=""nestedMaintenanceWindowComp2"">"nested_maintenance_window_comp_2"</span>></a>The <span pulumi-lang-nodejs="`maintenanceWindow`" pulumi-lang-dotnet="`MaintenanceWindow`" pulumi-lang-go="`maintenanceWindow`" pulumi-lang-python="`maintenance_window`" pulumi-lang-yaml="`maintenanceWindow`" pulumi-lang-java="`maintenanceWindow`">`maintenance_window`</span> block supports:
    
    * <span pulumi-lang-nodejs="`startTime`" pulumi-lang-dotnet="`StartTime`" pulumi-lang-go="`startTime`" pulumi-lang-python="`start_time`" pulumi-lang-yaml="`startTime`" pulumi-lang-java="`startTime`">`start_time`</span> -
      (Required)
      Start time of the first recurrence of the maintenance window.
    
    * <span pulumi-lang-nodejs="`endTime`" pulumi-lang-dotnet="`EndTime`" pulumi-lang-go="`endTime`" pulumi-lang-python="`end_time`" pulumi-lang-yaml="`endTime`" pulumi-lang-java="`endTime`">`end_time`</span> -
      (Required)
      Maintenance window end time. It is used only to calculate the duration of the maintenance window.
      The value for end-time must be in the future, relative to 'start_time'.
    
    * <span pulumi-lang-nodejs="`recurrence`" pulumi-lang-dotnet="`Recurrence`" pulumi-lang-go="`recurrence`" pulumi-lang-python="`recurrence`" pulumi-lang-yaml="`recurrence`" pulumi-lang-java="`recurrence`">`recurrence`</span> -
      (Required)
      Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'.
      The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'.
      Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    
    The <span pulumi-lang-nodejs="`workloadsConfig`" pulumi-lang-dotnet="`WorkloadsConfig`" pulumi-lang-go="`workloadsConfig`" pulumi-lang-python="`workloads_config`" pulumi-lang-yaml="`workloadsConfig`" pulumi-lang-java="`workloadsConfig`">`workloads_config`</span> block supports:
    
    * <span pulumi-lang-nodejs="`scheduler`" pulumi-lang-dotnet="`Scheduler`" pulumi-lang-go="`scheduler`" pulumi-lang-python="`scheduler`" pulumi-lang-yaml="`scheduler`" pulumi-lang-java="`scheduler`">`scheduler`</span> -
      (Optional)
      Configuration for resources used by Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`triggerer`" pulumi-lang-dotnet="`Triggerer`" pulumi-lang-go="`triggerer`" pulumi-lang-python="`triggerer`" pulumi-lang-yaml="`triggerer`" pulumi-lang-java="`triggerer`">`triggerer`</span> -
      (Optional)
      Configuration for resources used by Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`webServer`" pulumi-lang-dotnet="`WebServer`" pulumi-lang-go="`webServer`" pulumi-lang-python="`web_server`" pulumi-lang-yaml="`webServer`" pulumi-lang-java="`webServer`">`web_server`</span> -
      (Optional)
      Configuration for resources used by Airflow web server.
    
    * <span pulumi-lang-nodejs="`worker`" pulumi-lang-dotnet="`Worker`" pulumi-lang-go="`worker`" pulumi-lang-python="`worker`" pulumi-lang-yaml="`worker`" pulumi-lang-java="`worker`">`worker`</span> -
      (Optional)
      Configuration for resources used by Airflow workers.
    
    * <span pulumi-lang-nodejs="`dagProcessor`" pulumi-lang-dotnet="`DagProcessor`" pulumi-lang-go="`dagProcessor`" pulumi-lang-python="`dag_processor`" pulumi-lang-yaml="`dagProcessor`" pulumi-lang-java="`dagProcessor`">`dag_processor`</span> -
      (Optional, Cloud Composer 3 only)
      Configuration for resources used by DAG processor.
    
    The <span pulumi-lang-nodejs="`scheduler`" pulumi-lang-dotnet="`Scheduler`" pulumi-lang-go="`scheduler`" pulumi-lang-python="`scheduler`" pulumi-lang-yaml="`scheduler`" pulumi-lang-java="`scheduler`">`scheduler`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span> -
      (Optional)
      The amount of storage (GB) for a single Airflow scheduler.
    
    * <span pulumi-lang-nodejs="`count`" pulumi-lang-dotnet="`Count`" pulumi-lang-go="`count`" pulumi-lang-python="`count`" pulumi-lang-yaml="`count`" pulumi-lang-java="`count`">`count`</span> -
      (Optional)
      The number of schedulers.
    
    The <span pulumi-lang-nodejs="`triggerer`" pulumi-lang-dotnet="`Triggerer`" pulumi-lang-go="`triggerer`" pulumi-lang-python="`triggerer`" pulumi-lang-yaml="`triggerer`" pulumi-lang-java="`triggerer`">`triggerer`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Required)
      The number of CPUs for a single Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Required)
      The amount of memory (GB) for a single Airflow triggerer.
    
    * <span pulumi-lang-nodejs="`count`" pulumi-lang-dotnet="`Count`" pulumi-lang-go="`count`" pulumi-lang-python="`count`" pulumi-lang-yaml="`count`" pulumi-lang-java="`count`">`count`</span> -
      (Required)
      The number of Airflow triggerers.
    
    The <span pulumi-lang-nodejs="`webServer`" pulumi-lang-dotnet="`WebServer`" pulumi-lang-go="`webServer`" pulumi-lang-python="`web_server`" pulumi-lang-yaml="`webServer`" pulumi-lang-java="`webServer`">`web_server`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for the Airflow web server.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for the Airflow web server.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span> -
      (Optional)
      The amount of storage (GB) for the Airflow web server.
    
    The <span pulumi-lang-nodejs="`worker`" pulumi-lang-dotnet="`Worker`" pulumi-lang-go="`worker`" pulumi-lang-python="`worker`" pulumi-lang-yaml="`worker`" pulumi-lang-java="`worker`">`worker`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      The number of CPUs for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      The amount of memory (GB) for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span>
      (Optional)
      The amount of storage (GB) for a single Airflow worker.
    
    * <span pulumi-lang-nodejs="`minCount`" pulumi-lang-dotnet="`MinCount`" pulumi-lang-go="`minCount`" pulumi-lang-python="`min_count`" pulumi-lang-yaml="`minCount`" pulumi-lang-java="`minCount`">`min_count`</span> -
      (Optional)
      The minimum number of Airflow workers that the environment can run. The number of workers in the
      environment does not go below this number, even if a lower number of workers can handle the load.
    
    * <span pulumi-lang-nodejs="`maxCount`" pulumi-lang-dotnet="`MaxCount`" pulumi-lang-go="`maxCount`" pulumi-lang-python="`max_count`" pulumi-lang-yaml="`maxCount`" pulumi-lang-java="`maxCount`">`max_count`</span> -
      (Optional)
      The maximum number of Airflow workers that the environment can run. The number of workers in the
      environment does not go above this number, even if a higher number of workers is required to
      handle the load.
    
    The <span pulumi-lang-nodejs="`dagProcessor`" pulumi-lang-dotnet="`DagProcessor`" pulumi-lang-go="`dagProcessor`" pulumi-lang-python="`dag_processor`" pulumi-lang-yaml="`dagProcessor`" pulumi-lang-java="`dagProcessor`">`dag_processor`</span> block supports:
    
    * <span pulumi-lang-nodejs="`cpu`" pulumi-lang-dotnet="`Cpu`" pulumi-lang-go="`cpu`" pulumi-lang-python="`cpu`" pulumi-lang-yaml="`cpu`" pulumi-lang-java="`cpu`">`cpu`</span> -
      (Optional)
      CPU request and limit for DAG processor.
    
    * <span pulumi-lang-nodejs="`memoryGb`" pulumi-lang-dotnet="`MemoryGb`" pulumi-lang-go="`memoryGb`" pulumi-lang-python="`memory_gb`" pulumi-lang-yaml="`memoryGb`" pulumi-lang-java="`memoryGb`">`memory_gb`</span> -
      (Optional)
      Memory (GB) request and limit for DAG processor.
    
    * <span pulumi-lang-nodejs="`storageGb`" pulumi-lang-dotnet="`StorageGb`" pulumi-lang-go="`storageGb`" pulumi-lang-python="`storage_gb`" pulumi-lang-yaml="`storageGb`" pulumi-lang-java="`storageGb`">`storage_gb`</span>
      (Optional)
      Storage (GB) request and limit for DAG processor.
    
    * <span pulumi-lang-nodejs="`count`" pulumi-lang-dotnet="`Count`" pulumi-lang-go="`count`" pulumi-lang-python="`count`" pulumi-lang-yaml="`count`" pulumi-lang-java="`count`">`count`</span> -
      (Required)
      The number of Airflow DAG processors.
    
    
    ## Create Environment Resource {#create}
    
    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see [Resources](/docs/concepts/resources/).
    
    ### Constructor syntax
    <div>
    <pulumi-chooser type="language" options="csharp,go,typescript,python,yaml,java"></pulumi-chooser>
    </div>
    
    
    <div>
    <pulumi-choosable type="language" values="javascript,typescript">
    <div class="no-copy"><div class="highlight"><pre class="chroma"><code class="language-typescript" data-lang="typescript"><span class="k">new </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">,</span> <span class="nx">args</span><span class="p">?:</span> <span class="nx"><a href="#inputs">EnvironmentArgs</a></span><span class="p">,</span> <span class="nx">opts</span><span class="p">?:</span> <span class="nx"><a href="/docs/reference/pkg/nodejs/pulumi/pulumi/#CustomResourceOptions">CustomResourceOptions</a></span><span class="p">);</span></code></pre></div>
    </div></pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="python">
    <div class="no-copy"><div class="highlight"><pre class="chroma"><code class="language-python" data-lang="python"><span class=nd>@overload</span>
    <span class="k">def </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">resource_name</span><span class="p">:</span> <span class="nx">str</span><span class="p">,</span>
                    <span class="nx">args</span><span class="p">:</span> <span class="nx"><a href="#inputs">Optional[EnvironmentArgs]</a></span> = None<span class="p">,</span>
                    <span class="nx">opts</span><span class="p">:</span> <span class="nx"><a href="/docs/reference/pkg/python/pulumi/#pulumi.ResourceOptions">Optional[ResourceOptions]</a></span> = None<span class="p">)</span>
    <span></span>
    <span class=nd>@overload</span>
    <span class="k">def </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">resource_name</span><span class="p">:</span> <span class="nx">str</span><span class="p">,</span>
                    <span class="nx">opts</span><span class="p">:</span> <span class="nx"><a href="/docs/reference/pkg/python/pulumi/#pulumi.ResourceOptions">Optional[ResourceOptions]</a></span> = None<span class="p">,</span>
                    <span class="nx">config</span><span class="p">:</span> <span class="nx">Optional[EnvironmentConfigArgs]</span> = None<span class="p">,</span>
                    <span class="nx">labels</span><span class="p">:</span> <span class="nx">Optional[Mapping[str, str]]</span> = None<span class="p">,</span>
                    <span class="nx">name</span><span class="p">:</span> <span class="nx">Optional[str]</span> = None<span class="p">,</span>
                    <span class="nx">project</span><span class="p">:</span> <span class="nx">Optional[str]</span> = None<span class="p">,</span>
                    <span class="nx">region</span><span class="p">:</span> <span class="nx">Optional[str]</span> = None<span class="p">,</span>
                    <span class="nx">storage_config</span><span class="p">:</span> <span class="nx">Optional[EnvironmentStorageConfigArgs]</span> = None<span class="p">)</span></code></pre></div>
    </div></pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="go">
    <div class="no-copy"><div class="highlight"><pre class="chroma"><code class="language-go" data-lang="go"><span class="k">func </span><span class="nx">NewEnvironment</span><span class="p">(</span><span class="nx">ctx</span><span class="p"> *</span><span class="nx"><a href="https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3/go/pulumi?tab=doc#Context">Context</a></span><span class="p">,</span> <span class="nx">name</span><span class="p"> </span><span class="nx">string</span><span class="p">,</span> <span class="nx">args</span><span class="p"> *</span><span class="nx"><a href="#inputs">EnvironmentArgs</a></span><span class="p">,</span> <span class="nx">opts</span><span class="p"> ...</span><span class="nx"><a href="https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3/go/pulumi?tab=doc#ResourceOption">ResourceOption</a></span><span class="p">) (*<span class="nx">Environment</span>, error)</span></code></pre></div>
    </div></pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="csharp">
    <div class="no-copy"><div class="highlight"><pre class="chroma"><code class="language-csharp" data-lang="csharp"><span class="k">public </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">string</span><span class="p"> </span><span class="nx">name<span class="p">,</span> <span class="nx"><a href="#inputs">EnvironmentArgs</a></span><span class="p">? </span><span class="nx">args = null<span class="p">,</span> <span class="nx"><a href="/docs/reference/pkg/dotnet/Pulumi/Pulumi.CustomResourceOptions.html">CustomResourceOptions</a></span><span class="p">? </span><span class="nx">opts = null<span class="p">)</span></code></pre></div>
    </div></pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="java">
    <div class="no-copy"><div class="highlight"><pre class="chroma">
    <code class="language-java" data-lang="java"><span class="k">public </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">String</span><span class="p"> </span><span class="nx">name<span class="p">,</span> <span class="nx"><a href="#inputs">EnvironmentArgs</a></span><span class="p"> </span><span class="nx">args<span class="p">)</span>
    <span class="k">public </span><span class="nx">Environment</span><span class="p">(</span><span class="nx">String</span><span class="p"> </span><span class="nx">name<span class="p">,</span> <span class="nx"><a href="#inputs">EnvironmentArgs</a></span><span class="p"> </span><span class="nx">args<span class="p">,</span> <span class="nx">CustomResourceOptions</span><span class="p"> </span><span class="nx">options<span class="p">)</span>
    </code></pre></div></div>
    </pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="yaml">
    <div class="no-copy"><div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">type: <span class="nx">gcp:composer:Environment</span><span class="p"></span>
    <span class="p">properties</span><span class="p">: </span><span class="c">#&nbsp;The arguments to resource properties.</span>
    <span class="p"></span><span class="p">options</span><span class="p">: </span><span class="c">#&nbsp;Bag of options to control resource&#39;s behavior.</span>
    <span class="p"></span>
    </code></pre></div></div>
    </pulumi-choosable>
    </div>
    
    #### Parameters
    
    <div>
    <pulumi-choosable type="language" values="javascript,typescript">
    
    <dl class="resources-properties"><dt
            class="property-required" title="Required">
            <span>name</span>
            <span class="property-indicator"></span>
            <span class="property-type">string</span>
        </dt>
        <dd>The unique name of the resource.</dd><dt
            class="property-optional" title="Optional">
            <span>args</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="#inputs">EnvironmentArgs</a></span>
        </dt>
        <dd>The arguments to resource properties.</dd><dt
            class="property-optional" title="Optional">
            <span>opts</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="/docs/reference/pkg/nodejs/pulumi/pulumi/#CustomResourceOptions">CustomResourceOptions</a></span>
        </dt>
        <dd>Bag of options to control resource&#39;s behavior.</dd></dl>
    
    </pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="python">
    
    <dl class="resources-properties"><dt
            class="property-required" title="Required">
            <span>resource_name</span>
            <span class="property-indicator"></span>
            <span class="property-type">str</span>
        </dt>
        <dd>The unique name of the resource.</dd><dt
            class="property-optional" title="Optional">
            <span>args</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="#inputs">EnvironmentArgs</a></span>
        </dt>
        <dd>The arguments to resource properties.</dd><dt
            class="property-optional" title="Optional">
            <span>opts</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="/docs/reference/pkg/python/pulumi/#pulumi.ResourceOptions">ResourceOptions</a></span>
        </dt>
        <dd>Bag of options to control resource&#39;s behavior.</dd></dl>
    
    </pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="go">
    
    <dl class="resources-properties"><dt
            class="property-optional" title="Optional">
            <span>ctx</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3/go/pulumi?tab=doc#Context">Context</a></span>
        </dt>
        <dd>Context object for the current deployment.</dd><dt
            class="property-required" title="Required">
            <span>name</span>
            <span class="property-indicator"></span>
            <span class="property-type">string</span>
        </dt>
        <dd>The unique name of the resource.</dd><dt
            class="property-optional" title="Optional">
            <span>args</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="#inputs">EnvironmentArgs</a></span>
        </dt>
        <dd>The arguments to resource properties.</dd><dt
            class="property-optional" title="Optional">
            <span>opts</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3/go/pulumi?tab=doc#ResourceOption">ResourceOption</a></span>
        </dt>
        <dd>Bag of options to control resource&#39;s behavior.</dd></dl>
    
    </pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="csharp">
    
    <dl class="resources-properties"><dt
            class="property-required" title="Required">
            <span>name</span>
            <span class="property-indicator"></span>
            <span class="property-type">string</span>
        </dt>
        <dd>The unique name of the resource.</dd><dt
            class="property-optional" title="Optional">
            <span>args</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="#inputs">EnvironmentArgs</a></span>
        </dt>
        <dd>The arguments to resource properties.</dd><dt
            class="property-optional" title="Optional">
            <span>opts</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="/docs/reference/pkg/dotnet/Pulumi/Pulumi.CustomResourceOptions.html">CustomResourceOptions</a></span>
        </dt>
        <dd>Bag of options to control resource&#39;s behavior.</dd></dl>
    
    </pulumi-choosable>
    </div>
    
    <div>
    <pulumi-choosable type="language" values="java">
    
    <dl class="resources-properties"><dt
            class="property-required" title="Required">
            <span>name</span>
            <span class="property-indicator"></span>
            <span class="property-type">String</span>
        </dt>
        <dd>The unique name of the resource.</dd><dt
            class="property-required" title="Required">
            <span>args</span>
            <span class="property-indicator"></span>
            <span class="property-type"><a href="#inputs">EnvironmentArgs</a></span>
        </dt>
        <dd>The arguments to resource properties.</dd><dt
            class="property-optional" title="Optional">
            <span>options</span>
            <span class="property-indicator"></span>
            <span class="property-type">CustomResourceOptions</span>
        </dt>
        <dd>Bag of options to control resource&#39;s behavior.</dd></dl>
    
    </pulumi-choosable>
    </div>
    
    
    
    ### Constructor example
    
    The following reference example uses placeholder values for all [input properties](#inputs).
    <div>
    <pulumi-chooser type="language" options="csharp,go,typescript,python,yaml,java"></pulumi-chooser>
    </div>
    
    
    <div>
    <pulumi-choosable type="language" values="csharp">
    
    ```csharp
    var gcpEnvironmentResource = new Gcp.Composer.Environment("gcpEnvironmentResource", new()
    {
        Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs
        {
            AirflowUri = "string",
            DagGcsPrefix = "string",
            DataRetentionConfig = new Gcp.Composer.Inputs.EnvironmentConfigDataRetentionConfigArgs
            {
                AirflowMetadataRetentionConfigs = new[]
                {
                    new Gcp.Composer.Inputs.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs
                    {
                        RetentionDays = 0,
                        RetentionMode = "string",
                    },
                },
                TaskLogsRetentionConfigs = new[]
                {
                    new Gcp.Composer.Inputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs
                    {
                        StorageMode = "string",
                    },
                },
            },
            DatabaseConfig = new Gcp.Composer.Inputs.EnvironmentConfigDatabaseConfigArgs
            {
                MachineType = "string",
                Zone = "string",
            },
            EnablePrivateBuildsOnly = false,
            EnablePrivateEnvironment = false,
            EncryptionConfig = new Gcp.Composer.Inputs.EnvironmentConfigEncryptionConfigArgs
            {
                KmsKeyName = "string",
            },
            EnvironmentSize = "string",
            GkeCluster = "string",
            MaintenanceWindow = new Gcp.Composer.Inputs.EnvironmentConfigMaintenanceWindowArgs
            {
                EndTime = "string",
                Recurrence = "string",
                StartTime = "string",
            },
            MasterAuthorizedNetworksConfig = new Gcp.Composer.Inputs.EnvironmentConfigMasterAuthorizedNetworksConfigArgs
            {
                Enabled = false,
                CidrBlocks = new[]
                {
                    new Gcp.Composer.Inputs.EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlockArgs
                    {
                        CidrBlock = "string",
                        DisplayName = "string",
                    },
                },
            },
            NodeConfig = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigArgs
            {
                ComposerInternalIpv4CidrBlock = "string",
                ComposerNetworkAttachment = "string",
                DiskSizeGb = 0,
                EnableIpMasqAgent = false,
                IpAllocationPolicy = new Gcp.Composer.Inputs.EnvironmentConfigNodeConfigIpAllocationPolicyArgs
                {
                    ClusterIpv4CidrBlock = "string",
                    ClusterSecondaryRangeName = "string",
                    ServicesIpv4CidrBlock = "string",
                    ServicesSecondaryRangeName = "string",
                    UseIpAliases = false,
                },
                MachineType = "string",
                MaxPodsPerNode = 0,
                Network = "string",
                OauthScopes = new[]
                {
                    "string",
                },
                ServiceAccount = "string",
                Subnetwork = "string",
                Tags = new[]
                {
                    "string",
                },
                Zone = "string",
            },
            NodeCount = 0,
            PrivateEnvironmentConfig = new Gcp.Composer.Inputs.EnvironmentConfigPrivateEnvironmentConfigArgs
            {
                CloudComposerConnectionSubnetwork = "string",
                CloudComposerNetworkIpv4CidrBlock = "string",
                CloudSqlIpv4CidrBlock = "string",
                ConnectionType = "string",
                EnablePrivateEndpoint = false,
                EnablePrivatelyUsedPublicIps = false,
                MasterIpv4CidrBlock = "string",
                WebServerIpv4CidrBlock = "string",
            },
            RecoveryConfig = new Gcp.Composer.Inputs.EnvironmentConfigRecoveryConfigArgs
            {
                ScheduledSnapshotsConfig = new Gcp.Composer.Inputs.EnvironmentConfigRecoveryConfigScheduledSnapshotsConfigArgs
                {
                    Enabled = false,
                    SnapshotCreationSchedule = "string",
                    SnapshotLocation = "string",
                    TimeZone = "string",
                },
            },
            ResilienceMode = "string",
            SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs
            {
                AirflowConfigOverrides = 
                {
                    { "string", "string" },
                },
                CloudDataLineageIntegration = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigCloudDataLineageIntegrationArgs
                {
                    Enabled = false,
                },
                EnvVariables = 
                {
                    { "string", "string" },
                },
                ImageVersion = "string",
                PypiPackages = 
                {
                    { "string", "string" },
                },
                PythonVersion = "string",
                SchedulerCount = 0,
                WebServerPluginsMode = "string",
            },
            WebServerConfig = new Gcp.Composer.Inputs.EnvironmentConfigWebServerConfigArgs
            {
                MachineType = "string",
            },
            WebServerNetworkAccessControl = new Gcp.Composer.Inputs.EnvironmentConfigWebServerNetworkAccessControlArgs
            {
                AllowedIpRanges = new[]
                {
                    new Gcp.Composer.Inputs.EnvironmentConfigWebServerNetworkAccessControlAllowedIpRangeArgs
                    {
                        Value = "string",
                        Description = "string",
                    },
                },
            },
            WorkloadsConfig = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigArgs
            {
                DagProcessor = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigDagProcessorArgs
                {
                    Count = 0,
                    Cpu = 0,
                    MemoryGb = 0,
                    StorageGb = 0,
                },
                Scheduler = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigSchedulerArgs
                {
                    Count = 0,
                    Cpu = 0,
                    MemoryGb = 0,
                    StorageGb = 0,
                },
                Triggerer = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigTriggererArgs
                {
                    Count = 0,
                    Cpu = 0,
                    MemoryGb = 0,
                },
                WebServer = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWebServerArgs
                {
                    Cpu = 0,
                    MemoryGb = 0,
                    StorageGb = 0,
                },
                Worker = new Gcp.Composer.Inputs.EnvironmentConfigWorkloadsConfigWorkerArgs
                {
                    Cpu = 0,
                    MaxCount = 0,
                    MemoryGb = 0,
                    MinCount = 0,
                    StorageGb = 0,
                },
            },
        },
        Labels = 
        {
            { "string", "string" },
        },
        Name = "string",
        Project = "string",
        Region = "string",
        StorageConfig = new Gcp.Composer.Inputs.EnvironmentStorageConfigArgs
        {
            Bucket = "string",
        },
    });
    
    example, err := composer.NewEnvironment(ctx, "gcpEnvironmentResource", &composer.EnvironmentArgs{
    	Config: &composer.EnvironmentConfigArgs{
    		AirflowUri:   pulumi.String("string"),
    		DagGcsPrefix: pulumi.String("string"),
    		DataRetentionConfig: &composer.EnvironmentConfigDataRetentionConfigArgs{
    			AirflowMetadataRetentionConfigs: composer.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray{
    				&composer.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{
    					RetentionDays: pulumi.Int(0),
    					RetentionMode: pulumi.String("string"),
    				},
    			},
    			TaskLogsRetentionConfigs: composer.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArray{
    				&composer.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs{
    					StorageMode: pulumi.String("string"),
    				},
    			},
    		},
    		DatabaseConfig: &composer.EnvironmentConfigDatabaseConfigArgs{
    			MachineType: pulumi.String("string"),
    			Zone:        pulumi.String("string"),
    		},
    		EnablePrivateBuildsOnly:  pulumi.Bool(false),
    		EnablePrivateEnvironment: pulumi.Bool(false),
    		EncryptionConfig: &composer.EnvironmentConfigEncryptionConfigArgs{
    			KmsKeyName: pulumi.String("string"),
    		},
    		EnvironmentSize: pulumi.String("string"),
    		GkeCluster:      pulumi.String("string"),
    		MaintenanceWindow: &composer.EnvironmentConfigMaintenanceWindowArgs{
    			EndTime:    pulumi.String("string"),
    			Recurrence: pulumi.String("string"),
    			StartTime:  pulumi.String("string"),
    		},
    		MasterAuthorizedNetworksConfig: &composer.EnvironmentConfigMasterAuthorizedNetworksConfigArgs{
    			Enabled: pulumi.Bool(false),
    			CidrBlocks: composer.EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlockArray{
    				&composer.EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlockArgs{
    					CidrBlock:   pulumi.String("string"),
    					DisplayName: pulumi.String("string"),
    				},
    			},
    		},
    		NodeConfig: &composer.EnvironmentConfigNodeConfigArgs{
    			ComposerInternalIpv4CidrBlock: pulumi.String("string"),
    			ComposerNetworkAttachment:     pulumi.String("string"),
    			DiskSizeGb:                    pulumi.Int(0),
    			EnableIpMasqAgent:             pulumi.Bool(false),
    			IpAllocationPolicy: &composer.EnvironmentConfigNodeConfigIpAllocationPolicyArgs{
    				ClusterIpv4CidrBlock:       pulumi.String("string"),
    				ClusterSecondaryRangeName:  pulumi.String("string"),
    				ServicesIpv4CidrBlock:      pulumi.String("string"),
    				ServicesSecondaryRangeName: pulumi.String("string"),
    				UseIpAliases:               pulumi.Bool(false),
    			},
    			MachineType:    pulumi.String("string"),
    			MaxPodsPerNode: pulumi.Int(0),
    			Network:        pulumi.String("string"),
    			OauthScopes: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			ServiceAccount: pulumi.String("string"),
    			Subnetwork:     pulumi.String("string"),
    			Tags: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			Zone: pulumi.String("string"),
    		},
    		NodeCount: pulumi.Int(0),
    		PrivateEnvironmentConfig: &composer.EnvironmentConfigPrivateEnvironmentConfigArgs{
    			CloudComposerConnectionSubnetwork: pulumi.String("string"),
    			CloudComposerNetworkIpv4CidrBlock: pulumi.String("string"),
    			CloudSqlIpv4CidrBlock:             pulumi.String("string"),
    			ConnectionType:                    pulumi.String("string"),
    			EnablePrivateEndpoint:             pulumi.Bool(false),
    			EnablePrivatelyUsedPublicIps:      pulumi.Bool(false),
    			MasterIpv4CidrBlock:               pulumi.String("string"),
    			WebServerIpv4CidrBlock:            pulumi.String("string"),
    		},
    		RecoveryConfig: &composer.EnvironmentConfigRecoveryConfigArgs{
    			ScheduledSnapshotsConfig: &composer.EnvironmentConfigRecoveryConfigScheduledSnapshotsConfigArgs{
    				Enabled:                  pulumi.Bool(false),
    				SnapshotCreationSchedule: pulumi.String("string"),
    				SnapshotLocation:         pulumi.String("string"),
    				TimeZone:                 pulumi.String("string"),
    			},
    		},
    		ResilienceMode: pulumi.String("string"),
    		SoftwareConfig: &composer.EnvironmentConfigSoftwareConfigArgs{
    			AirflowConfigOverrides: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			CloudDataLineageIntegration: &composer.EnvironmentConfigSoftwareConfigCloudDataLineageIntegrationArgs{
    				Enabled: pulumi.Bool(false),
    			},
    			EnvVariables: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			ImageVersion: pulumi.String("string"),
    			PypiPackages: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			PythonVersion:        pulumi.String("string"),
    			SchedulerCount:       pulumi.Int(0),
    			WebServerPluginsMode: pulumi.String("string"),
    		},
    		WebServerConfig: &composer.EnvironmentConfigWebServerConfigArgs{
    			MachineType: pulumi.String("string"),
    		},
    		WebServerNetworkAccessControl: &composer.EnvironmentConfigWebServerNetworkAccessControlArgs{
    			AllowedIpRanges: composer.EnvironmentConfigWebServerNetworkAccessControlAllowedIpRangeArray{
    				&composer.EnvironmentConfigWebServerNetworkAccessControlAllowedIpRangeArgs{
    					Value:       pulumi.String("string"),
    					Description: pulumi.String("string"),
    				},
    			},
    		},
    		WorkloadsConfig: &composer.EnvironmentConfigWorkloadsConfigArgs{
    			DagProcessor: &composer.EnvironmentConfigWorkloadsConfigDagProcessorArgs{
    				Count:     pulumi.Int(0),
    				Cpu:       pulumi.Float64(0),
    				MemoryGb:  pulumi.Float64(0),
    				StorageGb: pulumi.Float64(0),
    			},
    			Scheduler: &composer.EnvironmentConfigWorkloadsConfigSchedulerArgs{
    				Count:     pulumi.Int(0),
    				Cpu:       pulumi.Float64(0),
    				MemoryGb:  pulumi.Float64(0),
    				StorageGb: pulumi.Float64(0),
    			},
    			Triggerer: &composer.EnvironmentConfigWorkloadsConfigTriggererArgs{
    				Count:    pulumi.Int(0),
    				Cpu:      pulumi.Float64(0),
    				MemoryGb: pulumi.Float64(0),
    			},
    			WebServer: &composer.EnvironmentConfigWorkloadsConfigWebServerArgs{
    				Cpu:       pulumi.Float64(0),
    				MemoryGb:  pulumi.Float64(0),
    				StorageGb: pulumi.Float64(0),
    			},
    			Worker: &composer.EnvironmentConfigWorkloadsConfigWorkerArgs{
    				Cpu:       pulumi.Float64(0),
    				MaxCount:  pulumi.Int(0),
    				MemoryGb:  pulumi.Float64(0),
    				MinCount:  pulumi.Int(0),
    				StorageGb: pulumi.Float64(0),
    			},
    		},
    	},
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Name:    pulumi.String("string"),
    	Project: pulumi.String("string"),
    	Region:  pulumi.String("string"),
    	StorageConfig: &composer.EnvironmentStorageConfigArgs{
    		Bucket: pulumi.String("string"),
    	},
    })
    
    var gcpEnvironmentResource = new com.pulumi.gcp.composer.Environment("gcpEnvironmentResource", com.pulumi.gcp.composer.EnvironmentArgs.builder()
        .config(EnvironmentConfigArgs.builder()
            .airflowUri("string")
            .dagGcsPrefix("string")
            .dataRetentionConfig(EnvironmentConfigDataRetentionConfigArgs.builder()
                .airflowMetadataRetentionConfigs(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.builder()
                    .retentionDays(0)
                    .retentionMode("string")
                    .build())
                .taskLogsRetentionConfigs(EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs.builder()
                    .storageMode("string")
                    .build())
                .build())
            .databaseConfig(EnvironmentConfigDatabaseConfigArgs.builder()
                .machineType("string")
                .zone("string")
                .build())
            .enablePrivateBuildsOnly(false)
            .enablePrivateEnvironment(false)
            .encryptionConfig(EnvironmentConfigEncryptionConfigArgs.builder()
                .kmsKeyName("string")
                .build())
            .environmentSize("string")
            .gkeCluster("string")
            .maintenanceWindow(EnvironmentConfigMaintenanceWindowArgs.builder()
                .endTime("string")
                .recurrence("string")
                .startTime("string")
                .build())
            .masterAuthorizedNetworksConfig(EnvironmentConfigMasterAuthorizedNetworksConfigArgs.builder()
                .enabled(false)
                .cidrBlocks(EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlockArgs.builder()
                    .cidrBlock("string")
                    .displayName("string")
                    .build())
                .build())
            .nodeConfig(EnvironmentConfigNodeConfigArgs.builder()
                .composerInternalIpv4CidrBlock("string")
                .composerNetworkAttachment("string")
                .diskSizeGb(0)
                .enableIpMasqAgent(false)
                .ipAllocationPolicy(EnvironmentConfigNodeConfigIpAllocationPolicyArgs.builder()
                    .clusterIpv4CidrBlock("string")
                    .clusterSecondaryRangeName("string")
                    .servicesIpv4CidrBlock("string")
                    .servicesSecondaryRangeName("string")
                    .useIpAliases(false)
                    .build())
                .machineType("string")
                .maxPodsPerNode(0)
                .network("string")
                .oauthScopes("string")
                .serviceAccount("string")
                .subnetwork("string")
                .tags("string")
                .zone("string")
                .build())
            .nodeCount(0)
            .privateEnvironmentConfig(EnvironmentConfigPrivateEnvironmentConfigArgs.builder()
                .cloudComposerConnectionSubnetwork("string")
                .cloudComposerNetworkIpv4CidrBlock("string")
                .cloudSqlIpv4CidrBlock("string")
                .connectionType("string")
                .enablePrivateEndpoint(false)
                .enablePrivatelyUsedPublicIps(false)
                .masterIpv4CidrBlock("string")
                .webServerIpv4CidrBlock("string")
                .build())
            .recoveryConfig(EnvironmentConfigRecoveryConfigArgs.builder()
                .scheduledSnapshotsConfig(EnvironmentConfigRecoveryConfigScheduledSnapshotsConfigArgs.builder()
                    .enabled(false)
                    .snapshotCreationSchedule("string")
                    .snapshotLocation("string")
                    .timeZone("string")
                    .build())
                .build())
            .resilienceMode("string")
            .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
                .airflowConfigOverrides(Map.of("string", "string"))
                .cloudDataLineageIntegration(EnvironmentConfigSoftwareConfigCloudDataLineageIntegrationArgs.builder()
                    .enabled(false)
                    .build())
                .envVariables(Map.of("string", "string"))
                .imageVersion("string")
                .pypiPackages(Map.of("string", "string"))
                .pythonVersion("string")
                .schedulerCount(0)
                .webServerPluginsMode("string")
                .build())
            .webServerConfig(EnvironmentConfigWebServerConfigArgs.builder()
                .machineType("string")
                .build())
            .webServerNetworkAccessControl(EnvironmentConfigWebServerNetworkAccessControlArgs.builder()
                .allowedIpRanges(EnvironmentConfigWebServerNetworkAccessControlAllowedIpRangeArgs.builder()
                    .value("string")
                    .description("string")
                    .build())
                .build())
            .workloadsConfig(EnvironmentConfigWorkloadsConfigArgs.builder()
                .dagProcessor(EnvironmentConfigWorkloadsConfigDagProcessorArgs.builder()
                    .count(0)
                    .cpu(0.0)
                    .memoryGb(0.0)
                    .storageGb(0.0)
                    .build())
                .scheduler(EnvironmentConfigWorkloadsConfigSchedulerArgs.builder()
                    .count(0)
                    .cpu(0.0)
                    .memoryGb(0.0)
                    .storageGb(0.0)
                    .build())
                .triggerer(EnvironmentConfigWorkloadsConfigTriggererArgs.builder()
                    .count(0)
                    .cpu(0.0)
                    .memoryGb(0.0)
                    .build())
                .webServer(EnvironmentConfigWorkloadsConfigWebServerArgs.builder()
                    .cpu(0.0)
                    .memoryGb(0.0)
                    .storageGb(0.0)
                    .build())
                .worker(EnvironmentConfigWorkloadsConfigWorkerArgs.builder()
                    .cpu(0.0)
                    .maxCount(0)
                    .memoryGb(0.0)
                    .minCount(0)
                    .storageGb(0.0)
                    .build())
                .build())
            .build())
        .labels(Map.of("string", "string"))
        .name("string")
        .project("string")
        .region("string")
        .storageConfig(EnvironmentStorageConfigArgs.builder()
            .bucket("string")
            .build())
        .build());
    
    gcp_environment_resource = gcp.composer.Environment("gcpEnvironmentResource",
        config={
            "airflow_uri": "string",
            "dag_gcs_prefix": "string",
            "data_retention_config": {
                "airflow_metadata_retention_configs": [{
                    "retention_days": 0,
                    "retention_mode": "string",
                }],
                "task_logs_retention_configs": [{
                    "storage_mode": "string",
                }],
            },
            "database_config": {
                "machine_type": "string",
                "zone": "string",
            },
            "enable_private_builds_only": False,
            "enable_private_environment": False,
            "encryption_config": {
                "kms_key_name": "string",
            },
            "environment_size": "string",
            "gke_cluster": "string",
            "maintenance_window": {
                "end_time": "string",
                "recurrence": "string",
                "start_time": "string",
            },
            "master_authorized_networks_config": {
                "enabled": False,
                "cidr_blocks": [{
                    "cidr_block": "string",
                    "display_name": "string",
                }],
            },
            "node_config": {
                "composer_internal_ipv4_cidr_block": "string",
                "composer_network_attachment": "string",
                "disk_size_gb": 0,
                "enable_ip_masq_agent": False,
                "ip_allocation_policy": {
                    "cluster_ipv4_cidr_block": "string",
                    "cluster_secondary_range_name": "string",
                    "services_ipv4_cidr_block": "string",
                    "services_secondary_range_name": "string",
                    "use_ip_aliases": False,
                },
                "machine_type": "string",
                "max_pods_per_node": 0,
                "network": "string",
                "oauth_scopes": ["string"],
                "service_account": "string",
                "subnetwork": "string",
                "tags": ["string"],
                "zone": "string",
            },
            "node_count": 0,
            "private_environment_config": {
                "cloud_composer_connection_subnetwork": "string",
                "cloud_composer_network_ipv4_cidr_block": "string",
                "cloud_sql_ipv4_cidr_block": "string",
                "connection_type": "string",
                "enable_private_endpoint": False,
                "enable_privately_used_public_ips": False,
                "master_ipv4_cidr_block": "string",
                "web_server_ipv4_cidr_block": "string",
            },
            "recovery_config": {
                "scheduled_snapshots_config": {
                    "enabled": False,
                    "snapshot_creation_schedule": "string",
                    "snapshot_location": "string",
                    "time_zone": "string",
                },
            },
            "resilience_mode": "string",
            "software_config": {
                "airflow_config_overrides": {
                    "string": "string",
                },
                "cloud_data_lineage_integration": {
                    "enabled": False,
                },
                "env_variables": {
                    "string": "string",
                },
                "image_version": "string",
                "pypi_packages": {
                    "string": "string",
                },
                "python_version": "string",
                "scheduler_count": 0,
                "web_server_plugins_mode": "string",
            },
            "web_server_config": {
                "machine_type": "string",
            },
            "web_server_network_access_control": {
                "allowed_ip_ranges": [{
                    "value": "string",
                    "description": "string",
                }],
            },
            "workloads_config": {
                "dag_processor": {
                    "count": 0,
                    "cpu": 0,
                    "memory_gb": 0,
                    "storage_gb": 0,
                },
                "scheduler": {
                    "count": 0,
                    "cpu": 0,
                    "memory_gb": 0,
                    "storage_gb": 0,
                },
                "triggerer": {
                    "count": 0,
                    "cpu": 0,
                    "memory_gb": 0,
                },
                "web_server": {
                    "cpu": 0,
                    "memory_gb": 0,
                    "storage_gb": 0,
                },
                "worker": {
                    "cpu": 0,
                    "max_count": 0,
                    "memory_gb": 0,
                    "min_count": 0,
                    "storage_gb": 0,
                },
            },
        },
        labels={
            "string": "string",
        },
        name="string",
        project="string",
        region="string",
        storage_config={
            "bucket": "string",
        })
    
    const gcpEnvironmentResource = new gcp.composer.Environment("gcpEnvironmentResource", {
        config: {
            airflowUri: "string",
            dagGcsPrefix: "string",
            dataRetentionConfig: {
                airflowMetadataRetentionConfigs: [{
                    retentionDays: 0,
                    retentionMode: "string",
                }],
                taskLogsRetentionConfigs: [{
                    storageMode: "string",
                }],
            },
            databaseConfig: {
                machineType: "string",
                zone: "string",
            },
            enablePrivateBuildsOnly: false,
            enablePrivateEnvironment: false,
            encryptionConfig: {
                kmsKeyName: "string",
            },
            environmentSize: "string",
            gkeCluster: "string",
            maintenanceWindow: {
                endTime: "string",
                recurrence: "string",
                startTime: "string",
            },
            masterAuthorizedNetworksConfig: {
                enabled: false,
                cidrBlocks: [{
                    cidrBlock: "string",
                    displayName: "string",
                }],
            },
            nodeConfig: {
                composerInternalIpv4CidrBlock: "string",
                composerNetworkAttachment: "string",
                diskSizeGb: 0,
                enableIpMasqAgent: false,
                ipAllocationPolicy: {
                    clusterIpv4CidrBlock: "string",
                    clusterSecondaryRangeName: "string",
                    servicesIpv4CidrBlock: "string",
                    servicesSecondaryRangeName: "string",
                    useIpAliases: false,
                },
                machineType: "string",
                maxPodsPerNode: 0,
                network: "string",
                oauthScopes: ["string"],
                serviceAccount: "string",
                subnetwork: "string",
                tags: ["string"],
                zone: "string",
            },
            nodeCount: 0,
            privateEnvironmentConfig: {
                cloudComposerConnectionSubnetwork: "string",
                cloudComposerNetworkIpv4CidrBlock: "string",
                cloudSqlIpv4CidrBlock: "string",
                connectionType: "string",
                enablePrivateEndpoint: false,
                enablePrivatelyUsedPublicIps: false,
                masterIpv4CidrBlock: "string",
                webServerIpv4CidrBlock: "string",
            },
            recoveryConfig: {
                scheduledSnapshotsConfig: {
                    enabled: false,
                    snapshotCreationSchedule: "string",
                    snapshotLocation: "string",
                    timeZone: "string",
                },
            },
            resilienceMode: "string",
            softwareConfig: {
                airflowConfigOverrides: {
                    string: "string",
                },
                cloudDataLineageIntegration: {
                    enabled: false,
                },
                envVariables: {
                    string: "string",
                },
                imageVersion: "string",
                pypiPackages: {
                    string: "string",
                },
                pythonVersion: "string",
                schedulerCount: 0,
                webServerPluginsMode: "string",
            },
            webServerConfig: {
                machineType: "string",
            },
            webServerNetworkAccessControl: {
                allowedIpRanges: [{
                    value: "string",
                    description: "string",
                }],
            },
            workloadsConfig: {
                dagProcessor: {
                    count: 0,
                    cpu: 0,
                    memoryGb: 0,
                    storageGb: 0,
                },
                scheduler: {
                    count: 0,
                    cpu: 0,
                    memoryGb: 0,
                    storageGb: 0,
                },
                triggerer: {
                    count: 0,
                    cpu: 0,
                    memoryGb: 0,
                },
                webServer: {
                    cpu: 0,
                    memoryGb: 0,
                    storageGb: 0,
                },
                worker: {
                    cpu: 0,
                    maxCount: 0,
                    memoryGb: 0,
                    minCount: 0,
                    storageGb: 0,
                },
            },
        },
        labels: {
            string: "string",
        },
        name: "string",
        project: "string",
        region: "string",
        storageConfig: {
            bucket: "string",
        },
    });
    
    type: gcp:composer:Environment
    properties:
        config:
            airflowUri: string
            dagGcsPrefix: string
            dataRetentionConfig:
                airflowMetadataRetentionConfigs:
                    - retentionDays: 0
                      retentionMode: string
                taskLogsRetentionConfigs:
                    - storageMode: string
            databaseConfig:
                machineType: string
                zone: string
            enablePrivateBuildsOnly: false
            enablePrivateEnvironment: false
            encryptionConfig:
                kmsKeyName: string
            environmentSize: string
            gkeCluster: string
            maintenanceWindow:
                endTime: string
                recurrence: string
                startTime: string
            masterAuthorizedNetworksConfig:
                cidrBlocks:
                    - cidrBlock: string
                      displayName: string
                enabled: false
            nodeConfig:
                composerInternalIpv4CidrBlock: string
                composerNetworkAttachment: string
                diskSizeGb: 0
                enableIpMasqAgent: false
                ipAllocationPolicy:
                    clusterIpv4CidrBlock: string
                    clusterSecondaryRangeName: string
                    servicesIpv4CidrBlock: string
                    servicesSecondaryRangeName: string
                    useIpAliases: false
                machineType: string
                maxPodsPerNode: 0
                network: string
                oauthScopes:
                    - string
                serviceAccount: string
                subnetwork: string
                tags:
                    - string
                zone: string
            nodeCount: 0
            privateEnvironmentConfig:
                cloudComposerConnectionSubnetwork: string
                cloudComposerNetworkIpv4CidrBlock: string
                cloudSqlIpv4CidrBlock: string
                connectionType: string
                enablePrivateEndpoint: false
                enablePrivatelyUsedPublicIps: false
                masterIpv4CidrBlock: string
                webServerIpv4CidrBlock: string
            recoveryConfig:
                scheduledSnapshotsConfig:
                    enabled: false
                    snapshotCreationSchedule: string
                    snapshotLocation: string
                    timeZone: string
            resilienceMode: string
            softwareConfig:
                airflowConfigOverrides:
                    string: string
                cloudDataLineageIntegration:
                    enabled: false
                envVariables:
                    string: string
                imageVersion: string
                pypiPackages:
                    string: string
                pythonVersion: string
                schedulerCount: 0
                webServerPluginsMode: string
            webServerConfig:
                machineType: string
            webServerNetworkAccessControl:
                allowedIpRanges:
                    - description: string
                      value: string
            workloadsConfig:
                dagProcessor:
                    count: 0
                    cpu: 0
                    memoryGb: 0
                    storageGb: 0
                scheduler:
                    count: 0
                    cpu: 0
                    memoryGb: 0
                    storageGb: 0
                triggerer:
                    count: 0
                    cpu: 0
                    memoryGb: 0
                webServer:
                    cpu: 0
                    memoryGb: 0
                    storageGb: 0
                worker:
                    cpu: 0
                    maxCount: 0
                    memoryGb: 0
                    minCount: 0
                    storageGb: 0
        labels:
            string: string
        name: string
        project: string
        region: string
        storageConfig:
            bucket: string
    

    Environment 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 Environment resource accepts the following input properties:

    Config EnvironmentConfig
    Configuration parameters for this environment.
    Labels Dictionary<string, string>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    The location or Compute Engine region for the environment.
    StorageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    Config EnvironmentConfigArgs
    Configuration parameters for this environment.
    Labels map[string]string
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    The location or Compute Engine region for the environment.
    StorageConfig EnvironmentStorageConfigArgs
    Configuration options for storage used by Composer environment.
    config EnvironmentConfig
    Configuration parameters for this environment.
    labels Map<String,String>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    The location or Compute Engine region for the environment.
    storageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    config EnvironmentConfig
    Configuration parameters for this environment.
    labels {[key: string]: string}
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region string
    The location or Compute Engine region for the environment.
    storageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    config EnvironmentConfigArgs
    Configuration parameters for this environment.
    labels Mapping[str, str]
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region str
    The location or Compute Engine region for the environment.
    storage_config EnvironmentStorageConfigArgs
    Configuration options for storage used by Composer environment.
    config Property Map
    Configuration parameters for this environment.
    labels Map<String>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    The location or Compute Engine region for the environment.
    storageConfig Property Map
    Configuration options for storage used by Composer environment.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Environment 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 Terraform, 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 Terraform, 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 Terraform, 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 Terraform, 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 Terraform, 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 Terraform, 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 Environment Resource

    Get an existing Environment 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?: EnvironmentState, opts?: CustomResourceOptions): Environment
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            config: Optional[EnvironmentConfigArgs] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            labels: Optional[Mapping[str, str]] = None,
            name: Optional[str] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None,
            region: Optional[str] = None,
            storage_config: Optional[EnvironmentStorageConfigArgs] = None) -> Environment
    func GetEnvironment(ctx *Context, name string, id IDInput, state *EnvironmentState, opts ...ResourceOption) (*Environment, error)
    public static Environment Get(string name, Input<string> id, EnvironmentState? state, CustomResourceOptions? opts = null)
    public static Environment get(String name, Output<String> id, EnvironmentState state, CustomResourceOptions options)
    resources:  _:    type: gcp:composer:Environment    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:
    Config EnvironmentConfig
    Configuration parameters for this environment.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    Labels Dictionary<string, string>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    Region string
    The location or Compute Engine region for the environment.
    StorageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    Config EnvironmentConfigArgs
    Configuration parameters for this environment.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    Labels map[string]string
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    Region string
    The location or Compute Engine region for the environment.
    StorageConfig EnvironmentStorageConfigArgs
    Configuration options for storage used by Composer environment.
    config EnvironmentConfig
    Configuration parameters for this environment.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    labels Map<String,String>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    region String
    The location or Compute Engine region for the environment.
    storageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    config EnvironmentConfig
    Configuration parameters for this environment.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    labels {[key: string]: string}
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    region string
    The location or Compute Engine region for the environment.
    storageConfig EnvironmentStorageConfig
    Configuration options for storage used by Composer environment.
    config EnvironmentConfigArgs
    Configuration parameters for this environment.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    labels Mapping[str, str]
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    region str
    The location or Compute Engine region for the environment.
    storage_config EnvironmentStorageConfigArgs
    Configuration options for storage used by Composer environment.
    config Property Map
    Configuration parameters for this environment.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
    labels Map<String>
    User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z?. Label values must be between 0 and 63 characters long and must conform to the regular expression (a-z?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be <= 128 bytes in size.

                **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 environment.
    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.
    region String
    The location or Compute Engine region for the environment.
    storageConfig Property Map
    Configuration options for storage used by Composer environment.

    Supporting Types

    EnvironmentConfig, EnvironmentConfigArgs

    AirflowUri string
    The URI of the Apache Airflow Web UI hosted within this environment.
    DagGcsPrefix string
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    DataRetentionConfig EnvironmentConfigDataRetentionConfig
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    DatabaseConfig EnvironmentConfigDatabaseConfig
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnablePrivateBuildsOnly bool
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    EnablePrivateEnvironment bool
    Optional. If true, a private Composer environment will be created.
    EncryptionConfig EnvironmentConfigEncryptionConfig
    The encryption options for the Composer environment and its dependencies.
    EnvironmentSize string
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    GkeCluster string
    The Kubernetes Engine cluster used to run this environment.
    MaintenanceWindow EnvironmentConfigMaintenanceWindow
    The configuration for Cloud Composer maintenance window.
    MasterAuthorizedNetworksConfig EnvironmentConfigMasterAuthorizedNetworksConfig
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    NodeConfig EnvironmentConfigNodeConfig
    The configuration used for the Kubernetes Engine cluster.
    NodeCount int
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    PrivateEnvironmentConfig EnvironmentConfigPrivateEnvironmentConfig
    The configuration used for the Private IP Cloud Composer environment.
    RecoveryConfig EnvironmentConfigRecoveryConfig
    The recovery configuration settings for the Cloud Composer environment
    ResilienceMode string
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    SoftwareConfig EnvironmentConfigSoftwareConfig
    The configuration settings for software inside the environment.
    WebServerConfig EnvironmentConfigWebServerConfig
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    WebServerNetworkAccessControl EnvironmentConfigWebServerNetworkAccessControl
    Network-level access control policy for the Airflow web server.
    WorkloadsConfig EnvironmentConfigWorkloadsConfig
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    AirflowUri string
    The URI of the Apache Airflow Web UI hosted within this environment.
    DagGcsPrefix string
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    DataRetentionConfig EnvironmentConfigDataRetentionConfig
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    DatabaseConfig EnvironmentConfigDatabaseConfig
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnablePrivateBuildsOnly bool
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    EnablePrivateEnvironment bool
    Optional. If true, a private Composer environment will be created.
    EncryptionConfig EnvironmentConfigEncryptionConfig
    The encryption options for the Composer environment and its dependencies.
    EnvironmentSize string
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    GkeCluster string
    The Kubernetes Engine cluster used to run this environment.
    MaintenanceWindow EnvironmentConfigMaintenanceWindow
    The configuration for Cloud Composer maintenance window.
    MasterAuthorizedNetworksConfig EnvironmentConfigMasterAuthorizedNetworksConfig
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    NodeConfig EnvironmentConfigNodeConfig
    The configuration used for the Kubernetes Engine cluster.
    NodeCount int
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    PrivateEnvironmentConfig EnvironmentConfigPrivateEnvironmentConfig
    The configuration used for the Private IP Cloud Composer environment.
    RecoveryConfig EnvironmentConfigRecoveryConfig
    The recovery configuration settings for the Cloud Composer environment
    ResilienceMode string
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    SoftwareConfig EnvironmentConfigSoftwareConfig
    The configuration settings for software inside the environment.
    WebServerConfig EnvironmentConfigWebServerConfig
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    WebServerNetworkAccessControl EnvironmentConfigWebServerNetworkAccessControl
    Network-level access control policy for the Airflow web server.
    WorkloadsConfig EnvironmentConfigWorkloadsConfig
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    airflowUri String
    The URI of the Apache Airflow Web UI hosted within this environment.
    dagGcsPrefix String
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    dataRetentionConfig EnvironmentConfigDataRetentionConfig
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    databaseConfig EnvironmentConfigDatabaseConfig
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivateBuildsOnly Boolean
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    enablePrivateEnvironment Boolean
    Optional. If true, a private Composer environment will be created.
    encryptionConfig EnvironmentConfigEncryptionConfig
    The encryption options for the Composer environment and its dependencies.
    environmentSize String
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    gkeCluster String
    The Kubernetes Engine cluster used to run this environment.
    maintenanceWindow EnvironmentConfigMaintenanceWindow
    The configuration for Cloud Composer maintenance window.
    masterAuthorizedNetworksConfig EnvironmentConfigMasterAuthorizedNetworksConfig
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    nodeConfig EnvironmentConfigNodeConfig
    The configuration used for the Kubernetes Engine cluster.
    nodeCount Integer
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    privateEnvironmentConfig EnvironmentConfigPrivateEnvironmentConfig
    The configuration used for the Private IP Cloud Composer environment.
    recoveryConfig EnvironmentConfigRecoveryConfig
    The recovery configuration settings for the Cloud Composer environment
    resilienceMode String
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    softwareConfig EnvironmentConfigSoftwareConfig
    The configuration settings for software inside the environment.
    webServerConfig EnvironmentConfigWebServerConfig
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    webServerNetworkAccessControl EnvironmentConfigWebServerNetworkAccessControl
    Network-level access control policy for the Airflow web server.
    workloadsConfig EnvironmentConfigWorkloadsConfig
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    airflowUri string
    The URI of the Apache Airflow Web UI hosted within this environment.
    dagGcsPrefix string
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    dataRetentionConfig EnvironmentConfigDataRetentionConfig
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    databaseConfig EnvironmentConfigDatabaseConfig
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivateBuildsOnly boolean
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    enablePrivateEnvironment boolean
    Optional. If true, a private Composer environment will be created.
    encryptionConfig EnvironmentConfigEncryptionConfig
    The encryption options for the Composer environment and its dependencies.
    environmentSize string
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    gkeCluster string
    The Kubernetes Engine cluster used to run this environment.
    maintenanceWindow EnvironmentConfigMaintenanceWindow
    The configuration for Cloud Composer maintenance window.
    masterAuthorizedNetworksConfig EnvironmentConfigMasterAuthorizedNetworksConfig
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    nodeConfig EnvironmentConfigNodeConfig
    The configuration used for the Kubernetes Engine cluster.
    nodeCount number
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    privateEnvironmentConfig EnvironmentConfigPrivateEnvironmentConfig
    The configuration used for the Private IP Cloud Composer environment.
    recoveryConfig EnvironmentConfigRecoveryConfig
    The recovery configuration settings for the Cloud Composer environment
    resilienceMode string
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    softwareConfig EnvironmentConfigSoftwareConfig
    The configuration settings for software inside the environment.
    webServerConfig EnvironmentConfigWebServerConfig
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    webServerNetworkAccessControl EnvironmentConfigWebServerNetworkAccessControl
    Network-level access control policy for the Airflow web server.
    workloadsConfig EnvironmentConfigWorkloadsConfig
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    airflow_uri str
    The URI of the Apache Airflow Web UI hosted within this environment.
    dag_gcs_prefix str
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    data_retention_config EnvironmentConfigDataRetentionConfig
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    database_config EnvironmentConfigDatabaseConfig
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enable_private_builds_only bool
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    enable_private_environment bool
    Optional. If true, a private Composer environment will be created.
    encryption_config EnvironmentConfigEncryptionConfig
    The encryption options for the Composer environment and its dependencies.
    environment_size str
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    gke_cluster str
    The Kubernetes Engine cluster used to run this environment.
    maintenance_window EnvironmentConfigMaintenanceWindow
    The configuration for Cloud Composer maintenance window.
    master_authorized_networks_config EnvironmentConfigMasterAuthorizedNetworksConfig
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    node_config EnvironmentConfigNodeConfig
    The configuration used for the Kubernetes Engine cluster.
    node_count int
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    private_environment_config EnvironmentConfigPrivateEnvironmentConfig
    The configuration used for the Private IP Cloud Composer environment.
    recovery_config EnvironmentConfigRecoveryConfig
    The recovery configuration settings for the Cloud Composer environment
    resilience_mode str
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    software_config EnvironmentConfigSoftwareConfig
    The configuration settings for software inside the environment.
    web_server_config EnvironmentConfigWebServerConfig
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    web_server_network_access_control EnvironmentConfigWebServerNetworkAccessControl
    Network-level access control policy for the Airflow web server.
    workloads_config EnvironmentConfigWorkloadsConfig
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    airflowUri String
    The URI of the Apache Airflow Web UI hosted within this environment.
    dagGcsPrefix String
    The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.
    dataRetentionConfig Property Map
    The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer
    databaseConfig Property Map
    The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivateBuildsOnly Boolean
    Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.
    enablePrivateEnvironment Boolean
    Optional. If true, a private Composer environment will be created.
    encryptionConfig Property Map
    The encryption options for the Composer environment and its dependencies.
    environmentSize String
    The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    gkeCluster String
    The Kubernetes Engine cluster used to run this environment.
    maintenanceWindow Property Map
    The configuration for Cloud Composer maintenance window.
    masterAuthorizedNetworksConfig Property Map
    Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
    nodeConfig Property Map
    The configuration used for the Kubernetes Engine cluster.
    nodeCount Number
    The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    privateEnvironmentConfig Property Map
    The configuration used for the Private IP Cloud Composer environment.
    recoveryConfig Property Map
    The recovery configuration settings for the Cloud Composer environment
    resilienceMode String
    Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-..* and newer.
    softwareConfig Property Map
    The configuration settings for software inside the environment.
    webServerConfig Property Map
    The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    webServerNetworkAccessControl Property Map
    Network-level access control policy for the Airflow web server.
    workloadsConfig Property Map
    The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.

    EnvironmentConfigDataRetentionConfig, EnvironmentConfigDataRetentionConfigArgs

    AirflowMetadataRetentionConfigs List<EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig>
    Optional. The policy for airflow metadata database retention.
    TaskLogsRetentionConfigs List<EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig>
    Optional. The configuration setting for Task Logs.
    AirflowMetadataRetentionConfigs []EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig
    Optional. The policy for airflow metadata database retention.
    TaskLogsRetentionConfigs []EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig
    Optional. The configuration setting for Task Logs.
    airflowMetadataRetentionConfigs List<EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig>
    Optional. The policy for airflow metadata database retention.
    taskLogsRetentionConfigs List<EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig>
    Optional. The configuration setting for Task Logs.
    airflowMetadataRetentionConfigs EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig[]
    Optional. The policy for airflow metadata database retention.
    taskLogsRetentionConfigs EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig[]
    Optional. The configuration setting for Task Logs.
    airflow_metadata_retention_configs Sequence[EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig]
    Optional. The policy for airflow metadata database retention.
    task_logs_retention_configs Sequence[EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig]
    Optional. The configuration setting for Task Logs.
    airflowMetadataRetentionConfigs List<Property Map>
    Optional. The policy for airflow metadata database retention.
    taskLogsRetentionConfigs List<Property Map>
    Optional. The configuration setting for Task Logs.

    EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig, EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs

    RetentionDays int
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    RetentionMode string
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
    RetentionDays int
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    RetentionMode string
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionDays Integer
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionMode String
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionDays number
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionMode string
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
    retention_days int
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    retention_mode str
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionDays Number
    How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
    retentionMode String
    Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.

    EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig, EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs

    StorageMode string
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*
    StorageMode string
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*
    storageMode String
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*
    storageMode string
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*
    storage_mode str
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*
    storageMode String
    Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*

    EnvironmentConfigDatabaseConfig, EnvironmentConfigDatabaseConfigArgs

    MachineType string
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    Zone string
    Optional. Cloud SQL database preferred zone.
    MachineType string
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    Zone string
    Optional. Cloud SQL database preferred zone.
    machineType String
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    zone String
    Optional. Cloud SQL database preferred zone.
    machineType string
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    zone string
    Optional. Cloud SQL database preferred zone.
    machine_type str
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    zone str
    Optional. Cloud SQL database preferred zone.
    machineType String
    Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
    zone String
    Optional. Cloud SQL database preferred zone.

    EnvironmentConfigEncryptionConfig, EnvironmentConfigEncryptionConfigArgs

    KmsKeyName string
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.
    KmsKeyName string
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.
    kmsKeyName String
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.
    kmsKeyName string
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.
    kms_key_name str
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.
    kmsKeyName String
    Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.

    EnvironmentConfigMaintenanceWindow, EnvironmentConfigMaintenanceWindowArgs

    EndTime string
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    Recurrence string
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    StartTime string
    Start time of the first recurrence of the maintenance window.
    EndTime string
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    Recurrence string
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    StartTime string
    Start time of the first recurrence of the maintenance window.
    endTime String
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    recurrence String
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    startTime String
    Start time of the first recurrence of the maintenance window.
    endTime string
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    recurrence string
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    startTime string
    Start time of the first recurrence of the maintenance window.
    end_time str
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    recurrence str
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    start_time str
    Start time of the first recurrence of the maintenance window.
    endTime String
    Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.
    recurrence String
    Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.
    startTime String
    Start time of the first recurrence of the maintenance window.

    EnvironmentConfigMasterAuthorizedNetworksConfig, EnvironmentConfigMasterAuthorizedNetworksConfigArgs

    Enabled bool
    Whether or not master authorized networks is enabled.
    CidrBlocks List<EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock>
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
    Enabled bool
    Whether or not master authorized networks is enabled.
    CidrBlocks []EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
    enabled Boolean
    Whether or not master authorized networks is enabled.
    cidrBlocks List<EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock>
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
    enabled boolean
    Whether or not master authorized networks is enabled.
    cidrBlocks EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock[]
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
    enabled bool
    Whether or not master authorized networks is enabled.
    cidr_blocks Sequence[EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock]
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
    enabled Boolean
    Whether or not master authorized networks is enabled.
    cidrBlocks List<Property Map>
    cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.

    EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock, EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlockArgs

    CidrBlock string
    cidr_block must be specified in CIDR notation.
    DisplayName string
    display_name is a field for users to identify CIDR blocks.
    CidrBlock string
    cidr_block must be specified in CIDR notation.
    DisplayName string
    display_name is a field for users to identify CIDR blocks.
    cidrBlock String
    cidr_block must be specified in CIDR notation.
    displayName String
    display_name is a field for users to identify CIDR blocks.
    cidrBlock string
    cidr_block must be specified in CIDR notation.
    displayName string
    display_name is a field for users to identify CIDR blocks.
    cidr_block str
    cidr_block must be specified in CIDR notation.
    display_name str
    display_name is a field for users to identify CIDR blocks.
    cidrBlock String
    cidr_block must be specified in CIDR notation.
    displayName String
    display_name is a field for users to identify CIDR blocks.

    EnvironmentConfigNodeConfig, EnvironmentConfigNodeConfigArgs

    ComposerInternalIpv4CidrBlock string
    IPv4 cidr range that will be used by Composer internal components.
    ComposerNetworkAttachment string
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    DiskSizeGb int
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnableIpMasqAgent bool
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    IpAllocationPolicy EnvironmentConfigNodeConfigIpAllocationPolicy
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    MachineType string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    MaxPodsPerNode int
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    Network string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    OauthScopes List<string>
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    ServiceAccount string
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    Subnetwork string
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    Tags List<string>
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    Zone string
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    ComposerInternalIpv4CidrBlock string
    IPv4 cidr range that will be used by Composer internal components.
    ComposerNetworkAttachment string
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    DiskSizeGb int
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnableIpMasqAgent bool
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    IpAllocationPolicy EnvironmentConfigNodeConfigIpAllocationPolicy
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    MachineType string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    MaxPodsPerNode int
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    Network string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    OauthScopes []string
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    ServiceAccount string
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    Subnetwork string
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    Tags []string
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    Zone string
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    composerInternalIpv4CidrBlock String
    IPv4 cidr range that will be used by Composer internal components.
    composerNetworkAttachment String
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    diskSizeGb Integer
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enableIpMasqAgent Boolean
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    ipAllocationPolicy EnvironmentConfigNodeConfigIpAllocationPolicy
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    machineType String
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    maxPodsPerNode Integer
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    network String
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    oauthScopes List<String>
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    serviceAccount String
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    subnetwork String
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    tags List<String>
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    zone String
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    composerInternalIpv4CidrBlock string
    IPv4 cidr range that will be used by Composer internal components.
    composerNetworkAttachment string
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    diskSizeGb number
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enableIpMasqAgent boolean
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    ipAllocationPolicy EnvironmentConfigNodeConfigIpAllocationPolicy
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    machineType string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    maxPodsPerNode number
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    network string
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    oauthScopes string[]
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    serviceAccount string
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    subnetwork string
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    tags string[]
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    zone string
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    composer_internal_ipv4_cidr_block str
    IPv4 cidr range that will be used by Composer internal components.
    composer_network_attachment str
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    disk_size_gb int
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enable_ip_masq_agent bool
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    ip_allocation_policy EnvironmentConfigNodeConfigIpAllocationPolicy
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    machine_type str
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    max_pods_per_node int
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    network str
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    oauth_scopes Sequence[str]
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    service_account str
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    subnetwork str
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    tags Sequence[str]
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    zone str
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    composerInternalIpv4CidrBlock String
    IPv4 cidr range that will be used by Composer internal components.
    composerNetworkAttachment String
    PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
    diskSizeGb Number
    The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    enableIpMasqAgent Boolean
    Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
    ipAllocationPolicy Property Map
    Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
    machineType String
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    maxPodsPerNode Number
    The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    network String
    The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
    oauthScopes List<String>
    The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    serviceAccount String
    The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
    subnetwork String
    The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
    tags List<String>
    The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
    zone String
    The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.

    EnvironmentConfigNodeConfigIpAllocationPolicy, EnvironmentConfigNodeConfigIpAllocationPolicyArgs

    ClusterIpv4CidrBlock string
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    ClusterSecondaryRangeName string
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    ServicesIpv4CidrBlock string
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    ServicesSecondaryRangeName string
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    UseIpAliases bool
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.
    ClusterIpv4CidrBlock string
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    ClusterSecondaryRangeName string
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    ServicesIpv4CidrBlock string
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    ServicesSecondaryRangeName string
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    UseIpAliases bool
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.
    clusterIpv4CidrBlock String
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    clusterSecondaryRangeName String
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    servicesIpv4CidrBlock String
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    servicesSecondaryRangeName String
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    useIpAliases Boolean
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.
    clusterIpv4CidrBlock string
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    clusterSecondaryRangeName string
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    servicesIpv4CidrBlock string
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    servicesSecondaryRangeName string
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    useIpAliases boolean
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.
    cluster_ipv4_cidr_block str
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    cluster_secondary_range_name str
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    services_ipv4_cidr_block str
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    services_secondary_range_name str
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    use_ip_aliases bool
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.
    clusterIpv4CidrBlock String
    The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both.
    clusterSecondaryRangeName String
    The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either cluster_secondary_range_name or cluster_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    servicesIpv4CidrBlock String
    The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both.
    servicesSecondaryRangeName String
    The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either services_secondary_range_name or services_ipv4_cidr_block but not both. For Cloud Composer environments in versions composer-1..-airflow-..*, this field is applicable only when use_ip_aliases is true.
    useIpAliases Boolean
    Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the ip_allocation_policy block is present in config. This field is only supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use VPC-native GKE clusters.

    EnvironmentConfigPrivateEnvironmentConfig, EnvironmentConfigPrivateEnvironmentConfigArgs

    CloudComposerConnectionSubnetwork string
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    CloudComposerNetworkIpv4CidrBlock string
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    CloudSqlIpv4CidrBlock string
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    ConnectionType string
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    EnablePrivateEndpoint bool
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnablePrivatelyUsedPublicIps bool
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    MasterIpv4CidrBlock string
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    WebServerIpv4CidrBlock string
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    CloudComposerConnectionSubnetwork string
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    CloudComposerNetworkIpv4CidrBlock string
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    CloudSqlIpv4CidrBlock string
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    ConnectionType string
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    EnablePrivateEndpoint bool
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    EnablePrivatelyUsedPublicIps bool
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    MasterIpv4CidrBlock string
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    WebServerIpv4CidrBlock string
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    cloudComposerConnectionSubnetwork String
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudComposerNetworkIpv4CidrBlock String
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudSqlIpv4CidrBlock String
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    connectionType String
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    enablePrivateEndpoint Boolean
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivatelyUsedPublicIps Boolean
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    masterIpv4CidrBlock String
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    webServerIpv4CidrBlock String
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    cloudComposerConnectionSubnetwork string
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudComposerNetworkIpv4CidrBlock string
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudSqlIpv4CidrBlock string
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    connectionType string
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    enablePrivateEndpoint boolean
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivatelyUsedPublicIps boolean
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    masterIpv4CidrBlock string
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    webServerIpv4CidrBlock string
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    cloud_composer_connection_subnetwork str
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloud_composer_network_ipv4_cidr_block str
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloud_sql_ipv4_cidr_block str
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    connection_type str
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    enable_private_endpoint bool
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    enable_privately_used_public_ips bool
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    master_ipv4_cidr_block str
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    web_server_ipv4_cidr_block str
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.
    cloudComposerConnectionSubnetwork String
    When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudComposerNetworkIpv4CidrBlock String
    The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2..-airflow-..* and newer.
    cloudSqlIpv4CidrBlock String
    The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.
    connectionType String
    Mode of internal communication within the Composer environment. Must be one of "VPC_PEERING" or "PRIVATE_SERVICE_CONNECT".
    enablePrivateEndpoint Boolean
    If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1..-airflow-..*.
    enablePrivatelyUsedPublicIps Boolean
    When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.
    masterIpv4CidrBlock String
    The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.
    webServerIpv4CidrBlock String
    The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*.

    EnvironmentConfigRecoveryConfig, EnvironmentConfigRecoveryConfigArgs

    ScheduledSnapshotsConfig EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig
    The configuration settings for scheduled snapshots.
    ScheduledSnapshotsConfig EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig
    The configuration settings for scheduled snapshots.
    scheduledSnapshotsConfig EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig
    The configuration settings for scheduled snapshots.
    scheduledSnapshotsConfig EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig
    The configuration settings for scheduled snapshots.
    scheduled_snapshots_config EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig
    The configuration settings for scheduled snapshots.
    scheduledSnapshotsConfig Property Map
    The configuration settings for scheduled snapshots.

    EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig, EnvironmentConfigRecoveryConfigScheduledSnapshotsConfigArgs

    Enabled bool
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    SnapshotCreationSchedule string
    Snapshot schedule, in the unix-cron format.
    SnapshotLocation string
    the URI of a bucket folder where to save the snapshot.
    TimeZone string
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    Enabled bool
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    SnapshotCreationSchedule string
    Snapshot schedule, in the unix-cron format.
    SnapshotLocation string
    the URI of a bucket folder where to save the snapshot.
    TimeZone string
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    enabled Boolean
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    snapshotCreationSchedule String
    Snapshot schedule, in the unix-cron format.
    snapshotLocation String
    the URI of a bucket folder where to save the snapshot.
    timeZone String
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    enabled boolean
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    snapshotCreationSchedule string
    Snapshot schedule, in the unix-cron format.
    snapshotLocation string
    the URI of a bucket folder where to save the snapshot.
    timeZone string
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    enabled bool
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    snapshot_creation_schedule str
    Snapshot schedule, in the unix-cron format.
    snapshot_location str
    the URI of a bucket folder where to save the snapshot.
    time_zone str
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.
    enabled Boolean
    When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
    snapshotCreationSchedule String
    Snapshot schedule, in the unix-cron format.
    snapshotLocation String
    the URI of a bucket folder where to save the snapshot.
    timeZone String
    A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.

    EnvironmentConfigSoftwareConfig, EnvironmentConfigSoftwareConfigArgs

    AirflowConfigOverrides Dictionary<string, string>
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    CloudDataLineageIntegration EnvironmentConfigSoftwareConfigCloudDataLineageIntegration
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    EnvVariables Dictionary<string, string>
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    ImageVersion string
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    PypiPackages Dictionary<string, string>
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    PythonVersion string
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    SchedulerCount int
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    WebServerPluginsMode string
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.
    AirflowConfigOverrides map[string]string
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    CloudDataLineageIntegration EnvironmentConfigSoftwareConfigCloudDataLineageIntegration
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    EnvVariables map[string]string
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    ImageVersion string
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    PypiPackages map[string]string
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    PythonVersion string
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    SchedulerCount int
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    WebServerPluginsMode string
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.
    airflowConfigOverrides Map<String,String>
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    cloudDataLineageIntegration EnvironmentConfigSoftwareConfigCloudDataLineageIntegration
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    envVariables Map<String,String>
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    imageVersion String
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    pypiPackages Map<String,String>
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    pythonVersion String
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    schedulerCount Integer
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    webServerPluginsMode String
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.
    airflowConfigOverrides {[key: string]: string}
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    cloudDataLineageIntegration EnvironmentConfigSoftwareConfigCloudDataLineageIntegration
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    envVariables {[key: string]: string}
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    imageVersion string
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    pypiPackages {[key: string]: string}
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    pythonVersion string
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    schedulerCount number
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    webServerPluginsMode string
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.
    airflow_config_overrides Mapping[str, str]
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    cloud_data_lineage_integration EnvironmentConfigSoftwareConfigCloudDataLineageIntegration
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    env_variables Mapping[str, str]
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    image_version str
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    pypi_packages Mapping[str, str]
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    python_version str
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    scheduler_count int
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    web_server_plugins_mode str
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.
    airflowConfigOverrides Map<String>
    Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example "core-dags_are_paused_at_creation". Section names must not contain hyphens ("-"), opening square brackets ("["), or closing square brackets ("]"). The property name must not be empty and cannot contain "=" or ";". Section and property names cannot contain characters: "." Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.
    cloudDataLineageIntegration Property Map
    The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-..* and newer
    envVariables Map<String>
    Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.
    imageVersion String
    The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(.[0-9]+.[0-9]+(-preview.[0-9]+)?)?|latest)-airflow-([0-9]+(.[0-9]+(.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.
    pypiPackages Map<String>
    Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. "numpy"). Values are the lowercase extras and version specifier (e.g. "==1.12.0", "[devel,gcp_api]", "[devel]>=1.8.2, <1.9.2"). To specify a package without pinning it to a version specifier, use the empty string as the value.
    pythonVersion String
    The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1..-airflow-..*. Environments in newer versions always use Python major version 3.
    schedulerCount Number
    The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1..-airflow-2...
    webServerPluginsMode String
    Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.

    EnvironmentConfigSoftwareConfigCloudDataLineageIntegration, EnvironmentConfigSoftwareConfigCloudDataLineageIntegrationArgs

    Enabled bool
    Whether or not Cloud Data Lineage integration is enabled.
    Enabled bool
    Whether or not Cloud Data Lineage integration is enabled.
    enabled Boolean
    Whether or not Cloud Data Lineage integration is enabled.
    enabled boolean
    Whether or not Cloud Data Lineage integration is enabled.
    enabled bool
    Whether or not Cloud Data Lineage integration is enabled.
    enabled Boolean
    Whether or not Cloud Data Lineage integration is enabled.

    EnvironmentConfigWebServerConfig, EnvironmentConfigWebServerConfigArgs

    MachineType string
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.
    MachineType string
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.
    machineType String
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.
    machineType string
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.
    machine_type str
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.
    machineType String
    Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.

    EnvironmentConfigWebServerNetworkAccessControl, EnvironmentConfigWebServerNetworkAccessControlArgs

    AllowedIpRanges List<EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange>
    A collection of allowed IP ranges with descriptions.
    AllowedIpRanges []EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange
    A collection of allowed IP ranges with descriptions.
    allowedIpRanges List<EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange>
    A collection of allowed IP ranges with descriptions.
    allowedIpRanges EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange[]
    A collection of allowed IP ranges with descriptions.
    allowed_ip_ranges Sequence[EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange]
    A collection of allowed IP ranges with descriptions.
    allowedIpRanges List<Property Map>
    A collection of allowed IP ranges with descriptions.

    EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange, EnvironmentConfigWebServerNetworkAccessControlAllowedIpRangeArgs

    Value string
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    Description string
    A description of this ip range.
    Value string
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    Description string
    A description of this ip range.
    value String
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    description String
    A description of this ip range.
    value string
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    description string
    A description of this ip range.
    value str
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    description str
    A description of this ip range.
    value String
    IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.
    description String
    A description of this ip range.

    EnvironmentConfigWorkloadsConfig, EnvironmentConfigWorkloadsConfigArgs

    DagProcessor EnvironmentConfigWorkloadsConfigDagProcessor
    Configuration for resources used by DAG processor.
    Scheduler EnvironmentConfigWorkloadsConfigScheduler
    Configuration for resources used by Airflow schedulers.
    Triggerer EnvironmentConfigWorkloadsConfigTriggerer
    Configuration for resources used by Airflow triggerers.
    WebServer EnvironmentConfigWorkloadsConfigWebServer
    Configuration for resources used by Airflow web server.
    Worker EnvironmentConfigWorkloadsConfigWorker
    Configuration for resources used by Airflow workers.
    DagProcessor EnvironmentConfigWorkloadsConfigDagProcessor
    Configuration for resources used by DAG processor.
    Scheduler EnvironmentConfigWorkloadsConfigScheduler
    Configuration for resources used by Airflow schedulers.
    Triggerer EnvironmentConfigWorkloadsConfigTriggerer
    Configuration for resources used by Airflow triggerers.
    WebServer EnvironmentConfigWorkloadsConfigWebServer
    Configuration for resources used by Airflow web server.
    Worker EnvironmentConfigWorkloadsConfigWorker
    Configuration for resources used by Airflow workers.
    dagProcessor EnvironmentConfigWorkloadsConfigDagProcessor
    Configuration for resources used by DAG processor.
    scheduler EnvironmentConfigWorkloadsConfigScheduler
    Configuration for resources used by Airflow schedulers.
    triggerer EnvironmentConfigWorkloadsConfigTriggerer
    Configuration for resources used by Airflow triggerers.
    webServer EnvironmentConfigWorkloadsConfigWebServer
    Configuration for resources used by Airflow web server.
    worker EnvironmentConfigWorkloadsConfigWorker
    Configuration for resources used by Airflow workers.
    dagProcessor EnvironmentConfigWorkloadsConfigDagProcessor
    Configuration for resources used by DAG processor.
    scheduler EnvironmentConfigWorkloadsConfigScheduler
    Configuration for resources used by Airflow schedulers.
    triggerer EnvironmentConfigWorkloadsConfigTriggerer
    Configuration for resources used by Airflow triggerers.
    webServer EnvironmentConfigWorkloadsConfigWebServer
    Configuration for resources used by Airflow web server.
    worker EnvironmentConfigWorkloadsConfigWorker
    Configuration for resources used by Airflow workers.
    dag_processor EnvironmentConfigWorkloadsConfigDagProcessor
    Configuration for resources used by DAG processor.
    scheduler EnvironmentConfigWorkloadsConfigScheduler
    Configuration for resources used by Airflow schedulers.
    triggerer EnvironmentConfigWorkloadsConfigTriggerer
    Configuration for resources used by Airflow triggerers.
    web_server EnvironmentConfigWorkloadsConfigWebServer
    Configuration for resources used by Airflow web server.
    worker EnvironmentConfigWorkloadsConfigWorker
    Configuration for resources used by Airflow workers.
    dagProcessor Property Map
    Configuration for resources used by DAG processor.
    scheduler Property Map
    Configuration for resources used by Airflow schedulers.
    triggerer Property Map
    Configuration for resources used by Airflow triggerers.
    webServer Property Map
    Configuration for resources used by Airflow web server.
    worker Property Map
    Configuration for resources used by Airflow workers.

    EnvironmentConfigWorkloadsConfigDagProcessor, EnvironmentConfigWorkloadsConfigDagProcessorArgs

    Count int
    Number of DAG processors.
    Cpu double
    CPU request and limit for DAG processor.
    MemoryGb double
    Memory (GB) request and limit for DAG processor.
    StorageGb double
    Storage (GB) request and limit for DAG processor.
    Count int
    Number of DAG processors.
    Cpu float64
    CPU request and limit for DAG processor.
    MemoryGb float64
    Memory (GB) request and limit for DAG processor.
    StorageGb float64
    Storage (GB) request and limit for DAG processor.
    count Integer
    Number of DAG processors.
    cpu Double
    CPU request and limit for DAG processor.
    memoryGb Double
    Memory (GB) request and limit for DAG processor.
    storageGb Double
    Storage (GB) request and limit for DAG processor.
    count number
    Number of DAG processors.
    cpu number
    CPU request and limit for DAG processor.
    memoryGb number
    Memory (GB) request and limit for DAG processor.
    storageGb number
    Storage (GB) request and limit for DAG processor.
    count int
    Number of DAG processors.
    cpu float
    CPU request and limit for DAG processor.
    memory_gb float
    Memory (GB) request and limit for DAG processor.
    storage_gb float
    Storage (GB) request and limit for DAG processor.
    count Number
    Number of DAG processors.
    cpu Number
    CPU request and limit for DAG processor.
    memoryGb Number
    Memory (GB) request and limit for DAG processor.
    storageGb Number
    Storage (GB) request and limit for DAG processor.

    EnvironmentConfigWorkloadsConfigScheduler, EnvironmentConfigWorkloadsConfigSchedulerArgs

    Count int
    The number of schedulers.
    Cpu double
    CPU request and limit for a single Airflow scheduler replica
    MemoryGb double
    Memory (GB) request and limit for a single Airflow scheduler replica.
    StorageGb double
    Storage (GB) request and limit for a single Airflow scheduler replica.
    Count int
    The number of schedulers.
    Cpu float64
    CPU request and limit for a single Airflow scheduler replica
    MemoryGb float64
    Memory (GB) request and limit for a single Airflow scheduler replica.
    StorageGb float64
    Storage (GB) request and limit for a single Airflow scheduler replica.
    count Integer
    The number of schedulers.
    cpu Double
    CPU request and limit for a single Airflow scheduler replica
    memoryGb Double
    Memory (GB) request and limit for a single Airflow scheduler replica.
    storageGb Double
    Storage (GB) request and limit for a single Airflow scheduler replica.
    count number
    The number of schedulers.
    cpu number
    CPU request and limit for a single Airflow scheduler replica
    memoryGb number
    Memory (GB) request and limit for a single Airflow scheduler replica.
    storageGb number
    Storage (GB) request and limit for a single Airflow scheduler replica.
    count int
    The number of schedulers.
    cpu float
    CPU request and limit for a single Airflow scheduler replica
    memory_gb float
    Memory (GB) request and limit for a single Airflow scheduler replica.
    storage_gb float
    Storage (GB) request and limit for a single Airflow scheduler replica.
    count Number
    The number of schedulers.
    cpu Number
    CPU request and limit for a single Airflow scheduler replica
    memoryGb Number
    Memory (GB) request and limit for a single Airflow scheduler replica.
    storageGb Number
    Storage (GB) request and limit for a single Airflow scheduler replica.

    EnvironmentConfigWorkloadsConfigTriggerer, EnvironmentConfigWorkloadsConfigTriggererArgs

    Count int
    The number of triggerers.
    Cpu double
    CPU request and limit for a single Airflow triggerer replica.
    MemoryGb double
    Memory (GB) request and limit for a single Airflow triggerer replica.
    Count int
    The number of triggerers.
    Cpu float64
    CPU request and limit for a single Airflow triggerer replica.
    MemoryGb float64
    Memory (GB) request and limit for a single Airflow triggerer replica.
    count Integer
    The number of triggerers.
    cpu Double
    CPU request and limit for a single Airflow triggerer replica.
    memoryGb Double
    Memory (GB) request and limit for a single Airflow triggerer replica.
    count number
    The number of triggerers.
    cpu number
    CPU request and limit for a single Airflow triggerer replica.
    memoryGb number
    Memory (GB) request and limit for a single Airflow triggerer replica.
    count int
    The number of triggerers.
    cpu float
    CPU request and limit for a single Airflow triggerer replica.
    memory_gb float
    Memory (GB) request and limit for a single Airflow triggerer replica.
    count Number
    The number of triggerers.
    cpu Number
    CPU request and limit for a single Airflow triggerer replica.
    memoryGb Number
    Memory (GB) request and limit for a single Airflow triggerer replica.

    EnvironmentConfigWorkloadsConfigWebServer, EnvironmentConfigWorkloadsConfigWebServerArgs

    Cpu double
    CPU request and limit for Airflow web server.
    MemoryGb double
    Memory (GB) request and limit for Airflow web server.
    StorageGb double
    Storage (GB) request and limit for Airflow web server.
    Cpu float64
    CPU request and limit for Airflow web server.
    MemoryGb float64
    Memory (GB) request and limit for Airflow web server.
    StorageGb float64
    Storage (GB) request and limit for Airflow web server.
    cpu Double
    CPU request and limit for Airflow web server.
    memoryGb Double
    Memory (GB) request and limit for Airflow web server.
    storageGb Double
    Storage (GB) request and limit for Airflow web server.
    cpu number
    CPU request and limit for Airflow web server.
    memoryGb number
    Memory (GB) request and limit for Airflow web server.
    storageGb number
    Storage (GB) request and limit for Airflow web server.
    cpu float
    CPU request and limit for Airflow web server.
    memory_gb float
    Memory (GB) request and limit for Airflow web server.
    storage_gb float
    Storage (GB) request and limit for Airflow web server.
    cpu Number
    CPU request and limit for Airflow web server.
    memoryGb Number
    Memory (GB) request and limit for Airflow web server.
    storageGb Number
    Storage (GB) request and limit for Airflow web server.

    EnvironmentConfigWorkloadsConfigWorker, EnvironmentConfigWorkloadsConfigWorkerArgs

    Cpu double
    CPU request and limit for a single Airflow worker replica.
    MaxCount int
    Maximum number of workers for autoscaling.
    MemoryGb double
    Memory (GB) request and limit for a single Airflow worker replica.
    MinCount int
    Minimum number of workers for autoscaling.
    StorageGb double
    Storage (GB) request and limit for a single Airflow worker replica.
    Cpu float64
    CPU request and limit for a single Airflow worker replica.
    MaxCount int
    Maximum number of workers for autoscaling.
    MemoryGb float64
    Memory (GB) request and limit for a single Airflow worker replica.
    MinCount int
    Minimum number of workers for autoscaling.
    StorageGb float64
    Storage (GB) request and limit for a single Airflow worker replica.
    cpu Double
    CPU request and limit for a single Airflow worker replica.
    maxCount Integer
    Maximum number of workers for autoscaling.
    memoryGb Double
    Memory (GB) request and limit for a single Airflow worker replica.
    minCount Integer
    Minimum number of workers for autoscaling.
    storageGb Double
    Storage (GB) request and limit for a single Airflow worker replica.
    cpu number
    CPU request and limit for a single Airflow worker replica.
    maxCount number
    Maximum number of workers for autoscaling.
    memoryGb number
    Memory (GB) request and limit for a single Airflow worker replica.
    minCount number
    Minimum number of workers for autoscaling.
    storageGb number
    Storage (GB) request and limit for a single Airflow worker replica.
    cpu float
    CPU request and limit for a single Airflow worker replica.
    max_count int
    Maximum number of workers for autoscaling.
    memory_gb float
    Memory (GB) request and limit for a single Airflow worker replica.
    min_count int
    Minimum number of workers for autoscaling.
    storage_gb float
    Storage (GB) request and limit for a single Airflow worker replica.
    cpu Number
    CPU request and limit for a single Airflow worker replica.
    maxCount Number
    Maximum number of workers for autoscaling.
    memoryGb Number
    Memory (GB) request and limit for a single Airflow worker replica.
    minCount Number
    Minimum number of workers for autoscaling.
    storageGb Number
    Storage (GB) request and limit for a single Airflow worker replica.

    EnvironmentStorageConfig, EnvironmentStorageConfigArgs

    Bucket string
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.
    Bucket string
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.
    bucket String
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.
    bucket string
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.
    bucket str
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.
    bucket String
    Optional. Name of an existing Cloud Storage bucket to be used by the environment.

    Import

    Environment can be imported using any of these accepted formats:

    • projects/{{project}}/locations/{{region}}/environments/{{name}}
    • {{project}}/{{region}}/{{name}}
    • {{name}}

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

    $ pulumi import gcp:composer/environment:Environment default projects/{{project}}/locations/{{region}}/environments/{{name}}
    $ pulumi import gcp:composer/environment:Environment default {{project}}/{{region}}/{{name}}
    $ pulumi import gcp:composer/environment:Environment default {{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
    Viewing docs for Google Cloud v9.16.0
    published on Thursday, Mar 19, 2026 by Pulumi
      Try Pulumi Cloud free. Your team will thank you.