All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.aws.rds.kotlin.GlobalClusterArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.57.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.rds.kotlin

import com.pulumi.aws.rds.GlobalClusterArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName

/**
 * Manages an RDS Global Cluster, which is an Aurora global database spread across multiple regions. The global database contains a single primary cluster with read-write capability, and a read-only secondary cluster that receives data from the primary cluster through high-speed replication performed by the Aurora storage subsystem.
 * More information about Aurora global databases can be found in the [Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-creating).
 * ## Example Usage
 * ### New MySQL Global Cluster
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.rds.GlobalCluster("example", {
 *     globalClusterIdentifier: "global-test",
 *     engine: "aurora",
 *     engineVersion: "5.6.mysql_aurora.1.22.2",
 *     databaseName: "example_db",
 * });
 * const primary = new aws.rds.Cluster("primary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     clusterIdentifier: "test-primary-cluster",
 *     masterUsername: "username",
 *     masterPassword: "somepass123",
 *     databaseName: "example_db",
 *     globalClusterIdentifier: example.id,
 *     dbSubnetGroupName: "default",
 * });
 * const primaryClusterInstance = new aws.rds.ClusterInstance("primary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     identifier: "test-primary-cluster-instance",
 *     clusterIdentifier: primary.id,
 *     instanceClass: aws.rds.InstanceType.R4_Large,
 *     dbSubnetGroupName: "default",
 * });
 * const secondary = new aws.rds.Cluster("secondary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     clusterIdentifier: "test-secondary-cluster",
 *     globalClusterIdentifier: example.id,
 *     dbSubnetGroupName: "default",
 * }, {
 *     dependsOn: [primaryClusterInstance],
 * });
 * const secondaryClusterInstance = new aws.rds.ClusterInstance("secondary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     identifier: "test-secondary-cluster-instance",
 *     clusterIdentifier: secondary.id,
 *     instanceClass: aws.rds.InstanceType.R4_Large,
 *     dbSubnetGroupName: "default",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.rds.GlobalCluster("example",
 *     global_cluster_identifier="global-test",
 *     engine="aurora",
 *     engine_version="5.6.mysql_aurora.1.22.2",
 *     database_name="example_db")
 * primary = aws.rds.Cluster("primary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     cluster_identifier="test-primary-cluster",
 *     master_username="username",
 *     master_password="somepass123",
 *     database_name="example_db",
 *     global_cluster_identifier=example.id,
 *     db_subnet_group_name="default")
 * primary_cluster_instance = aws.rds.ClusterInstance("primary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     identifier="test-primary-cluster-instance",
 *     cluster_identifier=primary.id,
 *     instance_class=aws.rds.InstanceType.R4_LARGE,
 *     db_subnet_group_name="default")
 * secondary = aws.rds.Cluster("secondary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     cluster_identifier="test-secondary-cluster",
 *     global_cluster_identifier=example.id,
 *     db_subnet_group_name="default",
 *     opts = pulumi.ResourceOptions(depends_on=[primary_cluster_instance]))
 * secondary_cluster_instance = aws.rds.ClusterInstance("secondary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     identifier="test-secondary-cluster-instance",
 *     cluster_identifier=secondary.id,
 *     instance_class=aws.rds.InstanceType.R4_LARGE,
 *     db_subnet_group_name="default")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.Rds.GlobalCluster("example", new()
 *     {
 *         GlobalClusterIdentifier = "global-test",
 *         Engine = "aurora",
 *         EngineVersion = "5.6.mysql_aurora.1.22.2",
 *         DatabaseName = "example_db",
 *     });
 *     var primary = new Aws.Rds.Cluster("primary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         ClusterIdentifier = "test-primary-cluster",
 *         MasterUsername = "username",
 *         MasterPassword = "somepass123",
 *         DatabaseName = "example_db",
 *         GlobalClusterIdentifier = example.Id,
 *         DbSubnetGroupName = "default",
 *     });
 *     var primaryClusterInstance = new Aws.Rds.ClusterInstance("primary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         Identifier = "test-primary-cluster-instance",
 *         ClusterIdentifier = primary.Id,
 *         InstanceClass = Aws.Rds.InstanceType.R4_Large,
 *         DbSubnetGroupName = "default",
 *     });
 *     var secondary = new Aws.Rds.Cluster("secondary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         ClusterIdentifier = "test-secondary-cluster",
 *         GlobalClusterIdentifier = example.Id,
 *         DbSubnetGroupName = "default",
 *     }, new CustomResourceOptions
 *     {
 *         DependsOn =
 *         {
 *             primaryClusterInstance,
 *         },
 *     });
 *     var secondaryClusterInstance = new Aws.Rds.ClusterInstance("secondary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         Identifier = "test-secondary-cluster-instance",
 *         ClusterIdentifier = secondary.Id,
 *         InstanceClass = Aws.Rds.InstanceType.R4_Large,
 *         DbSubnetGroupName = "default",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := rds.NewGlobalCluster(ctx, "example", &rds.GlobalClusterArgs{
 * 			GlobalClusterIdentifier: pulumi.String("global-test"),
 * 			Engine:                  pulumi.String("aurora"),
 * 			EngineVersion:           pulumi.String("5.6.mysql_aurora.1.22.2"),
 * 			DatabaseName:            pulumi.String("example_db"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		primary, err := rds.NewCluster(ctx, "primary", &rds.ClusterArgs{
 * 			Engine:                  example.Engine,
 * 			EngineVersion:           example.EngineVersion,
 * 			ClusterIdentifier:       pulumi.String("test-primary-cluster"),
 * 			MasterUsername:          pulumi.String("username"),
 * 			MasterPassword:          pulumi.String("somepass123"),
 * 			DatabaseName:            pulumi.String("example_db"),
 * 			GlobalClusterIdentifier: example.ID(),
 * 			DbSubnetGroupName:       pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		primaryClusterInstance, err := rds.NewClusterInstance(ctx, "primary", &rds.ClusterInstanceArgs{
 * 			Engine:            example.Engine,
 * 			EngineVersion:     example.EngineVersion,
 * 			Identifier:        pulumi.String("test-primary-cluster-instance"),
 * 			ClusterIdentifier: primary.ID(),
 * 			InstanceClass:     pulumi.String(rds.InstanceType_R4_Large),
 * 			DbSubnetGroupName: pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		secondary, err := rds.NewCluster(ctx, "secondary", &rds.ClusterArgs{
 * 			Engine:                  example.Engine,
 * 			EngineVersion:           example.EngineVersion,
 * 			ClusterIdentifier:       pulumi.String("test-secondary-cluster"),
 * 			GlobalClusterIdentifier: example.ID(),
 * 			DbSubnetGroupName:       pulumi.String("default"),
 * 		}, pulumi.DependsOn([]pulumi.Resource{
 * 			primaryClusterInstance,
 * 		}))
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = rds.NewClusterInstance(ctx, "secondary", &rds.ClusterInstanceArgs{
 * 			Engine:            example.Engine,
 * 			EngineVersion:     example.EngineVersion,
 * 			Identifier:        pulumi.String("test-secondary-cluster-instance"),
 * 			ClusterIdentifier: secondary.ID(),
 * 			InstanceClass:     pulumi.String(rds.InstanceType_R4_Large),
 * 			DbSubnetGroupName: pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.rds.GlobalCluster;
 * import com.pulumi.aws.rds.GlobalClusterArgs;
 * import com.pulumi.aws.rds.Cluster;
 * import com.pulumi.aws.rds.ClusterArgs;
 * import com.pulumi.aws.rds.ClusterInstance;
 * import com.pulumi.aws.rds.ClusterInstanceArgs;
 * import com.pulumi.resources.CustomResourceOptions;
 * 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 GlobalCluster("example", GlobalClusterArgs.builder()
 *             .globalClusterIdentifier("global-test")
 *             .engine("aurora")
 *             .engineVersion("5.6.mysql_aurora.1.22.2")
 *             .databaseName("example_db")
 *             .build());
 *         var primary = new Cluster("primary", ClusterArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .clusterIdentifier("test-primary-cluster")
 *             .masterUsername("username")
 *             .masterPassword("somepass123")
 *             .databaseName("example_db")
 *             .globalClusterIdentifier(example.id())
 *             .dbSubnetGroupName("default")
 *             .build());
 *         var primaryClusterInstance = new ClusterInstance("primaryClusterInstance", ClusterInstanceArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .identifier("test-primary-cluster-instance")
 *             .clusterIdentifier(primary.id())
 *             .instanceClass("db.r4.large")
 *             .dbSubnetGroupName("default")
 *             .build());
 *         var secondary = new Cluster("secondary", ClusterArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .clusterIdentifier("test-secondary-cluster")
 *             .globalClusterIdentifier(example.id())
 *             .dbSubnetGroupName("default")
 *             .build(), CustomResourceOptions.builder()
 *                 .dependsOn(primaryClusterInstance)
 *                 .build());
 *         var secondaryClusterInstance = new ClusterInstance("secondaryClusterInstance", ClusterInstanceArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .identifier("test-secondary-cluster-instance")
 *             .clusterIdentifier(secondary.id())
 *             .instanceClass("db.r4.large")
 *             .dbSubnetGroupName("default")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:rds:GlobalCluster
 *     properties:
 *       globalClusterIdentifier: global-test
 *       engine: aurora
 *       engineVersion: 5.6.mysql_aurora.1.22.2
 *       databaseName: example_db
 *   primary:
 *     type: aws:rds:Cluster
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       clusterIdentifier: test-primary-cluster
 *       masterUsername: username
 *       masterPassword: somepass123
 *       databaseName: example_db
 *       globalClusterIdentifier: ${example.id}
 *       dbSubnetGroupName: default
 *   primaryClusterInstance:
 *     type: aws:rds:ClusterInstance
 *     name: primary
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       identifier: test-primary-cluster-instance
 *       clusterIdentifier: ${primary.id}
 *       instanceClass: db.r4.large
 *       dbSubnetGroupName: default
 *   secondary:
 *     type: aws:rds:Cluster
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       clusterIdentifier: test-secondary-cluster
 *       globalClusterIdentifier: ${example.id}
 *       dbSubnetGroupName: default
 *     options:
 *       dependson:
 *         - ${primaryClusterInstance}
 *   secondaryClusterInstance:
 *     type: aws:rds:ClusterInstance
 *     name: secondary
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       identifier: test-secondary-cluster-instance
 *       clusterIdentifier: ${secondary.id}
 *       instanceClass: db.r4.large
 *       dbSubnetGroupName: default
 * ```
 * 
 * ### New PostgreSQL Global Cluster
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.rds.GlobalCluster("example", {
 *     globalClusterIdentifier: "global-test",
 *     engine: "aurora-postgresql",
 *     engineVersion: "11.9",
 *     databaseName: "example_db",
 * });
 * const primary = new aws.rds.Cluster("primary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     clusterIdentifier: "test-primary-cluster",
 *     masterUsername: "username",
 *     masterPassword: "somepass123",
 *     databaseName: "example_db",
 *     globalClusterIdentifier: example.id,
 *     dbSubnetGroupName: "default",
 * });
 * const primaryClusterInstance = new aws.rds.ClusterInstance("primary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     identifier: "test-primary-cluster-instance",
 *     clusterIdentifier: primary.id,
 *     instanceClass: aws.rds.InstanceType.R4_Large,
 *     dbSubnetGroupName: "default",
 * });
 * const secondary = new aws.rds.Cluster("secondary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     clusterIdentifier: "test-secondary-cluster",
 *     globalClusterIdentifier: example.id,
 *     skipFinalSnapshot: true,
 *     dbSubnetGroupName: "default",
 * }, {
 *     dependsOn: [primaryClusterInstance],
 * });
 * const secondaryClusterInstance = new aws.rds.ClusterInstance("secondary", {
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     identifier: "test-secondary-cluster-instance",
 *     clusterIdentifier: secondary.id,
 *     instanceClass: aws.rds.InstanceType.R4_Large,
 *     dbSubnetGroupName: "default",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.rds.GlobalCluster("example",
 *     global_cluster_identifier="global-test",
 *     engine="aurora-postgresql",
 *     engine_version="11.9",
 *     database_name="example_db")
 * primary = aws.rds.Cluster("primary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     cluster_identifier="test-primary-cluster",
 *     master_username="username",
 *     master_password="somepass123",
 *     database_name="example_db",
 *     global_cluster_identifier=example.id,
 *     db_subnet_group_name="default")
 * primary_cluster_instance = aws.rds.ClusterInstance("primary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     identifier="test-primary-cluster-instance",
 *     cluster_identifier=primary.id,
 *     instance_class=aws.rds.InstanceType.R4_LARGE,
 *     db_subnet_group_name="default")
 * secondary = aws.rds.Cluster("secondary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     cluster_identifier="test-secondary-cluster",
 *     global_cluster_identifier=example.id,
 *     skip_final_snapshot=True,
 *     db_subnet_group_name="default",
 *     opts = pulumi.ResourceOptions(depends_on=[primary_cluster_instance]))
 * secondary_cluster_instance = aws.rds.ClusterInstance("secondary",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     identifier="test-secondary-cluster-instance",
 *     cluster_identifier=secondary.id,
 *     instance_class=aws.rds.InstanceType.R4_LARGE,
 *     db_subnet_group_name="default")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.Rds.GlobalCluster("example", new()
 *     {
 *         GlobalClusterIdentifier = "global-test",
 *         Engine = "aurora-postgresql",
 *         EngineVersion = "11.9",
 *         DatabaseName = "example_db",
 *     });
 *     var primary = new Aws.Rds.Cluster("primary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         ClusterIdentifier = "test-primary-cluster",
 *         MasterUsername = "username",
 *         MasterPassword = "somepass123",
 *         DatabaseName = "example_db",
 *         GlobalClusterIdentifier = example.Id,
 *         DbSubnetGroupName = "default",
 *     });
 *     var primaryClusterInstance = new Aws.Rds.ClusterInstance("primary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         Identifier = "test-primary-cluster-instance",
 *         ClusterIdentifier = primary.Id,
 *         InstanceClass = Aws.Rds.InstanceType.R4_Large,
 *         DbSubnetGroupName = "default",
 *     });
 *     var secondary = new Aws.Rds.Cluster("secondary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         ClusterIdentifier = "test-secondary-cluster",
 *         GlobalClusterIdentifier = example.Id,
 *         SkipFinalSnapshot = true,
 *         DbSubnetGroupName = "default",
 *     }, new CustomResourceOptions
 *     {
 *         DependsOn =
 *         {
 *             primaryClusterInstance,
 *         },
 *     });
 *     var secondaryClusterInstance = new Aws.Rds.ClusterInstance("secondary", new()
 *     {
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         Identifier = "test-secondary-cluster-instance",
 *         ClusterIdentifier = secondary.Id,
 *         InstanceClass = Aws.Rds.InstanceType.R4_Large,
 *         DbSubnetGroupName = "default",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := rds.NewGlobalCluster(ctx, "example", &rds.GlobalClusterArgs{
 * 			GlobalClusterIdentifier: pulumi.String("global-test"),
 * 			Engine:                  pulumi.String("aurora-postgresql"),
 * 			EngineVersion:           pulumi.String("11.9"),
 * 			DatabaseName:            pulumi.String("example_db"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		primary, err := rds.NewCluster(ctx, "primary", &rds.ClusterArgs{
 * 			Engine:                  example.Engine,
 * 			EngineVersion:           example.EngineVersion,
 * 			ClusterIdentifier:       pulumi.String("test-primary-cluster"),
 * 			MasterUsername:          pulumi.String("username"),
 * 			MasterPassword:          pulumi.String("somepass123"),
 * 			DatabaseName:            pulumi.String("example_db"),
 * 			GlobalClusterIdentifier: example.ID(),
 * 			DbSubnetGroupName:       pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		primaryClusterInstance, err := rds.NewClusterInstance(ctx, "primary", &rds.ClusterInstanceArgs{
 * 			Engine:            example.Engine,
 * 			EngineVersion:     example.EngineVersion,
 * 			Identifier:        pulumi.String("test-primary-cluster-instance"),
 * 			ClusterIdentifier: primary.ID(),
 * 			InstanceClass:     pulumi.String(rds.InstanceType_R4_Large),
 * 			DbSubnetGroupName: pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		secondary, err := rds.NewCluster(ctx, "secondary", &rds.ClusterArgs{
 * 			Engine:                  example.Engine,
 * 			EngineVersion:           example.EngineVersion,
 * 			ClusterIdentifier:       pulumi.String("test-secondary-cluster"),
 * 			GlobalClusterIdentifier: example.ID(),
 * 			SkipFinalSnapshot:       pulumi.Bool(true),
 * 			DbSubnetGroupName:       pulumi.String("default"),
 * 		}, pulumi.DependsOn([]pulumi.Resource{
 * 			primaryClusterInstance,
 * 		}))
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = rds.NewClusterInstance(ctx, "secondary", &rds.ClusterInstanceArgs{
 * 			Engine:            example.Engine,
 * 			EngineVersion:     example.EngineVersion,
 * 			Identifier:        pulumi.String("test-secondary-cluster-instance"),
 * 			ClusterIdentifier: secondary.ID(),
 * 			InstanceClass:     pulumi.String(rds.InstanceType_R4_Large),
 * 			DbSubnetGroupName: pulumi.String("default"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.rds.GlobalCluster;
 * import com.pulumi.aws.rds.GlobalClusterArgs;
 * import com.pulumi.aws.rds.Cluster;
 * import com.pulumi.aws.rds.ClusterArgs;
 * import com.pulumi.aws.rds.ClusterInstance;
 * import com.pulumi.aws.rds.ClusterInstanceArgs;
 * import com.pulumi.resources.CustomResourceOptions;
 * 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 GlobalCluster("example", GlobalClusterArgs.builder()
 *             .globalClusterIdentifier("global-test")
 *             .engine("aurora-postgresql")
 *             .engineVersion("11.9")
 *             .databaseName("example_db")
 *             .build());
 *         var primary = new Cluster("primary", ClusterArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .clusterIdentifier("test-primary-cluster")
 *             .masterUsername("username")
 *             .masterPassword("somepass123")
 *             .databaseName("example_db")
 *             .globalClusterIdentifier(example.id())
 *             .dbSubnetGroupName("default")
 *             .build());
 *         var primaryClusterInstance = new ClusterInstance("primaryClusterInstance", ClusterInstanceArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .identifier("test-primary-cluster-instance")
 *             .clusterIdentifier(primary.id())
 *             .instanceClass("db.r4.large")
 *             .dbSubnetGroupName("default")
 *             .build());
 *         var secondary = new Cluster("secondary", ClusterArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .clusterIdentifier("test-secondary-cluster")
 *             .globalClusterIdentifier(example.id())
 *             .skipFinalSnapshot(true)
 *             .dbSubnetGroupName("default")
 *             .build(), CustomResourceOptions.builder()
 *                 .dependsOn(primaryClusterInstance)
 *                 .build());
 *         var secondaryClusterInstance = new ClusterInstance("secondaryClusterInstance", ClusterInstanceArgs.builder()
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .identifier("test-secondary-cluster-instance")
 *             .clusterIdentifier(secondary.id())
 *             .instanceClass("db.r4.large")
 *             .dbSubnetGroupName("default")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:rds:GlobalCluster
 *     properties:
 *       globalClusterIdentifier: global-test
 *       engine: aurora-postgresql
 *       engineVersion: '11.9'
 *       databaseName: example_db
 *   primary:
 *     type: aws:rds:Cluster
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       clusterIdentifier: test-primary-cluster
 *       masterUsername: username
 *       masterPassword: somepass123
 *       databaseName: example_db
 *       globalClusterIdentifier: ${example.id}
 *       dbSubnetGroupName: default
 *   primaryClusterInstance:
 *     type: aws:rds:ClusterInstance
 *     name: primary
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       identifier: test-primary-cluster-instance
 *       clusterIdentifier: ${primary.id}
 *       instanceClass: db.r4.large
 *       dbSubnetGroupName: default
 *   secondary:
 *     type: aws:rds:Cluster
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       clusterIdentifier: test-secondary-cluster
 *       globalClusterIdentifier: ${example.id}
 *       skipFinalSnapshot: true
 *       dbSubnetGroupName: default
 *     options:
 *       dependson:
 *         - ${primaryClusterInstance}
 *   secondaryClusterInstance:
 *     type: aws:rds:ClusterInstance
 *     name: secondary
 *     properties:
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       identifier: test-secondary-cluster-instance
 *       clusterIdentifier: ${secondary.id}
 *       instanceClass: db.r4.large
 *       dbSubnetGroupName: default
 * ```
 * 
 * ### New Global Cluster From Existing DB Cluster
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.rds.Cluster("example", {});
 * const exampleGlobalCluster = new aws.rds.GlobalCluster("example", {
 *     forceDestroy: true,
 *     globalClusterIdentifier: "example",
 *     sourceDbClusterIdentifier: example.arn,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.rds.Cluster("example")
 * example_global_cluster = aws.rds.GlobalCluster("example",
 *     force_destroy=True,
 *     global_cluster_identifier="example",
 *     source_db_cluster_identifier=example.arn)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.Rds.Cluster("example");
 *     var exampleGlobalCluster = new Aws.Rds.GlobalCluster("example", new()
 *     {
 *         ForceDestroy = true,
 *         GlobalClusterIdentifier = "example",
 *         SourceDbClusterIdentifier = example.Arn,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := rds.NewCluster(ctx, "example", nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = rds.NewGlobalCluster(ctx, "example", &rds.GlobalClusterArgs{
 * 			ForceDestroy:              pulumi.Bool(true),
 * 			GlobalClusterIdentifier:   pulumi.String("example"),
 * 			SourceDbClusterIdentifier: example.Arn,
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.rds.Cluster;
 * import com.pulumi.aws.rds.GlobalCluster;
 * import com.pulumi.aws.rds.GlobalClusterArgs;
 * 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 Cluster("example");
 *         var exampleGlobalCluster = new GlobalCluster("exampleGlobalCluster", GlobalClusterArgs.builder()
 *             .forceDestroy(true)
 *             .globalClusterIdentifier("example")
 *             .sourceDbClusterIdentifier(example.arn())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:rds:Cluster
 *   exampleGlobalCluster:
 *     type: aws:rds:GlobalCluster
 *     name: example
 *     properties:
 *       forceDestroy: true
 *       globalClusterIdentifier: example
 *       sourceDbClusterIdentifier: ${example.arn}
 * ```
 * 
 * ### Upgrading Engine Versions
 * When you upgrade the version of an `aws.rds.GlobalCluster`, the provider will attempt to in-place upgrade the engine versions of all associated clusters. Since the `aws.rds.Cluster` resource is being updated through the `aws.rds.GlobalCluster`, you are likely to get an error (`Provider produced inconsistent final plan`). To avoid this, use the `lifecycle` `ignore_changes` meta argument as shown below on the `aws.rds.Cluster`.
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.rds.GlobalCluster("example", {
 *     globalClusterIdentifier: "kyivkharkiv",
 *     engine: "aurora-mysql",
 *     engineVersion: "5.7.mysql_aurora.2.07.5",
 * });
 * const primary = new aws.rds.Cluster("primary", {
 *     allowMajorVersionUpgrade: true,
 *     applyImmediately: true,
 *     clusterIdentifier: "odessadnipro",
 *     databaseName: "totoro",
 *     engine: example.engine,
 *     engineVersion: example.engineVersion,
 *     globalClusterIdentifier: example.id,
 *     masterPassword: "satsukimae",
 *     masterUsername: "maesatsuki",
 *     skipFinalSnapshot: true,
 * });
 * const primaryClusterInstance = new aws.rds.ClusterInstance("primary", {
 *     applyImmediately: true,
 *     clusterIdentifier: primary.id,
 *     engine: primary.engine,
 *     engineVersion: primary.engineVersion,
 *     identifier: "donetsklviv",
 *     instanceClass: aws.rds.InstanceType.R4_Large,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.rds.GlobalCluster("example",
 *     global_cluster_identifier="kyivkharkiv",
 *     engine="aurora-mysql",
 *     engine_version="5.7.mysql_aurora.2.07.5")
 * primary = aws.rds.Cluster("primary",
 *     allow_major_version_upgrade=True,
 *     apply_immediately=True,
 *     cluster_identifier="odessadnipro",
 *     database_name="totoro",
 *     engine=example.engine,
 *     engine_version=example.engine_version,
 *     global_cluster_identifier=example.id,
 *     master_password="satsukimae",
 *     master_username="maesatsuki",
 *     skip_final_snapshot=True)
 * primary_cluster_instance = aws.rds.ClusterInstance("primary",
 *     apply_immediately=True,
 *     cluster_identifier=primary.id,
 *     engine=primary.engine,
 *     engine_version=primary.engine_version,
 *     identifier="donetsklviv",
 *     instance_class=aws.rds.InstanceType.R4_LARGE)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.Rds.GlobalCluster("example", new()
 *     {
 *         GlobalClusterIdentifier = "kyivkharkiv",
 *         Engine = "aurora-mysql",
 *         EngineVersion = "5.7.mysql_aurora.2.07.5",
 *     });
 *     var primary = new Aws.Rds.Cluster("primary", new()
 *     {
 *         AllowMajorVersionUpgrade = true,
 *         ApplyImmediately = true,
 *         ClusterIdentifier = "odessadnipro",
 *         DatabaseName = "totoro",
 *         Engine = example.Engine,
 *         EngineVersion = example.EngineVersion,
 *         GlobalClusterIdentifier = example.Id,
 *         MasterPassword = "satsukimae",
 *         MasterUsername = "maesatsuki",
 *         SkipFinalSnapshot = true,
 *     });
 *     var primaryClusterInstance = new Aws.Rds.ClusterInstance("primary", new()
 *     {
 *         ApplyImmediately = true,
 *         ClusterIdentifier = primary.Id,
 *         Engine = primary.Engine,
 *         EngineVersion = primary.EngineVersion,
 *         Identifier = "donetsklviv",
 *         InstanceClass = Aws.Rds.InstanceType.R4_Large,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := rds.NewGlobalCluster(ctx, "example", &rds.GlobalClusterArgs{
 * 			GlobalClusterIdentifier: pulumi.String("kyivkharkiv"),
 * 			Engine:                  pulumi.String("aurora-mysql"),
 * 			EngineVersion:           pulumi.String("5.7.mysql_aurora.2.07.5"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		primary, err := rds.NewCluster(ctx, "primary", &rds.ClusterArgs{
 * 			AllowMajorVersionUpgrade: pulumi.Bool(true),
 * 			ApplyImmediately:         pulumi.Bool(true),
 * 			ClusterIdentifier:        pulumi.String("odessadnipro"),
 * 			DatabaseName:             pulumi.String("totoro"),
 * 			Engine:                   example.Engine,
 * 			EngineVersion:            example.EngineVersion,
 * 			GlobalClusterIdentifier:  example.ID(),
 * 			MasterPassword:           pulumi.String("satsukimae"),
 * 			MasterUsername:           pulumi.String("maesatsuki"),
 * 			SkipFinalSnapshot:        pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = rds.NewClusterInstance(ctx, "primary", &rds.ClusterInstanceArgs{
 * 			ApplyImmediately:  pulumi.Bool(true),
 * 			ClusterIdentifier: primary.ID(),
 * 			Engine:            primary.Engine,
 * 			EngineVersion:     primary.EngineVersion,
 * 			Identifier:        pulumi.String("donetsklviv"),
 * 			InstanceClass:     pulumi.String(rds.InstanceType_R4_Large),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.rds.GlobalCluster;
 * import com.pulumi.aws.rds.GlobalClusterArgs;
 * import com.pulumi.aws.rds.Cluster;
 * import com.pulumi.aws.rds.ClusterArgs;
 * import com.pulumi.aws.rds.ClusterInstance;
 * import com.pulumi.aws.rds.ClusterInstanceArgs;
 * 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 GlobalCluster("example", GlobalClusterArgs.builder()
 *             .globalClusterIdentifier("kyivkharkiv")
 *             .engine("aurora-mysql")
 *             .engineVersion("5.7.mysql_aurora.2.07.5")
 *             .build());
 *         var primary = new Cluster("primary", ClusterArgs.builder()
 *             .allowMajorVersionUpgrade(true)
 *             .applyImmediately(true)
 *             .clusterIdentifier("odessadnipro")
 *             .databaseName("totoro")
 *             .engine(example.engine())
 *             .engineVersion(example.engineVersion())
 *             .globalClusterIdentifier(example.id())
 *             .masterPassword("satsukimae")
 *             .masterUsername("maesatsuki")
 *             .skipFinalSnapshot(true)
 *             .build());
 *         var primaryClusterInstance = new ClusterInstance("primaryClusterInstance", ClusterInstanceArgs.builder()
 *             .applyImmediately(true)
 *             .clusterIdentifier(primary.id())
 *             .engine(primary.engine())
 *             .engineVersion(primary.engineVersion())
 *             .identifier("donetsklviv")
 *             .instanceClass("db.r4.large")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:rds:GlobalCluster
 *     properties:
 *       globalClusterIdentifier: kyivkharkiv
 *       engine: aurora-mysql
 *       engineVersion: 5.7.mysql_aurora.2.07.5
 *   primary:
 *     type: aws:rds:Cluster
 *     properties:
 *       allowMajorVersionUpgrade: true
 *       applyImmediately: true
 *       clusterIdentifier: odessadnipro
 *       databaseName: totoro
 *       engine: ${example.engine}
 *       engineVersion: ${example.engineVersion}
 *       globalClusterIdentifier: ${example.id}
 *       masterPassword: satsukimae
 *       masterUsername: maesatsuki
 *       skipFinalSnapshot: true
 *   primaryClusterInstance:
 *     type: aws:rds:ClusterInstance
 *     name: primary
 *     properties:
 *       applyImmediately: true
 *       clusterIdentifier: ${primary.id}
 *       engine: ${primary.engine}
 *       engineVersion: ${primary.engineVersion}
 *       identifier: donetsklviv
 *       instanceClass: db.r4.large
 * ```
 * 
 * ## Import
 * Using `pulumi import`, import `aws_rds_global_cluster` using the RDS Global Cluster identifier. For example:
 * ```sh
 * $ pulumi import aws:rds/globalCluster:GlobalCluster example example
 * ```
 * Certain resource arguments, like `force_destroy`, only exist within this provider. If the argument is set in the the provider configuration on an imported resource, This provider will show a difference on the first plan after import to update the state value. This change is safe to apply immediately so the state matches the desired configuration.
 * Certain resource arguments, like `source_db_cluster_identifier`, do not have an API method for reading the information after creation. If the argument is set in the Pulumi program on an imported resource, Pulumi will always show a difference. To workaround this behavior, either omit the argument from the Pulumi program or use `ignore_changes` to hide the difference. For example:
 * @property databaseName Name for an automatically created database on cluster creation.
 * @property deletionProtection If the Global Cluster should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`.
 * @property engine Name of the database engine to be used for this DB cluster. The provider will only perform drift detection if a configuration value is provided. Valid values: `aurora`, `aurora-mysql`, `aurora-postgresql`. Defaults to `aurora`. Conflicts with `source_db_cluster_identifier`.
 * @property engineLifecycleSupport The life cycle type for this DB instance. This setting applies only to Aurora PostgreSQL-based global databases. Valid values are `open-source-rds-extended-support`, `open-source-rds-extended-support-disabled`. Default value is `open-source-rds-extended-support`. [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html
 * @property engineVersion Engine version of the Aurora global database. The `engine`, `engine_version`, and `instance_class` (on the `aws.rds.ClusterInstance`) must together support global databases. See [Using Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) for more information. By upgrading the engine version, the provider will upgrade cluster members. **NOTE:** To avoid an `inconsistent final plan` error while upgrading, use the `lifecycle` `ignore_changes` for `engine_version` meta argument on the associated `aws.rds.Cluster` resource as shown above in Upgrading Engine Versions example.
 * @property forceDestroy Enable to remove DB Cluster members from Global Cluster on destroy. Required with `source_db_cluster_identifier`.
 * @property globalClusterIdentifier Global cluster identifier.
 * @property sourceDbClusterIdentifier Amazon Resource Name (ARN) to use as the primary DB Cluster of the Global Cluster on creation. The provider cannot perform drift detection of this value.
 * @property storageEncrypted Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.
 */
