github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/redshift/cluster.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package redshift
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides a Redshift Cluster Resource.
    16  //
    17  // > **NOTE:** A Redshift cluster's default IAM role can be managed both by this resource's `defaultIamRoleArn` argument and the `redshift.ClusterIamRoles` resource's `defaultIamRoleArn` argument. Do not configure different values for both arguments. Doing so will cause a conflict of default IAM roles.
    18  //
    19  // ## Example Usage
    20  //
    21  // ### Basic Usage
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			_, err := redshift.NewCluster(ctx, "example", &redshift.ClusterArgs{
    37  //				ClusterIdentifier: pulumi.String("tf-redshift-cluster"),
    38  //				DatabaseName:      pulumi.String("mydb"),
    39  //				MasterUsername:    pulumi.String("exampleuser"),
    40  //				MasterPassword:    pulumi.String("Mustbe8characters"),
    41  //				NodeType:          pulumi.String("dc1.large"),
    42  //				ClusterType:       pulumi.String("single-node"),
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			return nil
    48  //		})
    49  //	}
    50  //
    51  // ```
    52  // <!--End PulumiCodeChooser -->
    53  //
    54  // ### With Managed Credentials
    55  //
    56  // <!--Start PulumiCodeChooser -->
    57  // ```go
    58  // package main
    59  //
    60  // import (
    61  //
    62  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift"
    63  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    64  //
    65  // )
    66  //
    67  //	func main() {
    68  //		pulumi.Run(func(ctx *pulumi.Context) error {
    69  //			_, err := redshift.NewCluster(ctx, "example", &redshift.ClusterArgs{
    70  //				ClusterIdentifier:    pulumi.String("tf-redshift-cluster"),
    71  //				DatabaseName:         pulumi.String("mydb"),
    72  //				MasterUsername:       pulumi.String("exampleuser"),
    73  //				NodeType:             pulumi.String("dc1.large"),
    74  //				ClusterType:          pulumi.String("single-node"),
    75  //				ManageMasterPassword: pulumi.Bool(true),
    76  //			})
    77  //			if err != nil {
    78  //				return err
    79  //			}
    80  //			return nil
    81  //		})
    82  //	}
    83  //
    84  // ```
    85  // <!--End PulumiCodeChooser -->
    86  //
    87  // ## Import
    88  //
    89  // Using `pulumi import`, import Redshift Clusters using the `cluster_identifier`. For example:
    90  //
    91  // ```sh
    92  // $ pulumi import aws:redshift/cluster:Cluster myprodcluster tf-redshift-cluster-12345
    93  // ```
    94  type Cluster struct {
    95  	pulumi.CustomResourceState
    96  
    97  	// If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
    98  	AllowVersionUpgrade pulumi.BoolPtrOutput `pulumi:"allowVersionUpgrade"`
    99  	// Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   100  	ApplyImmediately pulumi.BoolPtrOutput `pulumi:"applyImmediately"`
   101  	// The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   102  	// No longer supported by the AWS API.
   103  	// Always returns `auto`.
   104  	//
   105  	// Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   106  	AquaConfigurationStatus pulumi.StringOutput `pulumi:"aquaConfigurationStatus"`
   107  	// Amazon Resource Name (ARN) of cluster
   108  	Arn pulumi.StringOutput `pulumi:"arn"`
   109  	// The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   110  	AutomatedSnapshotRetentionPeriod pulumi.IntPtrOutput `pulumi:"automatedSnapshotRetentionPeriod"`
   111  	// The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   112  	AvailabilityZone pulumi.StringOutput `pulumi:"availabilityZone"`
   113  	// If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   114  	AvailabilityZoneRelocationEnabled pulumi.BoolPtrOutput `pulumi:"availabilityZoneRelocationEnabled"`
   115  	// The Cluster Identifier. Must be a lower case string.
   116  	ClusterIdentifier pulumi.StringOutput `pulumi:"clusterIdentifier"`
   117  	// The namespace Amazon Resource Name (ARN) of the cluster
   118  	ClusterNamespaceArn pulumi.StringOutput `pulumi:"clusterNamespaceArn"`
   119  	// The nodes in the cluster. Cluster node blocks are documented below
   120  	ClusterNodes ClusterClusterNodeArrayOutput `pulumi:"clusterNodes"`
   121  	// The name of the parameter group to be associated with this cluster.
   122  	ClusterParameterGroupName pulumi.StringOutput `pulumi:"clusterParameterGroupName"`
   123  	// The public key for the cluster
   124  	ClusterPublicKey pulumi.StringOutput `pulumi:"clusterPublicKey"`
   125  	// The specific revision number of the database in the cluster
   126  	ClusterRevisionNumber pulumi.StringOutput `pulumi:"clusterRevisionNumber"`
   127  	// The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   128  	ClusterSubnetGroupName pulumi.StringOutput `pulumi:"clusterSubnetGroupName"`
   129  	// The cluster type to use. Either `single-node` or `multi-node`.
   130  	ClusterType pulumi.StringOutput `pulumi:"clusterType"`
   131  	// The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   132  	// The version selected runs on all the nodes in the cluster.
   133  	ClusterVersion pulumi.StringPtrOutput `pulumi:"clusterVersion"`
   134  	// The name of the first database to be created when the cluster is created.
   135  	// If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   136  	DatabaseName pulumi.StringOutput `pulumi:"databaseName"`
   137  	// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   138  	DefaultIamRoleArn pulumi.StringOutput `pulumi:"defaultIamRoleArn"`
   139  	// The DNS name of the cluster
   140  	DnsName pulumi.StringOutput `pulumi:"dnsName"`
   141  	// The Elastic IP (EIP) address for the cluster.
   142  	ElasticIp pulumi.StringPtrOutput `pulumi:"elasticIp"`
   143  	// If true , the data in the cluster is encrypted at rest.
   144  	Encrypted pulumi.BoolPtrOutput `pulumi:"encrypted"`
   145  	// The connection endpoint
   146  	Endpoint pulumi.StringOutput `pulumi:"endpoint"`
   147  	// If true , enhanced VPC routing is enabled.
   148  	EnhancedVpcRouting pulumi.BoolOutput `pulumi:"enhancedVpcRouting"`
   149  	// The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   150  	FinalSnapshotIdentifier pulumi.StringPtrOutput `pulumi:"finalSnapshotIdentifier"`
   151  	// A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   152  	IamRoles pulumi.StringArrayOutput `pulumi:"iamRoles"`
   153  	// The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   154  	KmsKeyId pulumi.StringOutput `pulumi:"kmsKeyId"`
   155  	// Logging, documented below.
   156  	//
   157  	// Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   158  	Logging ClusterLoggingOutput `pulumi:"logging"`
   159  	// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   160  	MaintenanceTrackName pulumi.StringPtrOutput `pulumi:"maintenanceTrackName"`
   161  	// Whether to use AWS SecretsManager to manage the cluster admin credentials.
   162  	// Conflicts with `masterPassword`.
   163  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   164  	ManageMasterPassword pulumi.BoolPtrOutput `pulumi:"manageMasterPassword"`
   165  	// The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   166  	ManualSnapshotRetentionPeriod pulumi.IntPtrOutput `pulumi:"manualSnapshotRetentionPeriod"`
   167  	// Password for the master DB user.
   168  	// Conflicts with `manageMasterPassword`.
   169  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   170  	// Note that this may show up in logs, and it will be stored in the state file.
   171  	// Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   172  	MasterPassword pulumi.StringPtrOutput `pulumi:"masterPassword"`
   173  	// ARN of the cluster admin credentials secret
   174  	MasterPasswordSecretArn pulumi.StringOutput `pulumi:"masterPasswordSecretArn"`
   175  	// ID of the KMS key used to encrypt the cluster admin credentials secret.
   176  	MasterPasswordSecretKmsKeyId pulumi.StringOutput `pulumi:"masterPasswordSecretKmsKeyId"`
   177  	// Username for the master DB user.
   178  	MasterUsername pulumi.StringPtrOutput `pulumi:"masterUsername"`
   179  	// Specifies if the Redshift cluster is multi-AZ.
   180  	MultiAz pulumi.BoolPtrOutput `pulumi:"multiAz"`
   181  	// The node type to be provisioned for the cluster.
   182  	NodeType pulumi.StringOutput `pulumi:"nodeType"`
   183  	// The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
   184  	NumberOfNodes pulumi.IntPtrOutput `pulumi:"numberOfNodes"`
   185  	// The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
   186  	OwnerAccount pulumi.StringPtrOutput `pulumi:"ownerAccount"`
   187  	// The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
   188  	// The cluster is accessible only via the JDBC and ODBC connection strings.
   189  	// Part of the connection string requires the port on which the cluster will listen for incoming connections.
   190  	// Default port is `5439`.
   191  	Port pulumi.IntPtrOutput `pulumi:"port"`
   192  	// The weekly time range (in UTC) during which automated cluster maintenance can occur.
   193  	// Format: ddd:hh24:mi-ddd:hh24:mi
   194  	PreferredMaintenanceWindow pulumi.StringOutput `pulumi:"preferredMaintenanceWindow"`
   195  	// If true, the cluster can be accessed from a public network. Default is `true`.
   196  	PubliclyAccessible pulumi.BoolPtrOutput `pulumi:"publiclyAccessible"`
   197  	// Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
   198  	SkipFinalSnapshot pulumi.BoolPtrOutput `pulumi:"skipFinalSnapshot"`
   199  	// The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
   200  	SnapshotArn pulumi.StringPtrOutput `pulumi:"snapshotArn"`
   201  	// The name of the cluster the source snapshot was created from.
   202  	SnapshotClusterIdentifier pulumi.StringPtrOutput `pulumi:"snapshotClusterIdentifier"`
   203  	// Configuration of automatic copy of snapshots from one region to another. Documented below.
   204  	//
   205  	// Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
   206  	SnapshotCopy ClusterSnapshotCopyOutput `pulumi:"snapshotCopy"`
   207  	// The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
   208  	SnapshotIdentifier pulumi.StringPtrOutput `pulumi:"snapshotIdentifier"`
   209  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   210  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   211  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   212  	//
   213  	// Deprecated: Please use `tags` instead.
   214  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   215  	// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
   216  	VpcSecurityGroupIds pulumi.StringArrayOutput `pulumi:"vpcSecurityGroupIds"`
   217  }
   218  
   219  // NewCluster registers a new resource with the given unique name, arguments, and options.
   220  func NewCluster(ctx *pulumi.Context,
   221  	name string, args *ClusterArgs, opts ...pulumi.ResourceOption) (*Cluster, error) {
   222  	if args == nil {
   223  		return nil, errors.New("missing one or more required arguments")
   224  	}
   225  
   226  	if args.ClusterIdentifier == nil {
   227  		return nil, errors.New("invalid value for required argument 'ClusterIdentifier'")
   228  	}
   229  	if args.NodeType == nil {
   230  		return nil, errors.New("invalid value for required argument 'NodeType'")
   231  	}
   232  	if args.MasterPassword != nil {
   233  		args.MasterPassword = pulumi.ToSecret(args.MasterPassword).(pulumi.StringPtrInput)
   234  	}
   235  	secrets := pulumi.AdditionalSecretOutputs([]string{
   236  		"masterPassword",
   237  	})
   238  	opts = append(opts, secrets)
   239  	opts = internal.PkgResourceDefaultOpts(opts)
   240  	var resource Cluster
   241  	err := ctx.RegisterResource("aws:redshift/cluster:Cluster", name, args, &resource, opts...)
   242  	if err != nil {
   243  		return nil, err
   244  	}
   245  	return &resource, nil
   246  }
   247  
   248  // GetCluster gets an existing Cluster resource's state with the given name, ID, and optional
   249  // state properties that are used to uniquely qualify the lookup (nil if not required).
   250  func GetCluster(ctx *pulumi.Context,
   251  	name string, id pulumi.IDInput, state *ClusterState, opts ...pulumi.ResourceOption) (*Cluster, error) {
   252  	var resource Cluster
   253  	err := ctx.ReadResource("aws:redshift/cluster:Cluster", name, id, state, &resource, opts...)
   254  	if err != nil {
   255  		return nil, err
   256  	}
   257  	return &resource, nil
   258  }
   259  
   260  // Input properties used for looking up and filtering Cluster resources.
   261  type clusterState struct {
   262  	// If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
   263  	AllowVersionUpgrade *bool `pulumi:"allowVersionUpgrade"`
   264  	// Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   265  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   266  	// The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   267  	// No longer supported by the AWS API.
   268  	// Always returns `auto`.
   269  	//
   270  	// Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   271  	AquaConfigurationStatus *string `pulumi:"aquaConfigurationStatus"`
   272  	// Amazon Resource Name (ARN) of cluster
   273  	Arn *string `pulumi:"arn"`
   274  	// The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   275  	AutomatedSnapshotRetentionPeriod *int `pulumi:"automatedSnapshotRetentionPeriod"`
   276  	// The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   277  	AvailabilityZone *string `pulumi:"availabilityZone"`
   278  	// If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   279  	AvailabilityZoneRelocationEnabled *bool `pulumi:"availabilityZoneRelocationEnabled"`
   280  	// The Cluster Identifier. Must be a lower case string.
   281  	ClusterIdentifier *string `pulumi:"clusterIdentifier"`
   282  	// The namespace Amazon Resource Name (ARN) of the cluster
   283  	ClusterNamespaceArn *string `pulumi:"clusterNamespaceArn"`
   284  	// The nodes in the cluster. Cluster node blocks are documented below
   285  	ClusterNodes []ClusterClusterNode `pulumi:"clusterNodes"`
   286  	// The name of the parameter group to be associated with this cluster.
   287  	ClusterParameterGroupName *string `pulumi:"clusterParameterGroupName"`
   288  	// The public key for the cluster
   289  	ClusterPublicKey *string `pulumi:"clusterPublicKey"`
   290  	// The specific revision number of the database in the cluster
   291  	ClusterRevisionNumber *string `pulumi:"clusterRevisionNumber"`
   292  	// The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   293  	ClusterSubnetGroupName *string `pulumi:"clusterSubnetGroupName"`
   294  	// The cluster type to use. Either `single-node` or `multi-node`.
   295  	ClusterType *string `pulumi:"clusterType"`
   296  	// The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   297  	// The version selected runs on all the nodes in the cluster.
   298  	ClusterVersion *string `pulumi:"clusterVersion"`
   299  	// The name of the first database to be created when the cluster is created.
   300  	// If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   301  	DatabaseName *string `pulumi:"databaseName"`
   302  	// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   303  	DefaultIamRoleArn *string `pulumi:"defaultIamRoleArn"`
   304  	// The DNS name of the cluster
   305  	DnsName *string `pulumi:"dnsName"`
   306  	// The Elastic IP (EIP) address for the cluster.
   307  	ElasticIp *string `pulumi:"elasticIp"`
   308  	// If true , the data in the cluster is encrypted at rest.
   309  	Encrypted *bool `pulumi:"encrypted"`
   310  	// The connection endpoint
   311  	Endpoint *string `pulumi:"endpoint"`
   312  	// If true , enhanced VPC routing is enabled.
   313  	EnhancedVpcRouting *bool `pulumi:"enhancedVpcRouting"`
   314  	// The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   315  	FinalSnapshotIdentifier *string `pulumi:"finalSnapshotIdentifier"`
   316  	// A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   317  	IamRoles []string `pulumi:"iamRoles"`
   318  	// The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   319  	KmsKeyId *string `pulumi:"kmsKeyId"`
   320  	// Logging, documented below.
   321  	//
   322  	// Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   323  	Logging *ClusterLogging `pulumi:"logging"`
   324  	// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   325  	MaintenanceTrackName *string `pulumi:"maintenanceTrackName"`
   326  	// Whether to use AWS SecretsManager to manage the cluster admin credentials.
   327  	// Conflicts with `masterPassword`.
   328  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   329  	ManageMasterPassword *bool `pulumi:"manageMasterPassword"`
   330  	// The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   331  	ManualSnapshotRetentionPeriod *int `pulumi:"manualSnapshotRetentionPeriod"`
   332  	// Password for the master DB user.
   333  	// Conflicts with `manageMasterPassword`.
   334  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   335  	// Note that this may show up in logs, and it will be stored in the state file.
   336  	// Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   337  	MasterPassword *string `pulumi:"masterPassword"`
   338  	// ARN of the cluster admin credentials secret
   339  	MasterPasswordSecretArn *string `pulumi:"masterPasswordSecretArn"`
   340  	// ID of the KMS key used to encrypt the cluster admin credentials secret.
   341  	MasterPasswordSecretKmsKeyId *string `pulumi:"masterPasswordSecretKmsKeyId"`
   342  	// Username for the master DB user.
   343  	MasterUsername *string `pulumi:"masterUsername"`
   344  	// Specifies if the Redshift cluster is multi-AZ.
   345  	MultiAz *bool `pulumi:"multiAz"`
   346  	// The node type to be provisioned for the cluster.
   347  	NodeType *string `pulumi:"nodeType"`
   348  	// The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
   349  	NumberOfNodes *int `pulumi:"numberOfNodes"`
   350  	// The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
   351  	OwnerAccount *string `pulumi:"ownerAccount"`
   352  	// The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
   353  	// The cluster is accessible only via the JDBC and ODBC connection strings.
   354  	// Part of the connection string requires the port on which the cluster will listen for incoming connections.
   355  	// Default port is `5439`.
   356  	Port *int `pulumi:"port"`
   357  	// The weekly time range (in UTC) during which automated cluster maintenance can occur.
   358  	// Format: ddd:hh24:mi-ddd:hh24:mi
   359  	PreferredMaintenanceWindow *string `pulumi:"preferredMaintenanceWindow"`
   360  	// If true, the cluster can be accessed from a public network. Default is `true`.
   361  	PubliclyAccessible *bool `pulumi:"publiclyAccessible"`
   362  	// Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
   363  	SkipFinalSnapshot *bool `pulumi:"skipFinalSnapshot"`
   364  	// The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
   365  	SnapshotArn *string `pulumi:"snapshotArn"`
   366  	// The name of the cluster the source snapshot was created from.
   367  	SnapshotClusterIdentifier *string `pulumi:"snapshotClusterIdentifier"`
   368  	// Configuration of automatic copy of snapshots from one region to another. Documented below.
   369  	//
   370  	// Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
   371  	SnapshotCopy *ClusterSnapshotCopy `pulumi:"snapshotCopy"`
   372  	// The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
   373  	SnapshotIdentifier *string `pulumi:"snapshotIdentifier"`
   374  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   375  	Tags map[string]string `pulumi:"tags"`
   376  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   377  	//
   378  	// Deprecated: Please use `tags` instead.
   379  	TagsAll map[string]string `pulumi:"tagsAll"`
   380  	// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
   381  	VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"`
   382  }
   383  
   384  type ClusterState struct {
   385  	// If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
   386  	AllowVersionUpgrade pulumi.BoolPtrInput
   387  	// Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   388  	ApplyImmediately pulumi.BoolPtrInput
   389  	// The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   390  	// No longer supported by the AWS API.
   391  	// Always returns `auto`.
   392  	//
   393  	// Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   394  	AquaConfigurationStatus pulumi.StringPtrInput
   395  	// Amazon Resource Name (ARN) of cluster
   396  	Arn pulumi.StringPtrInput
   397  	// The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   398  	AutomatedSnapshotRetentionPeriod pulumi.IntPtrInput
   399  	// The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   400  	AvailabilityZone pulumi.StringPtrInput
   401  	// If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   402  	AvailabilityZoneRelocationEnabled pulumi.BoolPtrInput
   403  	// The Cluster Identifier. Must be a lower case string.
   404  	ClusterIdentifier pulumi.StringPtrInput
   405  	// The namespace Amazon Resource Name (ARN) of the cluster
   406  	ClusterNamespaceArn pulumi.StringPtrInput
   407  	// The nodes in the cluster. Cluster node blocks are documented below
   408  	ClusterNodes ClusterClusterNodeArrayInput
   409  	// The name of the parameter group to be associated with this cluster.
   410  	ClusterParameterGroupName pulumi.StringPtrInput
   411  	// The public key for the cluster
   412  	ClusterPublicKey pulumi.StringPtrInput
   413  	// The specific revision number of the database in the cluster
   414  	ClusterRevisionNumber pulumi.StringPtrInput
   415  	// The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   416  	ClusterSubnetGroupName pulumi.StringPtrInput
   417  	// The cluster type to use. Either `single-node` or `multi-node`.
   418  	ClusterType pulumi.StringPtrInput
   419  	// The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   420  	// The version selected runs on all the nodes in the cluster.
   421  	ClusterVersion pulumi.StringPtrInput
   422  	// The name of the first database to be created when the cluster is created.
   423  	// If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   424  	DatabaseName pulumi.StringPtrInput
   425  	// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   426  	DefaultIamRoleArn pulumi.StringPtrInput
   427  	// The DNS name of the cluster
   428  	DnsName pulumi.StringPtrInput
   429  	// The Elastic IP (EIP) address for the cluster.
   430  	ElasticIp pulumi.StringPtrInput
   431  	// If true , the data in the cluster is encrypted at rest.
   432  	Encrypted pulumi.BoolPtrInput
   433  	// The connection endpoint
   434  	Endpoint pulumi.StringPtrInput
   435  	// If true , enhanced VPC routing is enabled.
   436  	EnhancedVpcRouting pulumi.BoolPtrInput
   437  	// The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   438  	FinalSnapshotIdentifier pulumi.StringPtrInput
   439  	// A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   440  	IamRoles pulumi.StringArrayInput
   441  	// The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   442  	KmsKeyId pulumi.StringPtrInput
   443  	// Logging, documented below.
   444  	//
   445  	// Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   446  	Logging ClusterLoggingPtrInput
   447  	// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   448  	MaintenanceTrackName pulumi.StringPtrInput
   449  	// Whether to use AWS SecretsManager to manage the cluster admin credentials.
   450  	// Conflicts with `masterPassword`.
   451  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   452  	ManageMasterPassword pulumi.BoolPtrInput
   453  	// The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   454  	ManualSnapshotRetentionPeriod pulumi.IntPtrInput
   455  	// Password for the master DB user.
   456  	// Conflicts with `manageMasterPassword`.
   457  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   458  	// Note that this may show up in logs, and it will be stored in the state file.
   459  	// Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   460  	MasterPassword pulumi.StringPtrInput
   461  	// ARN of the cluster admin credentials secret
   462  	MasterPasswordSecretArn pulumi.StringPtrInput
   463  	// ID of the KMS key used to encrypt the cluster admin credentials secret.
   464  	MasterPasswordSecretKmsKeyId pulumi.StringPtrInput
   465  	// Username for the master DB user.
   466  	MasterUsername pulumi.StringPtrInput
   467  	// Specifies if the Redshift cluster is multi-AZ.
   468  	MultiAz pulumi.BoolPtrInput
   469  	// The node type to be provisioned for the cluster.
   470  	NodeType pulumi.StringPtrInput
   471  	// The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
   472  	NumberOfNodes pulumi.IntPtrInput
   473  	// The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
   474  	OwnerAccount pulumi.StringPtrInput
   475  	// The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
   476  	// The cluster is accessible only via the JDBC and ODBC connection strings.
   477  	// Part of the connection string requires the port on which the cluster will listen for incoming connections.
   478  	// Default port is `5439`.
   479  	Port pulumi.IntPtrInput
   480  	// The weekly time range (in UTC) during which automated cluster maintenance can occur.
   481  	// Format: ddd:hh24:mi-ddd:hh24:mi
   482  	PreferredMaintenanceWindow pulumi.StringPtrInput
   483  	// If true, the cluster can be accessed from a public network. Default is `true`.
   484  	PubliclyAccessible pulumi.BoolPtrInput
   485  	// Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
   486  	SkipFinalSnapshot pulumi.BoolPtrInput
   487  	// The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
   488  	SnapshotArn pulumi.StringPtrInput
   489  	// The name of the cluster the source snapshot was created from.
   490  	SnapshotClusterIdentifier pulumi.StringPtrInput
   491  	// Configuration of automatic copy of snapshots from one region to another. Documented below.
   492  	//
   493  	// Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
   494  	SnapshotCopy ClusterSnapshotCopyPtrInput
   495  	// The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
   496  	SnapshotIdentifier pulumi.StringPtrInput
   497  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   498  	Tags pulumi.StringMapInput
   499  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   500  	//
   501  	// Deprecated: Please use `tags` instead.
   502  	TagsAll pulumi.StringMapInput
   503  	// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
   504  	VpcSecurityGroupIds pulumi.StringArrayInput
   505  }
   506  
   507  func (ClusterState) ElementType() reflect.Type {
   508  	return reflect.TypeOf((*clusterState)(nil)).Elem()
   509  }
   510  
   511  type clusterArgs struct {
   512  	// If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
   513  	AllowVersionUpgrade *bool `pulumi:"allowVersionUpgrade"`
   514  	// Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   515  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   516  	// The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   517  	// No longer supported by the AWS API.
   518  	// Always returns `auto`.
   519  	//
   520  	// Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   521  	AquaConfigurationStatus *string `pulumi:"aquaConfigurationStatus"`
   522  	// The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   523  	AutomatedSnapshotRetentionPeriod *int `pulumi:"automatedSnapshotRetentionPeriod"`
   524  	// The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   525  	AvailabilityZone *string `pulumi:"availabilityZone"`
   526  	// If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   527  	AvailabilityZoneRelocationEnabled *bool `pulumi:"availabilityZoneRelocationEnabled"`
   528  	// The Cluster Identifier. Must be a lower case string.
   529  	ClusterIdentifier string `pulumi:"clusterIdentifier"`
   530  	// The name of the parameter group to be associated with this cluster.
   531  	ClusterParameterGroupName *string `pulumi:"clusterParameterGroupName"`
   532  	// The public key for the cluster
   533  	ClusterPublicKey *string `pulumi:"clusterPublicKey"`
   534  	// The specific revision number of the database in the cluster
   535  	ClusterRevisionNumber *string `pulumi:"clusterRevisionNumber"`
   536  	// The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   537  	ClusterSubnetGroupName *string `pulumi:"clusterSubnetGroupName"`
   538  	// The cluster type to use. Either `single-node` or `multi-node`.
   539  	ClusterType *string `pulumi:"clusterType"`
   540  	// The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   541  	// The version selected runs on all the nodes in the cluster.
   542  	ClusterVersion *string `pulumi:"clusterVersion"`
   543  	// The name of the first database to be created when the cluster is created.
   544  	// If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   545  	DatabaseName *string `pulumi:"databaseName"`
   546  	// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   547  	DefaultIamRoleArn *string `pulumi:"defaultIamRoleArn"`
   548  	// The Elastic IP (EIP) address for the cluster.
   549  	ElasticIp *string `pulumi:"elasticIp"`
   550  	// If true , the data in the cluster is encrypted at rest.
   551  	Encrypted *bool `pulumi:"encrypted"`
   552  	// The connection endpoint
   553  	Endpoint *string `pulumi:"endpoint"`
   554  	// If true , enhanced VPC routing is enabled.
   555  	EnhancedVpcRouting *bool `pulumi:"enhancedVpcRouting"`
   556  	// The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   557  	FinalSnapshotIdentifier *string `pulumi:"finalSnapshotIdentifier"`
   558  	// A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   559  	IamRoles []string `pulumi:"iamRoles"`
   560  	// The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   561  	KmsKeyId *string `pulumi:"kmsKeyId"`
   562  	// Logging, documented below.
   563  	//
   564  	// Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   565  	Logging *ClusterLogging `pulumi:"logging"`
   566  	// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   567  	MaintenanceTrackName *string `pulumi:"maintenanceTrackName"`
   568  	// Whether to use AWS SecretsManager to manage the cluster admin credentials.
   569  	// Conflicts with `masterPassword`.
   570  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   571  	ManageMasterPassword *bool `pulumi:"manageMasterPassword"`
   572  	// The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   573  	ManualSnapshotRetentionPeriod *int `pulumi:"manualSnapshotRetentionPeriod"`
   574  	// Password for the master DB user.
   575  	// Conflicts with `manageMasterPassword`.
   576  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   577  	// Note that this may show up in logs, and it will be stored in the state file.
   578  	// Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   579  	MasterPassword *string `pulumi:"masterPassword"`
   580  	// ID of the KMS key used to encrypt the cluster admin credentials secret.
   581  	MasterPasswordSecretKmsKeyId *string `pulumi:"masterPasswordSecretKmsKeyId"`
   582  	// Username for the master DB user.
   583  	MasterUsername *string `pulumi:"masterUsername"`
   584  	// Specifies if the Redshift cluster is multi-AZ.
   585  	MultiAz *bool `pulumi:"multiAz"`
   586  	// The node type to be provisioned for the cluster.
   587  	NodeType string `pulumi:"nodeType"`
   588  	// The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
   589  	NumberOfNodes *int `pulumi:"numberOfNodes"`
   590  	// The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
   591  	OwnerAccount *string `pulumi:"ownerAccount"`
   592  	// The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
   593  	// The cluster is accessible only via the JDBC and ODBC connection strings.
   594  	// Part of the connection string requires the port on which the cluster will listen for incoming connections.
   595  	// Default port is `5439`.
   596  	Port *int `pulumi:"port"`
   597  	// The weekly time range (in UTC) during which automated cluster maintenance can occur.
   598  	// Format: ddd:hh24:mi-ddd:hh24:mi
   599  	PreferredMaintenanceWindow *string `pulumi:"preferredMaintenanceWindow"`
   600  	// If true, the cluster can be accessed from a public network. Default is `true`.
   601  	PubliclyAccessible *bool `pulumi:"publiclyAccessible"`
   602  	// Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
   603  	SkipFinalSnapshot *bool `pulumi:"skipFinalSnapshot"`
   604  	// The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
   605  	SnapshotArn *string `pulumi:"snapshotArn"`
   606  	// The name of the cluster the source snapshot was created from.
   607  	SnapshotClusterIdentifier *string `pulumi:"snapshotClusterIdentifier"`
   608  	// Configuration of automatic copy of snapshots from one region to another. Documented below.
   609  	//
   610  	// Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
   611  	SnapshotCopy *ClusterSnapshotCopy `pulumi:"snapshotCopy"`
   612  	// The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
   613  	SnapshotIdentifier *string `pulumi:"snapshotIdentifier"`
   614  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   615  	Tags map[string]string `pulumi:"tags"`
   616  	// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
   617  	VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"`
   618  }
   619  
   620  // The set of arguments for constructing a Cluster resource.
   621  type ClusterArgs struct {
   622  	// If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
   623  	AllowVersionUpgrade pulumi.BoolPtrInput
   624  	// Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   625  	ApplyImmediately pulumi.BoolPtrInput
   626  	// The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   627  	// No longer supported by the AWS API.
   628  	// Always returns `auto`.
   629  	//
   630  	// Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   631  	AquaConfigurationStatus pulumi.StringPtrInput
   632  	// The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   633  	AutomatedSnapshotRetentionPeriod pulumi.IntPtrInput
   634  	// The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   635  	AvailabilityZone pulumi.StringPtrInput
   636  	// If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   637  	AvailabilityZoneRelocationEnabled pulumi.BoolPtrInput
   638  	// The Cluster Identifier. Must be a lower case string.
   639  	ClusterIdentifier pulumi.StringInput
   640  	// The name of the parameter group to be associated with this cluster.
   641  	ClusterParameterGroupName pulumi.StringPtrInput
   642  	// The public key for the cluster
   643  	ClusterPublicKey pulumi.StringPtrInput
   644  	// The specific revision number of the database in the cluster
   645  	ClusterRevisionNumber pulumi.StringPtrInput
   646  	// The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   647  	ClusterSubnetGroupName pulumi.StringPtrInput
   648  	// The cluster type to use. Either `single-node` or `multi-node`.
   649  	ClusterType pulumi.StringPtrInput
   650  	// The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   651  	// The version selected runs on all the nodes in the cluster.
   652  	ClusterVersion pulumi.StringPtrInput
   653  	// The name of the first database to be created when the cluster is created.
   654  	// If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   655  	DatabaseName pulumi.StringPtrInput
   656  	// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   657  	DefaultIamRoleArn pulumi.StringPtrInput
   658  	// The Elastic IP (EIP) address for the cluster.
   659  	ElasticIp pulumi.StringPtrInput
   660  	// If true , the data in the cluster is encrypted at rest.
   661  	Encrypted pulumi.BoolPtrInput
   662  	// The connection endpoint
   663  	Endpoint pulumi.StringPtrInput
   664  	// If true , enhanced VPC routing is enabled.
   665  	EnhancedVpcRouting pulumi.BoolPtrInput
   666  	// The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   667  	FinalSnapshotIdentifier pulumi.StringPtrInput
   668  	// A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   669  	IamRoles pulumi.StringArrayInput
   670  	// The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   671  	KmsKeyId pulumi.StringPtrInput
   672  	// Logging, documented below.
   673  	//
   674  	// Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   675  	Logging ClusterLoggingPtrInput
   676  	// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   677  	MaintenanceTrackName pulumi.StringPtrInput
   678  	// Whether to use AWS SecretsManager to manage the cluster admin credentials.
   679  	// Conflicts with `masterPassword`.
   680  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   681  	ManageMasterPassword pulumi.BoolPtrInput
   682  	// The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   683  	ManualSnapshotRetentionPeriod pulumi.IntPtrInput
   684  	// Password for the master DB user.
   685  	// Conflicts with `manageMasterPassword`.
   686  	// One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   687  	// Note that this may show up in logs, and it will be stored in the state file.
   688  	// Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   689  	MasterPassword pulumi.StringPtrInput
   690  	// ID of the KMS key used to encrypt the cluster admin credentials secret.
   691  	MasterPasswordSecretKmsKeyId pulumi.StringPtrInput
   692  	// Username for the master DB user.
   693  	MasterUsername pulumi.StringPtrInput
   694  	// Specifies if the Redshift cluster is multi-AZ.
   695  	MultiAz pulumi.BoolPtrInput
   696  	// The node type to be provisioned for the cluster.
   697  	NodeType pulumi.StringInput
   698  	// The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
   699  	NumberOfNodes pulumi.IntPtrInput
   700  	// The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
   701  	OwnerAccount pulumi.StringPtrInput
   702  	// The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
   703  	// The cluster is accessible only via the JDBC and ODBC connection strings.
   704  	// Part of the connection string requires the port on which the cluster will listen for incoming connections.
   705  	// Default port is `5439`.
   706  	Port pulumi.IntPtrInput
   707  	// The weekly time range (in UTC) during which automated cluster maintenance can occur.
   708  	// Format: ddd:hh24:mi-ddd:hh24:mi
   709  	PreferredMaintenanceWindow pulumi.StringPtrInput
   710  	// If true, the cluster can be accessed from a public network. Default is `true`.
   711  	PubliclyAccessible pulumi.BoolPtrInput
   712  	// Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
   713  	SkipFinalSnapshot pulumi.BoolPtrInput
   714  	// The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
   715  	SnapshotArn pulumi.StringPtrInput
   716  	// The name of the cluster the source snapshot was created from.
   717  	SnapshotClusterIdentifier pulumi.StringPtrInput
   718  	// Configuration of automatic copy of snapshots from one region to another. Documented below.
   719  	//
   720  	// Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
   721  	SnapshotCopy ClusterSnapshotCopyPtrInput
   722  	// The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
   723  	SnapshotIdentifier pulumi.StringPtrInput
   724  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   725  	Tags pulumi.StringMapInput
   726  	// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
   727  	VpcSecurityGroupIds pulumi.StringArrayInput
   728  }
   729  
   730  func (ClusterArgs) ElementType() reflect.Type {
   731  	return reflect.TypeOf((*clusterArgs)(nil)).Elem()
   732  }
   733  
   734  type ClusterInput interface {
   735  	pulumi.Input
   736  
   737  	ToClusterOutput() ClusterOutput
   738  	ToClusterOutputWithContext(ctx context.Context) ClusterOutput
   739  }
   740  
   741  func (*Cluster) ElementType() reflect.Type {
   742  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   743  }
   744  
   745  func (i *Cluster) ToClusterOutput() ClusterOutput {
   746  	return i.ToClusterOutputWithContext(context.Background())
   747  }
   748  
   749  func (i *Cluster) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   750  	return pulumi.ToOutputWithContext(ctx, i).(ClusterOutput)
   751  }
   752  
   753  // ClusterArrayInput is an input type that accepts ClusterArray and ClusterArrayOutput values.
   754  // You can construct a concrete instance of `ClusterArrayInput` via:
   755  //
   756  //	ClusterArray{ ClusterArgs{...} }
   757  type ClusterArrayInput interface {
   758  	pulumi.Input
   759  
   760  	ToClusterArrayOutput() ClusterArrayOutput
   761  	ToClusterArrayOutputWithContext(context.Context) ClusterArrayOutput
   762  }
   763  
   764  type ClusterArray []ClusterInput
   765  
   766  func (ClusterArray) ElementType() reflect.Type {
   767  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
   768  }
   769  
   770  func (i ClusterArray) ToClusterArrayOutput() ClusterArrayOutput {
   771  	return i.ToClusterArrayOutputWithContext(context.Background())
   772  }
   773  
   774  func (i ClusterArray) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
   775  	return pulumi.ToOutputWithContext(ctx, i).(ClusterArrayOutput)
   776  }
   777  
   778  // ClusterMapInput is an input type that accepts ClusterMap and ClusterMapOutput values.
   779  // You can construct a concrete instance of `ClusterMapInput` via:
   780  //
   781  //	ClusterMap{ "key": ClusterArgs{...} }
   782  type ClusterMapInput interface {
   783  	pulumi.Input
   784  
   785  	ToClusterMapOutput() ClusterMapOutput
   786  	ToClusterMapOutputWithContext(context.Context) ClusterMapOutput
   787  }
   788  
   789  type ClusterMap map[string]ClusterInput
   790  
   791  func (ClusterMap) ElementType() reflect.Type {
   792  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
   793  }
   794  
   795  func (i ClusterMap) ToClusterMapOutput() ClusterMapOutput {
   796  	return i.ToClusterMapOutputWithContext(context.Background())
   797  }
   798  
   799  func (i ClusterMap) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
   800  	return pulumi.ToOutputWithContext(ctx, i).(ClusterMapOutput)
   801  }
   802  
   803  type ClusterOutput struct{ *pulumi.OutputState }
   804  
   805  func (ClusterOutput) ElementType() reflect.Type {
   806  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   807  }
   808  
   809  func (o ClusterOutput) ToClusterOutput() ClusterOutput {
   810  	return o
   811  }
   812  
   813  func (o ClusterOutput) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   814  	return o
   815  }
   816  
   817  // If true , major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default is `true`.
   818  func (o ClusterOutput) AllowVersionUpgrade() pulumi.BoolPtrOutput {
   819  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.AllowVersionUpgrade }).(pulumi.BoolPtrOutput)
   820  }
   821  
   822  // Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
   823  func (o ClusterOutput) ApplyImmediately() pulumi.BoolPtrOutput {
   824  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.ApplyImmediately }).(pulumi.BoolPtrOutput)
   825  }
   826  
   827  // The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored.
   828  // No longer supported by the AWS API.
   829  // Always returns `auto`.
   830  //
   831  // Deprecated: This parameter is no longer supported by the AWS API. It will be removed in the next major version of the provider.
   832  func (o ClusterOutput) AquaConfigurationStatus() pulumi.StringOutput {
   833  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.AquaConfigurationStatus }).(pulumi.StringOutput)
   834  }
   835  
   836  // Amazon Resource Name (ARN) of cluster
   837  func (o ClusterOutput) Arn() pulumi.StringOutput {
   838  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   839  }
   840  
   841  // The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with create-cluster-snapshot. Default is 1.
   842  func (o ClusterOutput) AutomatedSnapshotRetentionPeriod() pulumi.IntPtrOutput {
   843  	return o.ApplyT(func(v *Cluster) pulumi.IntPtrOutput { return v.AutomatedSnapshotRetentionPeriod }).(pulumi.IntPtrOutput)
   844  }
   845  
   846  // The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Can only be changed if `availabilityZoneRelocationEnabled` is `true`.
   847  func (o ClusterOutput) AvailabilityZone() pulumi.StringOutput {
   848  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.AvailabilityZone }).(pulumi.StringOutput)
   849  }
   850  
   851  // If true, the cluster can be relocated to another availabity zone, either automatically by AWS or when requested. Default is `false`. Available for use on clusters from the RA3 instance family.
   852  func (o ClusterOutput) AvailabilityZoneRelocationEnabled() pulumi.BoolPtrOutput {
   853  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.AvailabilityZoneRelocationEnabled }).(pulumi.BoolPtrOutput)
   854  }
   855  
   856  // The Cluster Identifier. Must be a lower case string.
   857  func (o ClusterOutput) ClusterIdentifier() pulumi.StringOutput {
   858  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterIdentifier }).(pulumi.StringOutput)
   859  }
   860  
   861  // The namespace Amazon Resource Name (ARN) of the cluster
   862  func (o ClusterOutput) ClusterNamespaceArn() pulumi.StringOutput {
   863  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterNamespaceArn }).(pulumi.StringOutput)
   864  }
   865  
   866  // The nodes in the cluster. Cluster node blocks are documented below
   867  func (o ClusterOutput) ClusterNodes() ClusterClusterNodeArrayOutput {
   868  	return o.ApplyT(func(v *Cluster) ClusterClusterNodeArrayOutput { return v.ClusterNodes }).(ClusterClusterNodeArrayOutput)
   869  }
   870  
   871  // The name of the parameter group to be associated with this cluster.
   872  func (o ClusterOutput) ClusterParameterGroupName() pulumi.StringOutput {
   873  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterParameterGroupName }).(pulumi.StringOutput)
   874  }
   875  
   876  // The public key for the cluster
   877  func (o ClusterOutput) ClusterPublicKey() pulumi.StringOutput {
   878  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterPublicKey }).(pulumi.StringOutput)
   879  }
   880  
   881  // The specific revision number of the database in the cluster
   882  func (o ClusterOutput) ClusterRevisionNumber() pulumi.StringOutput {
   883  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterRevisionNumber }).(pulumi.StringOutput)
   884  }
   885  
   886  // The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).
   887  func (o ClusterOutput) ClusterSubnetGroupName() pulumi.StringOutput {
   888  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterSubnetGroupName }).(pulumi.StringOutput)
   889  }
   890  
   891  // The cluster type to use. Either `single-node` or `multi-node`.
   892  func (o ClusterOutput) ClusterType() pulumi.StringOutput {
   893  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterType }).(pulumi.StringOutput)
   894  }
   895  
   896  // The version of the Amazon Redshift engine software that you want to deploy on the cluster.
   897  // The version selected runs on all the nodes in the cluster.
   898  func (o ClusterOutput) ClusterVersion() pulumi.StringPtrOutput {
   899  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.ClusterVersion }).(pulumi.StringPtrOutput)
   900  }
   901  
   902  // The name of the first database to be created when the cluster is created.
   903  // If you do not provide a name, Amazon Redshift will create a default database called `dev`.
   904  func (o ClusterOutput) DatabaseName() pulumi.StringOutput {
   905  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.DatabaseName }).(pulumi.StringOutput)
   906  }
   907  
   908  // The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.
   909  func (o ClusterOutput) DefaultIamRoleArn() pulumi.StringOutput {
   910  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.DefaultIamRoleArn }).(pulumi.StringOutput)
   911  }
   912  
   913  // The DNS name of the cluster
   914  func (o ClusterOutput) DnsName() pulumi.StringOutput {
   915  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.DnsName }).(pulumi.StringOutput)
   916  }
   917  
   918  // The Elastic IP (EIP) address for the cluster.
   919  func (o ClusterOutput) ElasticIp() pulumi.StringPtrOutput {
   920  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.ElasticIp }).(pulumi.StringPtrOutput)
   921  }
   922  
   923  // If true , the data in the cluster is encrypted at rest.
   924  func (o ClusterOutput) Encrypted() pulumi.BoolPtrOutput {
   925  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.Encrypted }).(pulumi.BoolPtrOutput)
   926  }
   927  
   928  // The connection endpoint
   929  func (o ClusterOutput) Endpoint() pulumi.StringOutput {
   930  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput)
   931  }
   932  
   933  // If true , enhanced VPC routing is enabled.
   934  func (o ClusterOutput) EnhancedVpcRouting() pulumi.BoolOutput {
   935  	return o.ApplyT(func(v *Cluster) pulumi.BoolOutput { return v.EnhancedVpcRouting }).(pulumi.BoolOutput)
   936  }
   937  
   938  // The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, `skipFinalSnapshot` must be false.
   939  func (o ClusterOutput) FinalSnapshotIdentifier() pulumi.StringPtrOutput {
   940  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.FinalSnapshotIdentifier }).(pulumi.StringPtrOutput)
   941  }
   942  
   943  // A list of IAM Role ARNs to associate with the cluster. A Maximum of 10 can be associated to the cluster at any time.
   944  func (o ClusterOutput) IamRoles() pulumi.StringArrayOutput {
   945  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.IamRoles }).(pulumi.StringArrayOutput)
   946  }
   947  
   948  // The ARN for the KMS encryption key. When specifying `kmsKeyId`, `encrypted` needs to be set to true.
   949  func (o ClusterOutput) KmsKeyId() pulumi.StringOutput {
   950  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.KmsKeyId }).(pulumi.StringOutput)
   951  }
   952  
   953  // Logging, documented below.
   954  //
   955  // Deprecated: Use the redshift.Logging resource instead. This argument will be removed in a future major version.
   956  func (o ClusterOutput) Logging() ClusterLoggingOutput {
   957  	return o.ApplyT(func(v *Cluster) ClusterLoggingOutput { return v.Logging }).(ClusterLoggingOutput)
   958  }
   959  
   960  // The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of  a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. Default value is `current`.
   961  func (o ClusterOutput) MaintenanceTrackName() pulumi.StringPtrOutput {
   962  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.MaintenanceTrackName }).(pulumi.StringPtrOutput)
   963  }
   964  
   965  // Whether to use AWS SecretsManager to manage the cluster admin credentials.
   966  // Conflicts with `masterPassword`.
   967  // One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   968  func (o ClusterOutput) ManageMasterPassword() pulumi.BoolPtrOutput {
   969  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.ManageMasterPassword }).(pulumi.BoolPtrOutput)
   970  }
   971  
   972  // The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots. Valid values are between `-1` and `3653`. Default value is `-1`.
   973  func (o ClusterOutput) ManualSnapshotRetentionPeriod() pulumi.IntPtrOutput {
   974  	return o.ApplyT(func(v *Cluster) pulumi.IntPtrOutput { return v.ManualSnapshotRetentionPeriod }).(pulumi.IntPtrOutput)
   975  }
   976  
   977  // Password for the master DB user.
   978  // Conflicts with `manageMasterPassword`.
   979  // One of `masterPassword` or `manageMasterPassword` is required unless `snapshotIdentifier` is provided.
   980  // Note that this may show up in logs, and it will be stored in the state file.
   981  // Password must contain at least 8 characters and contain at least one uppercase letter, one lowercase letter, and one number.
   982  func (o ClusterOutput) MasterPassword() pulumi.StringPtrOutput {
   983  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.MasterPassword }).(pulumi.StringPtrOutput)
   984  }
   985  
   986  // ARN of the cluster admin credentials secret
   987  func (o ClusterOutput) MasterPasswordSecretArn() pulumi.StringOutput {
   988  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.MasterPasswordSecretArn }).(pulumi.StringOutput)
   989  }
   990  
   991  // ID of the KMS key used to encrypt the cluster admin credentials secret.
   992  func (o ClusterOutput) MasterPasswordSecretKmsKeyId() pulumi.StringOutput {
   993  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.MasterPasswordSecretKmsKeyId }).(pulumi.StringOutput)
   994  }
   995  
   996  // Username for the master DB user.
   997  func (o ClusterOutput) MasterUsername() pulumi.StringPtrOutput {
   998  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.MasterUsername }).(pulumi.StringPtrOutput)
   999  }
  1000  
  1001  // Specifies if the Redshift cluster is multi-AZ.
  1002  func (o ClusterOutput) MultiAz() pulumi.BoolPtrOutput {
  1003  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.MultiAz }).(pulumi.BoolPtrOutput)
  1004  }
  1005  
  1006  // The node type to be provisioned for the cluster.
  1007  func (o ClusterOutput) NodeType() pulumi.StringOutput {
  1008  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.NodeType }).(pulumi.StringOutput)
  1009  }
  1010  
  1011  // The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. Default is 1.
  1012  func (o ClusterOutput) NumberOfNodes() pulumi.IntPtrOutput {
  1013  	return o.ApplyT(func(v *Cluster) pulumi.IntPtrOutput { return v.NumberOfNodes }).(pulumi.IntPtrOutput)
  1014  }
  1015  
  1016  // The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.
  1017  func (o ClusterOutput) OwnerAccount() pulumi.StringPtrOutput {
  1018  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.OwnerAccount }).(pulumi.StringPtrOutput)
  1019  }
  1020  
  1021  // The port number on which the cluster accepts incoming connections. Valid values are between `1115` and `65535`.
  1022  // The cluster is accessible only via the JDBC and ODBC connection strings.
  1023  // Part of the connection string requires the port on which the cluster will listen for incoming connections.
  1024  // Default port is `5439`.
  1025  func (o ClusterOutput) Port() pulumi.IntPtrOutput {
  1026  	return o.ApplyT(func(v *Cluster) pulumi.IntPtrOutput { return v.Port }).(pulumi.IntPtrOutput)
  1027  }
  1028  
  1029  // The weekly time range (in UTC) during which automated cluster maintenance can occur.
  1030  // Format: ddd:hh24:mi-ddd:hh24:mi
  1031  func (o ClusterOutput) PreferredMaintenanceWindow() pulumi.StringOutput {
  1032  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PreferredMaintenanceWindow }).(pulumi.StringOutput)
  1033  }
  1034  
  1035  // If true, the cluster can be accessed from a public network. Default is `true`.
  1036  func (o ClusterOutput) PubliclyAccessible() pulumi.BoolPtrOutput {
  1037  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.PubliclyAccessible }).(pulumi.BoolPtrOutput)
  1038  }
  1039  
  1040  // Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true , a final cluster snapshot is not created. If false , a final cluster snapshot is created before the cluster is deleted. Default is false.
  1041  func (o ClusterOutput) SkipFinalSnapshot() pulumi.BoolPtrOutput {
  1042  	return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.SkipFinalSnapshot }).(pulumi.BoolPtrOutput)
  1043  }
  1044  
  1045  // The ARN of the snapshot from which to create the new cluster. Conflicts with `snapshotIdentifier`.
  1046  func (o ClusterOutput) SnapshotArn() pulumi.StringPtrOutput {
  1047  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.SnapshotArn }).(pulumi.StringPtrOutput)
  1048  }
  1049  
  1050  // The name of the cluster the source snapshot was created from.
  1051  func (o ClusterOutput) SnapshotClusterIdentifier() pulumi.StringPtrOutput {
  1052  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.SnapshotClusterIdentifier }).(pulumi.StringPtrOutput)
  1053  }
  1054  
  1055  // Configuration of automatic copy of snapshots from one region to another. Documented below.
  1056  //
  1057  // Deprecated: Use the redshift.SnapshotCopy resource instead. This argument will be removed in a future major version.
  1058  func (o ClusterOutput) SnapshotCopy() ClusterSnapshotCopyOutput {
  1059  	return o.ApplyT(func(v *Cluster) ClusterSnapshotCopyOutput { return v.SnapshotCopy }).(ClusterSnapshotCopyOutput)
  1060  }
  1061  
  1062  // The name of the snapshot from which to create the new cluster.  Conflicts with `snapshotArn`.
  1063  func (o ClusterOutput) SnapshotIdentifier() pulumi.StringPtrOutput {
  1064  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.SnapshotIdentifier }).(pulumi.StringPtrOutput)
  1065  }
  1066  
  1067  // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
  1068  func (o ClusterOutput) Tags() pulumi.StringMapOutput {
  1069  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
  1070  }
  1071  
  1072  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
  1073  //
  1074  // Deprecated: Please use `tags` instead.
  1075  func (o ClusterOutput) TagsAll() pulumi.StringMapOutput {
  1076  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
  1077  }
  1078  
  1079  // A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
  1080  func (o ClusterOutput) VpcSecurityGroupIds() pulumi.StringArrayOutput {
  1081  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.VpcSecurityGroupIds }).(pulumi.StringArrayOutput)
  1082  }
  1083  
  1084  type ClusterArrayOutput struct{ *pulumi.OutputState }
  1085  
  1086  func (ClusterArrayOutput) ElementType() reflect.Type {
  1087  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
  1088  }
  1089  
  1090  func (o ClusterArrayOutput) ToClusterArrayOutput() ClusterArrayOutput {
  1091  	return o
  1092  }
  1093  
  1094  func (o ClusterArrayOutput) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
  1095  	return o
  1096  }
  1097  
  1098  func (o ClusterArrayOutput) Index(i pulumi.IntInput) ClusterOutput {
  1099  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Cluster {
  1100  		return vs[0].([]*Cluster)[vs[1].(int)]
  1101  	}).(ClusterOutput)
  1102  }
  1103  
  1104  type ClusterMapOutput struct{ *pulumi.OutputState }
  1105  
  1106  func (ClusterMapOutput) ElementType() reflect.Type {
  1107  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
  1108  }
  1109  
  1110  func (o ClusterMapOutput) ToClusterMapOutput() ClusterMapOutput {
  1111  	return o
  1112  }
  1113  
  1114  func (o ClusterMapOutput) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
  1115  	return o
  1116  }
  1117  
  1118  func (o ClusterMapOutput) MapIndex(k pulumi.StringInput) ClusterOutput {
  1119  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Cluster {
  1120  		return vs[0].(map[string]*Cluster)[vs[1].(string)]
  1121  	}).(ClusterOutput)
  1122  }
  1123  
  1124  func init() {
  1125  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterInput)(nil)).Elem(), &Cluster{})
  1126  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterArrayInput)(nil)).Elem(), ClusterArray{})
  1127  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterMapInput)(nil)).Elem(), ClusterMap{})
  1128  	pulumi.RegisterOutputType(ClusterOutput{})
  1129  	pulumi.RegisterOutputType(ClusterArrayOutput{})
  1130  	pulumi.RegisterOutputType(ClusterMapOutput{})
  1131  }