Package com.pulumi.aws.rds
Class GlobalCluster
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.rds.GlobalCluster
-
public class GlobalCluster extends com.pulumi.resources.CustomResourceManages 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
### New PostgreSQL Global Clusterpackage 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.ArrayList; import java.util.Arrays; 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) .ignoreChanges("replicationSourceIdentifier") .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()); } }
### New Global Cluster From Existing DB Clusterpackage 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.ArrayList; import java.util.Arrays; 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) .ignoreChanges("replicationSourceIdentifier") .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()); } }
### 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` `ignoreChanges` meta argument as shown below on the `aws.rds.Cluster`.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.ClusterArgs; import com.pulumi.aws.rds.GlobalCluster; import com.pulumi.aws.rds.GlobalClusterArgs; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; 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", ClusterArgs.Empty, CustomResourceOptions.builder() .ignoreChanges("globalClusterIdentifier") .build()); var exampleGlobalCluster = new GlobalCluster("exampleGlobalCluster", GlobalClusterArgs.builder() .forceDestroy(true) .globalClusterIdentifier("example") .sourceDbClusterIdentifier(example.arn()) .build()); } }
## Import Using `pulumi import`, import `aws.rds.GlobalCluster` using the RDS Global Cluster identifier. For example: ```sh $ pulumi import aws:rds/globalCluster:GlobalCluster example example ``` Certain resource arguments, like `forceDestroy`, 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 `sourceDbClusterIdentifier`, 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 `ignoreChanges` to hide the difference. For example: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.ArrayList; import java.util.Arrays; 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(), CustomResourceOptions.builder() .ignoreChanges("engineVersion") .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()); } }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.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; 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.Empty, CustomResourceOptions.builder() .ignoreChanges("sourceDbClusterIdentifier") .build()); } }
-
-
Constructor Summary
Constructors Constructor Description GlobalCluster(java.lang.String name)GlobalCluster(java.lang.String name, GlobalClusterArgs args)GlobalCluster(java.lang.String name, GlobalClusterArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.lang.String>databaseName()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>deletionProtection()com.pulumi.core.Output<java.lang.String>endpoint()com.pulumi.core.Output<java.lang.String>engine()com.pulumi.core.Output<java.lang.String>engineLifecycleSupport()com.pulumi.core.Output<java.lang.String>engineVersion()com.pulumi.core.Output<java.lang.String>engineVersionActual()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>forceDestroy()static GlobalClusterget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, GlobalClusterState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>globalClusterIdentifier()com.pulumi.core.Output<java.util.List<GlobalClusterGlobalClusterMember>>globalClusterMembers()com.pulumi.core.Output<java.lang.String>globalClusterResourceId()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>sourceDbClusterIdentifier()com.pulumi.core.Output<java.lang.Boolean>storageEncrypted()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()
-
-
-
Constructor Detail
-
GlobalCluster
public GlobalCluster(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
GlobalCluster
public GlobalCluster(java.lang.String name, GlobalClusterArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
GlobalCluster
public GlobalCluster(java.lang.String name, GlobalClusterArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- RDS Global Cluster ARN.
-
databaseName
public com.pulumi.core.Output<java.lang.String> databaseName()
- Returns:
- Name for an automatically created database on cluster creation. Pulumi will only perform drift detection if a configuration value is provided.
-
deletionProtection
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> deletionProtection()
- Returns:
- 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`.
-
endpoint
public com.pulumi.core.Output<java.lang.String> endpoint()
- Returns:
- Writer endpoint for the new global database cluster. This endpoint always points to the writer DB instance in the current primary cluster.
-
engine
public com.pulumi.core.Output<java.lang.String> engine()
- Returns:
- 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 `sourceDbClusterIdentifier`.
-
engineLifecycleSupport
public com.pulumi.core.Output<java.lang.String> engineLifecycleSupport()
- Returns:
- 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
-
engineVersion
public com.pulumi.core.Output<java.lang.String> engineVersion()
- Returns:
- Engine version of the Aurora global database. The `engine`, `engineVersion`, and `instanceClass` (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` `ignoreChanges` for `engineVersion` meta argument on the associated `aws.rds.Cluster` resource as shown above in Upgrading Engine Versions example.
-
engineVersionActual
public com.pulumi.core.Output<java.lang.String> engineVersionActual()
- Returns:
- Running version of the database engine.
-
forceDestroy
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> forceDestroy()
- Returns:
- Enable to remove DB Cluster members from Global Cluster on destroy. Required with `sourceDbClusterIdentifier`.
-
globalClusterIdentifier
public com.pulumi.core.Output<java.lang.String> globalClusterIdentifier()
- Returns:
- Global cluster identifier. The following arguments are optional:
-
globalClusterMembers
public com.pulumi.core.Output<java.util.List<GlobalClusterGlobalClusterMember>> globalClusterMembers()
- Returns:
- Set of objects containing Global Cluster members.
-
globalClusterResourceId
public com.pulumi.core.Output<java.lang.String> globalClusterResourceId()
- Returns:
- AWS Region-unique, immutable identifier for the global database cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
sourceDbClusterIdentifier
public com.pulumi.core.Output<java.lang.String> sourceDbClusterIdentifier()
- Returns:
- ARN to use as the primary DB Cluster of the Global Cluster on creation. Pulumi cannot perform drift detection of this value. **NOTE:** After initial creation, this argument can be removed and replaced with `engine` and `engineVersion`. This allows upgrading the engine version of the Global Cluster.
-
storageEncrypted
public com.pulumi.core.Output<java.lang.Boolean> storageEncrypted()
- Returns:
- Whether the DB cluster is encrypted. The default is `false` unless `sourceDbClusterIdentifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Map of tags to assign to the DB cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. > When both `sourceDbClusterIdentifier` and `engine`/`engineVersion` are set, all engine related values will be ignored during creation. The global cluster will inherit the `engine` and `engineVersion` values from the source cluster. After the first apply, any differences between the inherited and configured values will trigger an in-place update.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
get
public static GlobalCluster get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable GlobalClusterState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-