@pulumi/aws
Version:
A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.
641 lines (640 loc) • 38.9 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* Provides an ElastiCache Cluster resource, which manages a Memcached cluster, a single-node Redis instance,
* or a read replica in a Redis (Cluster Mode Enabled) replication group. For more information, refer to
* the AWS document [What is Amazon ElastiCache?](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/WhatIs.html).
*
* For working with Redis (Cluster Mode Enabled) replication groups, see the
* `aws.elasticache.ReplicationGroup` resource.
*
* > **Note:** When you change an attribute, such as `numCacheNodes`, by default
* it is applied in the next maintenance window. Because of this, this provider may report
* a difference in its planning phase because the actual modification has not yet taken
* place. You can use the `applyImmediately` flag to instruct the service to apply the
* change immediately. Using `applyImmediately` can result in a brief downtime as the server reboots.
* See the "Changes take effect" section of the "Details" column in the AWS Documentation on Engine specific parameters for
* [ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html#ParameterGroups.Memcached) or
* [ElastiCache for Valkey and Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html#ParameterGroups.Redis)
* for more information.
*
* > **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `applyImmediately`.
*
* ## Example Usage
*
* ### Memcached Cluster
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const example = new aws.elasticache.Cluster("example", {
* clusterId: "cluster-example",
* engine: "memcached",
* nodeType: "cache.m4.large",
* numCacheNodes: 2,
* parameterGroupName: "default.memcached1.4",
* port: 11211,
* });
* ```
*
* ### Redis Instance
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const example = new aws.elasticache.Cluster("example", {
* clusterId: "cluster-example",
* engine: "redis",
* nodeType: "cache.m4.large",
* numCacheNodes: 1,
* parameterGroupName: "default.redis3.2",
* engineVersion: "3.2.10",
* port: 6379,
* });
* ```
*
* ### Redis Cluster Mode Disabled Read Replica Instance
*
* These inherit their settings from the replication group.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const replica = new aws.elasticache.Cluster("replica", {
* clusterId: "cluster-example",
* replicationGroupId: example.id,
* });
* ```
*
* ### Redis Log Delivery configuration
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const test = new aws.elasticache.Cluster("test", {
* clusterId: "mycluster",
* engine: "redis",
* nodeType: "cache.t3.micro",
* numCacheNodes: 1,
* port: 6379,
* applyImmediately: true,
* logDeliveryConfigurations: [
* {
* destination: example.name,
* destinationType: "cloudwatch-logs",
* logFormat: "text",
* logType: "slow-log",
* },
* {
* destination: exampleAwsKinesisFirehoseDeliveryStream.name,
* destinationType: "kinesis-firehose",
* logFormat: "json",
* logType: "engine-log",
* },
* ],
* });
* ```
*
* ### Elasticache Cluster in Outpost
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const example = aws.outposts.getOutposts({});
* const exampleGetOutpost = example.then(example => aws.outposts.getOutpost({
* id: example.ids?.[0],
* }));
* const exampleVpc = new aws.ec2.Vpc("example", {cidrBlock: "10.0.0.0/16"});
* const exampleSubnet = new aws.ec2.Subnet("example", {
* vpcId: exampleVpc.id,
* cidrBlock: "10.0.1.0/24",
* tags: {
* Name: "my-subnet",
* },
* });
* const exampleSubnetGroup = new aws.elasticache.SubnetGroup("example", {
* name: "my-cache-subnet",
* subnetIds: [exampleSubnet.id],
* });
* const exampleCluster = new aws.elasticache.Cluster("example", {
* clusterId: "cluster-example",
* outpostMode: "single-outpost",
* preferredOutpostArn: exampleGetOutpost.then(exampleGetOutpost => exampleGetOutpost.arn),
* engine: "memcached",
* nodeType: "cache.r5.large",
* numCacheNodes: 2,
* parameterGroupName: "default.memcached1.4",
* port: 11211,
* subnetGroupName: exampleSubnetGroup.name,
* });
* ```
*
* ## Import
*
* Using `pulumi import`, import ElastiCache Clusters using the `cluster_id`. For example:
*
* ```sh
* $ pulumi import aws:elasticache/cluster:Cluster my_cluster my_cluster
* ```
*/
export declare class Cluster extends pulumi.CustomResource {
/**
* Get an existing Cluster resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster;
/**
* Returns true if the given object is an instance of Cluster. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is Cluster;
/**
* 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).
*/
readonly applyImmediately: pulumi.Output<boolean>;
/**
* The ARN of the created ElastiCache Cluster.
*/
readonly arn: pulumi.Output<string>;
/**
* Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
* Only supported for engine type `"redis"` and if the engine version is 6 or higher.
* Defaults to `true`.
*/
readonly autoMinorVersionUpgrade: pulumi.Output<string | undefined>;
/**
* 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.
*/
readonly availabilityZone: pulumi.Output<string>;
/**
* 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`.
*/
readonly azMode: pulumi.Output<string>;
/**
* List of node objects including `id`, `address`, `port` and `availabilityZone`.
*/
readonly cacheNodes: pulumi.Output<outputs.elasticache.ClusterCacheNode[]>;
/**
* (Memcached only) DNS name of the cache cluster without the port appended.
*/
readonly clusterAddress: pulumi.Output<string>;
/**
* Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
*/
readonly clusterId: pulumi.Output<string>;
/**
* (Memcached only) Configuration endpoint to allow host discovery.
*/
readonly configurationEndpoint: pulumi.Output<string>;
/**
* Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` and `valkey`.
*/
readonly engine: pulumi.Output<string>;
/**
* Version number of the cache engine to be used.
* If not set, defaults to the latest version.
* 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.
* When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
* When the version is 6, the major and minor version can be set, e.g., `6.2`,
* or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
* Otherwise, specify the full version desired, e.g., `5.0.6`.
* The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
*/
readonly engineVersion: pulumi.Output<string>;
/**
* Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
*/
readonly engineVersionActual: pulumi.Output<string>;
/**
* Name of your final cluster snapshot. If omitted, no final snapshot will be made.
*/
readonly finalSnapshotIdentifier: pulumi.Output<string | undefined>;
/**
* The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
*/
readonly ipDiscovery: pulumi.Output<string>;
/**
* Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html). See Log Delivery Configuration below for more details.
*/
readonly logDeliveryConfigurations: pulumi.Output<outputs.elasticache.ClusterLogDeliveryConfiguration[] | undefined>;
/**
* Specifies the weekly time range for when maintenance
* on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
* The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
*/
readonly maintenanceWindow: pulumi.Output<string>;
/**
* 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`.
*/
readonly networkType: pulumi.Output<string>;
/**
* The instance class used.
* See AWS documentation for information on [supported node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen) and [guidance on selecting node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.redis).
* See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen-Memcached) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.Mem).
* For Memcached, changing this value will re-create the resource.
*/
readonly nodeType: pulumi.Output<string>;
/**
* ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
*/
readonly notificationTopicArn: pulumi.Output<string | undefined>;
/**
* 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.
*/
readonly numCacheNodes: pulumi.Output<number>;
/**
* 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.
*/
readonly outpostMode: pulumi.Output<string | undefined>;
/**
* The name of the parameter group to associate with this cache cluster.
*/
readonly parameterGroupName: pulumi.Output<string>;
/**
* 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.
*/
readonly port: pulumi.Output<number>;
/**
* 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.
*/
readonly preferredAvailabilityZones: pulumi.Output<string[] | undefined>;
/**
* The outpost ARN in which the cache cluster will be created.
*/
readonly preferredOutpostArn: pulumi.Output<string>;
/**
* Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
*/
readonly region: pulumi.Output<string>;
/**
* 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.
*/
readonly replicationGroupId: pulumi.Output<string>;
/**
* One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
*/
readonly securityGroupIds: pulumi.Output<string[]>;
/**
* 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.
*/
readonly snapshotArns: pulumi.Output<string | undefined>;
/**
* Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
*/
readonly snapshotName: pulumi.Output<string | undefined>;
/**
* 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
*/
readonly snapshotRetentionLimit: pulumi.Output<number | undefined>;
/**
* Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
*/
readonly snapshotWindow: pulumi.Output<string>;
/**
* 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.`
*/
readonly subnetGroupName: pulumi.Output<string>;
/**
* 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.
*/
readonly tags: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
*/
readonly tagsAll: pulumi.Output<{
[key: string]: string;
}>;
/**
* Enable encryption in-transit. Supported with Memcached versions `1.6.12` and later, Valkey `7.2` and later, Redis OSS versions `3.2.6`, `4.0.10` and later, running in a VPC. See the [ElastiCache in-transit encryption documentation](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/in-transit-encryption.html#in-transit-encryption-constraints) for more details.
*/
readonly transitEncryptionEnabled: pulumi.Output<boolean>;
/**
* Create a Cluster resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args?: ClusterArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Cluster resources.
*/
export interface ClusterState {
/**
* 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).
*/
applyImmediately?: pulumi.Input<boolean>;
/**
* The ARN of the created ElastiCache Cluster.
*/
arn?: pulumi.Input<string>;
/**
* Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
* Only supported for engine type `"redis"` and if the engine version is 6 or higher.
* Defaults to `true`.
*/
autoMinorVersionUpgrade?: pulumi.Input<string>;
/**
* 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.
*/
availabilityZone?: pulumi.Input<string>;
/**
* 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`.
*/
azMode?: pulumi.Input<string>;
/**
* List of node objects including `id`, `address`, `port` and `availabilityZone`.
*/
cacheNodes?: pulumi.Input<pulumi.Input<inputs.elasticache.ClusterCacheNode>[]>;
/**
* (Memcached only) DNS name of the cache cluster without the port appended.
*/
clusterAddress?: pulumi.Input<string>;
/**
* Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
*/
clusterId?: pulumi.Input<string>;
/**
* (Memcached only) Configuration endpoint to allow host discovery.
*/
configurationEndpoint?: pulumi.Input<string>;
/**
* Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` and `valkey`.
*/
engine?: pulumi.Input<string>;
/**
* Version number of the cache engine to be used.
* If not set, defaults to the latest version.
* 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.
* When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
* When the version is 6, the major and minor version can be set, e.g., `6.2`,
* or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
* Otherwise, specify the full version desired, e.g., `5.0.6`.
* The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
*/
engineVersion?: pulumi.Input<string>;
/**
* Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the running version of the cache engine.
*/
engineVersionActual?: pulumi.Input<string>;
/**
* Name of your final cluster snapshot. If omitted, no final snapshot will be made.
*/
finalSnapshotIdentifier?: pulumi.Input<string>;
/**
* The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
*/
ipDiscovery?: pulumi.Input<string>;
/**
* Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html). See Log Delivery Configuration below for more details.
*/
logDeliveryConfigurations?: pulumi.Input<pulumi.Input<inputs.elasticache.ClusterLogDeliveryConfiguration>[]>;
/**
* Specifies the weekly time range for when maintenance
* on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
* The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
*/
maintenanceWindow?: pulumi.Input<string>;
/**
* 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`.
*/
networkType?: pulumi.Input<string>;
/**
* The instance class used.
* See AWS documentation for information on [supported node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen) and [guidance on selecting node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.redis).
* See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen-Memcached) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.Mem).
* For Memcached, changing this value will re-create the resource.
*/
nodeType?: pulumi.Input<string>;
/**
* ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
*/
notificationTopicArn?: pulumi.Input<string>;
/**
* 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.
*/
numCacheNodes?: pulumi.Input<number>;
/**
* 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.
*/
outpostMode?: pulumi.Input<string>;
/**
* The name of the parameter group to associate with this cache cluster.
*/
parameterGroupName?: pulumi.Input<string>;
/**
* 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.
*/
port?: pulumi.Input<number>;
/**
* 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.
*/
preferredAvailabilityZones?: pulumi.Input<pulumi.Input<string>[]>;
/**
* The outpost ARN in which the cache cluster will be created.
*/
preferredOutpostArn?: pulumi.Input<string>;
/**
* Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
*/
region?: pulumi.Input<string>;
/**
* 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.
*/
replicationGroupId?: pulumi.Input<string>;
/**
* One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
*/
securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* 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.
*/
snapshotArns?: pulumi.Input<string>;
/**
* Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
*/
snapshotName?: pulumi.Input<string>;
/**
* 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
*/
snapshotRetentionLimit?: pulumi.Input<number>;
/**
* Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
*/
snapshotWindow?: pulumi.Input<string>;
/**
* 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.`
*/
subnetGroupName?: pulumi.Input<string>;
/**
* 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.
*/
tags?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
*/
tagsAll?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* Enable encryption in-transit. Supported with Memcached versions `1.6.12` and later, Valkey `7.2` and later, Redis OSS versions `3.2.6`, `4.0.10` and later, running in a VPC. See the [ElastiCache in-transit encryption documentation](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/in-transit-encryption.html#in-transit-encryption-constraints) for more details.
*/
transitEncryptionEnabled?: pulumi.Input<boolean>;
}
/**
* The set of arguments for constructing a Cluster resource.
*/
export interface ClusterArgs {
/**
* 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).
*/
applyImmediately?: pulumi.Input<boolean>;
/**
* Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
* Only supported for engine type `"redis"` and if the engine version is 6 or higher.
* Defaults to `true`.
*/
autoMinorVersionUpgrade?: pulumi.Input<string>;
/**
* 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.
*/
availabilityZone?: pulumi.Input<string>;
/**
* 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`.
*/
azMode?: pulumi.Input<string>;
/**
* Group identifier. ElastiCache converts this name to lowercase. Changing this value will re-create the resource.
*/
clusterId?: pulumi.Input<string>;
/**
* Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` and `valkey`.
*/
engine?: pulumi.Input<string>;
/**
* Version number of the cache engine to be used.
* If not set, defaults to the latest version.
* 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.
* When `engine` is `redis` and the version is 7 or higher, the major and minor version should be set, e.g., `7.2`.
* When the version is 6, the major and minor version can be set, e.g., `6.2`,
* or the minor version can be unspecified which will use the latest version at creation time, e.g., `6.x`.
* Otherwise, specify the full version desired, e.g., `5.0.6`.
* The actual engine version used is returned in the attribute `engineVersionActual`, see Attribute Reference below. Cannot be provided with `replication_group_id.`
*/
engineVersion?: pulumi.Input<string>;
/**
* Name of your final cluster snapshot. If omitted, no final snapshot will be made.
*/
finalSnapshotIdentifier?: pulumi.Input<string>;
/**
* The IP version to advertise in the discovery protocol. Valid values are `ipv4` or `ipv6`.
*/
ipDiscovery?: pulumi.Input<string>;
/**
* Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Log_Delivery.html). See Log Delivery Configuration below for more details.
*/
logDeliveryConfigurations?: pulumi.Input<pulumi.Input<inputs.elasticache.ClusterLogDeliveryConfiguration>[]>;
/**
* Specifies the weekly time range for when maintenance
* on the cache cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC).
* The minimum maintenance window is a 60 minute period. Example: `sun:05:00-sun:09:00`.
*/
maintenanceWindow?: pulumi.Input<string>;
/**
* 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`.
*/
networkType?: pulumi.Input<string>;
/**
* The instance class used.
* See AWS documentation for information on [supported node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen) and [guidance on selecting node types for Valkey or Redis OSS](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.redis).
* See AWS documentation for information on [supported node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.CurrentGen-Memcached) and [guidance on selecting node types for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html#CacheNodes.SelectSize.Mem).
* For Memcached, changing this value will re-create the resource.
*/
nodeType?: pulumi.Input<string>;
/**
* ARN of an SNS topic to send ElastiCache notifications to. Example: `arn:aws:sns:us-east-1:012345678999:my_sns_topic`.
*/
notificationTopicArn?: pulumi.Input<string>;
/**
* 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.
*/
numCacheNodes?: pulumi.Input<number>;
/**
* 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.
*/
outpostMode?: pulumi.Input<string>;
/**
* The name of the parameter group to associate with this cache cluster.
*/
parameterGroupName?: pulumi.Input<string>;
/**
* 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.
*/
port?: pulumi.Input<number>;
/**
* 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.
*/
preferredAvailabilityZones?: pulumi.Input<pulumi.Input<string>[]>;
/**
* The outpost ARN in which the cache cluster will be created.
*/
preferredOutpostArn?: pulumi.Input<string>;
/**
* Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
*/
region?: pulumi.Input<string>;
/**
* 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.
*/
replicationGroupId?: pulumi.Input<string>;
/**
* One or more VPC security groups associated with the cache cluster. Cannot be provided with `replication_group_id.`
*/
securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* 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.
*/
snapshotArns?: pulumi.Input<string>;
/**
* Name of a snapshot from which to restore data into the new node group. Changing `snapshotName` forces a new resource.
*/
snapshotName?: pulumi.Input<string>;
/**
* 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
*/
snapshotRetentionLimit?: pulumi.Input<number>;
/**
* Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. Example: 05:00-09:00
*/
snapshotWindow?: pulumi.Input<string>;
/**
* 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.`
*/
subnetGroupName?: pulumi.Input<string>;
/**
* 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.
*/
tags?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* Enable encryption in-transit. Supported with Memcached versions `1.6.12` and later, Valkey `7.2` and later, Redis OSS versions `3.2.6`, `4.0.10` and later, running in a VPC. See the [ElastiCache in-transit encryption documentation](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/in-transit-encryption.html#in-transit-encryption-constraints) for more details.
*/
transitEncryptionEnabled?: pulumi.Input<boolean>;
}