github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/elasticache/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 elasticache
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // Provides an ElastiCache Cluster resource, which manages either a
    15  // [Memcached cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html), a
    16  // [single-node Redis instance](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html), or a
    17  // [read replica in a Redis (Cluster Mode Enabled) replication group].
    18  //
    19  // For working with Redis (Cluster Mode Enabled) replication groups, see the
    20  // `elasticache.ReplicationGroup` resource.
    21  //
    22  // > **Note:** When you change an attribute, such as `numCacheNodes`, by default
    23  // it is applied in the next maintenance window. Because of this, this provider may report
    24  // a difference in its planning phase because the actual modification has not yet taken
    25  // place. You can use the `applyImmediately` flag to instruct the service to apply the
    26  // change immediately. Using `applyImmediately` can result in a brief downtime as the server reboots.
    27  // See the AWS Documentation on Modifying an ElastiCache Cache Cluster for
    28  // [ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/Clusters.Modify.html) or
    29  // [ElastiCache for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Modify.html)
    30  // for more information.
    31  //
    32  // > **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `applyImmediately`.
    33  //
    34  // ## Example Usage
    35  //
    36  // ### Memcached Cluster
    37  //
    38  // <!--Start PulumiCodeChooser -->
    39  // ```go
    40  // package main
    41  //
    42  // import (
    43  //
    44  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache"
    45  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    46  //
    47  // )
    48  //
    49  //	func main() {
    50  //		pulumi.Run(func(ctx *pulumi.Context) error {
    51  //			_, err := elasticache.NewCluster(ctx, "example", &elasticache.ClusterArgs{
    52  //				ClusterId:          pulumi.String("cluster-example"),
    53  //				Engine:             pulumi.String("memcached"),
    54  //				NodeType:           pulumi.String("cache.m4.large"),
    55  //				NumCacheNodes:      pulumi.Int(2),
    56  //				ParameterGroupName: pulumi.String("default.memcached1.4"),
    57  //				Port:               pulumi.Int(11211),
    58  //			})
    59  //			if err != nil {
    60  //				return err
    61  //			}
    62  //			return nil
    63  //		})
    64  //	}
    65  //
    66  // ```
    67  // <!--End PulumiCodeChooser -->
    68  //
    69  // ### Redis Instance
    70  //
    71  // <!--Start PulumiCodeChooser -->
    72  // ```go
    73  // package main
    74  //
    75  // import (
    76  //
    77  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache"
    78  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    79  //
    80  // )
    81  //
    82  //	func main() {
    83  //		pulumi.Run(func(ctx *pulumi.Context) error {
    84  //			_, err := elasticache.NewCluster(ctx, "example", &elasticache.ClusterArgs{
    85  //				ClusterId:          pulumi.String("cluster-example"),
    86  //				Engine:             pulumi.String("redis"),
    87  //				NodeType:           pulumi.String("cache.m4.large"),
    88  //				NumCacheNodes:      pulumi.Int(1),
    89  //				ParameterGroupName: pulumi.String("default.redis3.2"),
    90  //				EngineVersion:      pulumi.String("3.2.10"),
    91  //				Port:               pulumi.Int(6379),
    92  //			})
    93  //			if err != nil {
    94  //				return err
    95  //			}
    96  //			return nil
    97  //		})
    98  //	}
    99  //
   100  // ```
   101  // <!--End PulumiCodeChooser -->
   102  //
   103  // ### Redis Cluster Mode Disabled Read Replica Instance
   104  //
   105  // These inherit their settings from the replication group.
   106  //
   107  // <!--Start PulumiCodeChooser -->
   108  // ```go
   109  // package main
   110  //
   111  // import (
   112  //
   113  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache"
   114  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   115  //
   116  // )
   117  //
   118  //	func main() {
   119  //		pulumi.Run(func(ctx *pulumi.Context) error {
   120  //			_, err := elasticache.NewCluster(ctx, "replica", &elasticache.ClusterArgs{
   121  //				ClusterId:          pulumi.String("cluster-example"),
   122  //				ReplicationGroupId: pulumi.Any(example.Id),
   123  //			})
   124  //			if err != nil {
   125  //				return err
   126  //			}
   127  //			return nil
   128  //		})
   129  //	}
   130  //
   131  // ```
   132  // <!--End PulumiCodeChooser -->
   133  //
   134  // ### Redis Log Delivery configuration
   135  //
   136  // <!--Start PulumiCodeChooser -->
   137  // ```go
   138  // package main
   139  //
   140  // import (
   141  //
   142  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache"
   143  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   144  //
   145  // )
   146  //
   147  //	func main() {
   148  //		pulumi.Run(func(ctx *pulumi.Context) error {
   149  //			_, err := elasticache.NewCluster(ctx, "test", &elasticache.ClusterArgs{
   150  //				ClusterId:        pulumi.String("mycluster"),
   151  //				Engine:           pulumi.String("redis"),
   152  //				NodeType:         pulumi.String("cache.t3.micro"),
   153  //				NumCacheNodes:    pulumi.Int(1),
   154  //				Port:             pulumi.Int(6379),
   155  //				ApplyImmediately: pulumi.Bool(true),
   156  //				LogDeliveryConfigurations: elasticache.ClusterLogDeliveryConfigurationArray{
   157  //					&elasticache.ClusterLogDeliveryConfigurationArgs{
   158  //						Destination:     pulumi.Any(example.Name),
   159  //						DestinationType: pulumi.String("cloudwatch-logs"),
   160  //						LogFormat:       pulumi.String("text"),
   161  //						LogType:         pulumi.String("slow-log"),
   162  //					},
   163  //					&elasticache.ClusterLogDeliveryConfigurationArgs{
   164  //						Destination:     pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),
   165  //						DestinationType: pulumi.String("kinesis-firehose"),
   166  //						LogFormat:       pulumi.String("json"),
   167  //						LogType:         pulumi.String("engine-log"),
   168  //					},
   169  //				},
   170  //			})
   171  //			if err != nil {
   172  //				return err
   173  //			}
   174  //			return nil
   175  //		})
   176  //	}
   177  //
   178  // ```
   179  // <!--End PulumiCodeChooser -->
   180  //
   181  // ## Import
   182  //
   183  // Using `pulumi import`, import ElastiCache Clusters using the `cluster_id`. For example:
   184  //
   185  // ```sh
   186  // $ pulumi import aws:elasticache/cluster:Cluster my_cluster my_cluster
   187  // ```
   188  type Cluster struct {
   189  	pulumi.CustomResourceState
   190  
   191  	// Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   192  	ApplyImmediately pulumi.BoolOutput `pulumi:"applyImmediately"`
   193  	// The ARN of the created ElastiCache Cluster.
   194  	Arn pulumi.StringOutput `pulumi:"arn"`
   195  	// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   196  	// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   197  	// Defaults to `true`.
   198  	AutoMinorVersionUpgrade pulumi.StringPtrOutput `pulumi:"autoMinorVersionUpgrade"`
   199  	// Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   200  	AvailabilityZone pulumi.StringOutput `pulumi:"availabilityZone"`
   201  	// Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   202  	AzMode pulumi.StringOutput `pulumi:"azMode"`
   203  	// List of node objects including `id`, `address`, `port` and `availabilityZone`.
   204  	CacheNodes ClusterCacheNodeArrayOutput `pulumi:"cacheNodes"`
   205  	// (Memcached only) DNS name of the cache cluster without the port appended.
   206  	ClusterAddress pulumi.StringOutput `pulumi:"clusterAddress"`
   207  	// Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   208  	ClusterId pulumi.StringOutput `pulumi:"clusterId"`
   209  	// (Memcached only) Configuration endpoint to allow host discovery.
   210  	ConfigurationEndpoint pulumi.StringOutput `pulumi:"configurationEndpoint"`
   211  	// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   212  	Engine pulumi.StringOutput `pulumi:"engine"`
   213  	// Version number of the cache engine to be used.
   214  	// If not set, defaults to the latest version.
   215  	// See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   216  	// When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   217  	// When the version is 6, the major and minor version can be set, e.g., `6.2`,
   218  	// or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   219  	// Otherwise, specify the full version desired, e.g., `5.0.6`.
   220  	// The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   221  	EngineVersion pulumi.StringOutput `pulumi:"engineVersion"`
   222  	// Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
   223  	EngineVersionActual pulumi.StringOutput `pulumi:"engineVersionActual"`
   224  	// Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   225  	FinalSnapshotIdentifier pulumi.StringPtrOutput `pulumi:"finalSnapshotIdentifier"`
   226  	// The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   227  	IpDiscovery pulumi.StringOutput `pulumi:"ipDiscovery"`
   228  	// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   229  	LogDeliveryConfigurations ClusterLogDeliveryConfigurationArrayOutput `pulumi:"logDeliveryConfigurations"`
   230  	// Specifies the weekly time range for when maintenance
   231  	// on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   232  	// The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   233  	MaintenanceWindow pulumi.StringOutput `pulumi:"maintenanceWindow"`
   234  	// The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   235  	NetworkType pulumi.StringOutput `pulumi:"networkType"`
   236  	// The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   237  	NodeType pulumi.StringOutput `pulumi:"nodeType"`
   238  	// ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   239  	NotificationTopicArn pulumi.StringPtrOutput `pulumi:"notificationTopicArn"`
   240  	// The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   241  	NumCacheNodes pulumi.IntOutput `pulumi:"numCacheNodes"`
   242  	// Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   243  	OutpostMode pulumi.StringPtrOutput `pulumi:"outpostMode"`
   244  	// The name of the parameter group to associate with this cache cluster.
   245  	//
   246  	// The following arguments are optional:
   247  	ParameterGroupName pulumi.StringOutput `pulumi:"parameterGroupName"`
   248  	// The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   249  	Port pulumi.IntOutput `pulumi:"port"`
   250  	// List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   251  	PreferredAvailabilityZones pulumi.StringArrayOutput `pulumi:"preferredAvailabilityZones"`
   252  	// The outpost ARN in which the cache cluster will be created.
   253  	PreferredOutpostArn pulumi.StringOutput `pulumi:"preferredOutpostArn"`
   254  	// ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   255  	ReplicationGroupId pulumi.StringOutput `pulumi:"replicationGroupId"`
   256  	// One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   257  	SecurityGroupIds pulumi.StringArrayOutput `pulumi:"securityGroupIds"`
   258  	// Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   259  	SnapshotArns pulumi.StringPtrOutput `pulumi:"snapshotArns"`
   260  	// Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   261  	SnapshotName pulumi.StringPtrOutput `pulumi:"snapshotName"`
   262  	// Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   263  	SnapshotRetentionLimit pulumi.IntPtrOutput `pulumi:"snapshotRetentionLimit"`
   264  	// Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   265  	SnapshotWindow pulumi.StringOutput `pulumi:"snapshotWindow"`
   266  	// Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   267  	SubnetGroupName pulumi.StringOutput `pulumi:"subnetGroupName"`
   268  	// 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.
   269  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   270  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   271  	//
   272  	// Deprecated: Please use `tags` instead.
   273  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   274  	// Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   275  	TransitEncryptionEnabled pulumi.BoolOutput `pulumi:"transitEncryptionEnabled"`
   276  }
   277  
   278  // NewCluster registers a new resource with the given unique name, arguments, and options.
   279  func NewCluster(ctx *pulumi.Context,
   280  	name string, args *ClusterArgs, opts ...pulumi.ResourceOption) (*Cluster, error) {
   281  	if args == nil {
   282  		args = &ClusterArgs{}
   283  	}
   284  
   285  	opts = internal.PkgResourceDefaultOpts(opts)
   286  	var resource Cluster
   287  	err := ctx.RegisterResource("aws:elasticache/cluster:Cluster", name, args, &resource, opts...)
   288  	if err != nil {
   289  		return nil, err
   290  	}
   291  	return &resource, nil
   292  }
   293  
   294  // GetCluster gets an existing Cluster resource's state with the given name, ID, and optional
   295  // state properties that are used to uniquely qualify the lookup (nil if not required).
   296  func GetCluster(ctx *pulumi.Context,
   297  	name string, id pulumi.IDInput, state *ClusterState, opts ...pulumi.ResourceOption) (*Cluster, error) {
   298  	var resource Cluster
   299  	err := ctx.ReadResource("aws:elasticache/cluster:Cluster", name, id, state, &resource, opts...)
   300  	if err != nil {
   301  		return nil, err
   302  	}
   303  	return &resource, nil
   304  }
   305  
   306  // Input properties used for looking up and filtering Cluster resources.
   307  type clusterState struct {
   308  	// Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   309  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   310  	// The ARN of the created ElastiCache Cluster.
   311  	Arn *string `pulumi:"arn"`
   312  	// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   313  	// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   314  	// Defaults to `true`.
   315  	AutoMinorVersionUpgrade *string `pulumi:"autoMinorVersionUpgrade"`
   316  	// Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   317  	AvailabilityZone *string `pulumi:"availabilityZone"`
   318  	// Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   319  	AzMode *string `pulumi:"azMode"`
   320  	// List of node objects including `id`, `address`, `port` and `availabilityZone`.
   321  	CacheNodes []ClusterCacheNode `pulumi:"cacheNodes"`
   322  	// (Memcached only) DNS name of the cache cluster without the port appended.
   323  	ClusterAddress *string `pulumi:"clusterAddress"`
   324  	// Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   325  	ClusterId *string `pulumi:"clusterId"`
   326  	// (Memcached only) Configuration endpoint to allow host discovery.
   327  	ConfigurationEndpoint *string `pulumi:"configurationEndpoint"`
   328  	// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   329  	Engine *string `pulumi:"engine"`
   330  	// Version number of the cache engine to be used.
   331  	// If not set, defaults to the latest version.
   332  	// See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   333  	// When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   334  	// When the version is 6, the major and minor version can be set, e.g., `6.2`,
   335  	// or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   336  	// Otherwise, specify the full version desired, e.g., `5.0.6`.
   337  	// The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   338  	EngineVersion *string `pulumi:"engineVersion"`
   339  	// Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
   340  	EngineVersionActual *string `pulumi:"engineVersionActual"`
   341  	// Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   342  	FinalSnapshotIdentifier *string `pulumi:"finalSnapshotIdentifier"`
   343  	// The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   344  	IpDiscovery *string `pulumi:"ipDiscovery"`
   345  	// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   346  	LogDeliveryConfigurations []ClusterLogDeliveryConfiguration `pulumi:"logDeliveryConfigurations"`
   347  	// Specifies the weekly time range for when maintenance
   348  	// on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   349  	// The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   350  	MaintenanceWindow *string `pulumi:"maintenanceWindow"`
   351  	// The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   352  	NetworkType *string `pulumi:"networkType"`
   353  	// The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   354  	NodeType *string `pulumi:"nodeType"`
   355  	// ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   356  	NotificationTopicArn *string `pulumi:"notificationTopicArn"`
   357  	// The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   358  	NumCacheNodes *int `pulumi:"numCacheNodes"`
   359  	// Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   360  	OutpostMode *string `pulumi:"outpostMode"`
   361  	// The name of the parameter group to associate with this cache cluster.
   362  	//
   363  	// The following arguments are optional:
   364  	ParameterGroupName *string `pulumi:"parameterGroupName"`
   365  	// The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   366  	Port *int `pulumi:"port"`
   367  	// List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   368  	PreferredAvailabilityZones []string `pulumi:"preferredAvailabilityZones"`
   369  	// The outpost ARN in which the cache cluster will be created.
   370  	PreferredOutpostArn *string `pulumi:"preferredOutpostArn"`
   371  	// ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   372  	ReplicationGroupId *string `pulumi:"replicationGroupId"`
   373  	// One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   374  	SecurityGroupIds []string `pulumi:"securityGroupIds"`
   375  	// Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   376  	SnapshotArns *string `pulumi:"snapshotArns"`
   377  	// Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   378  	SnapshotName *string `pulumi:"snapshotName"`
   379  	// Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   380  	SnapshotRetentionLimit *int `pulumi:"snapshotRetentionLimit"`
   381  	// Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   382  	SnapshotWindow *string `pulumi:"snapshotWindow"`
   383  	// Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   384  	SubnetGroupName *string `pulumi:"subnetGroupName"`
   385  	// 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.
   386  	Tags map[string]string `pulumi:"tags"`
   387  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   388  	//
   389  	// Deprecated: Please use `tags` instead.
   390  	TagsAll map[string]string `pulumi:"tagsAll"`
   391  	// Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   392  	TransitEncryptionEnabled *bool `pulumi:"transitEncryptionEnabled"`
   393  }
   394  
   395  type ClusterState struct {
   396  	// Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   397  	ApplyImmediately pulumi.BoolPtrInput
   398  	// The ARN of the created ElastiCache Cluster.
   399  	Arn pulumi.StringPtrInput
   400  	// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   401  	// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   402  	// Defaults to `true`.
   403  	AutoMinorVersionUpgrade pulumi.StringPtrInput
   404  	// Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   405  	AvailabilityZone pulumi.StringPtrInput
   406  	// Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   407  	AzMode pulumi.StringPtrInput
   408  	// List of node objects including `id`, `address`, `port` and `availabilityZone`.
   409  	CacheNodes ClusterCacheNodeArrayInput
   410  	// (Memcached only) DNS name of the cache cluster without the port appended.
   411  	ClusterAddress pulumi.StringPtrInput
   412  	// Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   413  	ClusterId pulumi.StringPtrInput
   414  	// (Memcached only) Configuration endpoint to allow host discovery.
   415  	ConfigurationEndpoint pulumi.StringPtrInput
   416  	// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   417  	Engine pulumi.StringPtrInput
   418  	// Version number of the cache engine to be used.
   419  	// If not set, defaults to the latest version.
   420  	// See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   421  	// When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   422  	// When the version is 6, the major and minor version can be set, e.g., `6.2`,
   423  	// or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   424  	// Otherwise, specify the full version desired, e.g., `5.0.6`.
   425  	// The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   426  	EngineVersion pulumi.StringPtrInput
   427  	// Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
   428  	EngineVersionActual pulumi.StringPtrInput
   429  	// Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   430  	FinalSnapshotIdentifier pulumi.StringPtrInput
   431  	// The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   432  	IpDiscovery pulumi.StringPtrInput
   433  	// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   434  	LogDeliveryConfigurations ClusterLogDeliveryConfigurationArrayInput
   435  	// Specifies the weekly time range for when maintenance
   436  	// on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   437  	// The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   438  	MaintenanceWindow pulumi.StringPtrInput
   439  	// The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   440  	NetworkType pulumi.StringPtrInput
   441  	// The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   442  	NodeType pulumi.StringPtrInput
   443  	// ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   444  	NotificationTopicArn pulumi.StringPtrInput
   445  	// The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   446  	NumCacheNodes pulumi.IntPtrInput
   447  	// Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   448  	OutpostMode pulumi.StringPtrInput
   449  	// The name of the parameter group to associate with this cache cluster.
   450  	//
   451  	// The following arguments are optional:
   452  	ParameterGroupName pulumi.StringPtrInput
   453  	// The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   454  	Port pulumi.IntPtrInput
   455  	// List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   456  	PreferredAvailabilityZones pulumi.StringArrayInput
   457  	// The outpost ARN in which the cache cluster will be created.
   458  	PreferredOutpostArn pulumi.StringPtrInput
   459  	// ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   460  	ReplicationGroupId pulumi.StringPtrInput
   461  	// One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   462  	SecurityGroupIds pulumi.StringArrayInput
   463  	// Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   464  	SnapshotArns pulumi.StringPtrInput
   465  	// Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   466  	SnapshotName pulumi.StringPtrInput
   467  	// Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   468  	SnapshotRetentionLimit pulumi.IntPtrInput
   469  	// Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   470  	SnapshotWindow pulumi.StringPtrInput
   471  	// Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   472  	SubnetGroupName pulumi.StringPtrInput
   473  	// 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.
   474  	Tags pulumi.StringMapInput
   475  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   476  	//
   477  	// Deprecated: Please use `tags` instead.
   478  	TagsAll pulumi.StringMapInput
   479  	// Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   480  	TransitEncryptionEnabled pulumi.BoolPtrInput
   481  }
   482  
   483  func (ClusterState) ElementType() reflect.Type {
   484  	return reflect.TypeOf((*clusterState)(nil)).Elem()
   485  }
   486  
   487  type clusterArgs struct {
   488  	// Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   489  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   490  	// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   491  	// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   492  	// Defaults to `true`.
   493  	AutoMinorVersionUpgrade *string `pulumi:"autoMinorVersionUpgrade"`
   494  	// Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   495  	AvailabilityZone *string `pulumi:"availabilityZone"`
   496  	// Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   497  	AzMode *string `pulumi:"azMode"`
   498  	// Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   499  	ClusterId *string `pulumi:"clusterId"`
   500  	// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   501  	Engine *string `pulumi:"engine"`
   502  	// Version number of the cache engine to be used.
   503  	// If not set, defaults to the latest version.
   504  	// See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   505  	// When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   506  	// When the version is 6, the major and minor version can be set, e.g., `6.2`,
   507  	// or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   508  	// Otherwise, specify the full version desired, e.g., `5.0.6`.
   509  	// The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   510  	EngineVersion *string `pulumi:"engineVersion"`
   511  	// Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   512  	FinalSnapshotIdentifier *string `pulumi:"finalSnapshotIdentifier"`
   513  	// The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   514  	IpDiscovery *string `pulumi:"ipDiscovery"`
   515  	// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   516  	LogDeliveryConfigurations []ClusterLogDeliveryConfiguration `pulumi:"logDeliveryConfigurations"`
   517  	// Specifies the weekly time range for when maintenance
   518  	// on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   519  	// The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   520  	MaintenanceWindow *string `pulumi:"maintenanceWindow"`
   521  	// The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   522  	NetworkType *string `pulumi:"networkType"`
   523  	// The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   524  	NodeType *string `pulumi:"nodeType"`
   525  	// ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   526  	NotificationTopicArn *string `pulumi:"notificationTopicArn"`
   527  	// The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   528  	NumCacheNodes *int `pulumi:"numCacheNodes"`
   529  	// Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   530  	OutpostMode *string `pulumi:"outpostMode"`
   531  	// The name of the parameter group to associate with this cache cluster.
   532  	//
   533  	// The following arguments are optional:
   534  	ParameterGroupName *string `pulumi:"parameterGroupName"`
   535  	// The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   536  	Port *int `pulumi:"port"`
   537  	// List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   538  	PreferredAvailabilityZones []string `pulumi:"preferredAvailabilityZones"`
   539  	// The outpost ARN in which the cache cluster will be created.
   540  	PreferredOutpostArn *string `pulumi:"preferredOutpostArn"`
   541  	// ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   542  	ReplicationGroupId *string `pulumi:"replicationGroupId"`
   543  	// One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   544  	SecurityGroupIds []string `pulumi:"securityGroupIds"`
   545  	// Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   546  	SnapshotArns *string `pulumi:"snapshotArns"`
   547  	// Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   548  	SnapshotName *string `pulumi:"snapshotName"`
   549  	// Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   550  	SnapshotRetentionLimit *int `pulumi:"snapshotRetentionLimit"`
   551  	// Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   552  	SnapshotWindow *string `pulumi:"snapshotWindow"`
   553  	// Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   554  	SubnetGroupName *string `pulumi:"subnetGroupName"`
   555  	// 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.
   556  	Tags map[string]string `pulumi:"tags"`
   557  	// Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   558  	TransitEncryptionEnabled *bool `pulumi:"transitEncryptionEnabled"`
   559  }
   560  
   561  // The set of arguments for constructing a Cluster resource.
   562  type ClusterArgs struct {
   563  	// Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   564  	ApplyImmediately pulumi.BoolPtrInput
   565  	// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   566  	// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   567  	// Defaults to `true`.
   568  	AutoMinorVersionUpgrade pulumi.StringPtrInput
   569  	// Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   570  	AvailabilityZone pulumi.StringPtrInput
   571  	// Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   572  	AzMode pulumi.StringPtrInput
   573  	// Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   574  	ClusterId pulumi.StringPtrInput
   575  	// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   576  	Engine pulumi.StringPtrInput
   577  	// Version number of the cache engine to be used.
   578  	// If not set, defaults to the latest version.
   579  	// See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   580  	// When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   581  	// When the version is 6, the major and minor version can be set, e.g., `6.2`,
   582  	// or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   583  	// Otherwise, specify the full version desired, e.g., `5.0.6`.
   584  	// The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   585  	EngineVersion pulumi.StringPtrInput
   586  	// Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   587  	FinalSnapshotIdentifier pulumi.StringPtrInput
   588  	// The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   589  	IpDiscovery pulumi.StringPtrInput
   590  	// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   591  	LogDeliveryConfigurations ClusterLogDeliveryConfigurationArrayInput
   592  	// Specifies the weekly time range for when maintenance
   593  	// on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   594  	// The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   595  	MaintenanceWindow pulumi.StringPtrInput
   596  	// The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   597  	NetworkType pulumi.StringPtrInput
   598  	// The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   599  	NodeType pulumi.StringPtrInput
   600  	// ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   601  	NotificationTopicArn pulumi.StringPtrInput
   602  	// The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   603  	NumCacheNodes pulumi.IntPtrInput
   604  	// Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   605  	OutpostMode pulumi.StringPtrInput
   606  	// The name of the parameter group to associate with this cache cluster.
   607  	//
   608  	// The following arguments are optional:
   609  	ParameterGroupName pulumi.StringPtrInput
   610  	// The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   611  	Port pulumi.IntPtrInput
   612  	// List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   613  	PreferredAvailabilityZones pulumi.StringArrayInput
   614  	// The outpost ARN in which the cache cluster will be created.
   615  	PreferredOutpostArn pulumi.StringPtrInput
   616  	// ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   617  	ReplicationGroupId pulumi.StringPtrInput
   618  	// One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   619  	SecurityGroupIds pulumi.StringArrayInput
   620  	// Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   621  	SnapshotArns pulumi.StringPtrInput
   622  	// Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   623  	SnapshotName pulumi.StringPtrInput
   624  	// Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   625  	SnapshotRetentionLimit pulumi.IntPtrInput
   626  	// Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   627  	SnapshotWindow pulumi.StringPtrInput
   628  	// Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   629  	SubnetGroupName pulumi.StringPtrInput
   630  	// 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.
   631  	Tags pulumi.StringMapInput
   632  	// Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   633  	TransitEncryptionEnabled pulumi.BoolPtrInput
   634  }
   635  
   636  func (ClusterArgs) ElementType() reflect.Type {
   637  	return reflect.TypeOf((*clusterArgs)(nil)).Elem()
   638  }
   639  
   640  type ClusterInput interface {
   641  	pulumi.Input
   642  
   643  	ToClusterOutput() ClusterOutput
   644  	ToClusterOutputWithContext(ctx context.Context) ClusterOutput
   645  }
   646  
   647  func (*Cluster) ElementType() reflect.Type {
   648  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   649  }
   650  
   651  func (i *Cluster) ToClusterOutput() ClusterOutput {
   652  	return i.ToClusterOutputWithContext(context.Background())
   653  }
   654  
   655  func (i *Cluster) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   656  	return pulumi.ToOutputWithContext(ctx, i).(ClusterOutput)
   657  }
   658  
   659  // ClusterArrayInput is an input type that accepts ClusterArray and ClusterArrayOutput values.
   660  // You can construct a concrete instance of `ClusterArrayInput` via:
   661  //
   662  //	ClusterArray{ ClusterArgs{...} }
   663  type ClusterArrayInput interface {
   664  	pulumi.Input
   665  
   666  	ToClusterArrayOutput() ClusterArrayOutput
   667  	ToClusterArrayOutputWithContext(context.Context) ClusterArrayOutput
   668  }
   669  
   670  type ClusterArray []ClusterInput
   671  
   672  func (ClusterArray) ElementType() reflect.Type {
   673  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
   674  }
   675  
   676  func (i ClusterArray) ToClusterArrayOutput() ClusterArrayOutput {
   677  	return i.ToClusterArrayOutputWithContext(context.Background())
   678  }
   679  
   680  func (i ClusterArray) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
   681  	return pulumi.ToOutputWithContext(ctx, i).(ClusterArrayOutput)
   682  }
   683  
   684  // ClusterMapInput is an input type that accepts ClusterMap and ClusterMapOutput values.
   685  // You can construct a concrete instance of `ClusterMapInput` via:
   686  //
   687  //	ClusterMap{ "key": ClusterArgs{...} }
   688  type ClusterMapInput interface {
   689  	pulumi.Input
   690  
   691  	ToClusterMapOutput() ClusterMapOutput
   692  	ToClusterMapOutputWithContext(context.Context) ClusterMapOutput
   693  }
   694  
   695  type ClusterMap map[string]ClusterInput
   696  
   697  func (ClusterMap) ElementType() reflect.Type {
   698  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
   699  }
   700  
   701  func (i ClusterMap) ToClusterMapOutput() ClusterMapOutput {
   702  	return i.ToClusterMapOutputWithContext(context.Background())
   703  }
   704  
   705  func (i ClusterMap) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
   706  	return pulumi.ToOutputWithContext(ctx, i).(ClusterMapOutput)
   707  }
   708  
   709  type ClusterOutput struct{ *pulumi.OutputState }
   710  
   711  func (ClusterOutput) ElementType() reflect.Type {
   712  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   713  }
   714  
   715  func (o ClusterOutput) ToClusterOutput() ClusterOutput {
   716  	return o
   717  }
   718  
   719  func (o ClusterOutput) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   720  	return o
   721  }
   722  
   723  // Whether any database modifications are applied immediately, or during the next maintenance window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html).
   724  func (o ClusterOutput) ApplyImmediately() pulumi.BoolOutput {
   725  	return o.ApplyT(func(v *Cluster) pulumi.BoolOutput { return v.ApplyImmediately }).(pulumi.BoolOutput)
   726  }
   727  
   728  // The ARN of the created ElastiCache Cluster.
   729  func (o ClusterOutput) Arn() pulumi.StringOutput {
   730  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   731  }
   732  
   733  // Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
   734  // Only supported for engine type `"redis"` and if the engine version is 6 or higher.
   735  // Defaults to `true`.
   736  func (o ClusterOutput) AutoMinorVersionUpgrade() pulumi.StringPtrOutput {
   737  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.AutoMinorVersionUpgrade }).(pulumi.StringPtrOutput)
   738  }
   739  
   740  // Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, use `preferredAvailabilityZones` instead. Default: System chosen Availability Zone. Changing this value will re-create the resource.
   741  func (o ClusterOutput) AvailabilityZone() pulumi.StringOutput {
   742  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.AvailabilityZone }).(pulumi.StringOutput)
   743  }
   744  
   745  // Whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cross-az`, `numCacheNodes` must be greater than `1`.
   746  func (o ClusterOutput) AzMode() pulumi.StringOutput {
   747  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.AzMode }).(pulumi.StringOutput)
   748  }
   749  
   750  // List of node objects including `id`, `address`, `port` and `availabilityZone`.
   751  func (o ClusterOutput) CacheNodes() ClusterCacheNodeArrayOutput {
   752  	return o.ApplyT(func(v *Cluster) ClusterCacheNodeArrayOutput { return v.CacheNodes }).(ClusterCacheNodeArrayOutput)
   753  }
   754  
   755  // (Memcached only) DNS name of the cache cluster without the port appended.
   756  func (o ClusterOutput) ClusterAddress() pulumi.StringOutput {
   757  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterAddress }).(pulumi.StringOutput)
   758  }
   759  
   760  // Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
   761  func (o ClusterOutput) ClusterId() pulumi.StringOutput {
   762  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterId }).(pulumi.StringOutput)
   763  }
   764  
   765  // (Memcached only) Configuration endpoint to allow host discovery.
   766  func (o ClusterOutput) ConfigurationEndpoint() pulumi.StringOutput {
   767  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ConfigurationEndpoint }).(pulumi.StringOutput)
   768  }
   769  
   770  // Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
   771  func (o ClusterOutput) Engine() pulumi.StringOutput {
   772  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Engine }).(pulumi.StringOutput)
   773  }
   774  
   775  // Version number of the cache engine to be used.
   776  // If not set, defaults to the latest version.
   777  // See [Describe Cache Engine Versions](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-engine-versions.html) in the AWS Documentation for supported versions.
   778  // When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
   779  // When the version is 6, the major and minor version can be set, e.g., `6.2`,
   780  // or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
   781  // Otherwise, specify the full version desired, e.g., `5.0.6`.
   782  // The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
   783  func (o ClusterOutput) EngineVersion() pulumi.StringOutput {
   784  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.EngineVersion }).(pulumi.StringOutput)
   785  }
   786  
   787  // Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
   788  func (o ClusterOutput) EngineVersionActual() pulumi.StringOutput {
   789  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.EngineVersionActual }).(pulumi.StringOutput)
   790  }
   791  
   792  // Name of your final cluster snapshot. If omitted, no final snapshot will be made.
   793  func (o ClusterOutput) FinalSnapshotIdentifier() pulumi.StringPtrOutput {
   794  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.FinalSnapshotIdentifier }).(pulumi.StringPtrOutput)
   795  }
   796  
   797  // The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
   798  func (o ClusterOutput) IpDiscovery() pulumi.StringOutput {
   799  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.IpDiscovery }).(pulumi.StringOutput)
   800  }
   801  
   802  // Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See Log Delivery Configuration below for more details.
   803  func (o ClusterOutput) LogDeliveryConfigurations() ClusterLogDeliveryConfigurationArrayOutput {
   804  	return o.ApplyT(func(v *Cluster) ClusterLogDeliveryConfigurationArrayOutput { return v.LogDeliveryConfigurations }).(ClusterLogDeliveryConfigurationArrayOutput)
   805  }
   806  
   807  // Specifies the weekly time range for when maintenance
   808  // on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
   809  // The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
   810  func (o ClusterOutput) MaintenanceWindow() pulumi.StringOutput {
   811  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.MaintenanceWindow }).(pulumi.StringOutput)
   812  }
   813  
   814  // The IP versions for cache cluster connections. IPv6 is supported with Redis engine `6.2` onword or Memcached version `1.6.6` for all [Nitro system](https://aws.amazon.com/ec2/nitro/) instances. Valid values are `ipv4`, `ipv6` or `dualStack`.
   815  func (o ClusterOutput) NetworkType() pulumi.StringOutput {
   816  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.NetworkType }).(pulumi.StringOutput)
   817  }
   818  
   819  // The instance class used. See AWS documentation for information on [supported node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Redis](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html). See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/nodes-select-size.html). For Memcached, changing this value will re-create the resource.
   820  func (o ClusterOutput) NodeType() pulumi.StringOutput {
   821  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.NodeType }).(pulumi.StringOutput)
   822  }
   823  
   824  // ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
   825  func (o ClusterOutput) NotificationTopicArn() pulumi.StringPtrOutput {
   826  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.NotificationTopicArn }).(pulumi.StringPtrOutput)
   827  }
   828  
   829  // The initial number of cache nodes that the cache cluster will have. For Redis, this value must be 1. For Memcached, this value must be between 1 and 40. If this number is reduced on subsequent runs, the highest numbered nodes will be removed.
   830  func (o ClusterOutput) NumCacheNodes() pulumi.IntOutput {
   831  	return o.ApplyT(func(v *Cluster) pulumi.IntOutput { return v.NumCacheNodes }).(pulumi.IntOutput)
   832  }
   833  
   834  // Specify the outpost mode that will apply to the cache cluster creation. Valid values are `"single-outpost"` and `"cross-outpost"`, however AWS currently only supports `"single-outpost"` mode.
   835  func (o ClusterOutput) OutpostMode() pulumi.StringPtrOutput {
   836  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.OutpostMode }).(pulumi.StringPtrOutput)
   837  }
   838  
   839  // The name of the parameter group to associate with this cache cluster.
   840  //
   841  // The following arguments are optional:
   842  func (o ClusterOutput) ParameterGroupName() pulumi.StringOutput {
   843  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ParameterGroupName }).(pulumi.StringOutput)
   844  }
   845  
   846  // The port number on which each of the cache nodes will accept connections. For Memcached the default is 11211, and for Redis the default port is 6379. Cannot be provided with `replicationGroupId`. Changing this value will re-create the resource.
   847  func (o ClusterOutput) Port() pulumi.IntOutput {
   848  	return o.ApplyT(func(v *Cluster) pulumi.IntOutput { return v.Port }).(pulumi.IntOutput)
   849  }
   850  
   851  // List of the Availability Zones in which cache nodes are created. If you are creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of `numCacheNodes`. If you want all the nodes in the same Availability Zone, use `availabilityZone` instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. Detecting drift of existing node availability zone is not currently supported. Updating this argument by itself to migrate existing node availability zones is not currently supported and will show a perpetual difference.
   852  func (o ClusterOutput) PreferredAvailabilityZones() pulumi.StringArrayOutput {
   853  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.PreferredAvailabilityZones }).(pulumi.StringArrayOutput)
   854  }
   855  
   856  // The outpost ARN in which the cache cluster will be created.
   857  func (o ClusterOutput) PreferredOutpostArn() pulumi.StringOutput {
   858  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PreferredOutpostArn }).(pulumi.StringOutput)
   859  }
   860  
   861  // ID of the replication group to which this cluster should belong. If this parameter is specified, the cluster is added to the specified replication group as a read replica; otherwise, the cluster is a standalone primary that is not part of any replication group.
   862  func (o ClusterOutput) ReplicationGroupId() pulumi.StringOutput {
   863  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ReplicationGroupId }).(pulumi.StringOutput)
   864  }
   865  
   866  // One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
   867  func (o ClusterOutput) SecurityGroupIds() pulumi.StringArrayOutput {
   868  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.SecurityGroupIds }).(pulumi.StringArrayOutput)
   869  }
   870  
   871  // Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3. The object name cannot contain any commas. Changing `snapshotArns` forces a new resource.
   872  func (o ClusterOutput) SnapshotArns() pulumi.StringPtrOutput {
   873  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.SnapshotArns }).(pulumi.StringPtrOutput)
   874  }
   875  
   876  // Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
   877  func (o ClusterOutput) SnapshotName() pulumi.StringPtrOutput {
   878  	return o.ApplyT(func(v *Cluster) pulumi.StringPtrOutput { return v.SnapshotName }).(pulumi.StringPtrOutput)
   879  }
   880  
   881  // Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. Please note that setting a `snapshotRetentionLimit` is not supported on cache.t1.micro cache nodes
   882  func (o ClusterOutput) SnapshotRetentionLimit() pulumi.IntPtrOutput {
   883  	return o.ApplyT(func(v *Cluster) pulumi.IntPtrOutput { return v.SnapshotRetentionLimit }).(pulumi.IntPtrOutput)
   884  }
   885  
   886  // Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
   887  func (o ClusterOutput) SnapshotWindow() pulumi.StringOutput {
   888  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.SnapshotWindow }).(pulumi.StringOutput)
   889  }
   890  
   891  // Name of the subnet group to be used for the cache cluster. Changing this value will re-create the resource. Cannot be provided with `replication_group_id.`
   892  func (o ClusterOutput) SubnetGroupName() pulumi.StringOutput {
   893  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.SubnetGroupName }).(pulumi.StringOutput)
   894  }
   895  
   896  // 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.
   897  func (o ClusterOutput) Tags() pulumi.StringMapOutput {
   898  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   899  }
   900  
   901  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   902  //
   903  // Deprecated: Please use `tags` instead.
   904  func (o ClusterOutput) TagsAll() pulumi.StringMapOutput {
   905  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   906  }
   907  
   908  // Enable encryption in-transit. Supported only with Memcached versions `1.6.12` and later, running in a VPC. See the [ElastiCache in-transit encryption](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/in-transit-encryption-mc.html) documentation for more details.
   909  func (o ClusterOutput) TransitEncryptionEnabled() pulumi.BoolOutput {
   910  	return o.ApplyT(func(v *Cluster) pulumi.BoolOutput { return v.TransitEncryptionEnabled }).(pulumi.BoolOutput)
   911  }
   912  
   913  type ClusterArrayOutput struct{ *pulumi.OutputState }
   914  
   915  func (ClusterArrayOutput) ElementType() reflect.Type {
   916  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
   917  }
   918  
   919  func (o ClusterArrayOutput) ToClusterArrayOutput() ClusterArrayOutput {
   920  	return o
   921  }
   922  
   923  func (o ClusterArrayOutput) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
   924  	return o
   925  }
   926  
   927  func (o ClusterArrayOutput) Index(i pulumi.IntInput) ClusterOutput {
   928  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Cluster {
   929  		return vs[0].([]*Cluster)[vs[1].(int)]
   930  	}).(ClusterOutput)
   931  }
   932  
   933  type ClusterMapOutput struct{ *pulumi.OutputState }
   934  
   935  func (ClusterMapOutput) ElementType() reflect.Type {
   936  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
   937  }
   938  
   939  func (o ClusterMapOutput) ToClusterMapOutput() ClusterMapOutput {
   940  	return o
   941  }
   942  
   943  func (o ClusterMapOutput) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
   944  	return o
   945  }
   946  
   947  func (o ClusterMapOutput) MapIndex(k pulumi.StringInput) ClusterOutput {
   948  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Cluster {
   949  		return vs[0].(map[string]*Cluster)[vs[1].(string)]
   950  	}).(ClusterOutput)
   951  }
   952  
   953  func init() {
   954  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterInput)(nil)).Elem(), &Cluster{})
   955  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterArrayInput)(nil)).Elem(), ClusterArray{})
   956  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterMapInput)(nil)).Elem(), ClusterMap{})
   957  	pulumi.RegisterOutputType(ClusterOutput{})
   958  	pulumi.RegisterOutputType(ClusterArrayOutput{})
   959  	pulumi.RegisterOutputType(ClusterMapOutput{})
   960  }