public data class GlobalClusterArgs(
    public val databaseName: Output? = null,
    public val deletionProtection: Output? = null,
    public val engine: Output? = null,
    public val engineLifecycleSupport: Output? = null,
    public val engineVersion: Output? = null,
    public val forceDestroy: Output? = null,
    public val globalClusterIdentifier: Output? = null,
    public val sourceDbClusterIdentifier: Output? = null,
    public val storageEncrypted: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.rds.GlobalClusterArgs =
        com.pulumi.aws.rds.GlobalClusterArgs.builder()
            .databaseName(databaseName?.applyValue({ args0 -> args0 }))
            .deletionProtection(deletionProtection?.applyValue({ args0 -> args0 }))
            .engine(engine?.applyValue({ args0 -> args0 }))
            .engineLifecycleSupport(engineLifecycleSupport?.applyValue({ args0 -> args0 }))
            .engineVersion(engineVersion?.applyValue({ args0 -> args0 }))
            .forceDestroy(forceDestroy?.applyValue({ args0 -> args0 }))
            .globalClusterIdentifier(globalClusterIdentifier?.applyValue({ args0 -> args0 }))
            .sourceDbClusterIdentifier(sourceDbClusterIdentifier?.applyValue({ args0 -> args0 }))
            .storageEncrypted(storageEncrypted?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [GlobalClusterArgs].
 */
@PulumiTagMarker
public class GlobalClusterArgsBuilder internal constructor() {
    private var databaseName: Output? = null

    private var deletionProtection: Output? = null

    private var engine: Output? = null

    private var engineLifecycleSupport: Output? = null

    private var engineVersion: Output? = null

    private var forceDestroy: Output? = null

    private var globalClusterIdentifier: Output? = null

    private var sourceDbClusterIdentifier: Output? = null

    private var storageEncrypted: Output? = null

    /**
     * @param value Name for an automatically created database on cluster creation.
     */
    @JvmName("pfheyaylgojrjpjn")
    public suspend fun databaseName(`value`: Output) {
        this.databaseName = value
    }

    /**
     * @param value If the Global Cluster should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`.
     */
    @JvmName("napdiomdjrnrikxa")
    public suspend fun deletionProtection(`value`: Output) {
        this.deletionProtection = value
    }

    /**
     * @param value Name of the database engine to be used for this DB cluster. The provider will only perform drift detection if a configuration value is provided. Valid values: `aurora`, `aurora-mysql`, `aurora-postgresql`. Defaults to `aurora`. Conflicts with `source_db_cluster_identifier`.
     */
    @JvmName("jkyrdhwrfrhsoiog")
    public suspend fun engine(`value`: Output) {
        this.engine = value
    }

    /**
     * @param value The life cycle type for this DB instance. This setting applies only to Aurora PostgreSQL-based global databases. Valid values are `open-source-rds-extended-support`, `open-source-rds-extended-support-disabled`. Default value is `open-source-rds-extended-support`. [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html
     */
    @JvmName("togknunokmxolryw")
    public suspend fun engineLifecycleSupport(`value`: Output) {
        this.engineLifecycleSupport = value
    }

    /**
     * @param value Engine version of the Aurora global database. The `engine`, `engine_version`, and `instance_class` (on the `aws.rds.ClusterInstance`) must together support global databases. See [Using Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) for more information. By upgrading the engine version, the provider will upgrade cluster members. **NOTE:** To avoid an `inconsistent final plan` error while upgrading, use the `lifecycle` `ignore_changes` for `engine_version` meta argument on the associated `aws.rds.Cluster` resource as shown above in Upgrading Engine Versions example.
     */
    @JvmName("kkhytjwwwidkhxch")
    public suspend fun engineVersion(`value`: Output) {
        this.engineVersion = value
    }

    /**
     * @param value Enable to remove DB Cluster members from Global Cluster on destroy. Required with `source_db_cluster_identifier`.
     */
    @JvmName("dctrppxnhaeywdny")
    public suspend fun forceDestroy(`value`: Output) {
        this.forceDestroy = value
    }

    /**
     * @param value Global cluster identifier.
     */
    @JvmName("nlqttdiovjxpebmo")
    public suspend fun globalClusterIdentifier(`value`: Output) {
        this.globalClusterIdentifier = value
    }

    /**
     * @param value Amazon Resource Name (ARN) to use as the primary DB Cluster of the Global Cluster on creation. The provider cannot perform drift detection of this value.
     */
    @JvmName("dxjxftlxquboiogu")
    public suspend fun sourceDbClusterIdentifier(`value`: Output) {
        this.sourceDbClusterIdentifier = value
    }

    /**
     * @param value Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.
     */
    @JvmName("scyhmhxhvyrmdmku")
    public suspend fun storageEncrypted(`value`: Output) {
        this.storageEncrypted = value
    }

    /**
     * @param value Name for an automatically created database on cluster creation.
     */
    @JvmName("gfjfbpbyjbkccaxt")
    public suspend fun databaseName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.databaseName = mapped
    }

    /**
     * @param value If the Global Cluster should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`.
     */
    @JvmName("thxmtpckolucpdok")
    public suspend fun deletionProtection(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deletionProtection = mapped
    }

    /**
     * @param value Name of the database engine to be used for this DB cluster. The provider will only perform drift detection if a configuration value is provided. Valid values: `aurora`, `aurora-mysql`, `aurora-postgresql`. Defaults to `aurora`. Conflicts with `source_db_cluster_identifier`.
     */
    @JvmName("fjsfeiocjnberceb")
    public suspend fun engine(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.engine = mapped
    }

    /**
     * @param value The life cycle type for this DB instance. This setting applies only to Aurora PostgreSQL-based global databases. Valid values are `open-source-rds-extended-support`, `open-source-rds-extended-support-disabled`. Default value is `open-source-rds-extended-support`. [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html
     */
    @JvmName("qwtgyfffadrvrexv")
    public suspend fun engineLifecycleSupport(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.engineLifecycleSupport = mapped
    }

    /**
     * @param value Engine version of the Aurora global database. The `engine`, `engine_version`, and `instance_class` (on the `aws.rds.ClusterInstance`) must together support global databases. See [Using Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) for more information. By upgrading the engine version, the provider will upgrade cluster members. **NOTE:** To avoid an `inconsistent final plan` error while upgrading, use the `lifecycle` `ignore_changes` for `engine_version` meta argument on the associated `aws.rds.Cluster` resource as shown above in Upgrading Engine Versions example.
     */
    @JvmName("sgdggesfsgdygdwb")
    public suspend fun engineVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.engineVersion = mapped
    }

    /**
     * @param value Enable to remove DB Cluster members from Global Cluster on destroy. Required with `source_db_cluster_identifier`.
     */
    @JvmName("nhvkswqssmgkryet")
    public suspend fun forceDestroy(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.forceDestroy = mapped
    }

    /**
     * @param value Global cluster identifier.
     */
    @JvmName("citlfcmlawnfdkgf")
    public suspend fun globalClusterIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.globalClusterIdentifier = mapped
    }

    /**
     * @param value Amazon Resource Name (ARN) to use as the primary DB Cluster of the Global Cluster on creation. The provider cannot perform drift detection of this value.
     */
    @JvmName("fjlamtolxuqoxroj")
    public suspend fun sourceDbClusterIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sourceDbClusterIdentifier = mapped
    }

    /**
     * @param value Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.
     */
    @JvmName("quaovboillgesnep")
    public suspend fun storageEncrypted(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.storageEncrypted = mapped
    }

    internal fun build(): GlobalClusterArgs = GlobalClusterArgs(
        databaseName = databaseName,
        deletionProtection = deletionProtection,
        engine = engine,
        engineLifecycleSupport = engineLifecycleSupport,
        engineVersion = engineVersion,
        forceDestroy = forceDestroy,
        globalClusterIdentifier = globalClusterIdentifier,
        sourceDbClusterIdentifier = sourceDbClusterIdentifier,
        storageEncrypted = storageEncrypted,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy