-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon ElastiCache SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.ElastiCache</a> or <a>the AWS documentation</a> to
--   get started.
@package amazonka-elasticache
@version 1.4.5


module Network.AWS.ElastiCache.Types

-- | API version <tt>2015-02-02</tt> of the Amazon ElastiCache SDK
--   configuration.
elastiCache :: Service

-- | The requested cache subnet group is currently in use.
_CacheSubnetGroupInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a reservation with the given identifier.
_ReservedCacheNodeAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache security group name does not refer to an existing
--   cache security group.
_CacheSecurityGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache subnet group name is already in use by an existing
--   cache subnet group.
_CacheSubnetGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum of
--   15 node groups (shards) in a single replication group.
_NodeGroupsPerReplicationGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache subnet groups.
_CacheSubnetGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified Amazon EC2 security group is already authorized for the
--   specified cache security group.
_AuthorizationAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the user's
--   cache node quota.
_ReservedCacheNodeQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache node offering does not exist.
_ReservedCacheNodesOfferingNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified replication group does not exist.
_ReplicationGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | An invalid subnet identifier was specified.
_InvalidSubnet :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would cause the resource to
--   have more than the allowed number of tags. The maximum number of tags
--   permitted on a resource is 10.
_TagQuotaPerResourceExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested snapshot name does not refer to an existing snapshot.
_SnapshotNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache node type is not available in the specified
--   Availability Zone.
_InsufficientCacheClusterCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the snapshot does not allow the requested
--   operation to occur.
_InvalidSnapshotStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a snapshot with the given name.
_SnapshotAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested tag was not found on this resource.
_TagNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum
--   number of snapshots.
_SnapshotQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache nodes in a single cache cluster.
_NodeQuotaForClusterExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | A cache parameter group with the requested name already exists.
_CacheParameterGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested reserved cache node was not found.
_ReservedCacheNodeNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache subnet group name does not refer to an existing
--   cache subnet group.
_CacheSubnetGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You attempted one of the following operations:
--   
--   <ul>
--   <li>Creating a snapshot of a Redis cache cluster running on a
--   <tt>cache.t1.micro</tt> cache node.</li>
--   <li>Creating a snapshot of a cache cluster that is running Memcached
--   rather than Redis.</li>
--   </ul>
--   
--   Neither of these are supported by ElastiCache.
_SnapshotFeatureNotSupportedFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The value for a parameter is invalid.
_InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested replication group is not in the <tt>available</tt>
--   state.
_InvalidReplicationGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified replication group already exists.
_ReplicationGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The VPC network is in an invalid state.
_InvalidVPCNetworkStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested subnet is being used by another cache subnet group.
_SubnetInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache cluster ID does not refer to an existing cache
--   cluster.
_CacheClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache clusters per customer.
_ClusterQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified Amazon EC2 security group is not authorized for the
--   specified cache security group.
_AuthorizationNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache cluster is not in the <tt>available</tt> state.
_InvalidCacheClusterStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache security groups.
_CacheSecurityGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a cache cluster with the given identifier.
_CacheClusterAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum
--   number of cache security groups.
_CacheParameterGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache nodes per customer.
_NodeQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of subnets in a cache subnet group.
_CacheSubnetQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache parameter group name does not refer to an existing
--   cache parameter group.
_CacheParameterGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested Amazon Resource Name (ARN) does not refer to an existing
--   resource.
_InvalidARNFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the cache parameter group does not allow the
--   requested operation to occur.
_InvalidCacheParameterGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | Two or more incompatible parameters were specified.
_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the cache security group does not allow deletion.
_InvalidCacheSecurityGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | A cache security group with the specified name already exists.
_CacheSecurityGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
data AZMode
CrossAz :: AZMode
SingleAz :: AZMode
data AutomaticFailoverStatus
AFSDisabled :: AutomaticFailoverStatus
AFSDisabling :: AutomaticFailoverStatus
AFSEnabled :: AutomaticFailoverStatus
AFSEnabling :: AutomaticFailoverStatus
data ChangeType
Immediate :: ChangeType
RequiresReboot :: ChangeType
data PendingAutomaticFailoverStatus
Disabled :: PendingAutomaticFailoverStatus
Enabled :: PendingAutomaticFailoverStatus
data SourceType
CacheCluster :: SourceType
CacheParameterGroup :: SourceType
CacheSecurityGroup :: SourceType
CacheSubnetGroup :: SourceType
ReplicationGroup :: SourceType

-- | Describes an Availability Zone in which the cache cluster is launched.
--   
--   <i>See:</i> <a>availabilityZone</a> smart constructor.
data AvailabilityZone

-- | Creates a value of <a>AvailabilityZone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>azName</a> - The name of the Availability Zone.</li>
--   </ul>
availabilityZone :: AvailabilityZone

-- | The name of the Availability Zone.
azName :: Lens' AvailabilityZone (Maybe Text)

-- | Contains all of the attributes of a specific cache cluster.
--   
--   <i>See:</i> <a>cacheCluster</a> smart constructor.
data CacheCluster

-- | Creates a value of <a>CacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccEngineVersion</a> - The version of the cache engine that is
--   used in this cache cluster.</li>
--   <li><a>ccCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the cache cluster. Valid node types are as
--   follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>ccCacheNodes</a> - A list of cache nodes that are members of
--   the cache cluster.</li>
--   <li><a>ccCacheClusterCreateTime</a> - The date and time when the cache
--   cluster was created.</li>
--   <li><a>ccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>ccSecurityGroups</a> - A list of VPC Security Groups associated
--   with the cache cluster.</li>
--   <li><a>ccNotificationConfiguration</a> - Undocumented member.</li>
--   <li><a>ccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your cache
--   cluster. Example: <tt>05:00-09:00</tt></li>
--   <li><a>ccCacheClusterId</a> - The user-supplied identifier of the
--   cache cluster. This identifier is a unique key that identifies a cache
--   cluster.</li>
--   <li><a>ccConfigurationEndpoint</a> - Undocumented member.</li>
--   <li><a>ccEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) to be used for this cache cluster.</li>
--   <li><a>ccCacheSecurityGroups</a> - A list of cache security group
--   elements, composed of name and status sub-elements.</li>
--   <li><a>ccClientDownloadLandingPage</a> - The URL of the web page where
--   you can download the latest ElastiCache client library.</li>
--   <li><a>ccPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>ccCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the cache cluster.</li>
--   <li><a>ccPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the cache cluster is located or <a>Multiple</a> if the
--   cache nodes are located in different Availability Zones.</li>
--   <li><a>ccCacheParameterGroup</a> - Undocumented member.</li>
--   <li><a>ccCacheClusterStatus</a> - The current state of this cache
--   cluster, one of the following values: <tt>available</tt> ,
--   <tt>creating</tt> , <tt>deleted</tt> , <tt>deleting</tt> ,
--   <tt>incompatible-network</tt> , <tt>modifying</tt> , <tt>rebooting
--   cache cluster nodes</tt> , <tt>restore-failed</tt> , or
--   <tt>snapshotting</tt> .</li>
--   <li><a>ccSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic cache cluster snapshots before deleting
--   them. For example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a
--   snapshot that was taken today is retained for 5 days before being
--   deleted. <i>Important:</i> If the value of SnapshotRetentionLimit is
--   set to zero (0), backups are turned off.</li>
--   <li><a>ccReplicationGroupId</a> - The replication group to which this
--   cache cluster belongs. If this field is empty, the cache cluster is
--   not associated with any replication group.</li>
--   <li><a>ccPendingModifiedValues</a> - Undocumented member.</li>
--   <li><a>ccNumCacheNodes</a> - The number of cache nodes in the cache
--   cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   </ul>
cacheCluster :: CacheCluster

-- | The version of the cache engine that is used in this cache cluster.
ccEngineVersion :: Lens' CacheCluster (Maybe Text)

-- | The name of the compute and memory capacity node type for the cache
--   cluster. Valid node types are as follows: * General purpose: * Current
--   generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
ccCacheNodeType :: Lens' CacheCluster (Maybe Text)

-- | A list of cache nodes that are members of the cache cluster.
ccCacheNodes :: Lens' CacheCluster [CacheNode]

-- | The date and time when the cache cluster was created.
ccCacheClusterCreateTime :: Lens' CacheCluster (Maybe UTCTime)

-- | This parameter is currently disabled.
ccAutoMinorVersionUpgrade :: Lens' CacheCluster (Maybe Bool)

-- | A list of VPC Security Groups associated with the cache cluster.
ccSecurityGroups :: Lens' CacheCluster [SecurityGroupMembership]

-- | Undocumented member.
ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your cache cluster. Example: <tt>05:00-09:00</tt>
ccSnapshotWindow :: Lens' CacheCluster (Maybe Text)

-- | The user-supplied identifier of the cache cluster. This identifier is
--   a unique key that identifies a cache cluster.
ccCacheClusterId :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   to be used for this cache cluster.
ccEngine :: Lens' CacheCluster (Maybe Text)

-- | A list of cache security group elements, composed of name and status
--   sub-elements.
ccCacheSecurityGroups :: Lens' CacheCluster [CacheSecurityGroupMembership]

-- | The URL of the web page where you can download the latest ElastiCache
--   client library.
ccClientDownloadLandingPage :: Lens' CacheCluster (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
ccPreferredMaintenanceWindow :: Lens' CacheCluster (Maybe Text)

-- | The name of the cache subnet group associated with the cache cluster.
ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)

-- | The name of the Availability Zone in which the cache cluster is
--   located or <a>Multiple</a> if the cache nodes are located in different
--   Availability Zones.
ccPreferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)

-- | The current state of this cache cluster, one of the following values:
--   <tt>available</tt> , <tt>creating</tt> , <tt>deleted</tt> ,
--   <tt>deleting</tt> , <tt>incompatible-network</tt> , <tt>modifying</tt>
--   , <tt>rebooting cache cluster nodes</tt> , <tt>restore-failed</tt> ,
--   or <tt>snapshotting</tt> .
ccCacheClusterStatus :: Lens' CacheCluster (Maybe Text)

-- | The number of days for which ElastiCache retains automatic cache
--   cluster snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. <i>Important:</i> If the
--   value of SnapshotRetentionLimit is set to zero (0), backups are turned
--   off.
ccSnapshotRetentionLimit :: Lens' CacheCluster (Maybe Int)

-- | The replication group to which this cache cluster belongs. If this
--   field is empty, the cache cluster is not associated with any
--   replication group.
ccReplicationGroupId :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccPendingModifiedValues :: Lens' CacheCluster (Maybe PendingModifiedValues)

-- | The number of cache nodes in the cache cluster. For clusters running
--   Redis, this value must be 1. For clusters running Memcached, this
--   value must be between 1 and 20.
ccNumCacheNodes :: Lens' CacheCluster (Maybe Int)

-- | Provides all of the details about a particular cache engine version.
--   
--   <i>See:</i> <a>cacheEngineVersion</a> smart constructor.
data CacheEngineVersion

-- | Creates a value of <a>CacheEngineVersion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cevEngineVersion</a> - The version number of the cache
--   engine.</li>
--   <li><a>cevCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family associated with this cache engine. Valid values
--   are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt></li>
--   <li><a>cevCacheEngineDescription</a> - The description of the cache
--   engine.</li>
--   <li><a>cevEngine</a> - The name of the cache engine.</li>
--   <li><a>cevCacheEngineVersionDescription</a> - The description of the
--   cache engine version.</li>
--   </ul>
cacheEngineVersion :: CacheEngineVersion

-- | The version number of the cache engine.
cevEngineVersion :: Lens' CacheEngineVersion (Maybe Text)

-- | The name of the cache parameter group family associated with this
--   cache engine. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt>
cevCacheParameterGroupFamily :: Lens' CacheEngineVersion (Maybe Text)

-- | The description of the cache engine.
cevCacheEngineDescription :: Lens' CacheEngineVersion (Maybe Text)

-- | The name of the cache engine.
cevEngine :: Lens' CacheEngineVersion (Maybe Text)

-- | The description of the cache engine version.
cevCacheEngineVersionDescription :: Lens' CacheEngineVersion (Maybe Text)

-- | Represents an individual cache node within a cache cluster. Each cache
--   node runs its own instance of the cluster's protocol-compliant caching
--   software - either Memcached or Redis.
--   
--   Valid node types are as follows:
--   
--   <ul>
--   <li>General purpose:</li>
--   <li>Current generation: <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> ,
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> ,
--   <tt>cache.m4.large</tt> , <tt>cache.m4.xlarge</tt> ,
--   <tt>cache.m4.2xlarge</tt> , <tt>cache.m4.4xlarge</tt> ,
--   <tt>cache.m4.10xlarge</tt></li>
--   <li>Previous generation: <tt>cache.t1.micro</tt> ,
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt></li>
--   <li>Compute optimized: <tt>cache.c1.xlarge</tt></li>
--   <li>Memory optimized:</li>
--   <li>Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt></li>
--   <li>Previous generation: <tt>cache.m2.xlarge</tt> ,
--   <tt>cache.m2.2xlarge</tt> , <tt>cache.m2.4xlarge</tt></li>
--   </ul>
--   
--   <b>Notes:</b>
--   
--   <ul>
--   <li>All T2 instances are created in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li>Redis backup<i>restore is not supported for Redis (cluster mode
--   disabled) T1 and T2 instances. Backup</i>restore is supported on Redis
--   (cluster mode enabled) T2 instances.</li>
--   <li>Redis Append-only files (AOF) functionality is not supported for
--   T1 or T2 instances.</li>
--   </ul>
--   
--   For a complete listing of node types and specifications, see <a>Amazon
--   ElastiCache Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
--   
--   <i>See:</i> <a>cacheNode</a> smart constructor.
data CacheNode

-- | Creates a value of <a>CacheNode</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnSourceCacheNodeId</a> - The ID of the primary node to which
--   this read replica node is synchronized. If this field is empty, this
--   node is not associated with a primary cache cluster.</li>
--   <li><a>cnParameterGroupStatus</a> - The status of the parameter group
--   applied to this cache node.</li>
--   <li><a>cnCacheNodeCreateTime</a> - The date and time when the cache
--   node was created.</li>
--   <li><a>cnCustomerAvailabilityZone</a> - The Availability Zone where
--   this node was created and now resides.</li>
--   <li><a>cnCacheNodeId</a> - The cache node identifier. A node ID is a
--   numeric identifier (0001, 0002, etc.). The combination of cluster ID
--   and node ID uniquely identifies every cache node used in a customer's
--   AWS account.</li>
--   <li><a>cnCacheNodeStatus</a> - The current state of this cache
--   node.</li>
--   <li><a>cnEndpoint</a> - The hostname for connecting to this cache
--   node.</li>
--   </ul>
cacheNode :: CacheNode

-- | The ID of the primary node to which this read replica node is
--   synchronized. If this field is empty, this node is not associated with
--   a primary cache cluster.
cnSourceCacheNodeId :: Lens' CacheNode (Maybe Text)

-- | The status of the parameter group applied to this cache node.
cnParameterGroupStatus :: Lens' CacheNode (Maybe Text)

-- | The date and time when the cache node was created.
cnCacheNodeCreateTime :: Lens' CacheNode (Maybe UTCTime)

-- | The Availability Zone where this node was created and now resides.
cnCustomerAvailabilityZone :: Lens' CacheNode (Maybe Text)

-- | The cache node identifier. A node ID is a numeric identifier (0001,
--   0002, etc.). The combination of cluster ID and node ID uniquely
--   identifies every cache node used in a customer's AWS account.
cnCacheNodeId :: Lens' CacheNode (Maybe Text)

-- | The current state of this cache node.
cnCacheNodeStatus :: Lens' CacheNode (Maybe Text)

-- | The hostname for connecting to this cache node.
cnEndpoint :: Lens' CacheNode (Maybe Endpoint)

-- | A parameter that has a different value for each cache node type it is
--   applied to. For example, in a Redis cache cluster, a
--   <tt>cache.m1.large</tt> cache node type would have a larger
--   <tt>maxmemory</tt> value than a <tt>cache.m1.small</tt> type.
--   
--   <i>See:</i> <a>cacheNodeTypeSpecificParameter</a> smart constructor.
data CacheNodeTypeSpecificParameter

-- | Creates a value of <a>CacheNodeTypeSpecificParameter</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cntspCacheNodeTypeSpecificValues</a> - A list of cache node
--   types and their corresponding values for this parameter.</li>
--   <li><a>cntspMinimumEngineVersion</a> - The earliest cache engine
--   version to which the parameter can apply.</li>
--   <li><a>cntspSource</a> - The source of the parameter value.</li>
--   <li><a>cntspIsModifiable</a> - Indicates whether (<tt>true</tt> ) or
--   not (<tt>false</tt> ) the parameter can be modified. Some parameters
--   have security or operational implications that prevent them from being
--   changed.</li>
--   <li><a>cntspDataType</a> - The valid data type for the parameter.</li>
--   <li><a>cntspAllowedValues</a> - The valid range of values for the
--   parameter.</li>
--   <li><a>cntspParameterName</a> - The name of the parameter.</li>
--   <li><a>cntspDescription</a> - A description of the parameter.</li>
--   <li><a>cntspChangeType</a> - Indicates whether a change to the
--   parameter is applied immediately or requires a reboot for the change
--   to be applied. You can force a reboot or wait until the next
--   maintenance window's reboot. For more information, see <a>Rebooting a
--   Cluster</a> .</li>
--   </ul>
cacheNodeTypeSpecificParameter :: CacheNodeTypeSpecificParameter

-- | A list of cache node types and their corresponding values for this
--   parameter.
cntspCacheNodeTypeSpecificValues :: Lens' CacheNodeTypeSpecificParameter [CacheNodeTypeSpecificValue]

-- | The earliest cache engine version to which the parameter can apply.
cntspMinimumEngineVersion :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The source of the parameter value.
cntspSource :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | Indicates whether (<tt>true</tt> ) or not (<tt>false</tt> ) the
--   parameter can be modified. Some parameters have security or
--   operational implications that prevent them from being changed.
cntspIsModifiable :: Lens' CacheNodeTypeSpecificParameter (Maybe Bool)

-- | The valid data type for the parameter.
cntspDataType :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The valid range of values for the parameter.
cntspAllowedValues :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The name of the parameter.
cntspParameterName :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | A description of the parameter.
cntspDescription :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | Indicates whether a change to the parameter is applied immediately or
--   requires a reboot for the change to be applied. You can force a reboot
--   or wait until the next maintenance window's reboot. For more
--   information, see <a>Rebooting a Cluster</a> .
cntspChangeType :: Lens' CacheNodeTypeSpecificParameter (Maybe ChangeType)

-- | A value that applies only to a certain cache node type.
--   
--   <i>See:</i> <a>cacheNodeTypeSpecificValue</a> smart constructor.
data CacheNodeTypeSpecificValue

-- | Creates a value of <a>CacheNodeTypeSpecificValue</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cntsvCacheNodeType</a> - The cache node type for which this
--   value applies.</li>
--   <li><a>cntsvValue</a> - The value for the cache node type.</li>
--   </ul>
cacheNodeTypeSpecificValue :: CacheNodeTypeSpecificValue

-- | The cache node type for which this value applies.
cntsvCacheNodeType :: Lens' CacheNodeTypeSpecificValue (Maybe Text)

-- | The value for the cache node type.
cntsvValue :: Lens' CacheNodeTypeSpecificValue (Maybe Text)

-- | Represents the output of a <tt>CreateCacheParameterGroup</tt>
--   operation.
--   
--   <i>See:</i> <a>cacheParameterGroup</a> smart constructor.
data CacheParameterGroup

-- | Creates a value of <a>CacheParameterGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family that this cache parameter group is compatible
--   with. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   <li><a>cpgCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   <li><a>cpgDescription</a> - The description for this cache parameter
--   group.</li>
--   </ul>
cacheParameterGroup :: CacheParameterGroup

-- | The name of the cache parameter group family that this cache parameter
--   group is compatible with. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt>
cpgCacheParameterGroupFamily :: Lens' CacheParameterGroup (Maybe Text)

-- | The name of the cache parameter group.
cpgCacheParameterGroupName :: Lens' CacheParameterGroup (Maybe Text)

-- | The description for this cache parameter group.
cpgDescription :: Lens' CacheParameterGroup (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>ModifyCacheParameterGroup</pre></li>
--   <li><pre>ResetCacheParameterGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheParameterGroupNameMessage</a> smart constructor.
data CacheParameterGroupNameMessage

-- | Creates a value of <a>CacheParameterGroupNameMessage</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgnmCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   </ul>
cacheParameterGroupNameMessage :: CacheParameterGroupNameMessage

-- | The name of the cache parameter group.
cpgnmCacheParameterGroupName :: Lens' CacheParameterGroupNameMessage (Maybe Text)

-- | Status of the cache parameter group.
--   
--   <i>See:</i> <a>cacheParameterGroupStatus</a> smart constructor.
data CacheParameterGroupStatus

-- | Creates a value of <a>CacheParameterGroupStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgsCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   <li><a>cpgsCacheNodeIdsToReboot</a> - A list of the cache node IDs
--   which need to be rebooted for parameter changes to be applied. A node
--   ID is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>cpgsParameterApplyStatus</a> - The status of parameter
--   updates.</li>
--   </ul>
cacheParameterGroupStatus :: CacheParameterGroupStatus

-- | The name of the cache parameter group.
cpgsCacheParameterGroupName :: Lens' CacheParameterGroupStatus (Maybe Text)

-- | A list of the cache node IDs which need to be rebooted for parameter
--   changes to be applied. A node ID is a numeric identifier (0001, 0002,
--   etc.).
cpgsCacheNodeIdsToReboot :: Lens' CacheParameterGroupStatus [Text]

-- | The status of parameter updates.
cpgsParameterApplyStatus :: Lens' CacheParameterGroupStatus (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>AuthorizeCacheSecurityGroupIngress</pre></li>
--   <li><pre>CreateCacheSecurityGroup</pre></li>
--   <li><pre>RevokeCacheSecurityGroupIngress</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheSecurityGroup</a> smart constructor.
data CacheSecurityGroup

-- | Creates a value of <a>CacheSecurityGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgCacheSecurityGroupName</a> - The name of the cache security
--   group.</li>
--   <li><a>csgOwnerId</a> - The AWS account ID of the cache security group
--   owner.</li>
--   <li><a>csgEC2SecurityGroups</a> - A list of Amazon EC2 security groups
--   that are associated with this cache security group.</li>
--   <li><a>csgDescription</a> - The description of the cache security
--   group.</li>
--   </ul>
cacheSecurityGroup :: CacheSecurityGroup

-- | The name of the cache security group.
csgCacheSecurityGroupName :: Lens' CacheSecurityGroup (Maybe Text)

-- | The AWS account ID of the cache security group owner.
csgOwnerId :: Lens' CacheSecurityGroup (Maybe Text)

-- | A list of Amazon EC2 security groups that are associated with this
--   cache security group.
csgEC2SecurityGroups :: Lens' CacheSecurityGroup [EC2SecurityGroup]

-- | The description of the cache security group.
csgDescription :: Lens' CacheSecurityGroup (Maybe Text)

-- | Represents a cache cluster's status within a particular cache security
--   group.
--   
--   <i>See:</i> <a>cacheSecurityGroupMembership</a> smart constructor.
data CacheSecurityGroupMembership

-- | Creates a value of <a>CacheSecurityGroupMembership</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgmStatus</a> - The membership status in the cache security
--   group. The status changes when a cache security group is modified, or
--   when the cache security groups assigned to a cache cluster are
--   modified.</li>
--   <li><a>csgmCacheSecurityGroupName</a> - The name of the cache security
--   group.</li>
--   </ul>
cacheSecurityGroupMembership :: CacheSecurityGroupMembership

-- | The membership status in the cache security group. The status changes
--   when a cache security group is modified, or when the cache security
--   groups assigned to a cache cluster are modified.
csgmStatus :: Lens' CacheSecurityGroupMembership (Maybe Text)

-- | The name of the cache security group.
csgmCacheSecurityGroupName :: Lens' CacheSecurityGroupMembership (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>CreateCacheSubnetGroup</pre></li>
--   <li><pre>ModifyCacheSubnetGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheSubnetGroup</a> smart constructor.
data CacheSubnetGroup

-- | Creates a value of <a>CacheSubnetGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgVPCId</a> - The Amazon Virtual Private Cloud identifier (VPC
--   ID) of the cache subnet group.</li>
--   <li><a>csgSubnets</a> - A list of subnets associated with the cache
--   subnet group.</li>
--   <li><a>csgCacheSubnetGroupName</a> - The name of the cache subnet
--   group.</li>
--   <li><a>csgCacheSubnetGroupDescription</a> - The description of the
--   cache subnet group.</li>
--   </ul>
cacheSubnetGroup :: CacheSubnetGroup

-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache
--   subnet group.
csgVPCId :: Lens' CacheSubnetGroup (Maybe Text)

-- | A list of subnets associated with the cache subnet group.
csgSubnets :: Lens' CacheSubnetGroup [Subnet]

-- | The name of the cache subnet group.
csgCacheSubnetGroupName :: Lens' CacheSubnetGroup (Maybe Text)

-- | The description of the cache subnet group.
csgCacheSubnetGroupDescription :: Lens' CacheSubnetGroup (Maybe Text)

-- | Provides ownership and status information for an Amazon EC2 security
--   group.
--   
--   <i>See:</i> <a>ec2SecurityGroup</a> smart constructor.
data EC2SecurityGroup

-- | Creates a value of <a>EC2SecurityGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>esgStatus</a> - The status of the Amazon EC2 security
--   group.</li>
--   <li><a>esgEC2SecurityGroupOwnerId</a> - The AWS account ID of the
--   Amazon EC2 security group owner.</li>
--   <li><a>esgEC2SecurityGroupName</a> - The name of the Amazon EC2
--   security group.</li>
--   </ul>
ec2SecurityGroup :: EC2SecurityGroup

-- | The status of the Amazon EC2 security group.
esgStatus :: Lens' EC2SecurityGroup (Maybe Text)

-- | The AWS account ID of the Amazon EC2 security group owner.
esgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)

-- | The name of the Amazon EC2 security group.
esgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)

-- | Represents the information required for client programs to connect to
--   a cache node.
--   
--   <i>See:</i> <a>endpoint</a> smart constructor.
data Endpoint

-- | Creates a value of <a>Endpoint</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eAddress</a> - The DNS hostname of the cache node.</li>
--   <li><a>ePort</a> - The port number that the cache engine is listening
--   on.</li>
--   </ul>
endpoint :: Endpoint

-- | The DNS hostname of the cache node.
eAddress :: Lens' Endpoint (Maybe Text)

-- | The port number that the cache engine is listening on.
ePort :: Lens' Endpoint (Maybe Int)

-- | Represents the output of a <tt>DescribeEngineDefaultParameters</tt>
--   operation.
--   
--   <i>See:</i> <a>engineDefaults</a> smart constructor.
data EngineDefaults

-- | Creates a value of <a>EngineDefaults</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edCacheParameterGroupFamily</a> - Specifies the name of the
--   cache parameter group family to which the engine default parameters
--   apply. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   <li><a>edCacheNodeTypeSpecificParameters</a> - A list of parameters
--   specific to a particular cache node type. Each element in the list
--   contains detailed information about one parameter.</li>
--   <li><a>edMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>edParameters</a> - Contains a list of engine default
--   parameters.</li>
--   </ul>
engineDefaults :: EngineDefaults

-- | Specifies the name of the cache parameter group family to which the
--   engine default parameters apply. Valid values are:
--   <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt>
edCacheParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)

-- | A list of parameters specific to a particular cache node type. Each
--   element in the list contains detailed information about one parameter.
edCacheNodeTypeSpecificParameters :: Lens' EngineDefaults [CacheNodeTypeSpecificParameter]

-- | Provides an identifier to allow retrieval of paginated results.
edMarker :: Lens' EngineDefaults (Maybe Text)

-- | Contains a list of engine default parameters.
edParameters :: Lens' EngineDefaults [Parameter]

-- | Represents a single occurrence of something interesting within the
--   system. Some examples of events are creating a cache cluster, adding
--   or removing a cache node, or rebooting a node.
--   
--   <i>See:</i> <a>event</a> smart constructor.
data Event

-- | Creates a value of <a>Event</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eSourceType</a> - Specifies the origin of this event - a cache
--   cluster, a parameter group, a security group, etc.</li>
--   <li><a>eSourceIdentifier</a> - The identifier for the source of the
--   event. For example, if the event occurred at the cache cluster level,
--   the identifier would be the name of the cache cluster.</li>
--   <li><a>eDate</a> - The date and time when the event occurred.</li>
--   <li><a>eMessage</a> - The text of the event.</li>
--   </ul>
event :: Event

-- | Specifies the origin of this event - a cache cluster, a parameter
--   group, a security group, etc.
eSourceType :: Lens' Event (Maybe SourceType)

-- | The identifier for the source of the event. For example, if the event
--   occurred at the cache cluster level, the identifier would be the name
--   of the cache cluster.
eSourceIdentifier :: Lens' Event (Maybe Text)

-- | The date and time when the event occurred.
eDate :: Lens' Event (Maybe UTCTime)

-- | The text of the event.
eMessage :: Lens' Event (Maybe Text)

-- | Represents a collection of cache nodes in a replication group. One
--   node in the node group is the read/write primary node. All the other
--   nodes are read-only Replica nodes.
--   
--   <i>See:</i> <a>nodeGroup</a> smart constructor.
data NodeGroup

-- | Creates a value of <a>NodeGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngStatus</a> - The current state of this replication group -
--   <tt>creating</tt> , <tt>available</tt> , etc.</li>
--   <li><a>ngPrimaryEndpoint</a> - The endpoint of the primary node in
--   this node group (shard).</li>
--   <li><a>ngSlots</a> - The keyspace for this node group (shard).</li>
--   <li><a>ngNodeGroupMembers</a> - A list containing information about
--   individual nodes within the node group (shard).</li>
--   <li><a>ngNodeGroupId</a> - The identifier for the node group (shard).
--   A Redis (cluster mode disabled) replication group contains only 1 node
--   group; therefore, the node group ID is 0001. A Redis (cluster mode
--   enabled) replication group contains 1 to 15 node groups numbered 0001
--   to 0015.</li>
--   </ul>
nodeGroup :: NodeGroup

-- | The current state of this replication group - <tt>creating</tt> ,
--   <tt>available</tt> , etc.
ngStatus :: Lens' NodeGroup (Maybe Text)

-- | The endpoint of the primary node in this node group (shard).
ngPrimaryEndpoint :: Lens' NodeGroup (Maybe Endpoint)

-- | The keyspace for this node group (shard).
ngSlots :: Lens' NodeGroup (Maybe Text)

-- | A list containing information about individual nodes within the node
--   group (shard).
ngNodeGroupMembers :: Lens' NodeGroup [NodeGroupMember]

-- | The identifier for the node group (shard). A Redis (cluster mode
--   disabled) replication group contains only 1 node group; therefore, the
--   node group ID is 0001. A Redis (cluster mode enabled) replication
--   group contains 1 to 15 node groups numbered 0001 to 0015.
ngNodeGroupId :: Lens' NodeGroup (Maybe Text)

-- | node group (shard) configuration options. Each node group (shard)
--   configuration has the following: <tt>Slots</tt> ,
--   <tt>PrimaryAvailabilityZone</tt> , <tt>ReplicaAvailabilityZones</tt> ,
--   <tt>ReplicaCount</tt> .
--   
--   <i>See:</i> <a>nodeGroupConfiguration</a> smart constructor.
data NodeGroupConfiguration

-- | Creates a value of <a>NodeGroupConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngcSlots</a> - A string that specifies the keyspaces as a
--   series of comma separated values. Keyspaces are 0 to 16,383. The
--   string is in the format <tt>startkey-endkey</tt> . Example:
--   <tt>"0-3999"</tt></li>
--   <li><a>ngcReplicaCount</a> - The number of read replica nodes in this
--   node group (shard).</li>
--   <li><a>ngcPrimaryAvailabilityZone</a> - The Availability Zone where
--   the primary node of this node group (shard) is launched.</li>
--   <li><a>ngcReplicaAvailabilityZones</a> - A list of Availability Zones
--   to be used for the read replicas. The number of Availability Zones in
--   this list must match the value of <tt>ReplicaCount</tt> or
--   <tt>ReplicasPerNodeGroup</tt> if not specified.</li>
--   </ul>
nodeGroupConfiguration :: NodeGroupConfiguration

-- | A string that specifies the keyspaces as a series of comma separated
--   values. Keyspaces are 0 to 16,383. The string is in the format
--   <tt>startkey-endkey</tt> . Example: <tt>"0-3999"</tt>
ngcSlots :: Lens' NodeGroupConfiguration (Maybe Text)

-- | The number of read replica nodes in this node group (shard).
ngcReplicaCount :: Lens' NodeGroupConfiguration (Maybe Int)

-- | The Availability Zone where the primary node of this node group
--   (shard) is launched.
ngcPrimaryAvailabilityZone :: Lens' NodeGroupConfiguration (Maybe Text)

-- | A list of Availability Zones to be used for the read replicas. The
--   number of Availability Zones in this list must match the value of
--   <tt>ReplicaCount</tt> or <tt>ReplicasPerNodeGroup</tt> if not
--   specified.
ngcReplicaAvailabilityZones :: Lens' NodeGroupConfiguration [Text]

-- | Represents a single node within a node group (shard).
--   
--   <i>See:</i> <a>nodeGroupMember</a> smart constructor.
data NodeGroupMember

-- | Creates a value of <a>NodeGroupMember</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngmCacheClusterId</a> - The ID of the cache cluster to which
--   the node belongs.</li>
--   <li><a>ngmCacheNodeId</a> - The ID of the node within its cache
--   cluster. A node ID is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>ngmPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the node is located.</li>
--   <li><a>ngmCurrentRole</a> - The role that is currently assigned to the
--   node - <tt>primary</tt> or <tt>replica</tt> .</li>
--   <li><a>ngmReadEndpoint</a> - Undocumented member.</li>
--   </ul>
nodeGroupMember :: NodeGroupMember

-- | The ID of the cache cluster to which the node belongs.
ngmCacheClusterId :: Lens' NodeGroupMember (Maybe Text)

-- | The ID of the node within its cache cluster. A node ID is a numeric
--   identifier (0001, 0002, etc.).
ngmCacheNodeId :: Lens' NodeGroupMember (Maybe Text)

-- | The name of the Availability Zone in which the node is located.
ngmPreferredAvailabilityZone :: Lens' NodeGroupMember (Maybe Text)

-- | The role that is currently assigned to the node - <tt>primary</tt> or
--   <tt>replica</tt> .
ngmCurrentRole :: Lens' NodeGroupMember (Maybe Text)

-- | Undocumented member.
ngmReadEndpoint :: Lens' NodeGroupMember (Maybe Endpoint)

-- | Represents an individual cache node in a snapshot of a cache cluster.
--   
--   <i>See:</i> <a>nodeSnapshot</a> smart constructor.
data NodeSnapshot

-- | Creates a value of <a>NodeSnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nsNodeGroupConfiguration</a> - The configuration for the source
--   node group (shard).</li>
--   <li><a>nsCacheNodeCreateTime</a> - The date and time when the cache
--   node was created in the source cache cluster.</li>
--   <li><a>nsCacheClusterId</a> - A unique identifier for the source cache
--   cluster.</li>
--   <li><a>nsCacheNodeId</a> - The cache node identifier for the node in
--   the source cache cluster.</li>
--   <li><a>nsNodeGroupId</a> - A unique identifier for the source node
--   group (shard).</li>
--   <li><a>nsSnapshotCreateTime</a> - The date and time when the source
--   node's metadata and cache data set was obtained for the snapshot.</li>
--   <li><a>nsCacheSize</a> - The size of the cache on the source cache
--   node.</li>
--   </ul>
nodeSnapshot :: NodeSnapshot

-- | The configuration for the source node group (shard).
nsNodeGroupConfiguration :: Lens' NodeSnapshot (Maybe NodeGroupConfiguration)

-- | The date and time when the cache node was created in the source cache
--   cluster.
nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

-- | A unique identifier for the source cache cluster.
nsCacheClusterId :: Lens' NodeSnapshot (Maybe Text)

-- | The cache node identifier for the node in the source cache cluster.
nsCacheNodeId :: Lens' NodeSnapshot (Maybe Text)

-- | A unique identifier for the source node group (shard).
nsNodeGroupId :: Lens' NodeSnapshot (Maybe Text)

-- | The date and time when the source node's metadata and cache data set
--   was obtained for the snapshot.
nsSnapshotCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

-- | The size of the cache on the source cache node.
nsCacheSize :: Lens' NodeSnapshot (Maybe Text)

-- | Describes a notification topic and its status. Notification topics are
--   used for publishing ElastiCache events to subscribers using Amazon
--   Simple Notification Service (SNS).
--   
--   <i>See:</i> <a>notificationConfiguration</a> smart constructor.
data NotificationConfiguration

-- | Creates a value of <a>NotificationConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ncTopicStatus</a> - The current state of the topic.</li>
--   <li><a>ncTopicARN</a> - The Amazon Resource Name (ARN) that identifies
--   the topic.</li>
--   </ul>
notificationConfiguration :: NotificationConfiguration

-- | The current state of the topic.
ncTopicStatus :: Lens' NotificationConfiguration (Maybe Text)

-- | The Amazon Resource Name (ARN) that identifies the topic.
ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)

-- | Describes an individual setting that controls some aspect of
--   ElastiCache behavior.
--   
--   <i>See:</i> <a>parameter</a> smart constructor.
data Parameter

-- | Creates a value of <a>Parameter</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pParameterValue</a> - The value of the parameter.</li>
--   <li><a>pMinimumEngineVersion</a> - The earliest cache engine version
--   to which the parameter can apply.</li>
--   <li><a>pSource</a> - The source of the parameter.</li>
--   <li><a>pIsModifiable</a> - Indicates whether (<tt>true</tt> ) or not
--   (<tt>false</tt> ) the parameter can be modified. Some parameters have
--   security or operational implications that prevent them from being
--   changed.</li>
--   <li><a>pDataType</a> - The valid data type for the parameter.</li>
--   <li><a>pAllowedValues</a> - The valid range of values for the
--   parameter.</li>
--   <li><a>pParameterName</a> - The name of the parameter.</li>
--   <li><a>pDescription</a> - A description of the parameter.</li>
--   <li><a>pChangeType</a> - Indicates whether a change to the parameter
--   is applied immediately or requires a reboot for the change to be
--   applied. You can force a reboot or wait until the next maintenance
--   window's reboot. For more information, see <a>Rebooting a Cluster</a>
--   .</li>
--   </ul>
parameter :: Parameter

-- | The value of the parameter.
pParameterValue :: Lens' Parameter (Maybe Text)

-- | The earliest cache engine version to which the parameter can apply.
pMinimumEngineVersion :: Lens' Parameter (Maybe Text)

-- | The source of the parameter.
pSource :: Lens' Parameter (Maybe Text)

-- | Indicates whether (<tt>true</tt> ) or not (<tt>false</tt> ) the
--   parameter can be modified. Some parameters have security or
--   operational implications that prevent them from being changed.
pIsModifiable :: Lens' Parameter (Maybe Bool)

-- | The valid data type for the parameter.
pDataType :: Lens' Parameter (Maybe Text)

-- | The valid range of values for the parameter.
pAllowedValues :: Lens' Parameter (Maybe Text)

-- | The name of the parameter.
pParameterName :: Lens' Parameter (Maybe Text)

-- | A description of the parameter.
pDescription :: Lens' Parameter (Maybe Text)

-- | Indicates whether a change to the parameter is applied immediately or
--   requires a reboot for the change to be applied. You can force a reboot
--   or wait until the next maintenance window's reboot. For more
--   information, see <a>Rebooting a Cluster</a> .
pChangeType :: Lens' Parameter (Maybe ChangeType)

-- | Describes a name-value pair that is used to update the value of a
--   parameter.
--   
--   <i>See:</i> <a>parameterNameValue</a> smart constructor.
data ParameterNameValue

-- | Creates a value of <a>ParameterNameValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnvParameterValue</a> - The value of the parameter.</li>
--   <li><a>pnvParameterName</a> - The name of the parameter.</li>
--   </ul>
parameterNameValue :: ParameterNameValue

-- | The value of the parameter.
pnvParameterValue :: Lens' ParameterNameValue (Maybe Text)

-- | The name of the parameter.
pnvParameterName :: Lens' ParameterNameValue (Maybe Text)

-- | A group of settings that are applied to the cache cluster in the
--   future, or that are currently being applied.
--   
--   <i>See:</i> <a>pendingModifiedValues</a> smart constructor.
data PendingModifiedValues

-- | Creates a value of <a>PendingModifiedValues</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmvEngineVersion</a> - The new cache engine version that the
--   cache cluster runs.</li>
--   <li><a>pmvCacheNodeType</a> - The cache node type that this cache
--   cluster or replication group is scaled to.</li>
--   <li><a>pmvCacheNodeIdsToRemove</a> - A list of cache node IDs that are
--   being removed (or will be removed) from the cache cluster. A node ID
--   is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>pmvNumCacheNodes</a> - The new number of cache nodes for the
--   cache cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   </ul>
pendingModifiedValues :: PendingModifiedValues

-- | The new cache engine version that the cache cluster runs.
pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)

-- | The cache node type that this cache cluster or replication group is
--   scaled to.
pmvCacheNodeType :: Lens' PendingModifiedValues (Maybe Text)

-- | A list of cache node IDs that are being removed (or will be removed)
--   from the cache cluster. A node ID is a numeric identifier (0001, 0002,
--   etc.).
pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]

-- | The new number of cache nodes for the cache cluster. For clusters
--   running Redis, this value must be 1. For clusters running Memcached,
--   this value must be between 1 and 20.
pmvNumCacheNodes :: Lens' PendingModifiedValues (Maybe Int)

-- | Contains the specific price and frequency of a recurring charges for a
--   reserved cache node, or for a reserved cache node offering.
--   
--   <i>See:</i> <a>recurringCharge</a> smart constructor.
data RecurringCharge

-- | Creates a value of <a>RecurringCharge</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcRecurringChargeFrequency</a> - The frequency of the recurring
--   charge.</li>
--   <li><a>rcRecurringChargeAmount</a> - The monetary amount of the
--   recurring charge.</li>
--   </ul>
recurringCharge :: RecurringCharge

-- | The frequency of the recurring charge.
rcRecurringChargeFrequency :: Lens' RecurringCharge (Maybe Text)

-- | The monetary amount of the recurring charge.
rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)

-- | Contains all of the attributes of a specific Redis replication group.
--   
--   <i>See:</i> <a>replicationGroup</a> smart constructor.
data ReplicationGroup

-- | Creates a value of <a>ReplicationGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgStatus</a> - The current state of this replication group -
--   <tt>creating</tt> , <tt>available</tt> , <tt>modifying</tt> ,
--   <tt>deleting</tt> , <tt>create-failed</tt> , <tt>snapshotting</tt>
--   .</li>
--   <li><a>rgNodeGroups</a> - A single element list with information about
--   the nodes in the replication group.</li>
--   <li><a>rgSnapshottingClusterId</a> - The cache cluster ID that is used
--   as the daily snapshot source for the replication group.</li>
--   <li><a>rgSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your node group
--   (shard). Example: <tt>05:00-09:00</tt> If you do not specify this
--   parameter, ElastiCache automatically chooses an appropriate time
--   range. <b>Note:</b> This parameter is only valid if the
--   <tt>Engine</tt> parameter is <tt>redis</tt> .</li>
--   <li><a>rgConfigurationEndpoint</a> - The configuration endpoint for
--   this replicaiton group. Use the configuration endpoint to connect to
--   this replication group.</li>
--   <li><a>rgMemberClusters</a> - The names of all the cache clusters that
--   are part of this replication group.</li>
--   <li><a>rgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic cache cluster snapshots before deleting
--   them. For example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a
--   snapshot that was taken today is retained for 5 days before being
--   deleted. <i>Important:</i> If the value of
--   <tt>SnapshotRetentionLimit</tt> is set to zero (0), backups are turned
--   off.</li>
--   <li><a>rgDescription</a> - The description of the replication
--   group.</li>
--   <li><a>rgReplicationGroupId</a> - The identifier for the replication
--   group.</li>
--   <li><a>rgPendingModifiedValues</a> - A group of settings to be applied
--   to the replication group, either immediately or during the next
--   maintenance window.</li>
--   <li><a>rgAutomaticFailover</a> - Indicates the status of Multi-AZ for
--   this replication group.</li>
--   </ul>
replicationGroup :: ReplicationGroup

-- | The current state of this replication group - <tt>creating</tt> ,
--   <tt>available</tt> , <tt>modifying</tt> , <tt>deleting</tt> ,
--   <tt>create-failed</tt> , <tt>snapshotting</tt> .
rgStatus :: Lens' ReplicationGroup (Maybe Text)

-- | A single element list with information about the nodes in the
--   replication group.
rgNodeGroups :: Lens' ReplicationGroup [NodeGroup]

-- | The cache cluster ID that is used as the daily snapshot source for the
--   replication group.
rgSnapshottingClusterId :: Lens' ReplicationGroup (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your node group (shard). Example:
--   <tt>05:00-09:00</tt> If you do not specify this parameter, ElastiCache
--   automatically chooses an appropriate time range. <b>Note:</b> This
--   parameter is only valid if the <tt>Engine</tt> parameter is
--   <tt>redis</tt> .
rgSnapshotWindow :: Lens' ReplicationGroup (Maybe Text)

-- | The configuration endpoint for this replicaiton group. Use the
--   configuration endpoint to connect to this replication group.
rgConfigurationEndpoint :: Lens' ReplicationGroup (Maybe Endpoint)

-- | The names of all the cache clusters that are part of this replication
--   group.
rgMemberClusters :: Lens' ReplicationGroup [Text]

-- | The number of days for which ElastiCache retains automatic cache
--   cluster snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. <i>Important:</i> If the
--   value of <tt>SnapshotRetentionLimit</tt> is set to zero (0), backups
--   are turned off.
rgSnapshotRetentionLimit :: Lens' ReplicationGroup (Maybe Int)

-- | The description of the replication group.
rgDescription :: Lens' ReplicationGroup (Maybe Text)

-- | The identifier for the replication group.
rgReplicationGroupId :: Lens' ReplicationGroup (Maybe Text)

-- | A group of settings to be applied to the replication group, either
--   immediately or during the next maintenance window.
rgPendingModifiedValues :: Lens' ReplicationGroup (Maybe ReplicationGroupPendingModifiedValues)

-- | Indicates the status of Multi-AZ for this replication group.
rgAutomaticFailover :: Lens' ReplicationGroup (Maybe AutomaticFailoverStatus)

-- | The settings to be applied to the Redis replication group, either
--   immediately or during the next maintenance window.
--   
--   <i>See:</i> <a>replicationGroupPendingModifiedValues</a> smart
--   constructor.
data ReplicationGroupPendingModifiedValues

-- | Creates a value of <a>ReplicationGroupPendingModifiedValues</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgpmvPrimaryClusterId</a> - The primary cluster ID that is
--   applied immediately (if <tt>--apply-immediately</tt> was specified),
--   or during the next maintenance window.</li>
--   <li><a>rgpmvAutomaticFailoverStatus</a> - Indicates the status of
--   Multi-AZ for this Redis replication group.</li>
--   </ul>
replicationGroupPendingModifiedValues :: ReplicationGroupPendingModifiedValues

-- | The primary cluster ID that is applied immediately (if
--   <tt>--apply-immediately</tt> was specified), or during the next
--   maintenance window.
rgpmvPrimaryClusterId :: Lens' ReplicationGroupPendingModifiedValues (Maybe Text)

-- | Indicates the status of Multi-AZ for this Redis replication group.
rgpmvAutomaticFailoverStatus :: Lens' ReplicationGroupPendingModifiedValues (Maybe PendingAutomaticFailoverStatus)

-- | Represents the output of a <tt>PurchaseReservedCacheNodesOffering</tt>
--   operation.
--   
--   <i>See:</i> <a>reservedCacheNode</a> smart constructor.
data ReservedCacheNode

-- | Creates a value of <a>ReservedCacheNode</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcnCacheNodeType</a> - The cache node type for the reserved
--   cache nodes. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>rcnState</a> - The state of the reserved cache node.</li>
--   <li><a>rcnStartTime</a> - The time the reservation started.</li>
--   <li><a>rcnProductDescription</a> - The description of the reserved
--   cache node.</li>
--   <li><a>rcnCacheNodeCount</a> - The number of cache nodes that have
--   been reserved.</li>
--   <li><a>rcnReservedCacheNodeId</a> - The unique identifier for the
--   reservation.</li>
--   <li><a>rcnRecurringCharges</a> - The recurring price charged to run
--   this reserved cache node.</li>
--   <li><a>rcnOfferingType</a> - The offering type of this reserved cache
--   node.</li>
--   <li><a>rcnUsagePrice</a> - The hourly price charged for this reserved
--   cache node.</li>
--   <li><a>rcnFixedPrice</a> - The fixed price charged for this reserved
--   cache node.</li>
--   <li><a>rcnDuration</a> - The duration of the reservation in
--   seconds.</li>
--   <li><a>rcnReservedCacheNodesOfferingId</a> - The offering
--   identifier.</li>
--   </ul>
reservedCacheNode :: ReservedCacheNode

-- | The cache node type for the reserved cache nodes. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
rcnCacheNodeType :: Lens' ReservedCacheNode (Maybe Text)

-- | The state of the reserved cache node.
rcnState :: Lens' ReservedCacheNode (Maybe Text)

-- | The time the reservation started.
rcnStartTime :: Lens' ReservedCacheNode (Maybe UTCTime)

-- | The description of the reserved cache node.
rcnProductDescription :: Lens' ReservedCacheNode (Maybe Text)

-- | The number of cache nodes that have been reserved.
rcnCacheNodeCount :: Lens' ReservedCacheNode (Maybe Int)

-- | The unique identifier for the reservation.
rcnReservedCacheNodeId :: Lens' ReservedCacheNode (Maybe Text)

-- | The recurring price charged to run this reserved cache node.
rcnRecurringCharges :: Lens' ReservedCacheNode [RecurringCharge]

-- | The offering type of this reserved cache node.
rcnOfferingType :: Lens' ReservedCacheNode (Maybe Text)

-- | The hourly price charged for this reserved cache node.
rcnUsagePrice :: Lens' ReservedCacheNode (Maybe Double)

-- | The fixed price charged for this reserved cache node.
rcnFixedPrice :: Lens' ReservedCacheNode (Maybe Double)

-- | The duration of the reservation in seconds.
rcnDuration :: Lens' ReservedCacheNode (Maybe Int)

-- | The offering identifier.
rcnReservedCacheNodesOfferingId :: Lens' ReservedCacheNode (Maybe Text)

-- | Describes all of the attributes of a reserved cache node offering.
--   
--   <i>See:</i> <a>reservedCacheNodesOffering</a> smart constructor.
data ReservedCacheNodesOffering

-- | Creates a value of <a>ReservedCacheNodesOffering</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcnoCacheNodeType</a> - The cache node type for the reserved
--   cache node. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>rcnoProductDescription</a> - The cache engine used by the
--   offering.</li>
--   <li><a>rcnoRecurringCharges</a> - The recurring price charged to run
--   this reserved cache node.</li>
--   <li><a>rcnoOfferingType</a> - The offering type.</li>
--   <li><a>rcnoUsagePrice</a> - The hourly price charged for this
--   offering.</li>
--   <li><a>rcnoFixedPrice</a> - The fixed price charged for this
--   offering.</li>
--   <li><a>rcnoDuration</a> - The duration of the offering. in
--   seconds.</li>
--   <li><a>rcnoReservedCacheNodesOfferingId</a> - A unique identifier for
--   the reserved cache node offering.</li>
--   </ul>
reservedCacheNodesOffering :: ReservedCacheNodesOffering

-- | The cache node type for the reserved cache node. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
rcnoCacheNodeType :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The cache engine used by the offering.
rcnoProductDescription :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The recurring price charged to run this reserved cache node.
rcnoRecurringCharges :: Lens' ReservedCacheNodesOffering [RecurringCharge]

-- | The offering type.
rcnoOfferingType :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The hourly price charged for this offering.
rcnoUsagePrice :: Lens' ReservedCacheNodesOffering (Maybe Double)

-- | The fixed price charged for this offering.
rcnoFixedPrice :: Lens' ReservedCacheNodesOffering (Maybe Double)

-- | The duration of the offering. in seconds.
rcnoDuration :: Lens' ReservedCacheNodesOffering (Maybe Int)

-- | A unique identifier for the reserved cache node offering.
rcnoReservedCacheNodesOfferingId :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | Represents a single cache security group and its status.
--   
--   <i>See:</i> <a>securityGroupMembership</a> smart constructor.
data SecurityGroupMembership

-- | Creates a value of <a>SecurityGroupMembership</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgmStatus</a> - The status of the cache security group
--   membership. The status changes whenever a cache security group is
--   modified, or when the cache security groups assigned to a cache
--   cluster are modified.</li>
--   <li><a>sgmSecurityGroupId</a> - The identifier of the cache security
--   group.</li>
--   </ul>
securityGroupMembership :: SecurityGroupMembership

-- | The status of the cache security group membership. The status changes
--   whenever a cache security group is modified, or when the cache
--   security groups assigned to a cache cluster are modified.
sgmStatus :: Lens' SecurityGroupMembership (Maybe Text)

-- | The identifier of the cache security group.
sgmSecurityGroupId :: Lens' SecurityGroupMembership (Maybe Text)

-- | Represents a copy of an entire Redis cache cluster as of the time when
--   the snapshot was taken.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEngineVersion</a> - The version of the cache engine version
--   that is used by the source cache cluster.</li>
--   <li><a>sCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the source cache cluster. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>sCacheClusterCreateTime</a> - The date and time when the source
--   cache cluster was created.</li>
--   <li><a>sAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>sCacheParameterGroupName</a> - The cache parameter group that
--   is associated with the source cache cluster.</li>
--   <li><a>sReplicationGroupDescription</a> - A description of the source
--   replication group.</li>
--   <li><a>sVPCId</a> - The Amazon Virtual Private Cloud identifier (VPC
--   ID) of the cache subnet group for the source cache cluster.</li>
--   <li><a>sSnapshotStatus</a> - The status of the snapshot. Valid values:
--   <tt>creating</tt> | <tt>available</tt> | <tt>restoring</tt> |
--   <tt>copying</tt> | <tt>deleting</tt> .</li>
--   <li><a>sSnapshotWindow</a> - The daily time range during which
--   ElastiCache takes daily snapshots of the source cache cluster.</li>
--   <li><a>sCacheClusterId</a> - The user-supplied identifier of the
--   source cache cluster.</li>
--   <li><a>sEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) used by the source cache cluster.</li>
--   <li><a>sPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>sTopicARN</a> - The Amazon Resource Name (ARN) for the topic
--   used by the source cache cluster for publishing notifications.</li>
--   <li><a>sNodeSnapshots</a> - A list of the cache nodes in the source
--   cache cluster.</li>
--   <li><a>sCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the source cache cluster.</li>
--   <li><a>sPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the source cache cluster is located.</li>
--   <li><a>sNumNodeGroups</a> - The number of node groups (shards) in this
--   snapshot. When restoring from a snapshot, the number of node groups
--   (shards) in the snapshot and in the restored replication group must be
--   the same.</li>
--   <li><a>sSnapshotRetentionLimit</a> - For an automatic snapshot, the
--   number of days for which ElastiCache retains the snapshot before
--   deleting it. For manual snapshots, this field reflects the
--   <tt>SnapshotRetentionLimit</tt> for the source cache cluster when the
--   snapshot was created. This field is otherwise ignored: Manual
--   snapshots do not expire, and can only be deleted using the
--   <tt>DeleteSnapshot</tt> operation. <b>Important</b> If the value of
--   SnapshotRetentionLimit is set to zero (0), backups are turned
--   off.</li>
--   <li><a>sSnapshotName</a> - The name of a snapshot. For an automatic
--   snapshot, the name is system-generated. For a manual snapshot, this is
--   the user-provided name.</li>
--   <li><a>sReplicationGroupId</a> - The unique identifier of the source
--   replication group.</li>
--   <li><a>sNumCacheNodes</a> - The number of cache nodes in the source
--   cache cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   <li><a>sPort</a> - The port number used by each cache nodes in the
--   source cache cluster.</li>
--   <li><a>sAutomaticFailover</a> - Indicates the status of Multi-AZ for
--   the source replication group.</li>
--   <li><a>sSnapshotSource</a> - Indicates whether the snapshot is from an
--   automatic backup (<tt>automated</tt> ) or was created manually
--   (<tt>manual</tt> ).</li>
--   </ul>
snapshot :: Snapshot

-- | The version of the cache engine version that is used by the source
--   cache cluster.
sEngineVersion :: Lens' Snapshot (Maybe Text)

-- | The name of the compute and memory capacity node type for the source
--   cache cluster. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
sCacheNodeType :: Lens' Snapshot (Maybe Text)

-- | The date and time when the source cache cluster was created.
sCacheClusterCreateTime :: Lens' Snapshot (Maybe UTCTime)

-- | This parameter is currently disabled.
sAutoMinorVersionUpgrade :: Lens' Snapshot (Maybe Bool)

-- | The cache parameter group that is associated with the source cache
--   cluster.
sCacheParameterGroupName :: Lens' Snapshot (Maybe Text)

-- | A description of the source replication group.
sReplicationGroupDescription :: Lens' Snapshot (Maybe Text)

-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache
--   subnet group for the source cache cluster.
sVPCId :: Lens' Snapshot (Maybe Text)

-- | The status of the snapshot. Valid values: <tt>creating</tt> |
--   <tt>available</tt> | <tt>restoring</tt> | <tt>copying</tt> |
--   <tt>deleting</tt> .
sSnapshotStatus :: Lens' Snapshot (Maybe Text)

-- | The daily time range during which ElastiCache takes daily snapshots of
--   the source cache cluster.
sSnapshotWindow :: Lens' Snapshot (Maybe Text)

-- | The user-supplied identifier of the source cache cluster.
sCacheClusterId :: Lens' Snapshot (Maybe Text)

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   used by the source cache cluster.
sEngine :: Lens' Snapshot (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
sPreferredMaintenanceWindow :: Lens' Snapshot (Maybe Text)

-- | The Amazon Resource Name (ARN) for the topic used by the source cache
--   cluster for publishing notifications.
sTopicARN :: Lens' Snapshot (Maybe Text)

-- | A list of the cache nodes in the source cache cluster.
sNodeSnapshots :: Lens' Snapshot [NodeSnapshot]

-- | The name of the cache subnet group associated with the source cache
--   cluster.
sCacheSubnetGroupName :: Lens' Snapshot (Maybe Text)

-- | The name of the Availability Zone in which the source cache cluster is
--   located.
sPreferredAvailabilityZone :: Lens' Snapshot (Maybe Text)

-- | The number of node groups (shards) in this snapshot. When restoring
--   from a snapshot, the number of node groups (shards) in the snapshot
--   and in the restored replication group must be the same.
sNumNodeGroups :: Lens' Snapshot (Maybe Int)

-- | For an automatic snapshot, the number of days for which ElastiCache
--   retains the snapshot before deleting it. For manual snapshots, this
--   field reflects the <tt>SnapshotRetentionLimit</tt> for the source
--   cache cluster when the snapshot was created. This field is otherwise
--   ignored: Manual snapshots do not expire, and can only be deleted using
--   the <tt>DeleteSnapshot</tt> operation. <b>Important</b> If the value
--   of SnapshotRetentionLimit is set to zero (0), backups are turned off.
sSnapshotRetentionLimit :: Lens' Snapshot (Maybe Int)

-- | The name of a snapshot. For an automatic snapshot, the name is
--   system-generated. For a manual snapshot, this is the user-provided
--   name.
sSnapshotName :: Lens' Snapshot (Maybe Text)

-- | The unique identifier of the source replication group.
sReplicationGroupId :: Lens' Snapshot (Maybe Text)

-- | The number of cache nodes in the source cache cluster. For clusters
--   running Redis, this value must be 1. For clusters running Memcached,
--   this value must be between 1 and 20.
sNumCacheNodes :: Lens' Snapshot (Maybe Int)

-- | The port number used by each cache nodes in the source cache cluster.
sPort :: Lens' Snapshot (Maybe Int)

-- | Indicates the status of Multi-AZ for the source replication group.
sAutomaticFailover :: Lens' Snapshot (Maybe AutomaticFailoverStatus)

-- | Indicates whether the snapshot is from an automatic backup
--   (<tt>automated</tt> ) or was created manually (<tt>manual</tt> ).
sSnapshotSource :: Lens' Snapshot (Maybe Text)

-- | Represents the subnet associated with a cache cluster. This parameter
--   refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC)
--   and used with ElastiCache.
--   
--   <i>See:</i> <a>subnet</a> smart constructor.
data Subnet

-- | Creates a value of <a>Subnet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sSubnetIdentifier</a> - The unique identifier for the
--   subnet.</li>
--   <li><a>sSubnetAvailabilityZone</a> - The Availability Zone associated
--   with the subnet.</li>
--   </ul>
subnet :: Subnet

-- | The unique identifier for the subnet.
sSubnetIdentifier :: Lens' Subnet (Maybe Text)

-- | The Availability Zone associated with the subnet.
sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)

-- | A cost allocation Tag that can be added to an ElastiCache cluster or
--   replication group. Tags are composed of a Key/Value pair. A tag with a
--   null Value is permitted.
--   
--   <i>See:</i> <a>tag</a> smart constructor.
data Tag

-- | Creates a value of <a>Tag</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tagValue</a> - The tag's value. May not be null.</li>
--   <li><a>tagKey</a> - The key for the tag.</li>
--   </ul>
tag :: Tag

-- | The tag's value. May not be null.
tagValue :: Lens' Tag (Maybe Text)

-- | The key for the tag.
tagKey :: Lens' Tag (Maybe Text)

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsOnResource</tt> , and <tt>RemoveTagsFromResource</tt>
--   operations.
--   
--   <i>See:</i> <a>tagListMessage</a> smart constructor.
data TagListMessage

-- | Creates a value of <a>TagListMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlmTagList</a> - A list of cost allocation tags as key-value
--   pairs.</li>
--   </ul>
tagListMessage :: TagListMessage

-- | A list of cost allocation tags as key-value pairs.
tlmTagList :: Lens' TagListMessage [Tag]


-- | Revokes ingress from a cache security group. Use this operation to
--   disallow access from an Amazon EC2 security group that had been
--   previously authorized.
module Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress

-- | Creates a value of <a>RevokeCacheSecurityGroupIngress</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcsgiCacheSecurityGroupName</a> - The name of the cache
--   security group to revoke ingress from.</li>
--   <li><a>rcsgiEC2SecurityGroupName</a> - The name of the Amazon EC2
--   security group to revoke access from.</li>
--   <li><a>rcsgiEC2SecurityGroupOwnerId</a> - The AWS account number of
--   the Amazon EC2 security group owner. Note that this is not the same
--   thing as an AWS access key ID - you must provide a valid AWS account
--   number for this parameter.</li>
--   </ul>
revokeCacheSecurityGroupIngress :: Text -> Text -> Text -> RevokeCacheSecurityGroupIngress

-- | Represents the input of a <tt>RevokeCacheSecurityGroupIngress</tt>
--   operation.
--   
--   <i>See:</i> <a>revokeCacheSecurityGroupIngress</a> smart constructor.
data RevokeCacheSecurityGroupIngress

-- | The name of the cache security group to revoke ingress from.
rcsgiCacheSecurityGroupName :: Lens' RevokeCacheSecurityGroupIngress Text

-- | The name of the Amazon EC2 security group to revoke access from.
rcsgiEC2SecurityGroupName :: Lens' RevokeCacheSecurityGroupIngress Text

-- | The AWS account number of the Amazon EC2 security group owner. Note
--   that this is not the same thing as an AWS access key ID - you must
--   provide a valid AWS account number for this parameter.
rcsgiEC2SecurityGroupOwnerId :: Lens' RevokeCacheSecurityGroupIngress Text

-- | Creates a value of <a>RevokeCacheSecurityGroupIngressResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcsgirsCacheSecurityGroup</a> - Undocumented member.</li>
--   <li><a>rcsgirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
revokeCacheSecurityGroupIngressResponse :: Int -> RevokeCacheSecurityGroupIngressResponse

-- | <i>See:</i> <a>revokeCacheSecurityGroupIngressResponse</a> smart
--   constructor.
data RevokeCacheSecurityGroupIngressResponse

-- | Undocumented member.
rcsgirsCacheSecurityGroup :: Lens' RevokeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rcsgirsResponseStatus :: Lens' RevokeCacheSecurityGroupIngressResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
instance Data.Data.Data Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
instance GHC.Show.Show Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
instance GHC.Read.Read Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Data.Data.Data Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance GHC.Show.Show Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance GHC.Read.Read Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance GHC.Classes.Eq Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngress
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse


-- | Modifies the parameters of a cache parameter group to the engine or
--   system default value. You can reset specific parameters by submitting
--   a list of parameter names. To reset the entire cache parameter group,
--   specify the <tt>ResetAllParameters</tt> and
--   <tt>CacheParameterGroupName</tt> parameters.
module Network.AWS.ElastiCache.ResetCacheParameterGroup

-- | Creates a value of <a>ResetCacheParameterGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcpgResetAllParameters</a> - If <tt>true</tt> , all parameters
--   in the cache parameter group are reset to their default values. If
--   <tt>false</tt> , only the parameters listed by
--   <tt>ParameterNameValues</tt> are reset to their default values. Valid
--   values: <tt>true</tt> | <tt>false</tt></li>
--   <li><a>rcpgParameterNameValues</a> - An array of parameter names to
--   reset to their default values. If <tt>ResetAllParameters</tt> is
--   <tt>true</tt> , do not use <tt>ParameterNameValues</tt> . If
--   <tt>ResetAllParameters</tt> is <tt>false</tt> , you must specify the
--   name of at least one parameter to reset.</li>
--   <li><a>rcpgCacheParameterGroupName</a> - The name of the cache
--   parameter group to reset.</li>
--   </ul>
resetCacheParameterGroup :: Text -> ResetCacheParameterGroup

-- | Represents the input of a <tt>ResetCacheParameterGroup</tt> operation.
--   
--   <i>See:</i> <a>resetCacheParameterGroup</a> smart constructor.
data ResetCacheParameterGroup

-- | If <tt>true</tt> , all parameters in the cache parameter group are
--   reset to their default values. If <tt>false</tt> , only the parameters
--   listed by <tt>ParameterNameValues</tt> are reset to their default
--   values. Valid values: <tt>true</tt> | <tt>false</tt>
rcpgResetAllParameters :: Lens' ResetCacheParameterGroup (Maybe Bool)

-- | An array of parameter names to reset to their default values. If
--   <tt>ResetAllParameters</tt> is <tt>true</tt> , do not use
--   <tt>ParameterNameValues</tt> . If <tt>ResetAllParameters</tt> is
--   <tt>false</tt> , you must specify the name of at least one parameter
--   to reset.
rcpgParameterNameValues :: Lens' ResetCacheParameterGroup [ParameterNameValue]

-- | The name of the cache parameter group to reset.
rcpgCacheParameterGroupName :: Lens' ResetCacheParameterGroup Text

-- | Creates a value of <a>CacheParameterGroupNameMessage</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgnmCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   </ul>
cacheParameterGroupNameMessage :: CacheParameterGroupNameMessage

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>ModifyCacheParameterGroup</pre></li>
--   <li><pre>ResetCacheParameterGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheParameterGroupNameMessage</a> smart constructor.
data CacheParameterGroupNameMessage

-- | The name of the cache parameter group.
cpgnmCacheParameterGroupName :: Lens' CacheParameterGroupNameMessage (Maybe Text)
instance GHC.Generics.Generic Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Data.Data.Data Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance GHC.Show.Show Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance GHC.Read.Read Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ResetCacheParameterGroup.ResetCacheParameterGroup


-- | Removes the tags identified by the <tt>TagKeys</tt> list from the
--   named resource.
module Network.AWS.ElastiCache.RemoveTagsFromResource

-- | Creates a value of <a>RemoveTagsFromResource</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtfrResourceName</a> - The Amazon Resource Name (ARN) of the
--   resource from which you want the tags removed, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .</li>
--   <li><a>rtfrTagKeys</a> - A list of <tt>TagKeys</tt> identifying the
--   tags you want removed from the named resource.</li>
--   </ul>
removeTagsFromResource :: Text -> RemoveTagsFromResource

-- | Represents the input of a <tt>RemoveTagsFromResource</tt> operation.
--   
--   <i>See:</i> <a>removeTagsFromResource</a> smart constructor.
data RemoveTagsFromResource

-- | The Amazon Resource Name (ARN) of the resource from which you want the
--   tags removed, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .
rtfrResourceName :: Lens' RemoveTagsFromResource Text

-- | A list of <tt>TagKeys</tt> identifying the tags you want removed from
--   the named resource.
rtfrTagKeys :: Lens' RemoveTagsFromResource [Text]

-- | Creates a value of <a>TagListMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlmTagList</a> - A list of cost allocation tags as key-value
--   pairs.</li>
--   </ul>
tagListMessage :: TagListMessage

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsOnResource</tt> , and <tt>RemoveTagsFromResource</tt>
--   operations.
--   
--   <i>See:</i> <a>tagListMessage</a> smart constructor.
data TagListMessage

-- | A list of cost allocation tags as key-value pairs.
tlmTagList :: Lens' TagListMessage [Tag]
instance GHC.Generics.Generic Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Data.Data.Data Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance GHC.Show.Show Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance GHC.Read.Read Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance GHC.Classes.Eq Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.RemoveTagsFromResource.RemoveTagsFromResource


-- | Reboots some, or all, of the cache nodes within a provisioned cache
--   cluster. This operation applies any modified cache parameter groups to
--   the cache cluster. The reboot operation takes place as soon as
--   possible, and results in a momentary outage to the cache cluster.
--   During the reboot, the cache cluster status is set to REBOOTING.
--   
--   The reboot causes the contents of the cache (for each cache node being
--   rebooted) to be lost.
--   
--   When the reboot is complete, a cache cluster event is created.
module Network.AWS.ElastiCache.RebootCacheCluster

-- | Creates a value of <a>RebootCacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rccCacheClusterId</a> - The cache cluster identifier. This
--   parameter is stored as a lowercase string.</li>
--   <li><a>rccCacheNodeIdsToReboot</a> - A list of cache node IDs to
--   reboot. A node ID is a numeric identifier (0001, 0002, etc.). To
--   reboot an entire cache cluster, specify all of the cache node
--   IDs.</li>
--   </ul>
rebootCacheCluster :: Text -> RebootCacheCluster

-- | Represents the input of a <tt>RebootCacheCluster</tt> operation.
--   
--   <i>See:</i> <a>rebootCacheCluster</a> smart constructor.
data RebootCacheCluster

-- | The cache cluster identifier. This parameter is stored as a lowercase
--   string.
rccCacheClusterId :: Lens' RebootCacheCluster Text

-- | A list of cache node IDs to reboot. A node ID is a numeric identifier
--   (0001, 0002, etc.). To reboot an entire cache cluster, specify all of
--   the cache node IDs.
rccCacheNodeIdsToReboot :: Lens' RebootCacheCluster [Text]

-- | Creates a value of <a>RebootCacheClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rccrsCacheCluster</a> - Undocumented member.</li>
--   <li><a>rccrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
rebootCacheClusterResponse :: Int -> RebootCacheClusterResponse

-- | <i>See:</i> <a>rebootCacheClusterResponse</a> smart constructor.
data RebootCacheClusterResponse

-- | Undocumented member.
rccrsCacheCluster :: Lens' RebootCacheClusterResponse (Maybe CacheCluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rccrsResponseStatus :: Lens' RebootCacheClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
instance Data.Data.Data Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
instance GHC.Show.Show Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
instance GHC.Read.Read Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Data.Data.Data Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance GHC.Show.Show Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance GHC.Read.Read Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance GHC.Classes.Eq Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse


-- | Allows you to purchase a reserved cache node offering.
module Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering

-- | Creates a value of <a>PurchaseReservedCacheNodesOffering</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prcnoCacheNodeCount</a> - The number of cache node instances to
--   reserve. Default: <tt>1</tt></li>
--   <li><a>prcnoReservedCacheNodeId</a> - A customer-specified identifier
--   to track this reservation. Example: myreservationID</li>
--   <li><a>prcnoReservedCacheNodesOfferingId</a> - The ID of the reserved
--   cache node offering to purchase. Example:
--   <tt>438012d3-4052-4cc7-b2e3-8d3372e0e706</tt></li>
--   </ul>
purchaseReservedCacheNodesOffering :: Text -> PurchaseReservedCacheNodesOffering

-- | Represents the input of a <tt>PurchaseReservedCacheNodesOffering</tt>
--   operation.
--   
--   <i>See:</i> <a>purchaseReservedCacheNodesOffering</a> smart
--   constructor.
data PurchaseReservedCacheNodesOffering

-- | The number of cache node instances to reserve. Default: <tt>1</tt>
prcnoCacheNodeCount :: Lens' PurchaseReservedCacheNodesOffering (Maybe Int)

-- | A customer-specified identifier to track this reservation. Example:
--   myreservationID
prcnoReservedCacheNodeId :: Lens' PurchaseReservedCacheNodesOffering (Maybe Text)

-- | The ID of the reserved cache node offering to purchase. Example:
--   <tt>438012d3-4052-4cc7-b2e3-8d3372e0e706</tt>
prcnoReservedCacheNodesOfferingId :: Lens' PurchaseReservedCacheNodesOffering Text

-- | Creates a value of <a>PurchaseReservedCacheNodesOfferingResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prcnorsReservedCacheNode</a> - Undocumented member.</li>
--   <li><a>prcnorsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
purchaseReservedCacheNodesOfferingResponse :: Int -> PurchaseReservedCacheNodesOfferingResponse

-- | <i>See:</i> <a>purchaseReservedCacheNodesOfferingResponse</a> smart
--   constructor.
data PurchaseReservedCacheNodesOfferingResponse

-- | Undocumented member.
prcnorsReservedCacheNode :: Lens' PurchaseReservedCacheNodesOfferingResponse (Maybe ReservedCacheNode)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
prcnorsResponseStatus :: Lens' PurchaseReservedCacheNodesOfferingResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
instance Data.Data.Data Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
instance GHC.Show.Show Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
instance GHC.Read.Read Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Data.Data.Data Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance GHC.Show.Show Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance GHC.Read.Read Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance GHC.Classes.Eq Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOffering
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse


-- | Modifies the settings for a replication group.
--   
--   <i>Important:</i> Due to current limitations on Redis (cluster mode
--   disabled), this operation or parameter is not supported on Redis
--   (cluster mode enabled) replication groups.
module Network.AWS.ElastiCache.ModifyReplicationGroup

-- | Creates a value of <a>ModifyReplicationGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mrgAutomaticFailoverEnabled</a> - Determines whether a read
--   replica is automatically promoted to read/write primary if the
--   existing primary encounters a failure. Valid values: <tt>true</tt> |
--   <tt>false</tt></li>
--   <li><a>mrgEngineVersion</a> - The upgraded version of the cache engine
--   to be run on the cache clusters in the replication group.
--   <b>Important:</b> You can upgrade to a newer engine version (see
--   <a>Selecting a Cache Engine and Version</a> ), but you cannot
--   downgrade to an earlier engine version. If you want to use an earlier
--   engine version, you must delete the existing replication group and
--   create it anew with the earlier engine version.</li>
--   <li><a>mrgCacheNodeType</a> - A valid cache node type that you want to
--   scale this replication group to.</li>
--   <li><a>mrgSnapshottingClusterId</a> - The cache cluster ID that is
--   used as the daily snapshot source for the replication group. This
--   parameter cannot be set for Redis (cluster mode enabled) replication
--   groups.</li>
--   <li><a>mrgSecurityGroupIds</a> - Specifies the VPC Security Groups
--   associated with the cache clusters in the replication group. This
--   parameter can be used only with replication group containing cache
--   clusters running in an Amazon Virtual Private Cloud (Amazon VPC).</li>
--   <li><a>mrgAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>mrgCacheParameterGroupName</a> - The name of the cache
--   parameter group to apply to all of the clusters in this replication
--   group. This change is asynchronously applied as soon as possible for
--   parameters when the <tt>ApplyImmediately</tt> parameter is specified
--   as <tt>true</tt> for this request.</li>
--   <li><a>mrgReplicationGroupDescription</a> - A description for the
--   replication group. Maximum length is 255 characters.</li>
--   <li><a>mrgSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of the node group
--   (shard) specified by <tt>SnapshottingClusterId</tt> . Example:
--   <tt>05:00-09:00</tt> If you do not specify this parameter, ElastiCache
--   automatically chooses an appropriate time range.</li>
--   <li><a>mrgPrimaryClusterId</a> - For replication groups with a single
--   primary, if this parameter is specified, ElastiCache promotes the
--   specified cluster in the specified replication group to the primary
--   role. The nodes of all other clusters in the replication group are
--   read replicas.</li>
--   <li><a>mrgPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>mrgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic node group (shard) snapshots before
--   deleting them. For example, if you set <tt>SnapshotRetentionLimit</tt>
--   to 5, a snapshot that was taken today is retained for 5 days before
--   being deleted. <b>Important</b> If the value of SnapshotRetentionLimit
--   is set to zero (0), backups are turned off.</li>
--   <li><a>mrgNotificationTopicStatus</a> - The status of the Amazon SNS
--   notification topic for the replication group. Notifications are sent
--   only if the status is <tt>active</tt> . Valid values: <tt>active</tt>
--   | <tt>inactive</tt></li>
--   <li><a>mrgApplyImmediately</a> - If <tt>true</tt> , this parameter
--   causes the modifications in this request and any pending modifications
--   to be applied, asynchronously and as soon as possible, regardless of
--   the <tt>PreferredMaintenanceWindow</tt> setting for the replication
--   group. If <tt>false</tt> , changes to the nodes in the replication
--   group are applied on the next maintenance reboot, or the next failure
--   reboot, whichever occurs first. Valid values: <tt>true</tt> |
--   <tt>false</tt> Default: <tt>false</tt></li>
--   <li><a>mrgNotificationTopicARN</a> - The Amazon Resource Name (ARN) of
--   the Amazon SNS topic to which notifications are sent.</li>
--   <li><a>mrgCacheSecurityGroupNames</a> - A list of cache security group
--   names to authorize for the clusters in this replication group. This
--   change is asynchronously applied as soon as possible. This parameter
--   can be used only with replication group containing cache clusters
--   running outside of an Amazon Virtual Private Cloud (Amazon VPC).
--   Constraints: Must contain no more than 255 alphanumeric characters.
--   Must not be <tt>Default</tt> .</li>
--   <li><a>mrgReplicationGroupId</a> - The identifier of the replication
--   group to modify.</li>
--   </ul>
modifyReplicationGroup :: Text -> ModifyReplicationGroup

-- | Represents the input of a <tt>ModifyReplicationGroups</tt> operation.
--   
--   <i>See:</i> <a>modifyReplicationGroup</a> smart constructor.
data ModifyReplicationGroup

-- | Determines whether a read replica is automatically promoted to
--   read/write primary if the existing primary encounters a failure. Valid
--   values: <tt>true</tt> | <tt>false</tt>
mrgAutomaticFailoverEnabled :: Lens' ModifyReplicationGroup (Maybe Bool)

-- | The upgraded version of the cache engine to be run on the cache
--   clusters in the replication group. <b>Important:</b> You can upgrade
--   to a newer engine version (see <a>Selecting a Cache Engine and
--   Version</a> ), but you cannot downgrade to an earlier engine version.
--   If you want to use an earlier engine version, you must delete the
--   existing replication group and create it anew with the earlier engine
--   version.
mrgEngineVersion :: Lens' ModifyReplicationGroup (Maybe Text)

-- | A valid cache node type that you want to scale this replication group
--   to.
mrgCacheNodeType :: Lens' ModifyReplicationGroup (Maybe Text)

-- | The cache cluster ID that is used as the daily snapshot source for the
--   replication group. This parameter cannot be set for Redis (cluster
--   mode enabled) replication groups.
mrgSnapshottingClusterId :: Lens' ModifyReplicationGroup (Maybe Text)

-- | Specifies the VPC Security Groups associated with the cache clusters
--   in the replication group. This parameter can be used only with
--   replication group containing cache clusters running in an Amazon
--   Virtual Private Cloud (Amazon VPC).
mrgSecurityGroupIds :: Lens' ModifyReplicationGroup [Text]

-- | This parameter is currently disabled.
mrgAutoMinorVersionUpgrade :: Lens' ModifyReplicationGroup (Maybe Bool)

-- | The name of the cache parameter group to apply to all of the clusters
--   in this replication group. This change is asynchronously applied as
--   soon as possible for parameters when the <tt>ApplyImmediately</tt>
--   parameter is specified as <tt>true</tt> for this request.
mrgCacheParameterGroupName :: Lens' ModifyReplicationGroup (Maybe Text)

-- | A description for the replication group. Maximum length is 255
--   characters.
mrgReplicationGroupDescription :: Lens' ModifyReplicationGroup (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of the node group (shard) specified by
--   <tt>SnapshottingClusterId</tt> . Example: <tt>05:00-09:00</tt> If you
--   do not specify this parameter, ElastiCache automatically chooses an
--   appropriate time range.
mrgSnapshotWindow :: Lens' ModifyReplicationGroup (Maybe Text)

-- | For replication groups with a single primary, if this parameter is
--   specified, ElastiCache promotes the specified cluster in the specified
--   replication group to the primary role. The nodes of all other clusters
--   in the replication group are read replicas.
mrgPrimaryClusterId :: Lens' ModifyReplicationGroup (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
mrgPreferredMaintenanceWindow :: Lens' ModifyReplicationGroup (Maybe Text)

-- | The number of days for which ElastiCache retains automatic node group
--   (shard) snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. <b>Important</b> If the
--   value of SnapshotRetentionLimit is set to zero (0), backups are turned
--   off.
mrgSnapshotRetentionLimit :: Lens' ModifyReplicationGroup (Maybe Int)

-- | The status of the Amazon SNS notification topic for the replication
--   group. Notifications are sent only if the status is <tt>active</tt> .
--   Valid values: <tt>active</tt> | <tt>inactive</tt>
mrgNotificationTopicStatus :: Lens' ModifyReplicationGroup (Maybe Text)

-- | If <tt>true</tt> , this parameter causes the modifications in this
--   request and any pending modifications to be applied, asynchronously
--   and as soon as possible, regardless of the
--   <tt>PreferredMaintenanceWindow</tt> setting for the replication group.
--   If <tt>false</tt> , changes to the nodes in the replication group are
--   applied on the next maintenance reboot, or the next failure reboot,
--   whichever occurs first. Valid values: <tt>true</tt> | <tt>false</tt>
--   Default: <tt>false</tt>
mrgApplyImmediately :: Lens' ModifyReplicationGroup (Maybe Bool)

-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which
--   notifications are sent.
mrgNotificationTopicARN :: Lens' ModifyReplicationGroup (Maybe Text)

-- | A list of cache security group names to authorize for the clusters in
--   this replication group. This change is asynchronously applied as soon
--   as possible. This parameter can be used only with replication group
--   containing cache clusters running outside of an Amazon Virtual Private
--   Cloud (Amazon VPC). Constraints: Must contain no more than 255
--   alphanumeric characters. Must not be <tt>Default</tt> .
mrgCacheSecurityGroupNames :: Lens' ModifyReplicationGroup [Text]

-- | The identifier of the replication group to modify.
mrgReplicationGroupId :: Lens' ModifyReplicationGroup Text

-- | Creates a value of <a>ModifyReplicationGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mrgrsReplicationGroup</a> - Undocumented member.</li>
--   <li><a>mrgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
modifyReplicationGroupResponse :: Int -> ModifyReplicationGroupResponse

-- | <i>See:</i> <a>modifyReplicationGroupResponse</a> smart constructor.
data ModifyReplicationGroupResponse

-- | Undocumented member.
mrgrsReplicationGroup :: Lens' ModifyReplicationGroupResponse (Maybe ReplicationGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
mrgrsResponseStatus :: Lens' ModifyReplicationGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Data.Data.Data Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse


-- | Modifies an existing cache subnet group.
module Network.AWS.ElastiCache.ModifyCacheSubnetGroup

-- | Creates a value of <a>ModifyCacheSubnetGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcsgSubnetIds</a> - The EC2 subnet IDs for the cache subnet
--   group.</li>
--   <li><a>mcsgCacheSubnetGroupDescription</a> - A description of the
--   cache subnet group.</li>
--   <li><a>mcsgCacheSubnetGroupName</a> - The name for the cache subnet
--   group. This value is stored as a lowercase string. Constraints: Must
--   contain no more than 255 alphanumeric characters or hyphens. Example:
--   <tt>mysubnetgroup</tt></li>
--   </ul>
modifyCacheSubnetGroup :: Text -> ModifyCacheSubnetGroup

-- | Represents the input of a <tt>ModifyCacheSubnetGroup</tt> operation.
--   
--   <i>See:</i> <a>modifyCacheSubnetGroup</a> smart constructor.
data ModifyCacheSubnetGroup

-- | The EC2 subnet IDs for the cache subnet group.
mcsgSubnetIds :: Lens' ModifyCacheSubnetGroup [Text]

-- | A description of the cache subnet group.
mcsgCacheSubnetGroupDescription :: Lens' ModifyCacheSubnetGroup (Maybe Text)

-- | The name for the cache subnet group. This value is stored as a
--   lowercase string. Constraints: Must contain no more than 255
--   alphanumeric characters or hyphens. Example: <tt>mysubnetgroup</tt>
mcsgCacheSubnetGroupName :: Lens' ModifyCacheSubnetGroup Text

-- | Creates a value of <a>ModifyCacheSubnetGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcsgrsCacheSubnetGroup</a> - Undocumented member.</li>
--   <li><a>mcsgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
modifyCacheSubnetGroupResponse :: Int -> ModifyCacheSubnetGroupResponse

-- | <i>See:</i> <a>modifyCacheSubnetGroupResponse</a> smart constructor.
data ModifyCacheSubnetGroupResponse

-- | Undocumented member.
mcsgrsCacheSubnetGroup :: Lens' ModifyCacheSubnetGroupResponse (Maybe CacheSubnetGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
mcsgrsResponseStatus :: Lens' ModifyCacheSubnetGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Data.Data.Data Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse


-- | Modifies the parameters of a cache parameter group. You can modify up
--   to 20 parameters in a single request by submitting a list parameter
--   name and value pairs.
module Network.AWS.ElastiCache.ModifyCacheParameterGroup

-- | Creates a value of <a>ModifyCacheParameterGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcpgCacheParameterGroupName</a> - The name of the cache
--   parameter group to modify.</li>
--   <li><a>mcpgParameterNameValues</a> - An array of parameter names and
--   values for the parameter update. You must supply at least one
--   parameter name and value; subsequent arguments are optional. A maximum
--   of 20 parameters may be modified per request.</li>
--   </ul>
modifyCacheParameterGroup :: Text -> ModifyCacheParameterGroup

-- | Represents the input of a <tt>ModifyCacheParameterGroup</tt>
--   operation.
--   
--   <i>See:</i> <a>modifyCacheParameterGroup</a> smart constructor.
data ModifyCacheParameterGroup

-- | The name of the cache parameter group to modify.
mcpgCacheParameterGroupName :: Lens' ModifyCacheParameterGroup Text

-- | An array of parameter names and values for the parameter update. You
--   must supply at least one parameter name and value; subsequent
--   arguments are optional. A maximum of 20 parameters may be modified per
--   request.
mcpgParameterNameValues :: Lens' ModifyCacheParameterGroup [ParameterNameValue]

-- | Creates a value of <a>CacheParameterGroupNameMessage</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgnmCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   </ul>
cacheParameterGroupNameMessage :: CacheParameterGroupNameMessage

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>ModifyCacheParameterGroup</pre></li>
--   <li><pre>ResetCacheParameterGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheParameterGroupNameMessage</a> smart constructor.
data CacheParameterGroupNameMessage

-- | The name of the cache parameter group.
cpgnmCacheParameterGroupName :: Lens' CacheParameterGroupNameMessage (Maybe Text)
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Data.Data.Data Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ModifyCacheParameterGroup.ModifyCacheParameterGroup


-- | Modifies the settings for a cache cluster. You can use this operation
--   to change one or more cluster configuration parameters by specifying
--   the parameters and the new values.
module Network.AWS.ElastiCache.ModifyCacheCluster

-- | Creates a value of <a>ModifyCacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mccEngineVersion</a> - The upgraded version of the cache engine
--   to be run on the cache nodes. <b>Important:</b> You can upgrade to a
--   newer engine version (see <a>Selecting a Cache Engine and Version</a>
--   ), but you cannot downgrade to an earlier engine version. If you want
--   to use an earlier engine version, you must delete the existing cache
--   cluster and create it anew with the earlier engine version.</li>
--   <li><a>mccCacheNodeType</a> - A valid cache node type that you want to
--   scale this cache cluster up to.</li>
--   <li><a>mccSecurityGroupIds</a> - Specifies the VPC Security Groups
--   associated with the cache cluster. This parameter can be used only
--   with clusters that are created in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li><a>mccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>mccCacheParameterGroupName</a> - The name of the cache
--   parameter group to apply to this cache cluster. This change is
--   asynchronously applied as soon as possible for parameters when the
--   <tt>ApplyImmediately</tt> parameter is specified as <tt>true</tt> for
--   this request.</li>
--   <li><a>mccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your cache
--   cluster.</li>
--   <li><a>mccNewAvailabilityZones</a> - The list of Availability Zones
--   where the new Memcached cache nodes are created. This parameter is
--   only valid when <tt>NumCacheNodes</tt> in the request is greater than
--   the sum of the number of active cache nodes and the number of cache
--   nodes pending creation (which may be zero). The number of Availability
--   Zones supplied in this list must match the cache nodes being added in
--   this request. This option is only supported on Memcached clusters.
--   Scenarios: * <b>Scenario 1:</b> You have 3 active nodes and wish to
--   add 2 nodes. Specify <tt>NumCacheNodes=5</tt> (3 + 2) and optionally
--   specify two Availability Zones for the two new nodes. * <b>Scenario
--   2:</b> You have 3 active nodes and 2 nodes pending creation (from the
--   scenario 1 call) and want to add 1 more node. Specify
--   <tt>NumCacheNodes=6</tt> ((3 + 2) + 1) and optionally specify an
--   Availability Zone for the new node. * <b>Scenario 3:</b> You want to
--   cancel all pending operations. Specify <tt>NumCacheNodes=3</tt> to
--   cancel all pending operations. The Availability Zone placement of
--   nodes pending creation cannot be modified. If you wish to cancel any
--   nodes pending creation, add 0 nodes by setting <tt>NumCacheNodes</tt>
--   to the number of current nodes. If <tt>cross-az</tt> is specified,
--   existing Memcached nodes remain in their current Availability Zone.
--   Only newly created nodes can be located in different Availability
--   Zones. For guidance on how to move existing Memcached nodes to
--   different Availability Zones, see the <b>Availability Zone
--   Considerations</b> section of <a>Cache Node Considerations for
--   Memcached</a> . <b>Impact of new add/remove requests upon pending
--   requests</b> * Scenario-1 * Pending Action: Delete * New Request:
--   Delete * Result: The new delete, pending or immediate, replaces the
--   pending delete. * Scenario-2 * Pending Action: Delete * New Request:
--   Create * Result: The new create, pending or immediate, replaces the
--   pending delete. * Scenario-3 * Pending Action: Create * New Request:
--   Delete * Result: The new delete, pending or immediate, replaces the
--   pending create. * Scenario-4 * Pending Action: Create * New Request:
--   Create * Result: The new create is added to the pending create.
--   <i>Important:</i> <b>Important:</b> If the new create request is
--   <b>Apply Immediately - Yes</b> , all creates are performed
--   immediately. If the new create request is <b>Apply Immediately -
--   No</b> , all creates are pending.</li>
--   <li><a>mccPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>mccCacheNodeIdsToRemove</a> - A list of cache node IDs to be
--   removed. A node ID is a numeric identifier (0001, 0002, etc.). This
--   parameter is only valid when <tt>NumCacheNodes</tt> is less than the
--   existing number of cache nodes. The number of cache node IDs supplied
--   in this parameter must match the difference between the existing
--   number of cache nodes in the cluster or pending cache nodes, whichever
--   is greater, and the value of <tt>NumCacheNodes</tt> in the request.
--   For example: If you have 3 active cache nodes, 7 pending cache nodes,
--   and the number of cache nodes in this <tt>ModifyCacheCluser</tt> call
--   is 5, you must list 2 (7 - 5) cache node IDs to remove.</li>
--   <li><a>mccSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic cache cluster snapshots before deleting
--   them. For example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a
--   snapshot that was taken today is retained for 5 days before being
--   deleted.</li>
--   <li><a>mccNotificationTopicStatus</a> - The status of the Amazon SNS
--   notification topic. Notifications are sent only if the status is
--   <tt>active</tt> . Valid values: <tt>active</tt> |
--   <tt>inactive</tt></li>
--   <li><a>mccAZMode</a> - Specifies whether the new nodes in this
--   Memcached cache cluster are all created in a single Availability Zone
--   or created across multiple Availability Zones. Valid values:
--   <tt>single-az</tt> | <tt>cross-az</tt> . This option is only supported
--   for Memcached cache clusters.</li>
--   <li><a>mccApplyImmediately</a> - If <tt>true</tt> , this parameter
--   causes the modifications in this request and any pending modifications
--   to be applied, asynchronously and as soon as possible, regardless of
--   the <tt>PreferredMaintenanceWindow</tt> setting for the cache cluster.
--   If <tt>false</tt> , changes to the cache cluster are applied on the
--   next maintenance reboot, or the next failure reboot, whichever occurs
--   first. <i>Important:</i> If you perform a <tt>ModifyCacheCluster</tt>
--   before a pending modification is applied, the pending modification is
--   replaced by the newer modification. Valid values: <tt>true</tt> |
--   <tt>false</tt> Default: <tt>false</tt></li>
--   <li><a>mccNotificationTopicARN</a> - The Amazon Resource Name (ARN) of
--   the Amazon SNS topic to which notifications are sent.</li>
--   <li><a>mccNumCacheNodes</a> - The number of cache nodes that the cache
--   cluster should have. If the value for <tt>NumCacheNodes</tt> is
--   greater than the sum of the number of current cache nodes and the
--   number of cache nodes pending creation (which may be zero), more nodes
--   are added. If the value is less than the number of existing cache
--   nodes, nodes are removed. If the value is equal to the number of
--   current cache nodes, any pending add or remove requests are canceled.
--   If you are removing cache nodes, you must use the
--   <tt>CacheNodeIdsToRemove</tt> parameter to provide the IDs of the
--   specific cache nodes to remove. For clusters running Redis, this value
--   must be 1. For clusters running Memcached, this value must be between
--   1 and 20.</li>
--   <li><a>mccCacheSecurityGroupNames</a> - A list of cache security group
--   names to authorize on this cache cluster. This change is
--   asynchronously applied as soon as possible. You can use this parameter
--   only with clusters that are created outside of an Amazon Virtual
--   Private Cloud (Amazon VPC). Constraints: Must contain no more than 255
--   alphanumeric characters. Must not be <a>Default</a>.</li>
--   <li><a>mccCacheClusterId</a> - The cache cluster identifier. This
--   value is stored as a lowercase string.</li>
--   </ul>
modifyCacheCluster :: Text -> ModifyCacheCluster

-- | Represents the input of a <tt>ModifyCacheCluster</tt> operation.
--   
--   <i>See:</i> <a>modifyCacheCluster</a> smart constructor.
data ModifyCacheCluster

-- | The upgraded version of the cache engine to be run on the cache nodes.
--   <b>Important:</b> You can upgrade to a newer engine version (see
--   <a>Selecting a Cache Engine and Version</a> ), but you cannot
--   downgrade to an earlier engine version. If you want to use an earlier
--   engine version, you must delete the existing cache cluster and create
--   it anew with the earlier engine version.
mccEngineVersion :: Lens' ModifyCacheCluster (Maybe Text)

-- | A valid cache node type that you want to scale this cache cluster up
--   to.
mccCacheNodeType :: Lens' ModifyCacheCluster (Maybe Text)

-- | Specifies the VPC Security Groups associated with the cache cluster.
--   This parameter can be used only with clusters that are created in an
--   Amazon Virtual Private Cloud (Amazon VPC).
mccSecurityGroupIds :: Lens' ModifyCacheCluster [Text]

-- | This parameter is currently disabled.
mccAutoMinorVersionUpgrade :: Lens' ModifyCacheCluster (Maybe Bool)

-- | The name of the cache parameter group to apply to this cache cluster.
--   This change is asynchronously applied as soon as possible for
--   parameters when the <tt>ApplyImmediately</tt> parameter is specified
--   as <tt>true</tt> for this request.
mccCacheParameterGroupName :: Lens' ModifyCacheCluster (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your cache cluster.
mccSnapshotWindow :: Lens' ModifyCacheCluster (Maybe Text)

-- | The list of Availability Zones where the new Memcached cache nodes are
--   created. This parameter is only valid when <tt>NumCacheNodes</tt> in
--   the request is greater than the sum of the number of active cache
--   nodes and the number of cache nodes pending creation (which may be
--   zero). The number of Availability Zones supplied in this list must
--   match the cache nodes being added in this request. This option is only
--   supported on Memcached clusters. Scenarios: * <b>Scenario 1:</b> You
--   have 3 active nodes and wish to add 2 nodes. Specify
--   <tt>NumCacheNodes=5</tt> (3 + 2) and optionally specify two
--   Availability Zones for the two new nodes. * <b>Scenario 2:</b> You
--   have 3 active nodes and 2 nodes pending creation (from the scenario 1
--   call) and want to add 1 more node. Specify <tt>NumCacheNodes=6</tt>
--   ((3 + 2) + 1) and optionally specify an Availability Zone for the new
--   node. * <b>Scenario 3:</b> You want to cancel all pending operations.
--   Specify <tt>NumCacheNodes=3</tt> to cancel all pending operations. The
--   Availability Zone placement of nodes pending creation cannot be
--   modified. If you wish to cancel any nodes pending creation, add 0
--   nodes by setting <tt>NumCacheNodes</tt> to the number of current
--   nodes. If <tt>cross-az</tt> is specified, existing Memcached nodes
--   remain in their current Availability Zone. Only newly created nodes
--   can be located in different Availability Zones. For guidance on how to
--   move existing Memcached nodes to different Availability Zones, see the
--   <b>Availability Zone Considerations</b> section of <a>Cache Node
--   Considerations for Memcached</a> . <b>Impact of new add/remove
--   requests upon pending requests</b> * Scenario-1 * Pending Action:
--   Delete * New Request: Delete * Result: The new delete, pending or
--   immediate, replaces the pending delete. * Scenario-2 * Pending Action:
--   Delete * New Request: Create * Result: The new create, pending or
--   immediate, replaces the pending delete. * Scenario-3 * Pending Action:
--   Create * New Request: Delete * Result: The new delete, pending or
--   immediate, replaces the pending create. * Scenario-4 * Pending Action:
--   Create * New Request: Create * Result: The new create is added to the
--   pending create. <i>Important:</i> <b>Important:</b> If the new create
--   request is <b>Apply Immediately - Yes</b> , all creates are performed
--   immediately. If the new create request is <b>Apply Immediately -
--   No</b> , all creates are pending.
mccNewAvailabilityZones :: Lens' ModifyCacheCluster [Text]

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
mccPreferredMaintenanceWindow :: Lens' ModifyCacheCluster (Maybe Text)

-- | A list of cache node IDs to be removed. A node ID is a numeric
--   identifier (0001, 0002, etc.). This parameter is only valid when
--   <tt>NumCacheNodes</tt> is less than the existing number of cache
--   nodes. The number of cache node IDs supplied in this parameter must
--   match the difference between the existing number of cache nodes in the
--   cluster or pending cache nodes, whichever is greater, and the value of
--   <tt>NumCacheNodes</tt> in the request. For example: If you have 3
--   active cache nodes, 7 pending cache nodes, and the number of cache
--   nodes in this <tt>ModifyCacheCluser</tt> call is 5, you must list 2 (7
--   - 5) cache node IDs to remove.
mccCacheNodeIdsToRemove :: Lens' ModifyCacheCluster [Text]

-- | The number of days for which ElastiCache retains automatic cache
--   cluster snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted.
mccSnapshotRetentionLimit :: Lens' ModifyCacheCluster (Maybe Int)

-- | The status of the Amazon SNS notification topic. Notifications are
--   sent only if the status is <tt>active</tt> . Valid values:
--   <tt>active</tt> | <tt>inactive</tt>
mccNotificationTopicStatus :: Lens' ModifyCacheCluster (Maybe Text)

-- | Specifies whether the new nodes in this Memcached cache cluster are
--   all created in a single Availability Zone or created across multiple
--   Availability Zones. Valid values: <tt>single-az</tt> |
--   <tt>cross-az</tt> . This option is only supported for Memcached cache
--   clusters.
mccAZMode :: Lens' ModifyCacheCluster (Maybe AZMode)

-- | If <tt>true</tt> , this parameter causes the modifications in this
--   request and any pending modifications to be applied, asynchronously
--   and as soon as possible, regardless of the
--   <tt>PreferredMaintenanceWindow</tt> setting for the cache cluster. If
--   <tt>false</tt> , changes to the cache cluster are applied on the next
--   maintenance reboot, or the next failure reboot, whichever occurs
--   first. <i>Important:</i> If you perform a <tt>ModifyCacheCluster</tt>
--   before a pending modification is applied, the pending modification is
--   replaced by the newer modification. Valid values: <tt>true</tt> |
--   <tt>false</tt> Default: <tt>false</tt>
mccApplyImmediately :: Lens' ModifyCacheCluster (Maybe Bool)

-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which
--   notifications are sent.
mccNotificationTopicARN :: Lens' ModifyCacheCluster (Maybe Text)

-- | The number of cache nodes that the cache cluster should have. If the
--   value for <tt>NumCacheNodes</tt> is greater than the sum of the number
--   of current cache nodes and the number of cache nodes pending creation
--   (which may be zero), more nodes are added. If the value is less than
--   the number of existing cache nodes, nodes are removed. If the value is
--   equal to the number of current cache nodes, any pending add or remove
--   requests are canceled. If you are removing cache nodes, you must use
--   the <tt>CacheNodeIdsToRemove</tt> parameter to provide the IDs of the
--   specific cache nodes to remove. For clusters running Redis, this value
--   must be 1. For clusters running Memcached, this value must be between
--   1 and 20.
mccNumCacheNodes :: Lens' ModifyCacheCluster (Maybe Int)

-- | A list of cache security group names to authorize on this cache
--   cluster. This change is asynchronously applied as soon as possible.
--   You can use this parameter only with clusters that are created outside
--   of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must
--   contain no more than 255 alphanumeric characters. Must not be
--   <a>Default</a>.
mccCacheSecurityGroupNames :: Lens' ModifyCacheCluster [Text]

-- | The cache cluster identifier. This value is stored as a lowercase
--   string.
mccCacheClusterId :: Lens' ModifyCacheCluster Text

-- | Creates a value of <a>ModifyCacheClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mccrsCacheCluster</a> - Undocumented member.</li>
--   <li><a>mccrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
modifyCacheClusterResponse :: Int -> ModifyCacheClusterResponse

-- | <i>See:</i> <a>modifyCacheClusterResponse</a> smart constructor.
data ModifyCacheClusterResponse

-- | Undocumented member.
mccrsCacheCluster :: Lens' ModifyCacheClusterResponse (Maybe CacheCluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
mccrsResponseStatus :: Lens' ModifyCacheClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
instance Data.Data.Data Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Data.Data.Data Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance GHC.Show.Show Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance GHC.Read.Read Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance GHC.Classes.Eq Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse


-- | Lists all cost allocation tags currently on the named resource. A
--   <tt>cost allocation tag</tt> is a key-value pair where the key is
--   case-sensitive and the value is optional. You can use cost allocation
--   tags to categorize and track your AWS costs.
--   
--   You can have a maximum of 10 cost allocation tags on an ElastiCache
--   resource. For more information, see <a>Using Cost Allocation Tags in
--   Amazon ElastiCache</a> .
module Network.AWS.ElastiCache.ListTagsForResource

-- | Creates a value of <a>ListTagsForResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltfrResourceName</a> - The Amazon Resource Name (ARN) of the
--   resource for which you want the list of tags, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .</li>
--   </ul>
listTagsForResource :: Text -> ListTagsForResource

-- | The input parameters for the <tt>ListTagsForResource</tt> operation.
--   
--   <i>See:</i> <a>listTagsForResource</a> smart constructor.
data ListTagsForResource

-- | The Amazon Resource Name (ARN) of the resource for which you want the
--   list of tags, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .
ltfrResourceName :: Lens' ListTagsForResource Text

-- | Creates a value of <a>TagListMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlmTagList</a> - A list of cost allocation tags as key-value
--   pairs.</li>
--   </ul>
tagListMessage :: TagListMessage

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsOnResource</tt> , and <tt>RemoveTagsFromResource</tt>
--   operations.
--   
--   <i>See:</i> <a>tagListMessage</a> smart constructor.
data TagListMessage

-- | A list of cost allocation tags as key-value pairs.
tlmTagList :: Lens' TagListMessage [Tag]
instance GHC.Generics.Generic Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Data.Data.Data Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance GHC.Show.Show Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance GHC.Read.Read Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance GHC.Classes.Eq Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ListTagsForResource.ListTagsForResource


-- | Lists all available node types that you can scale your Redis cluster's
--   or replication group's current node type up to.
--   
--   When you use the <tt>ModifyCacheCluster</tt> or
--   <tt>ModifyReplicationGroup</tt> operations to scale up your cluster or
--   replication group, the value of the <tt>CacheNodeType</tt> parameter
--   must be one of the node types returned by this operation.
module Network.AWS.ElastiCache.ListAllowedNodeTypeModifications

-- | Creates a value of <a>ListAllowedNodeTypeModifications</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lantmCacheClusterId</a> - The name of the cache cluster you
--   want to scale up to a larger node instanced type. ElastiCache uses the
--   cluster id to identify the current node type of this cluster and from
--   that to create a list of node types you can scale up to.
--   <i>Important:</i> You must provide a value for either the
--   <tt>CacheClusterId</tt> or the <tt>ReplicationGroupId</tt> .</li>
--   <li><a>lantmReplicationGroupId</a> - The name of the replication group
--   want to scale up to a larger node type. ElastiCache uses the
--   replication group id to identify the current node type being used by
--   this replication group, and from that to create a list of node types
--   you can scale up to. <i>Important:</i> You must provide a value for
--   either the <tt>CacheClusterId</tt> or the <tt>ReplicationGroupId</tt>
--   .</li>
--   </ul>
listAllowedNodeTypeModifications :: ListAllowedNodeTypeModifications

-- | The input parameters for the <tt>ListAllowedNodeTypeModifications</tt>
--   operation.
--   
--   <i>See:</i> <a>listAllowedNodeTypeModifications</a> smart constructor.
data ListAllowedNodeTypeModifications

-- | The name of the cache cluster you want to scale up to a larger node
--   instanced type. ElastiCache uses the cluster id to identify the
--   current node type of this cluster and from that to create a list of
--   node types you can scale up to. <i>Important:</i> You must provide a
--   value for either the <tt>CacheClusterId</tt> or the
--   <tt>ReplicationGroupId</tt> .
lantmCacheClusterId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)

-- | The name of the replication group want to scale up to a larger node
--   type. ElastiCache uses the replication group id to identify the
--   current node type being used by this replication group, and from that
--   to create a list of node types you can scale up to. <i>Important:</i>
--   You must provide a value for either the <tt>CacheClusterId</tt> or the
--   <tt>ReplicationGroupId</tt> .
lantmReplicationGroupId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)

-- | Creates a value of <a>ListAllowedNodeTypeModificationsResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lantmrsScaleUpModifications</a> - Undocumented member.</li>
--   <li><a>lantmrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listAllowedNodeTypeModificationsResponse :: Int -> ListAllowedNodeTypeModificationsResponse

-- | <i>See:</i> <a>listAllowedNodeTypeModificationsResponse</a> smart
--   constructor.
data ListAllowedNodeTypeModificationsResponse

-- | Undocumented member.
lantmrsScaleUpModifications :: Lens' ListAllowedNodeTypeModificationsResponse [Text]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lantmrsResponseStatus :: Lens' ListAllowedNodeTypeModificationsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
instance Data.Data.Data Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Data.Data.Data Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance GHC.Show.Show Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance GHC.Read.Read Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance GHC.Classes.Eq Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModifications
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse


-- | Returns information about cache cluster or replication group
--   snapshots. By default, <tt>DescribeSnapshots</tt> lists all of your
--   snapshots; it can optionally describe a single snapshot, or just the
--   snapshots associated with a particular cache cluster.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeSnapshots

-- | Creates a value of <a>DescribeSnapshots</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsCacheClusterId</a> - A user-supplied cluster identifier. If
--   this parameter is specified, only snapshots associated with that
--   specific cache cluster are described.</li>
--   <li><a>dsMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dsMaxRecords</a> - The maximum number of records to include in
--   the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 50 Constraints:
--   minimum 20; maximum 50.</li>
--   <li><a>dsSnapshotName</a> - A user-supplied name of the snapshot. If
--   this parameter is specified, only this snapshot are described.</li>
--   <li><a>dsShowNodeGroupConfig</a> - A Boolean value which if true, the
--   node group (shard) configuration is included in the snapshot
--   description.</li>
--   <li><a>dsReplicationGroupId</a> - A user-supplied replication group
--   identifier. If this parameter is specified, only snapshots associated
--   with that specific replication group are described.</li>
--   <li><a>dsSnapshotSource</a> - If set to <tt>system</tt> , the output
--   shows snapshots that were automatically created by ElastiCache. If set
--   to <tt>user</tt> the output shows snapshots that were manually
--   created. If omitted, the output shows both automatically and manually
--   created snapshots.</li>
--   </ul>
describeSnapshots :: DescribeSnapshots

-- | Represents the input of a <tt>DescribeSnapshotsMessage</tt> operation.
--   
--   <i>See:</i> <a>describeSnapshots</a> smart constructor.
data DescribeSnapshots

-- | A user-supplied cluster identifier. If this parameter is specified,
--   only snapshots associated with that specific cache cluster are
--   described.
dsCacheClusterId :: Lens' DescribeSnapshots (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dsMarker :: Lens' DescribeSnapshots (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 50 Constraints: minimum 20; maximum 50.
dsMaxRecords :: Lens' DescribeSnapshots (Maybe Int)

-- | A user-supplied name of the snapshot. If this parameter is specified,
--   only this snapshot are described.
dsSnapshotName :: Lens' DescribeSnapshots (Maybe Text)

-- | A Boolean value which if true, the node group (shard) configuration is
--   included in the snapshot description.
dsShowNodeGroupConfig :: Lens' DescribeSnapshots (Maybe Bool)

-- | A user-supplied replication group identifier. If this parameter is
--   specified, only snapshots associated with that specific replication
--   group are described.
dsReplicationGroupId :: Lens' DescribeSnapshots (Maybe Text)

-- | If set to <tt>system</tt> , the output shows snapshots that were
--   automatically created by ElastiCache. If set to <tt>user</tt> the
--   output shows snapshots that were manually created. If omitted, the
--   output shows both automatically and manually created snapshots.
dsSnapshotSource :: Lens' DescribeSnapshots (Maybe Text)

-- | Creates a value of <a>DescribeSnapshotsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dssrsSnapshots</a> - A list of snapshots. Each item in the list
--   contains detailed information about one snapshot.</li>
--   <li><a>dssrsMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dssrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeSnapshotsResponse :: Int -> DescribeSnapshotsResponse

-- | Represents the output of a <tt>DescribeSnapshots</tt> operation.
--   
--   <i>See:</i> <a>describeSnapshotsResponse</a> smart constructor.
data DescribeSnapshotsResponse

-- | A list of snapshots. Each item in the list contains detailed
--   information about one snapshot.
dssrsSnapshots :: Lens' DescribeSnapshotsResponse [Snapshot]

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dssrsMarker :: Lens' DescribeSnapshotsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dssrsResponseStatus :: Lens' DescribeSnapshotsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Data.Data.Data Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse


-- | Lists available reserved cache node offerings.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings

-- | Creates a value of <a>DescribeReservedCacheNodesOfferings</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drcnoCacheNodeType</a> - The cache node type filter value. Use
--   this parameter to show only the available offerings matching the
--   specified cache node type. Valid node types are as follows: * General
--   purpose: * Current generation: <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> ,
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> ,
--   <tt>cache.m4.large</tt> , <tt>cache.m4.xlarge</tt> ,
--   <tt>cache.m4.2xlarge</tt> , <tt>cache.m4.4xlarge</tt> ,
--   <tt>cache.m4.10xlarge</tt> * Previous generation:
--   <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>drcnoProductDescription</a> - The product description filter
--   value. Use this parameter to show only the available offerings
--   matching the specified product description.</li>
--   <li><a>drcnoMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>drcnoMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>drcnoOfferingType</a> - The offering type filter value. Use
--   this parameter to show only the available offerings matching the
--   specified offering type. Valid Values: <tt>"Light Utilization"|"Medium
--   Utilization"|"Heavy Utilization"</tt></li>
--   <li><a>drcnoDuration</a> - Duration filter value, specified in years
--   or seconds. Use this parameter to show only reservations for a given
--   duration. Valid Values: <tt>1 | 3 | 31536000 | 94608000</tt></li>
--   <li><a>drcnoReservedCacheNodesOfferingId</a> - The offering identifier
--   filter value. Use this parameter to show only the available offering
--   that matches the specified reservation identifier. Example:
--   <tt>438012d3-4052-4cc7-b2e3-8d3372e0e706</tt></li>
--   </ul>
describeReservedCacheNodesOfferings :: DescribeReservedCacheNodesOfferings

-- | Represents the input of a <tt>DescribeReservedCacheNodesOfferings</tt>
--   operation.
--   
--   <i>See:</i> <a>describeReservedCacheNodesOfferings</a> smart
--   constructor.
data DescribeReservedCacheNodesOfferings

-- | The cache node type filter value. Use this parameter to show only the
--   available offerings matching the specified cache node type. Valid node
--   types are as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
drcnoCacheNodeType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | The product description filter value. Use this parameter to show only
--   the available offerings matching the specified product description.
drcnoProductDescription :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
drcnoMarker :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
drcnoMaxRecords :: Lens' DescribeReservedCacheNodesOfferings (Maybe Int)

-- | The offering type filter value. Use this parameter to show only the
--   available offerings matching the specified offering type. Valid
--   Values: <tt>"Light Utilization"|"Medium Utilization"|"Heavy
--   Utilization"</tt>
drcnoOfferingType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | Duration filter value, specified in years or seconds. Use this
--   parameter to show only reservations for a given duration. Valid
--   Values: <tt>1 | 3 | 31536000 | 94608000</tt>
drcnoDuration :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | The offering identifier filter value. Use this parameter to show only
--   the available offering that matches the specified reservation
--   identifier. Example: <tt>438012d3-4052-4cc7-b2e3-8d3372e0e706</tt>
drcnoReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)

-- | Creates a value of <a>DescribeReservedCacheNodesOfferingsResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drcnorsMarker</a> - Provides an identifier to allow retrieval
--   of paginated results.</li>
--   <li><a>drcnorsReservedCacheNodesOfferings</a> - A list of reserved
--   cache node offerings. Each element in the list contains detailed
--   information about one offering.</li>
--   <li><a>drcnorsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeReservedCacheNodesOfferingsResponse :: Int -> DescribeReservedCacheNodesOfferingsResponse

-- | Represents the output of a
--   <tt>DescribeReservedCacheNodesOfferings</tt> operation.
--   
--   <i>See:</i> <a>describeReservedCacheNodesOfferingsResponse</a> smart
--   constructor.
data DescribeReservedCacheNodesOfferingsResponse

-- | Provides an identifier to allow retrieval of paginated results.
drcnorsMarker :: Lens' DescribeReservedCacheNodesOfferingsResponse (Maybe Text)

-- | A list of reserved cache node offerings. Each element in the list
--   contains detailed information about one offering.
drcnorsReservedCacheNodesOfferings :: Lens' DescribeReservedCacheNodesOfferingsResponse [ReservedCacheNodesOffering]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drcnorsResponseStatus :: Lens' DescribeReservedCacheNodesOfferingsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse


-- | Returns information about reserved cache nodes for this account, or
--   about a specified reserved cache node.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeReservedCacheNodes

-- | Creates a value of <a>DescribeReservedCacheNodes</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drcnCacheNodeType</a> - The cache node type filter value. Use
--   this parameter to show only those reservations matching the specified
--   cache node type. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>drcnProductDescription</a> - The product description filter
--   value. Use this parameter to show only those reservations matching the
--   specified product description.</li>
--   <li><a>drcnMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>drcnMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>drcnReservedCacheNodeId</a> - The reserved cache node
--   identifier filter value. Use this parameter to show only the
--   reservation that matches the specified reservation ID.</li>
--   <li><a>drcnOfferingType</a> - The offering type filter value. Use this
--   parameter to show only the available offerings matching the specified
--   offering type. Valid values: <tt>"Light Utilization"|"Medium
--   Utilization"|"Heavy Utilization"</tt></li>
--   <li><a>drcnDuration</a> - The duration filter value, specified in
--   years or seconds. Use this parameter to show only reservations for
--   this duration. Valid Values: <tt>1 | 3 | 31536000 | 94608000</tt></li>
--   <li><a>drcnReservedCacheNodesOfferingId</a> - The offering identifier
--   filter value. Use this parameter to show only purchased reservations
--   matching the specified offering identifier.</li>
--   </ul>
describeReservedCacheNodes :: DescribeReservedCacheNodes

-- | Represents the input of a <tt>DescribeReservedCacheNodes</tt>
--   operation.
--   
--   <i>See:</i> <a>describeReservedCacheNodes</a> smart constructor.
data DescribeReservedCacheNodes

-- | The cache node type filter value. Use this parameter to show only
--   those reservations matching the specified cache node type. Valid node
--   types are as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
drcnCacheNodeType :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | The product description filter value. Use this parameter to show only
--   those reservations matching the specified product description.
drcnProductDescription :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
drcnMarker :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
drcnMaxRecords :: Lens' DescribeReservedCacheNodes (Maybe Int)

-- | The reserved cache node identifier filter value. Use this parameter to
--   show only the reservation that matches the specified reservation ID.
drcnReservedCacheNodeId :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | The offering type filter value. Use this parameter to show only the
--   available offerings matching the specified offering type. Valid
--   values: <tt>"Light Utilization"|"Medium Utilization"|"Heavy
--   Utilization"</tt>
drcnOfferingType :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | The duration filter value, specified in years or seconds. Use this
--   parameter to show only reservations for this duration. Valid Values:
--   <tt>1 | 3 | 31536000 | 94608000</tt>
drcnDuration :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | The offering identifier filter value. Use this parameter to show only
--   purchased reservations matching the specified offering identifier.
drcnReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodes (Maybe Text)

-- | Creates a value of <a>DescribeReservedCacheNodesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drcnrsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>drcnrsReservedCacheNodes</a> - A list of reserved cache nodes.
--   Each element in the list contains detailed information about one
--   node.</li>
--   <li><a>drcnrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeReservedCacheNodesResponse :: Int -> DescribeReservedCacheNodesResponse

-- | Represents the output of a <tt>DescribeReservedCacheNodes</tt>
--   operation.
--   
--   <i>See:</i> <a>describeReservedCacheNodesResponse</a> smart
--   constructor.
data DescribeReservedCacheNodesResponse

-- | Provides an identifier to allow retrieval of paginated results.
drcnrsMarker :: Lens' DescribeReservedCacheNodesResponse (Maybe Text)

-- | A list of reserved cache nodes. Each element in the list contains
--   detailed information about one node.
drcnrsReservedCacheNodes :: Lens' DescribeReservedCacheNodesResponse [ReservedCacheNode]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drcnrsResponseStatus :: Lens' DescribeReservedCacheNodesResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse


-- | Returns information about a particular replication group. If no
--   identifier is specified, <tt>DescribeReplicationGroups</tt> returns
--   information about all replication groups.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeReplicationGroups

-- | Creates a value of <a>DescribeReplicationGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drgsMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>drgsMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>drgsReplicationGroupId</a> - The identifier for the replication
--   group to be described. This parameter is not case sensitive. If you do
--   not specify this parameter, information about all replication groups
--   is returned.</li>
--   </ul>
describeReplicationGroups :: DescribeReplicationGroups

-- | Represents the input of a <tt>DescribeReplicationGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeReplicationGroups</a> smart constructor.
data DescribeReplicationGroups

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
drgsMarker :: Lens' DescribeReplicationGroups (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
drgsMaxRecords :: Lens' DescribeReplicationGroups (Maybe Int)

-- | The identifier for the replication group to be described. This
--   parameter is not case sensitive. If you do not specify this parameter,
--   information about all replication groups is returned.
drgsReplicationGroupId :: Lens' DescribeReplicationGroups (Maybe Text)

-- | Creates a value of <a>DescribeReplicationGroupsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drgrsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>drgrsReplicationGroups</a> - A list of replication groups. Each
--   item in the list contains detailed information about one replication
--   group.</li>
--   <li><a>drgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeReplicationGroupsResponse :: Int -> DescribeReplicationGroupsResponse

-- | Represents the output of a <tt>DescribeReplicationGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeReplicationGroupsResponse</a> smart
--   constructor.
data DescribeReplicationGroupsResponse

-- | Provides an identifier to allow retrieval of paginated results.
drgrsMarker :: Lens' DescribeReplicationGroupsResponse (Maybe Text)

-- | A list of replication groups. Each item in the list contains detailed
--   information about one replication group.
drgrsReplicationGroups :: Lens' DescribeReplicationGroupsResponse [ReplicationGroup]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drgrsResponseStatus :: Lens' DescribeReplicationGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Data.Data.Data Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse


-- | Returns events related to cache clusters, cache security groups, and
--   cache parameter groups. You can obtain events specific to a particular
--   cache cluster, cache security group, or cache parameter group by
--   providing the name as a parameter.
--   
--   By default, only the events occurring within the last hour are
--   returned; however, you can retrieve up to 14 days' worth of events if
--   necessary.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeEvents

-- | Creates a value of <a>DescribeEvents</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>deStartTime</a> - The beginning of the time interval to
--   retrieve events for, specified in ISO 8601 format.</li>
--   <li><a>deSourceType</a> - The event source to retrieve events for. If
--   no value is specified, all events are returned.</li>
--   <li><a>deSourceIdentifier</a> - The identifier of the event source for
--   which events are returned. If not specified, all sources are included
--   in the response.</li>
--   <li><a>deMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>deMaxRecords</a> - The maximum number of records to include in
--   the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>deEndTime</a> - The end of the time interval for which to
--   retrieve events, specified in ISO 8601 format.</li>
--   <li><a>deDuration</a> - The number of minutes' worth of events to
--   retrieve.</li>
--   </ul>
describeEvents :: DescribeEvents

-- | Represents the input of a <tt>DescribeEvents</tt> operation.
--   
--   <i>See:</i> <a>describeEvents</a> smart constructor.
data DescribeEvents

-- | The beginning of the time interval to retrieve events for, specified
--   in ISO 8601 format.
deStartTime :: Lens' DescribeEvents (Maybe UTCTime)

-- | The event source to retrieve events for. If no value is specified, all
--   events are returned.
deSourceType :: Lens' DescribeEvents (Maybe SourceType)

-- | The identifier of the event source for which events are returned. If
--   not specified, all sources are included in the response.
deSourceIdentifier :: Lens' DescribeEvents (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
deMarker :: Lens' DescribeEvents (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
deMaxRecords :: Lens' DescribeEvents (Maybe Int)

-- | The end of the time interval for which to retrieve events, specified
--   in ISO 8601 format.
deEndTime :: Lens' DescribeEvents (Maybe UTCTime)

-- | The number of minutes' worth of events to retrieve.
deDuration :: Lens' DescribeEvents (Maybe Int)

-- | Creates a value of <a>DescribeEventsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dersEvents</a> - A list of events. Each element in the list
--   contains detailed information about one event.</li>
--   <li><a>dersMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>dersResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeEventsResponse :: Int -> DescribeEventsResponse

-- | Represents the output of a <tt>DescribeEvents</tt> operation.
--   
--   <i>See:</i> <a>describeEventsResponse</a> smart constructor.
data DescribeEventsResponse

-- | A list of events. Each element in the list contains detailed
--   information about one event.
dersEvents :: Lens' DescribeEventsResponse [Event]

-- | Provides an identifier to allow retrieval of paginated results.
dersMarker :: Lens' DescribeEventsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dersResponseStatus :: Lens' DescribeEventsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Data.Data.Data Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse


-- | Returns the default engine and system parameter information for the
--   specified cache engine.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeEngineDefaultParameters

-- | Creates a value of <a>DescribeEngineDefaultParameters</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dedpMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dedpMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>dedpCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   </ul>
describeEngineDefaultParameters :: Text -> DescribeEngineDefaultParameters

-- | Represents the input of a <tt>DescribeEngineDefaultParameters</tt>
--   operation.
--   
--   <i>See:</i> <a>describeEngineDefaultParameters</a> smart constructor.
data DescribeEngineDefaultParameters

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dedpMarker :: Lens' DescribeEngineDefaultParameters (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dedpMaxRecords :: Lens' DescribeEngineDefaultParameters (Maybe Int)

-- | The name of the cache parameter group family. Valid values are:
--   <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt>
dedpCacheParameterGroupFamily :: Lens' DescribeEngineDefaultParameters Text

-- | Creates a value of <a>DescribeEngineDefaultParametersResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dedprsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>dedprsEngineDefaults</a> - Undocumented member.</li>
--   </ul>
describeEngineDefaultParametersResponse :: Int -> EngineDefaults -> DescribeEngineDefaultParametersResponse

-- | <i>See:</i> <a>describeEngineDefaultParametersResponse</a> smart
--   constructor.
data DescribeEngineDefaultParametersResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dedprsResponseStatus :: Lens' DescribeEngineDefaultParametersResponse Int

-- | Undocumented member.
dedprsEngineDefaults :: Lens' DescribeEngineDefaultParametersResponse EngineDefaults
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Data.Data.Data Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse


-- | Returns a list of cache subnet group descriptions. If a subnet group
--   name is specified, the list contains only the description of that
--   group.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheSubnetGroups

-- | Creates a value of <a>DescribeCacheSubnetGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsgCacheSubnetGroupName</a> - The name of the cache subnet
--   group to return details for.</li>
--   <li><a>dcsgMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dcsgMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   </ul>
describeCacheSubnetGroups :: DescribeCacheSubnetGroups

-- | Represents the input of a <tt>DescribeCacheSubnetGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheSubnetGroups</a> smart constructor.
data DescribeCacheSubnetGroups

-- | The name of the cache subnet group to return details for.
dcsgCacheSubnetGroupName :: Lens' DescribeCacheSubnetGroups (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dcsgMarker :: Lens' DescribeCacheSubnetGroups (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dcsgMaxRecords :: Lens' DescribeCacheSubnetGroups (Maybe Int)

-- | Creates a value of <a>DescribeCacheSubnetGroupsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsgrsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>dcsgrsCacheSubnetGroups</a> - A list of cache subnet groups.
--   Each element in the list contains detailed information about one
--   group.</li>
--   <li><a>dcsgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheSubnetGroupsResponse :: Int -> DescribeCacheSubnetGroupsResponse

-- | Represents the output of a <tt>DescribeCacheSubnetGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheSubnetGroupsResponse</a> smart
--   constructor.
data DescribeCacheSubnetGroupsResponse

-- | Provides an identifier to allow retrieval of paginated results.
dcsgrsMarker :: Lens' DescribeCacheSubnetGroupsResponse (Maybe Text)

-- | A list of cache subnet groups. Each element in the list contains
--   detailed information about one group.
dcsgrsCacheSubnetGroups :: Lens' DescribeCacheSubnetGroupsResponse [CacheSubnetGroup]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcsgrsResponseStatus :: Lens' DescribeCacheSubnetGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse


-- | Returns a list of cache security group descriptions. If a cache
--   security group name is specified, the list contains only the
--   description of that group.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheSecurityGroups

-- | Creates a value of <a>DescribeCacheSecurityGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsgsCacheSecurityGroupName</a> - The name of the cache
--   security group to return details for.</li>
--   <li><a>dcsgsMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dcsgsMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   </ul>
describeCacheSecurityGroups :: DescribeCacheSecurityGroups

-- | Represents the input of a <tt>DescribeCacheSecurityGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheSecurityGroups</a> smart constructor.
data DescribeCacheSecurityGroups

-- | The name of the cache security group to return details for.
dcsgsCacheSecurityGroupName :: Lens' DescribeCacheSecurityGroups (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dcsgsMarker :: Lens' DescribeCacheSecurityGroups (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dcsgsMaxRecords :: Lens' DescribeCacheSecurityGroups (Maybe Int)

-- | Creates a value of <a>DescribeCacheSecurityGroupsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsgsrsCacheSecurityGroups</a> - A list of cache security
--   groups. Each element in the list contains detailed information about
--   one group.</li>
--   <li><a>dcsgsrsMarker</a> - Provides an identifier to allow retrieval
--   of paginated results.</li>
--   <li><a>dcsgsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheSecurityGroupsResponse :: Int -> DescribeCacheSecurityGroupsResponse

-- | Represents the output of a <tt>DescribeCacheSecurityGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheSecurityGroupsResponse</a> smart
--   constructor.
data DescribeCacheSecurityGroupsResponse

-- | A list of cache security groups. Each element in the list contains
--   detailed information about one group.
dcsgsrsCacheSecurityGroups :: Lens' DescribeCacheSecurityGroupsResponse [CacheSecurityGroup]

-- | Provides an identifier to allow retrieval of paginated results.
dcsgsrsMarker :: Lens' DescribeCacheSecurityGroupsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcsgsrsResponseStatus :: Lens' DescribeCacheSecurityGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse


-- | Returns the detailed parameter list for a particular cache parameter
--   group.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheParameters

-- | Creates a value of <a>DescribeCacheParameters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcpMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dcpMaxRecords</a> - The maximum number of records to include in
--   the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>dcpSource</a> - The parameter types to return. Valid values:
--   <tt>user</tt> | <tt>system</tt> | <tt>engine-default</tt></li>
--   <li><a>dcpCacheParameterGroupName</a> - The name of a specific cache
--   parameter group to return details for.</li>
--   </ul>
describeCacheParameters :: Text -> DescribeCacheParameters

-- | Represents the input of a <tt>DescribeCacheParameters</tt> operation.
--   
--   <i>See:</i> <a>describeCacheParameters</a> smart constructor.
data DescribeCacheParameters

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dcpMarker :: Lens' DescribeCacheParameters (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dcpMaxRecords :: Lens' DescribeCacheParameters (Maybe Int)

-- | The parameter types to return. Valid values: <tt>user</tt> |
--   <tt>system</tt> | <tt>engine-default</tt>
dcpSource :: Lens' DescribeCacheParameters (Maybe Text)

-- | The name of a specific cache parameter group to return details for.
dcpCacheParameterGroupName :: Lens' DescribeCacheParameters Text

-- | Creates a value of <a>DescribeCacheParametersResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcprsCacheNodeTypeSpecificParameters</a> - A list of parameters
--   specific to a particular cache node type. Each element in the list
--   contains detailed information about one parameter.</li>
--   <li><a>dcprsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>dcprsParameters</a> - A list of <a>Parameter</a>
--   instances.</li>
--   <li><a>dcprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheParametersResponse :: Int -> DescribeCacheParametersResponse

-- | Represents the output of a <tt>DescribeCacheParameters</tt> operation.
--   
--   <i>See:</i> <a>describeCacheParametersResponse</a> smart constructor.
data DescribeCacheParametersResponse

-- | A list of parameters specific to a particular cache node type. Each
--   element in the list contains detailed information about one parameter.
dcprsCacheNodeTypeSpecificParameters :: Lens' DescribeCacheParametersResponse [CacheNodeTypeSpecificParameter]

-- | Provides an identifier to allow retrieval of paginated results.
dcprsMarker :: Lens' DescribeCacheParametersResponse (Maybe Text)

-- | A list of <a>Parameter</a> instances.
dcprsParameters :: Lens' DescribeCacheParametersResponse [Parameter]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcprsResponseStatus :: Lens' DescribeCacheParametersResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse


-- | Returns a list of cache parameter group descriptions. If a cache
--   parameter group name is specified, the list contains only the
--   descriptions for that group.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheParameterGroups

-- | Creates a value of <a>DescribeCacheParameterGroups</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcpgCacheParameterGroupName</a> - The name of a specific cache
--   parameter group to return details for.</li>
--   <li><a>dcpgMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dcpgMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   </ul>
describeCacheParameterGroups :: DescribeCacheParameterGroups

-- | Represents the input of a <tt>DescribeCacheParameterGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheParameterGroups</a> smart constructor.
data DescribeCacheParameterGroups

-- | The name of a specific cache parameter group to return details for.
dcpgCacheParameterGroupName :: Lens' DescribeCacheParameterGroups (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dcpgMarker :: Lens' DescribeCacheParameterGroups (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dcpgMaxRecords :: Lens' DescribeCacheParameterGroups (Maybe Int)

-- | Creates a value of <a>DescribeCacheParameterGroupsResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcpgrsCacheParameterGroups</a> - A list of cache parameter
--   groups. Each element in the list contains detailed information about
--   one cache parameter group.</li>
--   <li><a>dcpgrsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>dcpgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheParameterGroupsResponse :: Int -> DescribeCacheParameterGroupsResponse

-- | Represents the output of a <tt>DescribeCacheParameterGroups</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheParameterGroupsResponse</a> smart
--   constructor.
data DescribeCacheParameterGroupsResponse

-- | A list of cache parameter groups. Each element in the list contains
--   detailed information about one cache parameter group.
dcpgrsCacheParameterGroups :: Lens' DescribeCacheParameterGroupsResponse [CacheParameterGroup]

-- | Provides an identifier to allow retrieval of paginated results.
dcpgrsMarker :: Lens' DescribeCacheParameterGroupsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcpgrsResponseStatus :: Lens' DescribeCacheParameterGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse


-- | Returns a list of the available cache engines and their versions.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheEngineVersions

-- | Creates a value of <a>DescribeCacheEngineVersions</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcevEngineVersion</a> - The cache engine version to return.
--   Example: <tt>1.4.14</tt></li>
--   <li><a>dcevCacheParameterGroupFamily</a> - The name of a specific
--   cache parameter group family to return details for. Valid values are:
--   <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt> Constraints: * Must be 1 to 255 alphanumeric
--   characters * First character must be a letter * Cannot end with a
--   hyphen or contain two consecutive hyphens</li>
--   <li><a>dcevDefaultOnly</a> - If <tt>true</tt> , specifies that only
--   the default version of the specified engine or engine and major
--   version combination is to be returned.</li>
--   <li><a>dcevEngine</a> - The cache engine to return. Valid values:
--   <tt>memcached</tt> | <tt>redis</tt></li>
--   <li><a>dcevMarker</a> - An optional marker returned from a prior
--   request. Use this marker for pagination of results from this
--   operation. If this parameter is specified, the response includes only
--   records beyond the marker, up to the value specified by
--   <tt>MaxRecords</tt> .</li>
--   <li><a>dcevMaxRecords</a> - The maximum number of records to include
--   in the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   </ul>
describeCacheEngineVersions :: DescribeCacheEngineVersions

-- | Represents the input of a <tt>DescribeCacheEngineVersions</tt>
--   operation.
--   
--   <i>See:</i> <a>describeCacheEngineVersions</a> smart constructor.
data DescribeCacheEngineVersions

-- | The cache engine version to return. Example: <tt>1.4.14</tt>
dcevEngineVersion :: Lens' DescribeCacheEngineVersions (Maybe Text)

-- | The name of a specific cache parameter group family to return details
--   for. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt> Constraints: * Must be 1 to 255
--   alphanumeric characters * First character must be a letter * Cannot
--   end with a hyphen or contain two consecutive hyphens
dcevCacheParameterGroupFamily :: Lens' DescribeCacheEngineVersions (Maybe Text)

-- | If <tt>true</tt> , specifies that only the default version of the
--   specified engine or engine and major version combination is to be
--   returned.
dcevDefaultOnly :: Lens' DescribeCacheEngineVersions (Maybe Bool)

-- | The cache engine to return. Valid values: <tt>memcached</tt> |
--   <tt>redis</tt>
dcevEngine :: Lens' DescribeCacheEngineVersions (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dcevMaxRecords :: Lens' DescribeCacheEngineVersions (Maybe Int)

-- | Creates a value of <a>DescribeCacheEngineVersionsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcevrsCacheEngineVersions</a> - A list of cache engine version
--   details. Each element in the list contains detailed information about
--   one cache engine version.</li>
--   <li><a>dcevrsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>dcevrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheEngineVersionsResponse :: Int -> DescribeCacheEngineVersionsResponse

-- | Represents the output of a <a>DescribeCacheEngineVersions</a>
--   operation.
--   
--   <i>See:</i> <a>describeCacheEngineVersionsResponse</a> smart
--   constructor.
data DescribeCacheEngineVersionsResponse

-- | A list of cache engine version details. Each element in the list
--   contains detailed information about one cache engine version.
dcevrsCacheEngineVersions :: Lens' DescribeCacheEngineVersionsResponse [CacheEngineVersion]

-- | Provides an identifier to allow retrieval of paginated results.
dcevrsMarker :: Lens' DescribeCacheEngineVersionsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcevrsResponseStatus :: Lens' DescribeCacheEngineVersionsResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse


-- | Returns information about all provisioned cache clusters if no cache
--   cluster identifier is specified, or about a specific cache cluster if
--   a cache cluster identifier is supplied.
--   
--   By default, abbreviated information about the cache clusters are
--   returned. You can use the optional <tt>ShowDetails</tt> flag to
--   retrieve detailed information about the cache nodes associated with
--   the cache clusters. These details include the DNS address and port for
--   the cache node endpoint.
--   
--   If the cluster is in the CREATING state, only cluster-level
--   information is displayed until all of the nodes are successfully
--   provisioned.
--   
--   If the cluster is in the DELETING state, only cluster-level
--   information is displayed.
--   
--   If cache nodes are currently being added to the cache cluster, node
--   endpoint information and creation time for the additional nodes are
--   not displayed until they are completely provisioned. When the cache
--   cluster state is <tt>available</tt> , the cluster is ready for use.
--   
--   If cache nodes are currently being removed from the cache cluster, no
--   endpoint information for the removed nodes is displayed.
--   
--   This operation returns paginated results.
module Network.AWS.ElastiCache.DescribeCacheClusters

-- | Creates a value of <a>DescribeCacheClusters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCacheClusterId</a> - The user-supplied cluster identifier. If
--   this parameter is specified, only information about that specific
--   cache cluster is returned. This parameter isn't case sensitive.</li>
--   <li><a>dMarker</a> - An optional marker returned from a prior request.
--   Use this marker for pagination of results from this operation. If this
--   parameter is specified, the response includes only records beyond the
--   marker, up to the value specified by <tt>MaxRecords</tt> .</li>
--   <li><a>dMaxRecords</a> - The maximum number of records to include in
--   the response. If more records exist than the specified
--   <tt>MaxRecords</tt> value, a marker is included in the response so
--   that the remaining results can be retrieved. Default: 100 Constraints:
--   minimum 20; maximum 100.</li>
--   <li><a>dShowCacheNodeInfo</a> - An optional flag that can be included
--   in the DescribeCacheCluster request to retrieve information about the
--   individual cache nodes.</li>
--   </ul>
describeCacheClusters :: DescribeCacheClusters

-- | Represents the input of a <tt>DescribeCacheClusters</tt> operation.
--   
--   <i>See:</i> <a>describeCacheClusters</a> smart constructor.
data DescribeCacheClusters

-- | The user-supplied cluster identifier. If this parameter is specified,
--   only information about that specific cache cluster is returned. This
--   parameter isn't case sensitive.
dCacheClusterId :: Lens' DescribeCacheClusters (Maybe Text)

-- | An optional marker returned from a prior request. Use this marker for
--   pagination of results from this operation. If this parameter is
--   specified, the response includes only records beyond the marker, up to
--   the value specified by <tt>MaxRecords</tt> .
dMarker :: Lens' DescribeCacheClusters (Maybe Text)

-- | The maximum number of records to include in the response. If more
--   records exist than the specified <tt>MaxRecords</tt> value, a marker
--   is included in the response so that the remaining results can be
--   retrieved. Default: 100 Constraints: minimum 20; maximum 100.
dMaxRecords :: Lens' DescribeCacheClusters (Maybe Int)

-- | An optional flag that can be included in the DescribeCacheCluster
--   request to retrieve information about the individual cache nodes.
dShowCacheNodeInfo :: Lens' DescribeCacheClusters (Maybe Bool)

-- | Creates a value of <a>DescribeCacheClustersResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsCacheClusters</a> - A list of cache clusters. Each item in
--   the list contains detailed information about one cache cluster.</li>
--   <li><a>drsMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeCacheClustersResponse :: Int -> DescribeCacheClustersResponse

-- | Represents the output of a <tt>DescribeCacheClusters</tt> operation.
--   
--   <i>See:</i> <a>describeCacheClustersResponse</a> smart constructor.
data DescribeCacheClustersResponse

-- | A list of cache clusters. Each item in the list contains detailed
--   information about one cache cluster.
drsCacheClusters :: Lens' DescribeCacheClustersResponse [CacheCluster]

-- | Provides an identifier to allow retrieval of paginated results.
drsMarker :: Lens' DescribeCacheClustersResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DescribeCacheClustersResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Data.Data.Data Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance GHC.Show.Show Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance GHC.Read.Read Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance GHC.Classes.Eq Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Network.AWS.Pager.AWSPager Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse


module Network.AWS.ElastiCache.Waiters

-- | Polls <a>DescribeCacheClusters</a> every 30 seconds until a successful
--   state is reached. An error is returned after 60 failed checks.
cacheClusterAvailable :: Wait DescribeCacheClusters

-- | Polls <a>DescribeCacheClusters</a> every 30 seconds until a successful
--   state is reached. An error is returned after 60 failed checks.
cacheClusterDeleted :: Wait DescribeCacheClusters

-- | Polls <a>DescribeReplicationGroups</a> every 30 seconds until a
--   successful state is reached. An error is returned after 60 failed
--   checks.
replicationGroupDeleted :: Wait DescribeReplicationGroups

-- | Polls <a>DescribeReplicationGroups</a> every 30 seconds until a
--   successful state is reached. An error is returned after 60 failed
--   checks.
replicationGroupAvailable :: Wait DescribeReplicationGroups


-- | Deletes an existing snapshot. When you receive a successful response
--   from this operation, ElastiCache immediately begins deleting the
--   snapshot; you cannot cancel or revert this operation.
module Network.AWS.ElastiCache.DeleteSnapshot

-- | Creates a value of <a>DeleteSnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dSnapshotName</a> - The name of the snapshot to be
--   deleted.</li>
--   </ul>
deleteSnapshot :: Text -> DeleteSnapshot

-- | Represents the input of a <tt>DeleteSnapshot</tt> operation.
--   
--   <i>See:</i> <a>deleteSnapshot</a> smart constructor.
data DeleteSnapshot

-- | The name of the snapshot to be deleted.
dSnapshotName :: Lens' DeleteSnapshot Text

-- | Creates a value of <a>DeleteSnapshotResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrsSnapshot</a> - Undocumented member.</li>
--   <li><a>dsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteSnapshotResponse :: Int -> DeleteSnapshotResponse

-- | <i>See:</i> <a>deleteSnapshotResponse</a> smart constructor.
data DeleteSnapshotResponse

-- | Undocumented member.
dsrsSnapshot :: Lens' DeleteSnapshotResponse (Maybe Snapshot)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsrsResponseStatus :: Lens' DeleteSnapshotResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Data.Data.Data Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse


-- | Deletes an existing replication group. By default, this operation
--   deletes the entire replication group, including the primary/primaries
--   and all of the read replicas. If the replication group has only one
--   primary, you can optionally delete only the read replicas, while
--   retaining the primary by setting <tt>RetainPrimaryCluster=true</tt> .
--   
--   When you receive a successful response from this operation, Amazon
--   ElastiCache immediately begins deleting the selected resources; you
--   cannot cancel or revert this operation.
module Network.AWS.ElastiCache.DeleteReplicationGroup

-- | Creates a value of <a>DeleteReplicationGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drgFinalSnapshotIdentifier</a> - The name of a final node group
--   (shard) snapshot. ElastiCache creates the snapshot from the primary
--   node in the cluster, rather than one of the replicas; this is to
--   ensure that it captures the freshest data. After the final snapshot is
--   taken, the replication group is immediately deleted.</li>
--   <li><a>drgRetainPrimaryCluster</a> - If set to <tt>true</tt> , all of
--   the read replicas are deleted, but the primary node is retained.</li>
--   <li><a>drgReplicationGroupId</a> - The identifier for the cluster to
--   be deleted. This parameter is not case sensitive.</li>
--   </ul>
deleteReplicationGroup :: Text -> DeleteReplicationGroup

-- | Represents the input of a <tt>DeleteReplicationGroup</tt> operation.
--   
--   <i>See:</i> <a>deleteReplicationGroup</a> smart constructor.
data DeleteReplicationGroup

-- | The name of a final node group (shard) snapshot. ElastiCache creates
--   the snapshot from the primary node in the cluster, rather than one of
--   the replicas; this is to ensure that it captures the freshest data.
--   After the final snapshot is taken, the replication group is
--   immediately deleted.
drgFinalSnapshotIdentifier :: Lens' DeleteReplicationGroup (Maybe Text)

-- | If set to <tt>true</tt> , all of the read replicas are deleted, but
--   the primary node is retained.
drgRetainPrimaryCluster :: Lens' DeleteReplicationGroup (Maybe Bool)

-- | The identifier for the cluster to be deleted. This parameter is not
--   case sensitive.
drgReplicationGroupId :: Lens' DeleteReplicationGroup Text

-- | Creates a value of <a>DeleteReplicationGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>delrsReplicationGroup</a> - Undocumented member.</li>
--   <li><a>delrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteReplicationGroupResponse :: Int -> DeleteReplicationGroupResponse

-- | <i>See:</i> <a>deleteReplicationGroupResponse</a> smart constructor.
data DeleteReplicationGroupResponse

-- | Undocumented member.
delrsReplicationGroup :: Lens' DeleteReplicationGroupResponse (Maybe ReplicationGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
delrsResponseStatus :: Lens' DeleteReplicationGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Data.Data.Data Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse


-- | Deletes a cache subnet group.
module Network.AWS.ElastiCache.DeleteCacheSubnetGroup

-- | Creates a value of <a>DeleteCacheSubnetGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCacheSubnetGroupName</a> - The name of the cache subnet group
--   to delete. Constraints: Must contain no more than 255 alphanumeric
--   characters or hyphens.</li>
--   </ul>
deleteCacheSubnetGroup :: Text -> DeleteCacheSubnetGroup

-- | Represents the input of a <tt>DeleteCacheSubnetGroup</tt> operation.
--   
--   <i>See:</i> <a>deleteCacheSubnetGroup</a> smart constructor.
data DeleteCacheSubnetGroup

-- | The name of the cache subnet group to delete. Constraints: Must
--   contain no more than 255 alphanumeric characters or hyphens.
dCacheSubnetGroupName :: Lens' DeleteCacheSubnetGroup Text

-- | Creates a value of <a>DeleteCacheSubnetGroupResponse</a> with the
--   minimum fields required to make a request.
deleteCacheSubnetGroupResponse :: DeleteCacheSubnetGroupResponse

-- | <i>See:</i> <a>deleteCacheSubnetGroupResponse</a> smart constructor.
data DeleteCacheSubnetGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse


-- | Deletes a cache security group.
module Network.AWS.ElastiCache.DeleteCacheSecurityGroup

-- | Creates a value of <a>DeleteCacheSecurityGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsgCacheSecurityGroupName</a> - The name of the cache security
--   group to delete.</li>
--   </ul>
deleteCacheSecurityGroup :: Text -> DeleteCacheSecurityGroup

-- | Represents the input of a <tt>DeleteCacheSecurityGroup</tt> operation.
--   
--   <i>See:</i> <a>deleteCacheSecurityGroup</a> smart constructor.
data DeleteCacheSecurityGroup

-- | The name of the cache security group to delete.
dcsgCacheSecurityGroupName :: Lens' DeleteCacheSecurityGroup Text

-- | Creates a value of <a>DeleteCacheSecurityGroupResponse</a> with the
--   minimum fields required to make a request.
deleteCacheSecurityGroupResponse :: DeleteCacheSecurityGroupResponse

-- | <i>See:</i> <a>deleteCacheSecurityGroupResponse</a> smart constructor.
data DeleteCacheSecurityGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse


-- | Deletes the specified cache parameter group. You cannot delete a cache
--   parameter group if it is associated with any cache clusters.
module Network.AWS.ElastiCache.DeleteCacheParameterGroup

-- | Creates a value of <a>DeleteCacheParameterGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCacheParameterGroupName</a> - The name of the cache parameter
--   group to delete.</li>
--   </ul>
deleteCacheParameterGroup :: Text -> DeleteCacheParameterGroup

-- | Represents the input of a <tt>DeleteCacheParameterGroup</tt>
--   operation.
--   
--   <i>See:</i> <a>deleteCacheParameterGroup</a> smart constructor.
data DeleteCacheParameterGroup

-- | The name of the cache parameter group to delete.
dCacheParameterGroupName :: Lens' DeleteCacheParameterGroup Text

-- | Creates a value of <a>DeleteCacheParameterGroupResponse</a> with the
--   minimum fields required to make a request.
deleteCacheParameterGroupResponse :: DeleteCacheParameterGroupResponse

-- | <i>See:</i> <a>deleteCacheParameterGroupResponse</a> smart
--   constructor.
data DeleteCacheParameterGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse


-- | Deletes a previously provisioned cache cluster.
--   <tt>DeleteCacheCluster</tt> deletes all associated cache nodes, node
--   endpoints and the cache cluster itself. When you receive a successful
--   response from this operation, Amazon ElastiCache immediately begins
--   deleting the cache cluster; you cannot cancel or revert this
--   operation.
--   
--   This operation cannot be used to delete a cache cluster that is the
--   last read replica of a replication group or node group (shard) that
--   has Multi-AZ mode enabled or a cache cluster from a Redis (cluster
--   mode enabled) replication group.
--   
--   <i>Important:</i> Due to current limitations on Redis (cluster mode
--   disabled), this operation or parameter is not supported on Redis
--   (cluster mode enabled) replication groups.
module Network.AWS.ElastiCache.DeleteCacheCluster

-- | Creates a value of <a>DeleteCacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dccFinalSnapshotIdentifier</a> - The user-supplied name of a
--   final cache cluster snapshot. This is the unique name that identifies
--   the snapshot. ElastiCache creates the snapshot, and then deletes the
--   cache cluster immediately afterward.</li>
--   <li><a>dccCacheClusterId</a> - The cache cluster identifier for the
--   cluster to be deleted. This parameter is not case sensitive.</li>
--   </ul>
deleteCacheCluster :: Text -> DeleteCacheCluster

-- | Represents the input of a <tt>DeleteCacheCluster</tt> operation.
--   
--   <i>See:</i> <a>deleteCacheCluster</a> smart constructor.
data DeleteCacheCluster

-- | The user-supplied name of a final cache cluster snapshot. This is the
--   unique name that identifies the snapshot. ElastiCache creates the
--   snapshot, and then deletes the cache cluster immediately afterward.
dccFinalSnapshotIdentifier :: Lens' DeleteCacheCluster (Maybe Text)

-- | The cache cluster identifier for the cluster to be deleted. This
--   parameter is not case sensitive.
dccCacheClusterId :: Lens' DeleteCacheCluster Text

-- | Creates a value of <a>DeleteCacheClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dccrsCacheCluster</a> - Undocumented member.</li>
--   <li><a>dccrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteCacheClusterResponse :: Int -> DeleteCacheClusterResponse

-- | <i>See:</i> <a>deleteCacheClusterResponse</a> smart constructor.
data DeleteCacheClusterResponse

-- | Undocumented member.
dccrsCacheCluster :: Lens' DeleteCacheClusterResponse (Maybe CacheCluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dccrsResponseStatus :: Lens' DeleteCacheClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Data.Data.Data Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance GHC.Show.Show Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance GHC.Read.Read Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance GHC.Classes.Eq Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse


-- | Creates a copy of an entire cache cluster or replication group at a
--   specific moment in time.
module Network.AWS.ElastiCache.CreateSnapshot

-- | Creates a value of <a>CreateSnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csCacheClusterId</a> - The identifier of an existing cache
--   cluster. The snapshot is created from this cache cluster.</li>
--   <li><a>csReplicationGroupId</a> - The identifier of an existing
--   replication group. The snapshot is created from this replication
--   group.</li>
--   <li><a>csSnapshotName</a> - A name for the snapshot being
--   created.</li>
--   </ul>
createSnapshot :: Text -> CreateSnapshot

-- | Represents the input of a <tt>CreateSnapshot</tt> operation.
--   
--   <i>See:</i> <a>createSnapshot</a> smart constructor.
data CreateSnapshot

-- | The identifier of an existing cache cluster. The snapshot is created
--   from this cache cluster.
csCacheClusterId :: Lens' CreateSnapshot (Maybe Text)

-- | The identifier of an existing replication group. The snapshot is
--   created from this replication group.
csReplicationGroupId :: Lens' CreateSnapshot (Maybe Text)

-- | A name for the snapshot being created.
csSnapshotName :: Lens' CreateSnapshot Text

-- | Creates a value of <a>CreateSnapshotResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crersSnapshot</a> - Undocumented member.</li>
--   <li><a>crersResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createSnapshotResponse :: Int -> CreateSnapshotResponse

-- | <i>See:</i> <a>createSnapshotResponse</a> smart constructor.
data CreateSnapshotResponse

-- | Undocumented member.
crersSnapshot :: Lens' CreateSnapshotResponse (Maybe Snapshot)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crersResponseStatus :: Lens' CreateSnapshotResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Data.Data.Data Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance GHC.Show.Show Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance GHC.Read.Read Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse


-- | Creates a Redis (cluster mode disabled) or a Redis (cluster mode
--   enabled) replication group.
--   
--   A Redis (cluster mode disabled) replication group is a collection of
--   cache clusters, where one of the cache clusters is a read/write
--   primary and the others are read-only replicas. Writes to the primary
--   are asynchronously propagated to the replicas.
--   
--   A Redis (cluster mode enabled) replication group is a collection of 1
--   to 15 node groups (shards). Each node group (shard) has one read/write
--   primary node and up to 5 read-only replica nodes. Writes to the
--   primary are asynchronously propagated to the replicas. Redis (cluster
--   mode enabled) replication groups partition the data across node groups
--   (shards).
--   
--   When a Redis (cluster mode disabled) replication group has been
--   successfully created, you can add one or more read replicas to it, up
--   to a total of 5 read replicas. You cannot alter a Redis (cluster mode
--   enabled) replication group after it has been created.
module Network.AWS.ElastiCache.CreateReplicationGroup

-- | Creates a value of <a>CreateReplicationGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crgAutomaticFailoverEnabled</a> - Specifies whether a read-only
--   replica is automatically promoted to read/write primary if the
--   existing primary fails. If <tt>true</tt> , Multi-AZ is enabled for
--   this replication group. If <tt>false</tt> , Multi-AZ is disabled for
--   this replication group. <tt>AutomaticFailoverEnabled</tt> must be
--   enabled for Redis (cluster mode enabled) replication groups. Default:
--   false</li>
--   <li><a>crgEngineVersion</a> - The version number of the cache engine
--   to be used for the cache clusters in this replication group. To view
--   the supported cache engine versions, use the
--   <tt>DescribeCacheEngineVersions</tt> operation. <b>Important:</b> You
--   can upgrade to a newer engine version (see <a>Selecting a Cache Engine
--   and Version</a> ) in the <i>ElastiCache User Guide</i> , but you
--   cannot downgrade to an earlier engine version. If you want to use an
--   earlier engine version, you must delete the existing cache cluster or
--   replication group and create it anew with the earlier engine
--   version.</li>
--   <li><a>crgCacheNodeType</a> - The compute and memory capacity of the
--   nodes in the node group (shard). Valid node types are as follows: *
--   General purpose: * Current generation: <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> ,
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> ,
--   <tt>cache.m4.large</tt> , <tt>cache.m4.xlarge</tt> ,
--   <tt>cache.m4.2xlarge</tt> , <tt>cache.m4.4xlarge</tt> ,
--   <tt>cache.m4.10xlarge</tt> * Previous generation:
--   <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>crgNodeGroupConfiguration</a> - A list of node group (shard)
--   configuration options. Each node group (shard) configuration has the
--   following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
--   ReplicaCount. If you're creating a Redis (cluster mode disabled) or a
--   Redis (cluster mode enabled) replication group, you can use this
--   parameter to configure one node group (shard) or you can omit this
--   parameter.</li>
--   <li><a>crgSecurityGroupIds</a> - One or more Amazon VPC security
--   groups associated with this replication group. Use this parameter only
--   when you are creating a replication group in an Amazon Virtual Private
--   Cloud (Amazon VPC).</li>
--   <li><a>crgSnapshotARNs</a> - A list of Amazon Resource Names (ARN)
--   that uniquely identify the Redis RDB snapshot files stored in Amazon
--   S3. The snapshot files are used to populate the replication group. The
--   Amazon S3 object name in the ARN cannot contain any commas. The list
--   must match the number of node groups (shards) in the replication
--   group, which means you cannot repartition. Example of an Amazon S3
--   ARN: <tt>arn:aws:s3:::my_bucket/snapshot1.rdb</tt></li>
--   <li><a>crgAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>crgCacheParameterGroupName</a> - The name of the parameter
--   group to associate with this replication group. If this argument is
--   omitted, the default cache parameter group for the specified engine is
--   used. If you are running Redis version 3.2.4 or later, only one node
--   group (shard), and want to use a default parameter group, we recommend
--   that you specify the parameter group by name. * To create a Redis
--   (cluster mode disabled) replication group, use
--   <tt>CacheParameterGroupName=default.redis3.2</tt> . * To create a
--   Redis (cluster mode enabled) replication group, use
--   <tt>CacheParameterGroupName=default.redis3.2.cluster.on</tt> .</li>
--   <li><a>crgSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your node group
--   (shard). Example: <tt>05:00-09:00</tt> If you do not specify this
--   parameter, ElastiCache automatically chooses an appropriate time
--   range.</li>
--   <li><a>crgAuthToken</a> - The password used to access a password
--   protected server. Password constraints: * Must be only printable ASCII
--   characters. * Must be at least 16 characters and no more than 128
--   characters in length. * Cannot contain any of the following
--   characters: <a>/</a>, '"', or "@". For more information, see <a>AUTH
--   password</a> at Redis.</li>
--   <li><a>crgPrimaryClusterId</a> - The identifier of the cache cluster
--   that serves as the primary for this replication group. This cache
--   cluster must already exist and have a status of <tt>available</tt> .
--   This parameter is not required if <tt>NumCacheClusters</tt> ,
--   <tt>NumNodeGroups</tt> , or <tt>ReplicasPerNodeGroup</tt> is
--   specified.</li>
--   <li><a>crgEngine</a> - The name of the cache engine to be used for the
--   cache clusters in this replication group.</li>
--   <li><a>crgPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cache cluster is performed. It
--   is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H
--   Clock UTC). The minimum maintenance window is a 60 minute period.
--   Valid values for <tt>ddd</tt> are: Specifies the weekly time range
--   during which maintenance on the cluster is performed. It is specified
--   as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The
--   minimum maintenance window is a 60 minute period. Valid values for
--   <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> *
--   <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>crgCacheSubnetGroupName</a> - The name of the cache subnet
--   group to be used for the replication group. <i>Important:</i> If
--   you're going to launch your cluster in an Amazon VPC, you need to
--   create a subnet group before you start creating a cluster. For more
--   information, see <a>Subnets and Subnet Groups</a> .</li>
--   <li><a>crgNumNodeGroups</a> - An optional parameter that specifies the
--   number of node groups (shards) for this Redis (cluster mode enabled)
--   replication group. For Redis (cluster mode disabled) either omit this
--   parameter or set it to 1. Default: 1</li>
--   <li><a>crgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic snapshots before deleting them. For
--   example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a snapshot
--   that was taken today is retained for 5 days before being deleted.
--   Default: 0 (i.e., automatic backups are disabled for this cache
--   cluster).</li>
--   <li><a>crgReplicasPerNodeGroup</a> - An optional parameter that
--   specifies the number of replica nodes in each node group (shard).
--   Valid values are 0 to 5.</li>
--   <li><a>crgNumCacheClusters</a> - The number of clusters this
--   replication group initially has. This parameter is not used if there
--   is more than one node group (shard). You should use
--   <tt>ReplicasPerNodeGroup</tt> instead. If <tt>Multi-AZ</tt> is
--   <tt>enabled</tt> , the value of this parameter must be at least 2. The
--   maximum permitted value for <tt>NumCacheClusters</tt> is 6 (primary
--   plus 5 replicas).</li>
--   <li><a>crgPreferredCacheClusterAZs</a> - A list of EC2 Availability
--   Zones in which the replication group's cache clusters are created. The
--   order of the Availability Zones in the list is the order in which
--   clusters are allocated. The primary cluster is created in the first AZ
--   in the list. This parameter is not used if there is more than one node
--   group (shard). You should use <tt>NodeGroupConfiguration</tt> instead.
--   Default: system chosen Availability Zones.</li>
--   <li><a>crgSnapshotName</a> - The name of a snapshot from which to
--   restore data into the new replication group. The snapshot status
--   changes to <tt>restoring</tt> while the new replication group is being
--   created.</li>
--   <li><a>crgNotificationTopicARN</a> - The Amazon Resource Name (ARN) of
--   the Amazon Simple Notification Service (SNS) topic to which
--   notifications are sent.</li>
--   <li><a>crgTags</a> - A list of cost allocation tags to be added to
--   this resource. A tag is a key-value pair. A tag key must be
--   accompanied by a tag value.</li>
--   <li><a>crgPort</a> - The port number on which each member of the
--   replication group accepts connections.</li>
--   <li><a>crgCacheSecurityGroupNames</a> - A list of cache security group
--   names to associate with this replication group.</li>
--   <li><a>crgReplicationGroupId</a> - The replication group identifier.
--   This parameter is stored as a lowercase string. Constraints: * A name
--   must contain from 1 to 20 alphanumeric characters or hyphens. * The
--   first character must be a letter. * A name cannot end with a hyphen or
--   contain two consecutive hyphens.</li>
--   <li><a>crgReplicationGroupDescription</a> - A user-created description
--   for the replication group.</li>
--   </ul>
createReplicationGroup :: Text -> Text -> CreateReplicationGroup

-- | Represents the input of a <tt>CreateReplicationGroup</tt> operation.
--   
--   <i>See:</i> <a>createReplicationGroup</a> smart constructor.
data CreateReplicationGroup

-- | Specifies whether a read-only replica is automatically promoted to
--   read/write primary if the existing primary fails. If <tt>true</tt> ,
--   Multi-AZ is enabled for this replication group. If <tt>false</tt> ,
--   Multi-AZ is disabled for this replication group.
--   <tt>AutomaticFailoverEnabled</tt> must be enabled for Redis (cluster
--   mode enabled) replication groups. Default: false
crgAutomaticFailoverEnabled :: Lens' CreateReplicationGroup (Maybe Bool)

-- | The version number of the cache engine to be used for the cache
--   clusters in this replication group. To view the supported cache engine
--   versions, use the <tt>DescribeCacheEngineVersions</tt> operation.
--   <b>Important:</b> You can upgrade to a newer engine version (see
--   <a>Selecting a Cache Engine and Version</a> ) in the <i>ElastiCache
--   User Guide</i> , but you cannot downgrade to an earlier engine
--   version. If you want to use an earlier engine version, you must delete
--   the existing cache cluster or replication group and create it anew
--   with the earlier engine version.
crgEngineVersion :: Lens' CreateReplicationGroup (Maybe Text)

-- | The compute and memory capacity of the nodes in the node group
--   (shard). Valid node types are as follows: * General purpose: * Current
--   generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
crgCacheNodeType :: Lens' CreateReplicationGroup (Maybe Text)

-- | A list of node group (shard) configuration options. Each node group
--   (shard) configuration has the following: Slots,
--   PrimaryAvailabilityZone, ReplicaAvailabilityZones, ReplicaCount. If
--   you're creating a Redis (cluster mode disabled) or a Redis (cluster
--   mode enabled) replication group, you can use this parameter to
--   configure one node group (shard) or you can omit this parameter.
crgNodeGroupConfiguration :: Lens' CreateReplicationGroup [NodeGroupConfiguration]

-- | One or more Amazon VPC security groups associated with this
--   replication group. Use this parameter only when you are creating a
--   replication group in an Amazon Virtual Private Cloud (Amazon VPC).
crgSecurityGroupIds :: Lens' CreateReplicationGroup [Text]

-- | A list of Amazon Resource Names (ARN) that uniquely identify the Redis
--   RDB snapshot files stored in Amazon S3. The snapshot files are used to
--   populate the replication group. The Amazon S3 object name in the ARN
--   cannot contain any commas. The list must match the number of node
--   groups (shards) in the replication group, which means you cannot
--   repartition. Example of an Amazon S3 ARN:
--   <tt>arn:aws:s3:::my_bucket/snapshot1.rdb</tt>
crgSnapshotARNs :: Lens' CreateReplicationGroup [Text]

-- | This parameter is currently disabled.
crgAutoMinorVersionUpgrade :: Lens' CreateReplicationGroup (Maybe Bool)

-- | The name of the parameter group to associate with this replication
--   group. If this argument is omitted, the default cache parameter group
--   for the specified engine is used. If you are running Redis version
--   3.2.4 or later, only one node group (shard), and want to use a default
--   parameter group, we recommend that you specify the parameter group by
--   name. * To create a Redis (cluster mode disabled) replication group,
--   use <tt>CacheParameterGroupName=default.redis3.2</tt> . * To create a
--   Redis (cluster mode enabled) replication group, use
--   <tt>CacheParameterGroupName=default.redis3.2.cluster.on</tt> .
crgCacheParameterGroupName :: Lens' CreateReplicationGroup (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your node group (shard). Example:
--   <tt>05:00-09:00</tt> If you do not specify this parameter, ElastiCache
--   automatically chooses an appropriate time range.
crgSnapshotWindow :: Lens' CreateReplicationGroup (Maybe Text)

-- | The password used to access a password protected server. Password
--   constraints: * Must be only printable ASCII characters. * Must be at
--   least 16 characters and no more than 128 characters in length. *
--   Cannot contain any of the following characters: <a>/</a>, '"', or "@".
--   For more information, see <a>AUTH password</a> at Redis.
crgAuthToken :: Lens' CreateReplicationGroup (Maybe Text)

-- | The identifier of the cache cluster that serves as the primary for
--   this replication group. This cache cluster must already exist and have
--   a status of <tt>available</tt> . This parameter is not required if
--   <tt>NumCacheClusters</tt> , <tt>NumNodeGroups</tt> , or
--   <tt>ReplicasPerNodeGroup</tt> is specified.
crgPrimaryClusterId :: Lens' CreateReplicationGroup (Maybe Text)

-- | The name of the cache engine to be used for the cache clusters in this
--   replication group.
crgEngine :: Lens' CreateReplicationGroup (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the cache
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are:
--   Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
crgPreferredMaintenanceWindow :: Lens' CreateReplicationGroup (Maybe Text)

-- | The name of the cache subnet group to be used for the replication
--   group. <i>Important:</i> If you're going to launch your cluster in an
--   Amazon VPC, you need to create a subnet group before you start
--   creating a cluster. For more information, see <a>Subnets and Subnet
--   Groups</a> .
crgCacheSubnetGroupName :: Lens' CreateReplicationGroup (Maybe Text)

-- | An optional parameter that specifies the number of node groups
--   (shards) for this Redis (cluster mode enabled) replication group. For
--   Redis (cluster mode disabled) either omit this parameter or set it to
--   1. Default: 1
crgNumNodeGroups :: Lens' CreateReplicationGroup (Maybe Int)

-- | The number of days for which ElastiCache retains automatic snapshots
--   before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. Default: 0 (i.e.,
--   automatic backups are disabled for this cache cluster).
crgSnapshotRetentionLimit :: Lens' CreateReplicationGroup (Maybe Int)

-- | An optional parameter that specifies the number of replica nodes in
--   each node group (shard). Valid values are 0 to 5.
crgReplicasPerNodeGroup :: Lens' CreateReplicationGroup (Maybe Int)

-- | The number of clusters this replication group initially has. This
--   parameter is not used if there is more than one node group (shard).
--   You should use <tt>ReplicasPerNodeGroup</tt> instead. If
--   <tt>Multi-AZ</tt> is <tt>enabled</tt> , the value of this parameter
--   must be at least 2. The maximum permitted value for
--   <tt>NumCacheClusters</tt> is 6 (primary plus 5 replicas).
crgNumCacheClusters :: Lens' CreateReplicationGroup (Maybe Int)

-- | A list of EC2 Availability Zones in which the replication group's
--   cache clusters are created. The order of the Availability Zones in the
--   list is the order in which clusters are allocated. The primary cluster
--   is created in the first AZ in the list. This parameter is not used if
--   there is more than one node group (shard). You should use
--   <tt>NodeGroupConfiguration</tt> instead. Default: system chosen
--   Availability Zones.
crgPreferredCacheClusterAZs :: Lens' CreateReplicationGroup [Text]

-- | The name of a snapshot from which to restore data into the new
--   replication group. The snapshot status changes to <tt>restoring</tt>
--   while the new replication group is being created.
crgSnapshotName :: Lens' CreateReplicationGroup (Maybe Text)

-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification
--   Service (SNS) topic to which notifications are sent.
crgNotificationTopicARN :: Lens' CreateReplicationGroup (Maybe Text)

-- | A list of cost allocation tags to be added to this resource. A tag is
--   a key-value pair. A tag key must be accompanied by a tag value.
crgTags :: Lens' CreateReplicationGroup [Tag]

-- | The port number on which each member of the replication group accepts
--   connections.
crgPort :: Lens' CreateReplicationGroup (Maybe Int)

-- | A list of cache security group names to associate with this
--   replication group.
crgCacheSecurityGroupNames :: Lens' CreateReplicationGroup [Text]

-- | The replication group identifier. This parameter is stored as a
--   lowercase string. Constraints: * A name must contain from 1 to 20
--   alphanumeric characters or hyphens. * The first character must be a
--   letter. * A name cannot end with a hyphen or contain two consecutive
--   hyphens.
crgReplicationGroupId :: Lens' CreateReplicationGroup Text

-- | A user-created description for the replication group.
crgReplicationGroupDescription :: Lens' CreateReplicationGroup Text

-- | Creates a value of <a>CreateReplicationGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crgrsReplicationGroup</a> - Undocumented member.</li>
--   <li><a>crgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createReplicationGroupResponse :: Int -> CreateReplicationGroupResponse

-- | <i>See:</i> <a>createReplicationGroupResponse</a> smart constructor.
data CreateReplicationGroupResponse

-- | Undocumented member.
crgrsReplicationGroup :: Lens' CreateReplicationGroupResponse (Maybe ReplicationGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crgrsResponseStatus :: Lens' CreateReplicationGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Data.Data.Data Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance GHC.Show.Show Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance GHC.Read.Read Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse


-- | Creates a new cache subnet group.
--   
--   Use this parameter only when you are creating a cluster in an Amazon
--   Virtual Private Cloud (Amazon VPC).
module Network.AWS.ElastiCache.CreateCacheSubnetGroup

-- | Creates a value of <a>CreateCacheSubnetGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccsgCacheSubnetGroupName</a> - A name for the cache subnet
--   group. This value is stored as a lowercase string. Constraints: Must
--   contain no more than 255 alphanumeric characters or hyphens. Example:
--   <tt>mysubnetgroup</tt></li>
--   <li><a>ccsgCacheSubnetGroupDescription</a> - A description for the
--   cache subnet group.</li>
--   <li><a>ccsgSubnetIds</a> - A list of VPC subnet IDs for the cache
--   subnet group.</li>
--   </ul>
createCacheSubnetGroup :: Text -> Text -> CreateCacheSubnetGroup

-- | Represents the input of a <tt>CreateCacheSubnetGroup</tt> operation.
--   
--   <i>See:</i> <a>createCacheSubnetGroup</a> smart constructor.
data CreateCacheSubnetGroup

-- | A name for the cache subnet group. This value is stored as a lowercase
--   string. Constraints: Must contain no more than 255 alphanumeric
--   characters or hyphens. Example: <tt>mysubnetgroup</tt>
ccsgCacheSubnetGroupName :: Lens' CreateCacheSubnetGroup Text

-- | A description for the cache subnet group.
ccsgCacheSubnetGroupDescription :: Lens' CreateCacheSubnetGroup Text

-- | A list of VPC subnet IDs for the cache subnet group.
ccsgSubnetIds :: Lens' CreateCacheSubnetGroup [Text]

-- | Creates a value of <a>CreateCacheSubnetGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsCacheSubnetGroup</a> - Undocumented member.</li>
--   <li><a>crsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createCacheSubnetGroupResponse :: Int -> CreateCacheSubnetGroupResponse

-- | <i>See:</i> <a>createCacheSubnetGroupResponse</a> smart constructor.
data CreateCacheSubnetGroupResponse

-- | Undocumented member.
crsCacheSubnetGroup :: Lens' CreateCacheSubnetGroupResponse (Maybe CacheSubnetGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crsResponseStatus :: Lens' CreateCacheSubnetGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse


-- | Creates a new cache security group. Use a cache security group to
--   control access to one or more cache clusters.
--   
--   Cache security groups are only used when you are creating a cache
--   cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If
--   you are creating a cache cluster inside of a VPC, use a cache subnet
--   group instead. For more information, see <a>CreateCacheSubnetGroup</a>
--   .
module Network.AWS.ElastiCache.CreateCacheSecurityGroup

-- | Creates a value of <a>CreateCacheSecurityGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccsgCacheSecurityGroupName</a> - A name for the cache security
--   group. This value is stored as a lowercase string. Constraints: Must
--   contain no more than 255 alphanumeric characters. Cannot be the word
--   <a>Default</a>. Example: <tt>mysecuritygroup</tt></li>
--   <li><a>ccsgDescription</a> - A description for the cache security
--   group.</li>
--   </ul>
createCacheSecurityGroup :: Text -> Text -> CreateCacheSecurityGroup

-- | Represents the input of a <tt>CreateCacheSecurityGroup</tt> operation.
--   
--   <i>See:</i> <a>createCacheSecurityGroup</a> smart constructor.
data CreateCacheSecurityGroup

-- | A name for the cache security group. This value is stored as a
--   lowercase string. Constraints: Must contain no more than 255
--   alphanumeric characters. Cannot be the word <a>Default</a>. Example:
--   <tt>mysecuritygroup</tt>
ccsgCacheSecurityGroupName :: Lens' CreateCacheSecurityGroup Text

-- | A description for the cache security group.
ccsgDescription :: Lens' CreateCacheSecurityGroup Text

-- | Creates a value of <a>CreateCacheSecurityGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccsgrsCacheSecurityGroup</a> - Undocumented member.</li>
--   <li><a>ccsgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createCacheSecurityGroupResponse :: Int -> CreateCacheSecurityGroupResponse

-- | <i>See:</i> <a>createCacheSecurityGroupResponse</a> smart constructor.
data CreateCacheSecurityGroupResponse

-- | Undocumented member.
ccsgrsCacheSecurityGroup :: Lens' CreateCacheSecurityGroupResponse (Maybe CacheSecurityGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ccsgrsResponseStatus :: Lens' CreateCacheSecurityGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse


-- | Creates a new cache parameter group. A cache parameter group is a
--   collection of parameters that you apply to all of the nodes in a cache
--   cluster.
module Network.AWS.ElastiCache.CreateCacheParameterGroup

-- | Creates a value of <a>CreateCacheParameterGroup</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpgCacheParameterGroupName</a> - A user-specified name for the
--   cache parameter group.</li>
--   <li><a>ccpgCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family that the cache parameter group can be used
--   with. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   <li><a>ccpgDescription</a> - A user-specified description for the
--   cache parameter group.</li>
--   </ul>
createCacheParameterGroup :: Text -> Text -> Text -> CreateCacheParameterGroup

-- | Represents the input of a <tt>CreateCacheParameterGroup</tt>
--   operation.
--   
--   <i>See:</i> <a>createCacheParameterGroup</a> smart constructor.
data CreateCacheParameterGroup

-- | A user-specified name for the cache parameter group.
ccpgCacheParameterGroupName :: Lens' CreateCacheParameterGroup Text

-- | The name of the cache parameter group family that the cache parameter
--   group can be used with. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt>
ccpgCacheParameterGroupFamily :: Lens' CreateCacheParameterGroup Text

-- | A user-specified description for the cache parameter group.
ccpgDescription :: Lens' CreateCacheParameterGroup Text

-- | Creates a value of <a>CreateCacheParameterGroupResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpgrsCacheParameterGroup</a> - Undocumented member.</li>
--   <li><a>ccpgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createCacheParameterGroupResponse :: Int -> CreateCacheParameterGroupResponse

-- | <i>See:</i> <a>createCacheParameterGroupResponse</a> smart
--   constructor.
data CreateCacheParameterGroupResponse

-- | Undocumented member.
ccpgrsCacheParameterGroup :: Lens' CreateCacheParameterGroupResponse (Maybe CacheParameterGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ccpgrsResponseStatus :: Lens' CreateCacheParameterGroupResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroup
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse


-- | Creates a cache cluster. All nodes in the cache cluster run the same
--   protocol-compliant cache engine software, either Memcached or Redis.
--   
--   <i>Important:</i> Due to current limitations on Redis (cluster mode
--   disabled), this operation or parameter is not supported on Redis
--   (cluster mode enabled) replication groups.
module Network.AWS.ElastiCache.CreateCacheCluster

-- | Creates a value of <a>CreateCacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cccEngineVersion</a> - The version number of the cache engine
--   to be used for this cache cluster. To view the supported cache engine
--   versions, use the DescribeCacheEngineVersions operation.
--   <b>Important:</b> You can upgrade to a newer engine version (see
--   <a>Selecting a Cache Engine and Version</a> ), but you cannot
--   downgrade to an earlier engine version. If you want to use an earlier
--   engine version, you must delete the existing cache cluster or
--   replication group and create it anew with the earlier engine
--   version.</li>
--   <li><a>cccCacheNodeType</a> - The compute and memory capacity of the
--   nodes in the node group (shard). Valid node types are as follows: *
--   General purpose: * Current generation: <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> ,
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> ,
--   <tt>cache.m4.large</tt> , <tt>cache.m4.xlarge</tt> ,
--   <tt>cache.m4.2xlarge</tt> , <tt>cache.m4.4xlarge</tt> ,
--   <tt>cache.m4.10xlarge</tt> * Previous generation:
--   <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>cccSecurityGroupIds</a> - One or more VPC security groups
--   associated with the cache cluster. Use this parameter only when you
--   are creating a cache cluster in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li><a>cccSnapshotARNs</a> - A single-element string list containing
--   an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB
--   snapshot file stored in Amazon S3. The snapshot file is used to
--   populate the node group (shard). The Amazon S3 object name in the ARN
--   cannot contain any commas. Example of an Amazon S3 ARN:
--   <tt>arn:aws:s3:::my_bucket/snapshot1.rdb</tt></li>
--   <li><a>cccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>cccCacheParameterGroupName</a> - The name of the parameter
--   group to associate with this cache cluster. If this argument is
--   omitted, the default parameter group for the specified engine is used.
--   You cannot use any parameter group which has
--   <tt>cluster-enabled=<tt>yes</tt></tt> when creating a cluster.</li>
--   <li><a>cccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your node group
--   (shard). Example: <tt>05:00-09:00</tt> If you do not specify this
--   parameter, ElastiCache automatically chooses an appropriate time
--   range. <b>Note:</b> This parameter is only valid if the
--   <tt>Engine</tt> parameter is <tt>redis</tt> .</li>
--   <li><a>cccAuthToken</a> - The password used to access a password
--   protected server. Password constraints: * Must be only printable ASCII
--   characters. * Must be at least 16 characters and no more than 128
--   characters in length. * Cannot contain any of the following
--   characters: <a>/</a>, '"', or "@". For more information, see <a>AUTH
--   password</a> at Redis.</li>
--   <li><a>cccEngine</a> - The name of the cache engine to be used for
--   this cache cluster. Valid values for this parameter are:
--   <tt>memcached</tt> | <tt>redis</tt></li>
--   <li><a>cccPreferredAvailabilityZones</a> - A list of the Availability
--   Zones in which cache nodes are created. The order of the zones in the
--   list is not important. This option is only supported on Memcached. If
--   you want all the nodes in the same Availability Zone, use
--   <tt>PreferredAvailabilityZone</tt> instead, or repeat the Availability
--   Zone multiple times in the list. Default: System chosen Availability
--   Zones.</li>
--   <li><a>cccPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cache cluster is performed. It
--   is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H
--   Clock UTC). The minimum maintenance window is a 60 minute period.
--   Valid values for <tt>ddd</tt> are: Specifies the weekly time range
--   during which maintenance on the cluster is performed. It is specified
--   as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The
--   minimum maintenance window is a 60 minute period. Valid values for
--   <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> *
--   <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>cccCacheSubnetGroupName</a> - The name of the subnet group to
--   be used for the cache cluster. Use this parameter only when you are
--   creating a cache cluster in an Amazon Virtual Private Cloud (Amazon
--   VPC). <i>Important:</i> If you're going to launch your cluster in an
--   Amazon VPC, you need to create a subnet group before you start
--   creating a cluster. For more information, see <a>Subnets and Subnet
--   Groups</a> .</li>
--   <li><a>cccPreferredAvailabilityZone</a> - The EC2 Availability Zone in
--   which the cache cluster is created. All nodes belonging to this
--   Memcached cache cluster are placed in the preferred Availability Zone.
--   If you want to create your nodes across multiple Availability Zones,
--   use <tt>PreferredAvailabilityZones</tt> . Default: System chosen
--   Availability Zone.</li>
--   <li><a>cccSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic snapshots before deleting them. For
--   example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a snapshot
--   taken today is retained for 5 days before being deleted. Default: 0
--   (i.e., automatic backups are disabled for this cache cluster).</li>
--   <li><a>cccAZMode</a> - Specifies whether the nodes in this Memcached
--   cluster are created in a single Availability Zone or created across
--   multiple Availability Zones in the cluster's region. This parameter is
--   only supported for Memcached cache clusters. If the <tt>AZMode</tt>
--   and <tt>PreferredAvailabilityZones</tt> are not specified, ElastiCache
--   assumes <tt>single-az</tt> mode.</li>
--   <li><a>cccSnapshotName</a> - The name of a Redis snapshot from which
--   to restore data into the new node group (shard). The snapshot status
--   changes to <tt>restoring</tt> while the new node group (shard) is
--   being created.</li>
--   <li><a>cccReplicationGroupId</a> - <i>Important:</i> Due to current
--   limitations on Redis (cluster mode disabled), this operation or
--   parameter is not supported on Redis (cluster mode enabled) replication
--   groups. The ID of the replication group to which this cache cluster
--   should belong. If this parameter is specified, the cache cluster is
--   added to the specified replication group as a read replica; otherwise,
--   the cache cluster is a standalone primary that is not part of any
--   replication group. If the specified replication group is Multi-AZ
--   enabled and the Availability Zone is not specified, the cache cluster
--   is created in Availability Zones that provide the best spread of read
--   replicas across Availability Zones.</li>
--   <li><a>cccNotificationTopicARN</a> - The Amazon Resource Name (ARN) of
--   the Amazon Simple Notification Service (SNS) topic to which
--   notifications are sent.</li>
--   <li><a>cccNumCacheNodes</a> - The initial number of cache nodes that
--   the cache cluster has. For clusters running Redis, this value must be
--   1. For clusters running Memcached, this value must be between 1 and
--   20. If you need more than 20 nodes for your Memcached cluster, please
--   fill out the ElastiCache Limit Increase Request form at
--   <a>http://aws.amazon.com/contact-us/elasticache-node-limit-request/</a>
--   .</li>
--   <li><a>cccTags</a> - A list of cost allocation tags to be added to
--   this resource. A tag is a key-value pair. A tag key must be
--   accompanied by a tag value.</li>
--   <li><a>cccPort</a> - The port number on which each of the cache nodes
--   accepts connections.</li>
--   <li><a>cccCacheSecurityGroupNames</a> - A list of security group names
--   to associate with this cache cluster. Use this parameter only when you
--   are creating a cache cluster outside of an Amazon Virtual Private
--   Cloud (Amazon VPC).</li>
--   <li><a>cccCacheClusterId</a> - The node group (shard) identifier. This
--   parameter is stored as a lowercase string. <b>Constraints:</b> * A
--   name must contain from 1 to 20 alphanumeric characters or hyphens. *
--   The first character must be a letter. * A name cannot end with a
--   hyphen or contain two consecutive hyphens.</li>
--   </ul>
createCacheCluster :: Text -> CreateCacheCluster

-- | Represents the input of a CreateCacheCluster operation.
--   
--   <i>See:</i> <a>createCacheCluster</a> smart constructor.
data CreateCacheCluster

-- | The version number of the cache engine to be used for this cache
--   cluster. To view the supported cache engine versions, use the
--   DescribeCacheEngineVersions operation. <b>Important:</b> You can
--   upgrade to a newer engine version (see <a>Selecting a Cache Engine and
--   Version</a> ), but you cannot downgrade to an earlier engine version.
--   If you want to use an earlier engine version, you must delete the
--   existing cache cluster or replication group and create it anew with
--   the earlier engine version.
cccEngineVersion :: Lens' CreateCacheCluster (Maybe Text)

-- | The compute and memory capacity of the nodes in the node group
--   (shard). Valid node types are as follows: * General purpose: * Current
--   generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
cccCacheNodeType :: Lens' CreateCacheCluster (Maybe Text)

-- | One or more VPC security groups associated with the cache cluster. Use
--   this parameter only when you are creating a cache cluster in an Amazon
--   Virtual Private Cloud (Amazon VPC).
cccSecurityGroupIds :: Lens' CreateCacheCluster [Text]

-- | A single-element string list containing an Amazon Resource Name (ARN)
--   that uniquely identifies a Redis RDB snapshot file stored in Amazon
--   S3. The snapshot file is used to populate the node group (shard). The
--   Amazon S3 object name in the ARN cannot contain any commas. Example of
--   an Amazon S3 ARN: <tt>arn:aws:s3:::my_bucket/snapshot1.rdb</tt>
cccSnapshotARNs :: Lens' CreateCacheCluster [Text]

-- | This parameter is currently disabled.
cccAutoMinorVersionUpgrade :: Lens' CreateCacheCluster (Maybe Bool)

-- | The name of the parameter group to associate with this cache cluster.
--   If this argument is omitted, the default parameter group for the
--   specified engine is used. You cannot use any parameter group which has
--   <tt>cluster-enabled=<tt>yes</tt></tt> when creating a cluster.
cccCacheParameterGroupName :: Lens' CreateCacheCluster (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your node group (shard). Example:
--   <tt>05:00-09:00</tt> If you do not specify this parameter, ElastiCache
--   automatically chooses an appropriate time range. <b>Note:</b> This
--   parameter is only valid if the <tt>Engine</tt> parameter is
--   <tt>redis</tt> .
cccSnapshotWindow :: Lens' CreateCacheCluster (Maybe Text)

-- | The password used to access a password protected server. Password
--   constraints: * Must be only printable ASCII characters. * Must be at
--   least 16 characters and no more than 128 characters in length. *
--   Cannot contain any of the following characters: <a>/</a>, '"', or "@".
--   For more information, see <a>AUTH password</a> at Redis.
cccAuthToken :: Lens' CreateCacheCluster (Maybe Text)

-- | The name of the cache engine to be used for this cache cluster. Valid
--   values for this parameter are: <tt>memcached</tt> | <tt>redis</tt>
cccEngine :: Lens' CreateCacheCluster (Maybe Text)

-- | A list of the Availability Zones in which cache nodes are created. The
--   order of the zones in the list is not important. This option is only
--   supported on Memcached. If you want all the nodes in the same
--   Availability Zone, use <tt>PreferredAvailabilityZone</tt> instead, or
--   repeat the Availability Zone multiple times in the list. Default:
--   System chosen Availability Zones.
cccPreferredAvailabilityZones :: Lens' CreateCacheCluster [Text]

-- | Specifies the weekly time range during which maintenance on the cache
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are:
--   Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
cccPreferredMaintenanceWindow :: Lens' CreateCacheCluster (Maybe Text)

-- | The name of the subnet group to be used for the cache cluster. Use
--   this parameter only when you are creating a cache cluster in an Amazon
--   Virtual Private Cloud (Amazon VPC). <i>Important:</i> If you're going
--   to launch your cluster in an Amazon VPC, you need to create a subnet
--   group before you start creating a cluster. For more information, see
--   <a>Subnets and Subnet Groups</a> .
cccCacheSubnetGroupName :: Lens' CreateCacheCluster (Maybe Text)

-- | The EC2 Availability Zone in which the cache cluster is created. All
--   nodes belonging to this Memcached cache cluster are placed in the
--   preferred Availability Zone. If you want to create your nodes across
--   multiple Availability Zones, use <tt>PreferredAvailabilityZones</tt> .
--   Default: System chosen Availability Zone.
cccPreferredAvailabilityZone :: Lens' CreateCacheCluster (Maybe Text)

-- | The number of days for which ElastiCache retains automatic snapshots
--   before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot taken today is
--   retained for 5 days before being deleted. Default: 0 (i.e., automatic
--   backups are disabled for this cache cluster).
cccSnapshotRetentionLimit :: Lens' CreateCacheCluster (Maybe Int)

-- | Specifies whether the nodes in this Memcached cluster are created in a
--   single Availability Zone or created across multiple Availability Zones
--   in the cluster's region. This parameter is only supported for
--   Memcached cache clusters. If the <tt>AZMode</tt> and
--   <tt>PreferredAvailabilityZones</tt> are not specified, ElastiCache
--   assumes <tt>single-az</tt> mode.
cccAZMode :: Lens' CreateCacheCluster (Maybe AZMode)

-- | The name of a Redis snapshot from which to restore data into the new
--   node group (shard). The snapshot status changes to <tt>restoring</tt>
--   while the new node group (shard) is being created.
cccSnapshotName :: Lens' CreateCacheCluster (Maybe Text)

-- | <i>Important:</i> Due to current limitations on Redis (cluster mode
--   disabled), this operation or parameter is not supported on Redis
--   (cluster mode enabled) replication groups. The ID of the replication
--   group to which this cache cluster should belong. If this parameter is
--   specified, the cache cluster is added to the specified replication
--   group as a read replica; otherwise, the cache cluster is a standalone
--   primary that is not part of any replication group. If the specified
--   replication group is Multi-AZ enabled and the Availability Zone is not
--   specified, the cache cluster is created in Availability Zones that
--   provide the best spread of read replicas across Availability Zones.
cccReplicationGroupId :: Lens' CreateCacheCluster (Maybe Text)

-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification
--   Service (SNS) topic to which notifications are sent.
cccNotificationTopicARN :: Lens' CreateCacheCluster (Maybe Text)

-- | The initial number of cache nodes that the cache cluster has. For
--   clusters running Redis, this value must be 1. For clusters running
--   Memcached, this value must be between 1 and 20. If you need more than
--   20 nodes for your Memcached cluster, please fill out the ElastiCache
--   Limit Increase Request form at
--   <a>http://aws.amazon.com/contact-us/elasticache-node-limit-request/</a>
--   .
cccNumCacheNodes :: Lens' CreateCacheCluster (Maybe Int)

-- | A list of cost allocation tags to be added to this resource. A tag is
--   a key-value pair. A tag key must be accompanied by a tag value.
cccTags :: Lens' CreateCacheCluster [Tag]

-- | The port number on which each of the cache nodes accepts connections.
cccPort :: Lens' CreateCacheCluster (Maybe Int)

-- | A list of security group names to associate with this cache cluster.
--   Use this parameter only when you are creating a cache cluster outside
--   of an Amazon Virtual Private Cloud (Amazon VPC).
cccCacheSecurityGroupNames :: Lens' CreateCacheCluster [Text]

-- | The node group (shard) identifier. This parameter is stored as a
--   lowercase string. <b>Constraints:</b> * A name must contain from 1 to
--   20 alphanumeric characters or hyphens. * The first character must be a
--   letter. * A name cannot end with a hyphen or contain two consecutive
--   hyphens.
cccCacheClusterId :: Lens' CreateCacheCluster Text

-- | Creates a value of <a>CreateCacheClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cccrsCacheCluster</a> - Undocumented member.</li>
--   <li><a>cccrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createCacheClusterResponse :: Int -> CreateCacheClusterResponse

-- | <i>See:</i> <a>createCacheClusterResponse</a> smart constructor.
data CreateCacheClusterResponse

-- | Undocumented member.
cccrsCacheCluster :: Lens' CreateCacheClusterResponse (Maybe CacheCluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cccrsResponseStatus :: Lens' CreateCacheClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Data.Data.Data Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance GHC.Show.Show Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance GHC.Read.Read Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance GHC.Classes.Eq Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheCluster
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse


-- | Makes a copy of an existing snapshot.
--   
--   <i>Important:</i> Users or groups that have permissions to use the
--   <tt>CopySnapshot</tt> operation can create their own Amazon S3 buckets
--   and copy snapshots to it. To control access to your snapshots, use an
--   IAM policy to control who has the ability to use the
--   <tt>CopySnapshot</tt> operation. For more information about using IAM
--   to control the use of ElastiCache operations, see <a>Exporting
--   Snapshots</a> and <a>Authentication &amp; Access Control</a> .
--   
--   You could receive the following error messages.
--   
--   <b>Error Messages</b>
--   
--   <ul>
--   <li><b>Error Message:</b> The S3 bucket %s is outside of the
--   region.</li>
--   </ul>
--   
--   <b>Solution:</b> Create an Amazon S3 bucket in the same region as your
--   snapshot. For more information, see <a>Step 1: Create an Amazon S3
--   Bucket</a> in the ElastiCache User Guide.
--   
--   <ul>
--   <li><b>Error Message:</b> The S3 bucket %s does not exist.</li>
--   </ul>
--   
--   <b>Solution:</b> Create an Amazon S3 bucket in the same region as your
--   snapshot. For more information, see <a>Step 1: Create an Amazon S3
--   Bucket</a> in the ElastiCache User Guide.
--   
--   <ul>
--   <li><b>Error Message:</b> The S3 bucket %s is not owned by the
--   authenticated user.</li>
--   </ul>
--   
--   <b>Solution:</b> Create an Amazon S3 bucket in the same region as your
--   snapshot. For more information, see <a>Step 1: Create an Amazon S3
--   Bucket</a> in the ElastiCache User Guide.
--   
--   <ul>
--   <li><b>Error Message:</b> The authenticated user does not have
--   sufficient permissions to perform the desired activity.</li>
--   </ul>
--   
--   <b>Solution:</b> Contact your system administrator to get the needed
--   permissions.
--   
--   <ul>
--   <li><b>Error Message:</b> The S3 bucket %s already contains an object
--   with key %s.</li>
--   </ul>
--   
--   <b>Solution:</b> Give the <tt>TargetSnapshotName</tt> a new and unique
--   value. If exporting a snapshot, you could alternatively create a new
--   Amazon S3 bucket and use this same value for
--   <tt>TargetSnapshotName</tt> .
--   
--   <ul>
--   <li><b>Error Message: </b> ElastiCache has not been granted READ
--   permissions %s on the S3 Bucket.</li>
--   </ul>
--   
--   <b>Solution:</b> Add List and Read permissions on the bucket. For more
--   information, see <a>Step 2: Grant ElastiCache Access to Your Amazon S3
--   Bucket</a> in the ElastiCache User Guide.
--   
--   <ul>
--   <li><b>Error Message: </b> ElastiCache has not been granted WRITE
--   permissions %s on the S3 Bucket.</li>
--   </ul>
--   
--   <b>Solution:</b> Add Upload<i>Delete permissions on the bucket. For
--   more information, see
--   &lt;http:</i><i>docs.aws.amazon.com</i>AmazonElastiCache<i>latest</i>UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess
--   Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket&gt; in the
--   ElastiCache User Guide.
--   
--   <ul>
--   <li><b>Error Message: </b> ElastiCache has not been granted READ_ACP
--   permissions %s on the S3 Bucket.</li>
--   </ul>
--   
--   <b>Solution:</b> Add View Permissions on the bucket. For more
--   information, see <a>Step 2: Grant ElastiCache Access to Your Amazon S3
--   Bucket</a> in the ElastiCache User Guide.
module Network.AWS.ElastiCache.CopySnapshot

-- | Creates a value of <a>CopySnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csTargetBucket</a> - The Amazon S3 bucket to which the snapshot
--   is exported. This parameter is used only when exporting a snapshot for
--   external access. When using this parameter to export a snapshot, be
--   sure Amazon ElastiCache has the needed permissions to this S3 bucket.
--   For more information, see <a>Step 2: Grant ElastiCache Access to Your
--   Amazon S3 Bucket</a> in the <i>Amazon ElastiCache User Guide</i> . For
--   more information, see <a>Exporting a Snapshot</a> in the <i>Amazon
--   ElastiCache User Guide</i> .</li>
--   <li><a>csSourceSnapshotName</a> - The name of an existing snapshot
--   from which to make a copy.</li>
--   <li><a>csTargetSnapshotName</a> - A name for the snapshot copy.
--   ElastiCache does not permit overwriting a snapshot, therefore this
--   name must be unique within its context - ElastiCache or an Amazon S3
--   bucket if exporting.</li>
--   </ul>
copySnapshot :: Text -> Text -> CopySnapshot

-- | Represents the input of a <tt>CopySnapshotMessage</tt> operation.
--   
--   <i>See:</i> <a>copySnapshot</a> smart constructor.
data CopySnapshot

-- | The Amazon S3 bucket to which the snapshot is exported. This parameter
--   is used only when exporting a snapshot for external access. When using
--   this parameter to export a snapshot, be sure Amazon ElastiCache has
--   the needed permissions to this S3 bucket. For more information, see
--   <a>Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket</a> in
--   the <i>Amazon ElastiCache User Guide</i> . For more information, see
--   <a>Exporting a Snapshot</a> in the <i>Amazon ElastiCache User
--   Guide</i> .
csTargetBucket :: Lens' CopySnapshot (Maybe Text)

-- | The name of an existing snapshot from which to make a copy.
csSourceSnapshotName :: Lens' CopySnapshot Text

-- | A name for the snapshot copy. ElastiCache does not permit overwriting
--   a snapshot, therefore this name must be unique within its context -
--   ElastiCache or an Amazon S3 bucket if exporting.
csTargetSnapshotName :: Lens' CopySnapshot Text

-- | Creates a value of <a>CopySnapshotResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csrsSnapshot</a> - Undocumented member.</li>
--   <li><a>csrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
copySnapshotResponse :: Int -> CopySnapshotResponse

-- | <i>See:</i> <a>copySnapshotResponse</a> smart constructor.
data CopySnapshotResponse

-- | Undocumented member.
csrsSnapshot :: Lens' CopySnapshotResponse (Maybe Snapshot)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
csrsResponseStatus :: Lens' CopySnapshotResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
instance Data.Data.Data Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
instance GHC.Show.Show Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
instance GHC.Read.Read Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Data.Data.Data Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance GHC.Show.Show Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance GHC.Read.Read Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance GHC.Classes.Eq Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.CopySnapshot.CopySnapshot
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse


-- | Allows network ingress to a cache security group. Applications using
--   ElastiCache must be running on Amazon EC2, and Amazon EC2 security
--   groups are used as the authorization mechanism.
module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress

-- | Creates a value of <a>AuthorizeCacheSecurityGroupIngress</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acsgiCacheSecurityGroupName</a> - The cache security group that
--   allows network ingress.</li>
--   <li><a>acsgiEC2SecurityGroupName</a> - The Amazon EC2 security group
--   to be authorized for ingress to the cache security group.</li>
--   <li><a>acsgiEC2SecurityGroupOwnerId</a> - The AWS account number of
--   the Amazon EC2 security group owner. Note that this is not the same
--   thing as an AWS access key ID - you must provide a valid AWS account
--   number for this parameter.</li>
--   </ul>
authorizeCacheSecurityGroupIngress :: Text -> Text -> Text -> AuthorizeCacheSecurityGroupIngress

-- | Represents the input of an AuthorizeCacheSecurityGroupIngress
--   operation.
--   
--   <i>See:</i> <a>authorizeCacheSecurityGroupIngress</a> smart
--   constructor.
data AuthorizeCacheSecurityGroupIngress

-- | The cache security group that allows network ingress.
acsgiCacheSecurityGroupName :: Lens' AuthorizeCacheSecurityGroupIngress Text

-- | The Amazon EC2 security group to be authorized for ingress to the
--   cache security group.
acsgiEC2SecurityGroupName :: Lens' AuthorizeCacheSecurityGroupIngress Text

-- | The AWS account number of the Amazon EC2 security group owner. Note
--   that this is not the same thing as an AWS access key ID - you must
--   provide a valid AWS account number for this parameter.
acsgiEC2SecurityGroupOwnerId :: Lens' AuthorizeCacheSecurityGroupIngress Text

-- | Creates a value of <a>AuthorizeCacheSecurityGroupIngressResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acsgirsCacheSecurityGroup</a> - Undocumented member.</li>
--   <li><a>acsgirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
authorizeCacheSecurityGroupIngressResponse :: Int -> AuthorizeCacheSecurityGroupIngressResponse

-- | <i>See:</i> <a>authorizeCacheSecurityGroupIngressResponse</a> smart
--   constructor.
data AuthorizeCacheSecurityGroupIngressResponse

-- | Undocumented member.
acsgirsCacheSecurityGroup :: Lens' AuthorizeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
acsgirsResponseStatus :: Lens' AuthorizeCacheSecurityGroupIngressResponse Int
instance GHC.Generics.Generic Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
instance Data.Data.Data Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
instance GHC.Show.Show Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
instance GHC.Read.Read Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
instance GHC.Classes.Eq Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
instance GHC.Generics.Generic Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Data.Data.Data Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance GHC.Show.Show Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance GHC.Read.Read Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance GHC.Classes.Eq Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngress
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse


-- | Adds up to 10 cost allocation tags to the named resource. A cost
--   allocation tag is a key-value pair where the key and value are
--   case-sensitive. You can use cost allocation tags to categorize and
--   track your AWS costs.
--   
--   When you apply tags to your ElastiCache resources, AWS generates a
--   cost allocation report as a comma-separated value (CSV) file with your
--   usage and costs aggregated by your tags. You can apply tags that
--   represent business categories (such as cost centers, application
--   names, or owners) to organize your costs across multiple services. For
--   more information, see <a>Using Cost Allocation Tags in Amazon
--   ElastiCache</a> in the <i>ElastiCache User Guide</i> .
module Network.AWS.ElastiCache.AddTagsToResource

-- | Creates a value of <a>AddTagsToResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>attrResourceName</a> - The Amazon Resource Name (ARN) of the
--   resource to which the tags are to be added, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .</li>
--   <li><a>attrTags</a> - A list of cost allocation tags to be added to
--   this resource. A tag is a key-value pair. A tag key must be
--   accompanied by a tag value.</li>
--   </ul>
addTagsToResource :: Text -> AddTagsToResource

-- | Represents the input of an AddTagsToResource operation.
--   
--   <i>See:</i> <a>addTagsToResource</a> smart constructor.
data AddTagsToResource

-- | The Amazon Resource Name (ARN) of the resource to which the tags are
--   to be added, for example
--   <tt>arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster</tt> or
--   <tt>arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot</tt>
--   . For more information about ARNs, see <a>Amazon Resource Names (ARNs)
--   and AWS Service Namespaces</a> .
attrResourceName :: Lens' AddTagsToResource Text

-- | A list of cost allocation tags to be added to this resource. A tag is
--   a key-value pair. A tag key must be accompanied by a tag value.
attrTags :: Lens' AddTagsToResource [Tag]

-- | Creates a value of <a>TagListMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlmTagList</a> - A list of cost allocation tags as key-value
--   pairs.</li>
--   </ul>
tagListMessage :: TagListMessage

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsOnResource</tt> , and <tt>RemoveTagsFromResource</tt>
--   operations.
--   
--   <i>See:</i> <a>tagListMessage</a> smart constructor.
data TagListMessage

-- | A list of cost allocation tags as key-value pairs.
tlmTagList :: Lens' TagListMessage [Tag]
instance GHC.Generics.Generic Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Data.Data.Data Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance GHC.Show.Show Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance GHC.Read.Read Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance GHC.Classes.Eq Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Network.AWS.Types.AWSRequest Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Data.Hashable.Class.Hashable Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Network.AWS.Data.Path.ToPath Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElastiCache.AddTagsToResource.AddTagsToResource


-- | <b>Amazon ElastiCache</b>
--   
--   Amazon ElastiCache is a web service that makes it easier to set up,
--   operate, and scale a distributed cache in the cloud.
--   
--   With ElastiCache, customers get all of the benefits of a
--   high-performance, in-memory cache with less of the administrative
--   burden involved in launching and managing a distributed cache. The
--   service makes setup, scaling, and cluster failure handling much
--   simpler than in a self-managed cache deployment.
--   
--   In addition, through integration with Amazon CloudWatch, customers get
--   enhanced visibility into the key performance statistics associated
--   with their cache and can receive alarms if a part of their cache runs
--   hot.
module Network.AWS.ElastiCache

-- | API version <tt>2015-02-02</tt> of the Amazon ElastiCache SDK
--   configuration.
elastiCache :: Service

-- | The requested cache subnet group is currently in use.
_CacheSubnetGroupInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a reservation with the given identifier.
_ReservedCacheNodeAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache security group name does not refer to an existing
--   cache security group.
_CacheSecurityGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache subnet group name is already in use by an existing
--   cache subnet group.
_CacheSubnetGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum of
--   15 node groups (shards) in a single replication group.
_NodeGroupsPerReplicationGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache subnet groups.
_CacheSubnetGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified Amazon EC2 security group is already authorized for the
--   specified cache security group.
_AuthorizationAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the user's
--   cache node quota.
_ReservedCacheNodeQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache node offering does not exist.
_ReservedCacheNodesOfferingNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified replication group does not exist.
_ReplicationGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | An invalid subnet identifier was specified.
_InvalidSubnet :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would cause the resource to
--   have more than the allowed number of tags. The maximum number of tags
--   permitted on a resource is 10.
_TagQuotaPerResourceExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested snapshot name does not refer to an existing snapshot.
_SnapshotNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache node type is not available in the specified
--   Availability Zone.
_InsufficientCacheClusterCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the snapshot does not allow the requested
--   operation to occur.
_InvalidSnapshotStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a snapshot with the given name.
_SnapshotAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested tag was not found on this resource.
_TagNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum
--   number of snapshots.
_SnapshotQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache nodes in a single cache cluster.
_NodeQuotaForClusterExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | A cache parameter group with the requested name already exists.
_CacheParameterGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested reserved cache node was not found.
_ReservedCacheNodeNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache subnet group name does not refer to an existing
--   cache subnet group.
_CacheSubnetGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You attempted one of the following operations:
--   
--   <ul>
--   <li>Creating a snapshot of a Redis cache cluster running on a
--   <tt>cache.t1.micro</tt> cache node.</li>
--   <li>Creating a snapshot of a cache cluster that is running Memcached
--   rather than Redis.</li>
--   </ul>
--   
--   Neither of these are supported by ElastiCache.
_SnapshotFeatureNotSupportedFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The value for a parameter is invalid.
_InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested replication group is not in the <tt>available</tt>
--   state.
_InvalidReplicationGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified replication group already exists.
_ReplicationGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The VPC network is in an invalid state.
_InvalidVPCNetworkStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested subnet is being used by another cache subnet group.
_SubnetInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache cluster ID does not refer to an existing cache
--   cluster.
_CacheClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache clusters per customer.
_ClusterQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified Amazon EC2 security group is not authorized for the
--   specified cache security group.
_AuthorizationNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache cluster is not in the <tt>available</tt> state.
_InvalidCacheClusterStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache security groups.
_CacheSecurityGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | You already have a cache cluster with the given identifier.
_CacheClusterAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the maximum
--   number of cache security groups.
_CacheParameterGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of cache nodes per customer.
_NodeQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of subnets in a cache subnet group.
_CacheSubnetQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested cache parameter group name does not refer to an existing
--   cache parameter group.
_CacheParameterGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested Amazon Resource Name (ARN) does not refer to an existing
--   resource.
_InvalidARNFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the cache parameter group does not allow the
--   requested operation to occur.
_InvalidCacheParameterGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | Two or more incompatible parameters were specified.
_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The current state of the cache security group does not allow deletion.
_InvalidCacheSecurityGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | A cache security group with the specified name already exists.
_CacheSecurityGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | Polls <a>DescribeCacheClusters</a> every 30 seconds until a successful
--   state is reached. An error is returned after 60 failed checks.
cacheClusterAvailable :: Wait DescribeCacheClusters

-- | Polls <a>DescribeCacheClusters</a> every 30 seconds until a successful
--   state is reached. An error is returned after 60 failed checks.
cacheClusterDeleted :: Wait DescribeCacheClusters

-- | Polls <a>DescribeReplicationGroups</a> every 30 seconds until a
--   successful state is reached. An error is returned after 60 failed
--   checks.
replicationGroupDeleted :: Wait DescribeReplicationGroups

-- | Polls <a>DescribeReplicationGroups</a> every 30 seconds until a
--   successful state is reached. An error is returned after 60 failed
--   checks.
replicationGroupAvailable :: Wait DescribeReplicationGroups
data AZMode
CrossAz :: AZMode
SingleAz :: AZMode
data AutomaticFailoverStatus
AFSDisabled :: AutomaticFailoverStatus
AFSDisabling :: AutomaticFailoverStatus
AFSEnabled :: AutomaticFailoverStatus
AFSEnabling :: AutomaticFailoverStatus
data ChangeType
Immediate :: ChangeType
RequiresReboot :: ChangeType
data PendingAutomaticFailoverStatus
Disabled :: PendingAutomaticFailoverStatus
Enabled :: PendingAutomaticFailoverStatus
data SourceType
CacheCluster :: SourceType
CacheParameterGroup :: SourceType
CacheSecurityGroup :: SourceType
CacheSubnetGroup :: SourceType
ReplicationGroup :: SourceType

-- | Describes an Availability Zone in which the cache cluster is launched.
--   
--   <i>See:</i> <a>availabilityZone</a> smart constructor.
data AvailabilityZone

-- | Creates a value of <a>AvailabilityZone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>azName</a> - The name of the Availability Zone.</li>
--   </ul>
availabilityZone :: AvailabilityZone

-- | The name of the Availability Zone.
azName :: Lens' AvailabilityZone (Maybe Text)

-- | Contains all of the attributes of a specific cache cluster.
--   
--   <i>See:</i> <a>cacheCluster</a> smart constructor.
data CacheCluster

-- | Creates a value of <a>CacheCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccEngineVersion</a> - The version of the cache engine that is
--   used in this cache cluster.</li>
--   <li><a>ccCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the cache cluster. Valid node types are as
--   follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>ccCacheNodes</a> - A list of cache nodes that are members of
--   the cache cluster.</li>
--   <li><a>ccCacheClusterCreateTime</a> - The date and time when the cache
--   cluster was created.</li>
--   <li><a>ccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>ccSecurityGroups</a> - A list of VPC Security Groups associated
--   with the cache cluster.</li>
--   <li><a>ccNotificationConfiguration</a> - Undocumented member.</li>
--   <li><a>ccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your cache
--   cluster. Example: <tt>05:00-09:00</tt></li>
--   <li><a>ccCacheClusterId</a> - The user-supplied identifier of the
--   cache cluster. This identifier is a unique key that identifies a cache
--   cluster.</li>
--   <li><a>ccConfigurationEndpoint</a> - Undocumented member.</li>
--   <li><a>ccEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) to be used for this cache cluster.</li>
--   <li><a>ccCacheSecurityGroups</a> - A list of cache security group
--   elements, composed of name and status sub-elements.</li>
--   <li><a>ccClientDownloadLandingPage</a> - The URL of the web page where
--   you can download the latest ElastiCache client library.</li>
--   <li><a>ccPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>ccCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the cache cluster.</li>
--   <li><a>ccPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the cache cluster is located or <a>Multiple</a> if the
--   cache nodes are located in different Availability Zones.</li>
--   <li><a>ccCacheParameterGroup</a> - Undocumented member.</li>
--   <li><a>ccCacheClusterStatus</a> - The current state of this cache
--   cluster, one of the following values: <tt>available</tt> ,
--   <tt>creating</tt> , <tt>deleted</tt> , <tt>deleting</tt> ,
--   <tt>incompatible-network</tt> , <tt>modifying</tt> , <tt>rebooting
--   cache cluster nodes</tt> , <tt>restore-failed</tt> , or
--   <tt>snapshotting</tt> .</li>
--   <li><a>ccSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic cache cluster snapshots before deleting
--   them. For example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a
--   snapshot that was taken today is retained for 5 days before being
--   deleted. <i>Important:</i> If the value of SnapshotRetentionLimit is
--   set to zero (0), backups are turned off.</li>
--   <li><a>ccReplicationGroupId</a> - The replication group to which this
--   cache cluster belongs. If this field is empty, the cache cluster is
--   not associated with any replication group.</li>
--   <li><a>ccPendingModifiedValues</a> - Undocumented member.</li>
--   <li><a>ccNumCacheNodes</a> - The number of cache nodes in the cache
--   cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   </ul>
cacheCluster :: CacheCluster

-- | The version of the cache engine that is used in this cache cluster.
ccEngineVersion :: Lens' CacheCluster (Maybe Text)

-- | The name of the compute and memory capacity node type for the cache
--   cluster. Valid node types are as follows: * General purpose: * Current
--   generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
ccCacheNodeType :: Lens' CacheCluster (Maybe Text)

-- | A list of cache nodes that are members of the cache cluster.
ccCacheNodes :: Lens' CacheCluster [CacheNode]

-- | The date and time when the cache cluster was created.
ccCacheClusterCreateTime :: Lens' CacheCluster (Maybe UTCTime)

-- | This parameter is currently disabled.
ccAutoMinorVersionUpgrade :: Lens' CacheCluster (Maybe Bool)

-- | A list of VPC Security Groups associated with the cache cluster.
ccSecurityGroups :: Lens' CacheCluster [SecurityGroupMembership]

-- | Undocumented member.
ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your cache cluster. Example: <tt>05:00-09:00</tt>
ccSnapshotWindow :: Lens' CacheCluster (Maybe Text)

-- | The user-supplied identifier of the cache cluster. This identifier is
--   a unique key that identifies a cache cluster.
ccCacheClusterId :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   to be used for this cache cluster.
ccEngine :: Lens' CacheCluster (Maybe Text)

-- | A list of cache security group elements, composed of name and status
--   sub-elements.
ccCacheSecurityGroups :: Lens' CacheCluster [CacheSecurityGroupMembership]

-- | The URL of the web page where you can download the latest ElastiCache
--   client library.
ccClientDownloadLandingPage :: Lens' CacheCluster (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
ccPreferredMaintenanceWindow :: Lens' CacheCluster (Maybe Text)

-- | The name of the cache subnet group associated with the cache cluster.
ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)

-- | The name of the Availability Zone in which the cache cluster is
--   located or <a>Multiple</a> if the cache nodes are located in different
--   Availability Zones.
ccPreferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)

-- | The current state of this cache cluster, one of the following values:
--   <tt>available</tt> , <tt>creating</tt> , <tt>deleted</tt> ,
--   <tt>deleting</tt> , <tt>incompatible-network</tt> , <tt>modifying</tt>
--   , <tt>rebooting cache cluster nodes</tt> , <tt>restore-failed</tt> ,
--   or <tt>snapshotting</tt> .
ccCacheClusterStatus :: Lens' CacheCluster (Maybe Text)

-- | The number of days for which ElastiCache retains automatic cache
--   cluster snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. <i>Important:</i> If the
--   value of SnapshotRetentionLimit is set to zero (0), backups are turned
--   off.
ccSnapshotRetentionLimit :: Lens' CacheCluster (Maybe Int)

-- | The replication group to which this cache cluster belongs. If this
--   field is empty, the cache cluster is not associated with any
--   replication group.
ccReplicationGroupId :: Lens' CacheCluster (Maybe Text)

-- | Undocumented member.
ccPendingModifiedValues :: Lens' CacheCluster (Maybe PendingModifiedValues)

-- | The number of cache nodes in the cache cluster. For clusters running
--   Redis, this value must be 1. For clusters running Memcached, this
--   value must be between 1 and 20.
ccNumCacheNodes :: Lens' CacheCluster (Maybe Int)

-- | Provides all of the details about a particular cache engine version.
--   
--   <i>See:</i> <a>cacheEngineVersion</a> smart constructor.
data CacheEngineVersion

-- | Creates a value of <a>CacheEngineVersion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cevEngineVersion</a> - The version number of the cache
--   engine.</li>
--   <li><a>cevCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family associated with this cache engine. Valid values
--   are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt></li>
--   <li><a>cevCacheEngineDescription</a> - The description of the cache
--   engine.</li>
--   <li><a>cevEngine</a> - The name of the cache engine.</li>
--   <li><a>cevCacheEngineVersionDescription</a> - The description of the
--   cache engine version.</li>
--   </ul>
cacheEngineVersion :: CacheEngineVersion

-- | The version number of the cache engine.
cevEngineVersion :: Lens' CacheEngineVersion (Maybe Text)

-- | The name of the cache parameter group family associated with this
--   cache engine. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt>
cevCacheParameterGroupFamily :: Lens' CacheEngineVersion (Maybe Text)

-- | The description of the cache engine.
cevCacheEngineDescription :: Lens' CacheEngineVersion (Maybe Text)

-- | The name of the cache engine.
cevEngine :: Lens' CacheEngineVersion (Maybe Text)

-- | The description of the cache engine version.
cevCacheEngineVersionDescription :: Lens' CacheEngineVersion (Maybe Text)

-- | Represents an individual cache node within a cache cluster. Each cache
--   node runs its own instance of the cluster's protocol-compliant caching
--   software - either Memcached or Redis.
--   
--   Valid node types are as follows:
--   
--   <ul>
--   <li>General purpose:</li>
--   <li>Current generation: <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> ,
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> ,
--   <tt>cache.m4.large</tt> , <tt>cache.m4.xlarge</tt> ,
--   <tt>cache.m4.2xlarge</tt> , <tt>cache.m4.4xlarge</tt> ,
--   <tt>cache.m4.10xlarge</tt></li>
--   <li>Previous generation: <tt>cache.t1.micro</tt> ,
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt></li>
--   <li>Compute optimized: <tt>cache.c1.xlarge</tt></li>
--   <li>Memory optimized:</li>
--   <li>Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt></li>
--   <li>Previous generation: <tt>cache.m2.xlarge</tt> ,
--   <tt>cache.m2.2xlarge</tt> , <tt>cache.m2.4xlarge</tt></li>
--   </ul>
--   
--   <b>Notes:</b>
--   
--   <ul>
--   <li>All T2 instances are created in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li>Redis backup<i>restore is not supported for Redis (cluster mode
--   disabled) T1 and T2 instances. Backup</i>restore is supported on Redis
--   (cluster mode enabled) T2 instances.</li>
--   <li>Redis Append-only files (AOF) functionality is not supported for
--   T1 or T2 instances.</li>
--   </ul>
--   
--   For a complete listing of node types and specifications, see <a>Amazon
--   ElastiCache Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
--   
--   <i>See:</i> <a>cacheNode</a> smart constructor.
data CacheNode

-- | Creates a value of <a>CacheNode</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnSourceCacheNodeId</a> - The ID of the primary node to which
--   this read replica node is synchronized. If this field is empty, this
--   node is not associated with a primary cache cluster.</li>
--   <li><a>cnParameterGroupStatus</a> - The status of the parameter group
--   applied to this cache node.</li>
--   <li><a>cnCacheNodeCreateTime</a> - The date and time when the cache
--   node was created.</li>
--   <li><a>cnCustomerAvailabilityZone</a> - The Availability Zone where
--   this node was created and now resides.</li>
--   <li><a>cnCacheNodeId</a> - The cache node identifier. A node ID is a
--   numeric identifier (0001, 0002, etc.). The combination of cluster ID
--   and node ID uniquely identifies every cache node used in a customer's
--   AWS account.</li>
--   <li><a>cnCacheNodeStatus</a> - The current state of this cache
--   node.</li>
--   <li><a>cnEndpoint</a> - The hostname for connecting to this cache
--   node.</li>
--   </ul>
cacheNode :: CacheNode

-- | The ID of the primary node to which this read replica node is
--   synchronized. If this field is empty, this node is not associated with
--   a primary cache cluster.
cnSourceCacheNodeId :: Lens' CacheNode (Maybe Text)

-- | The status of the parameter group applied to this cache node.
cnParameterGroupStatus :: Lens' CacheNode (Maybe Text)

-- | The date and time when the cache node was created.
cnCacheNodeCreateTime :: Lens' CacheNode (Maybe UTCTime)

-- | The Availability Zone where this node was created and now resides.
cnCustomerAvailabilityZone :: Lens' CacheNode (Maybe Text)

-- | The cache node identifier. A node ID is a numeric identifier (0001,
--   0002, etc.). The combination of cluster ID and node ID uniquely
--   identifies every cache node used in a customer's AWS account.
cnCacheNodeId :: Lens' CacheNode (Maybe Text)

-- | The current state of this cache node.
cnCacheNodeStatus :: Lens' CacheNode (Maybe Text)

-- | The hostname for connecting to this cache node.
cnEndpoint :: Lens' CacheNode (Maybe Endpoint)

-- | A parameter that has a different value for each cache node type it is
--   applied to. For example, in a Redis cache cluster, a
--   <tt>cache.m1.large</tt> cache node type would have a larger
--   <tt>maxmemory</tt> value than a <tt>cache.m1.small</tt> type.
--   
--   <i>See:</i> <a>cacheNodeTypeSpecificParameter</a> smart constructor.
data CacheNodeTypeSpecificParameter

-- | Creates a value of <a>CacheNodeTypeSpecificParameter</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cntspCacheNodeTypeSpecificValues</a> - A list of cache node
--   types and their corresponding values for this parameter.</li>
--   <li><a>cntspMinimumEngineVersion</a> - The earliest cache engine
--   version to which the parameter can apply.</li>
--   <li><a>cntspSource</a> - The source of the parameter value.</li>
--   <li><a>cntspIsModifiable</a> - Indicates whether (<tt>true</tt> ) or
--   not (<tt>false</tt> ) the parameter can be modified. Some parameters
--   have security or operational implications that prevent them from being
--   changed.</li>
--   <li><a>cntspDataType</a> - The valid data type for the parameter.</li>
--   <li><a>cntspAllowedValues</a> - The valid range of values for the
--   parameter.</li>
--   <li><a>cntspParameterName</a> - The name of the parameter.</li>
--   <li><a>cntspDescription</a> - A description of the parameter.</li>
--   <li><a>cntspChangeType</a> - Indicates whether a change to the
--   parameter is applied immediately or requires a reboot for the change
--   to be applied. You can force a reboot or wait until the next
--   maintenance window's reboot. For more information, see <a>Rebooting a
--   Cluster</a> .</li>
--   </ul>
cacheNodeTypeSpecificParameter :: CacheNodeTypeSpecificParameter

-- | A list of cache node types and their corresponding values for this
--   parameter.
cntspCacheNodeTypeSpecificValues :: Lens' CacheNodeTypeSpecificParameter [CacheNodeTypeSpecificValue]

-- | The earliest cache engine version to which the parameter can apply.
cntspMinimumEngineVersion :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The source of the parameter value.
cntspSource :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | Indicates whether (<tt>true</tt> ) or not (<tt>false</tt> ) the
--   parameter can be modified. Some parameters have security or
--   operational implications that prevent them from being changed.
cntspIsModifiable :: Lens' CacheNodeTypeSpecificParameter (Maybe Bool)

-- | The valid data type for the parameter.
cntspDataType :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The valid range of values for the parameter.
cntspAllowedValues :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | The name of the parameter.
cntspParameterName :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | A description of the parameter.
cntspDescription :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)

-- | Indicates whether a change to the parameter is applied immediately or
--   requires a reboot for the change to be applied. You can force a reboot
--   or wait until the next maintenance window's reboot. For more
--   information, see <a>Rebooting a Cluster</a> .
cntspChangeType :: Lens' CacheNodeTypeSpecificParameter (Maybe ChangeType)

-- | A value that applies only to a certain cache node type.
--   
--   <i>See:</i> <a>cacheNodeTypeSpecificValue</a> smart constructor.
data CacheNodeTypeSpecificValue

-- | Creates a value of <a>CacheNodeTypeSpecificValue</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cntsvCacheNodeType</a> - The cache node type for which this
--   value applies.</li>
--   <li><a>cntsvValue</a> - The value for the cache node type.</li>
--   </ul>
cacheNodeTypeSpecificValue :: CacheNodeTypeSpecificValue

-- | The cache node type for which this value applies.
cntsvCacheNodeType :: Lens' CacheNodeTypeSpecificValue (Maybe Text)

-- | The value for the cache node type.
cntsvValue :: Lens' CacheNodeTypeSpecificValue (Maybe Text)

-- | Represents the output of a <tt>CreateCacheParameterGroup</tt>
--   operation.
--   
--   <i>See:</i> <a>cacheParameterGroup</a> smart constructor.
data CacheParameterGroup

-- | Creates a value of <a>CacheParameterGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgCacheParameterGroupFamily</a> - The name of the cache
--   parameter group family that this cache parameter group is compatible
--   with. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   <li><a>cpgCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   <li><a>cpgDescription</a> - The description for this cache parameter
--   group.</li>
--   </ul>
cacheParameterGroup :: CacheParameterGroup

-- | The name of the cache parameter group family that this cache parameter
--   group is compatible with. Valid values are: <tt>memcached1.4</tt> |
--   <tt>redis2.6</tt> | <tt>redis2.8</tt> | <tt>redis3.2</tt>
cpgCacheParameterGroupFamily :: Lens' CacheParameterGroup (Maybe Text)

-- | The name of the cache parameter group.
cpgCacheParameterGroupName :: Lens' CacheParameterGroup (Maybe Text)

-- | The description for this cache parameter group.
cpgDescription :: Lens' CacheParameterGroup (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>ModifyCacheParameterGroup</pre></li>
--   <li><pre>ResetCacheParameterGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheParameterGroupNameMessage</a> smart constructor.
data CacheParameterGroupNameMessage

-- | Creates a value of <a>CacheParameterGroupNameMessage</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgnmCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   </ul>
cacheParameterGroupNameMessage :: CacheParameterGroupNameMessage

-- | The name of the cache parameter group.
cpgnmCacheParameterGroupName :: Lens' CacheParameterGroupNameMessage (Maybe Text)

-- | Status of the cache parameter group.
--   
--   <i>See:</i> <a>cacheParameterGroupStatus</a> smart constructor.
data CacheParameterGroupStatus

-- | Creates a value of <a>CacheParameterGroupStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpgsCacheParameterGroupName</a> - The name of the cache
--   parameter group.</li>
--   <li><a>cpgsCacheNodeIdsToReboot</a> - A list of the cache node IDs
--   which need to be rebooted for parameter changes to be applied. A node
--   ID is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>cpgsParameterApplyStatus</a> - The status of parameter
--   updates.</li>
--   </ul>
cacheParameterGroupStatus :: CacheParameterGroupStatus

-- | The name of the cache parameter group.
cpgsCacheParameterGroupName :: Lens' CacheParameterGroupStatus (Maybe Text)

-- | A list of the cache node IDs which need to be rebooted for parameter
--   changes to be applied. A node ID is a numeric identifier (0001, 0002,
--   etc.).
cpgsCacheNodeIdsToReboot :: Lens' CacheParameterGroupStatus [Text]

-- | The status of parameter updates.
cpgsParameterApplyStatus :: Lens' CacheParameterGroupStatus (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>AuthorizeCacheSecurityGroupIngress</pre></li>
--   <li><pre>CreateCacheSecurityGroup</pre></li>
--   <li><pre>RevokeCacheSecurityGroupIngress</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheSecurityGroup</a> smart constructor.
data CacheSecurityGroup

-- | Creates a value of <a>CacheSecurityGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgCacheSecurityGroupName</a> - The name of the cache security
--   group.</li>
--   <li><a>csgOwnerId</a> - The AWS account ID of the cache security group
--   owner.</li>
--   <li><a>csgEC2SecurityGroups</a> - A list of Amazon EC2 security groups
--   that are associated with this cache security group.</li>
--   <li><a>csgDescription</a> - The description of the cache security
--   group.</li>
--   </ul>
cacheSecurityGroup :: CacheSecurityGroup

-- | The name of the cache security group.
csgCacheSecurityGroupName :: Lens' CacheSecurityGroup (Maybe Text)

-- | The AWS account ID of the cache security group owner.
csgOwnerId :: Lens' CacheSecurityGroup (Maybe Text)

-- | A list of Amazon EC2 security groups that are associated with this
--   cache security group.
csgEC2SecurityGroups :: Lens' CacheSecurityGroup [EC2SecurityGroup]

-- | The description of the cache security group.
csgDescription :: Lens' CacheSecurityGroup (Maybe Text)

-- | Represents a cache cluster's status within a particular cache security
--   group.
--   
--   <i>See:</i> <a>cacheSecurityGroupMembership</a> smart constructor.
data CacheSecurityGroupMembership

-- | Creates a value of <a>CacheSecurityGroupMembership</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgmStatus</a> - The membership status in the cache security
--   group. The status changes when a cache security group is modified, or
--   when the cache security groups assigned to a cache cluster are
--   modified.</li>
--   <li><a>csgmCacheSecurityGroupName</a> - The name of the cache security
--   group.</li>
--   </ul>
cacheSecurityGroupMembership :: CacheSecurityGroupMembership

-- | The membership status in the cache security group. The status changes
--   when a cache security group is modified, or when the cache security
--   groups assigned to a cache cluster are modified.
csgmStatus :: Lens' CacheSecurityGroupMembership (Maybe Text)

-- | The name of the cache security group.
csgmCacheSecurityGroupName :: Lens' CacheSecurityGroupMembership (Maybe Text)

-- | Represents the output of one of the following operations:
--   
--   <ul>
--   <li><pre>CreateCacheSubnetGroup</pre></li>
--   <li><pre>ModifyCacheSubnetGroup</pre></li>
--   </ul>
--   
--   <i>See:</i> <a>cacheSubnetGroup</a> smart constructor.
data CacheSubnetGroup

-- | Creates a value of <a>CacheSubnetGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgVPCId</a> - The Amazon Virtual Private Cloud identifier (VPC
--   ID) of the cache subnet group.</li>
--   <li><a>csgSubnets</a> - A list of subnets associated with the cache
--   subnet group.</li>
--   <li><a>csgCacheSubnetGroupName</a> - The name of the cache subnet
--   group.</li>
--   <li><a>csgCacheSubnetGroupDescription</a> - The description of the
--   cache subnet group.</li>
--   </ul>
cacheSubnetGroup :: CacheSubnetGroup

-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache
--   subnet group.
csgVPCId :: Lens' CacheSubnetGroup (Maybe Text)

-- | A list of subnets associated with the cache subnet group.
csgSubnets :: Lens' CacheSubnetGroup [Subnet]

-- | The name of the cache subnet group.
csgCacheSubnetGroupName :: Lens' CacheSubnetGroup (Maybe Text)

-- | The description of the cache subnet group.
csgCacheSubnetGroupDescription :: Lens' CacheSubnetGroup (Maybe Text)

-- | Provides ownership and status information for an Amazon EC2 security
--   group.
--   
--   <i>See:</i> <a>ec2SecurityGroup</a> smart constructor.
data EC2SecurityGroup

-- | Creates a value of <a>EC2SecurityGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>esgStatus</a> - The status of the Amazon EC2 security
--   group.</li>
--   <li><a>esgEC2SecurityGroupOwnerId</a> - The AWS account ID of the
--   Amazon EC2 security group owner.</li>
--   <li><a>esgEC2SecurityGroupName</a> - The name of the Amazon EC2
--   security group.</li>
--   </ul>
ec2SecurityGroup :: EC2SecurityGroup

-- | The status of the Amazon EC2 security group.
esgStatus :: Lens' EC2SecurityGroup (Maybe Text)

-- | The AWS account ID of the Amazon EC2 security group owner.
esgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)

-- | The name of the Amazon EC2 security group.
esgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)

-- | Represents the information required for client programs to connect to
--   a cache node.
--   
--   <i>See:</i> <a>endpoint</a> smart constructor.
data Endpoint

-- | Creates a value of <a>Endpoint</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eAddress</a> - The DNS hostname of the cache node.</li>
--   <li><a>ePort</a> - The port number that the cache engine is listening
--   on.</li>
--   </ul>
endpoint :: Endpoint

-- | The DNS hostname of the cache node.
eAddress :: Lens' Endpoint (Maybe Text)

-- | The port number that the cache engine is listening on.
ePort :: Lens' Endpoint (Maybe Int)

-- | Represents the output of a <tt>DescribeEngineDefaultParameters</tt>
--   operation.
--   
--   <i>See:</i> <a>engineDefaults</a> smart constructor.
data EngineDefaults

-- | Creates a value of <a>EngineDefaults</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edCacheParameterGroupFamily</a> - Specifies the name of the
--   cache parameter group family to which the engine default parameters
--   apply. Valid values are: <tt>memcached1.4</tt> | <tt>redis2.6</tt> |
--   <tt>redis2.8</tt> | <tt>redis3.2</tt></li>
--   <li><a>edCacheNodeTypeSpecificParameters</a> - A list of parameters
--   specific to a particular cache node type. Each element in the list
--   contains detailed information about one parameter.</li>
--   <li><a>edMarker</a> - Provides an identifier to allow retrieval of
--   paginated results.</li>
--   <li><a>edParameters</a> - Contains a list of engine default
--   parameters.</li>
--   </ul>
engineDefaults :: EngineDefaults

-- | Specifies the name of the cache parameter group family to which the
--   engine default parameters apply. Valid values are:
--   <tt>memcached1.4</tt> | <tt>redis2.6</tt> | <tt>redis2.8</tt> |
--   <tt>redis3.2</tt>
edCacheParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)

-- | A list of parameters specific to a particular cache node type. Each
--   element in the list contains detailed information about one parameter.
edCacheNodeTypeSpecificParameters :: Lens' EngineDefaults [CacheNodeTypeSpecificParameter]

-- | Provides an identifier to allow retrieval of paginated results.
edMarker :: Lens' EngineDefaults (Maybe Text)

-- | Contains a list of engine default parameters.
edParameters :: Lens' EngineDefaults [Parameter]

-- | Represents a single occurrence of something interesting within the
--   system. Some examples of events are creating a cache cluster, adding
--   or removing a cache node, or rebooting a node.
--   
--   <i>See:</i> <a>event</a> smart constructor.
data Event

-- | Creates a value of <a>Event</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eSourceType</a> - Specifies the origin of this event - a cache
--   cluster, a parameter group, a security group, etc.</li>
--   <li><a>eSourceIdentifier</a> - The identifier for the source of the
--   event. For example, if the event occurred at the cache cluster level,
--   the identifier would be the name of the cache cluster.</li>
--   <li><a>eDate</a> - The date and time when the event occurred.</li>
--   <li><a>eMessage</a> - The text of the event.</li>
--   </ul>
event :: Event

-- | Specifies the origin of this event - a cache cluster, a parameter
--   group, a security group, etc.
eSourceType :: Lens' Event (Maybe SourceType)

-- | The identifier for the source of the event. For example, if the event
--   occurred at the cache cluster level, the identifier would be the name
--   of the cache cluster.
eSourceIdentifier :: Lens' Event (Maybe Text)

-- | The date and time when the event occurred.
eDate :: Lens' Event (Maybe UTCTime)

-- | The text of the event.
eMessage :: Lens' Event (Maybe Text)

-- | Represents a collection of cache nodes in a replication group. One
--   node in the node group is the read/write primary node. All the other
--   nodes are read-only Replica nodes.
--   
--   <i>See:</i> <a>nodeGroup</a> smart constructor.
data NodeGroup

-- | Creates a value of <a>NodeGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngStatus</a> - The current state of this replication group -
--   <tt>creating</tt> , <tt>available</tt> , etc.</li>
--   <li><a>ngPrimaryEndpoint</a> - The endpoint of the primary node in
--   this node group (shard).</li>
--   <li><a>ngSlots</a> - The keyspace for this node group (shard).</li>
--   <li><a>ngNodeGroupMembers</a> - A list containing information about
--   individual nodes within the node group (shard).</li>
--   <li><a>ngNodeGroupId</a> - The identifier for the node group (shard).
--   A Redis (cluster mode disabled) replication group contains only 1 node
--   group; therefore, the node group ID is 0001. A Redis (cluster mode
--   enabled) replication group contains 1 to 15 node groups numbered 0001
--   to 0015.</li>
--   </ul>
nodeGroup :: NodeGroup

-- | The current state of this replication group - <tt>creating</tt> ,
--   <tt>available</tt> , etc.
ngStatus :: Lens' NodeGroup (Maybe Text)

-- | The endpoint of the primary node in this node group (shard).
ngPrimaryEndpoint :: Lens' NodeGroup (Maybe Endpoint)

-- | The keyspace for this node group (shard).
ngSlots :: Lens' NodeGroup (Maybe Text)

-- | A list containing information about individual nodes within the node
--   group (shard).
ngNodeGroupMembers :: Lens' NodeGroup [NodeGroupMember]

-- | The identifier for the node group (shard). A Redis (cluster mode
--   disabled) replication group contains only 1 node group; therefore, the
--   node group ID is 0001. A Redis (cluster mode enabled) replication
--   group contains 1 to 15 node groups numbered 0001 to 0015.
ngNodeGroupId :: Lens' NodeGroup (Maybe Text)

-- | node group (shard) configuration options. Each node group (shard)
--   configuration has the following: <tt>Slots</tt> ,
--   <tt>PrimaryAvailabilityZone</tt> , <tt>ReplicaAvailabilityZones</tt> ,
--   <tt>ReplicaCount</tt> .
--   
--   <i>See:</i> <a>nodeGroupConfiguration</a> smart constructor.
data NodeGroupConfiguration

-- | Creates a value of <a>NodeGroupConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngcSlots</a> - A string that specifies the keyspaces as a
--   series of comma separated values. Keyspaces are 0 to 16,383. The
--   string is in the format <tt>startkey-endkey</tt> . Example:
--   <tt>"0-3999"</tt></li>
--   <li><a>ngcReplicaCount</a> - The number of read replica nodes in this
--   node group (shard).</li>
--   <li><a>ngcPrimaryAvailabilityZone</a> - The Availability Zone where
--   the primary node of this node group (shard) is launched.</li>
--   <li><a>ngcReplicaAvailabilityZones</a> - A list of Availability Zones
--   to be used for the read replicas. The number of Availability Zones in
--   this list must match the value of <tt>ReplicaCount</tt> or
--   <tt>ReplicasPerNodeGroup</tt> if not specified.</li>
--   </ul>
nodeGroupConfiguration :: NodeGroupConfiguration

-- | A string that specifies the keyspaces as a series of comma separated
--   values. Keyspaces are 0 to 16,383. The string is in the format
--   <tt>startkey-endkey</tt> . Example: <tt>"0-3999"</tt>
ngcSlots :: Lens' NodeGroupConfiguration (Maybe Text)

-- | The number of read replica nodes in this node group (shard).
ngcReplicaCount :: Lens' NodeGroupConfiguration (Maybe Int)

-- | The Availability Zone where the primary node of this node group
--   (shard) is launched.
ngcPrimaryAvailabilityZone :: Lens' NodeGroupConfiguration (Maybe Text)

-- | A list of Availability Zones to be used for the read replicas. The
--   number of Availability Zones in this list must match the value of
--   <tt>ReplicaCount</tt> or <tt>ReplicasPerNodeGroup</tt> if not
--   specified.
ngcReplicaAvailabilityZones :: Lens' NodeGroupConfiguration [Text]

-- | Represents a single node within a node group (shard).
--   
--   <i>See:</i> <a>nodeGroupMember</a> smart constructor.
data NodeGroupMember

-- | Creates a value of <a>NodeGroupMember</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngmCacheClusterId</a> - The ID of the cache cluster to which
--   the node belongs.</li>
--   <li><a>ngmCacheNodeId</a> - The ID of the node within its cache
--   cluster. A node ID is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>ngmPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the node is located.</li>
--   <li><a>ngmCurrentRole</a> - The role that is currently assigned to the
--   node - <tt>primary</tt> or <tt>replica</tt> .</li>
--   <li><a>ngmReadEndpoint</a> - Undocumented member.</li>
--   </ul>
nodeGroupMember :: NodeGroupMember

-- | The ID of the cache cluster to which the node belongs.
ngmCacheClusterId :: Lens' NodeGroupMember (Maybe Text)

-- | The ID of the node within its cache cluster. A node ID is a numeric
--   identifier (0001, 0002, etc.).
ngmCacheNodeId :: Lens' NodeGroupMember (Maybe Text)

-- | The name of the Availability Zone in which the node is located.
ngmPreferredAvailabilityZone :: Lens' NodeGroupMember (Maybe Text)

-- | The role that is currently assigned to the node - <tt>primary</tt> or
--   <tt>replica</tt> .
ngmCurrentRole :: Lens' NodeGroupMember (Maybe Text)

-- | Undocumented member.
ngmReadEndpoint :: Lens' NodeGroupMember (Maybe Endpoint)

-- | Represents an individual cache node in a snapshot of a cache cluster.
--   
--   <i>See:</i> <a>nodeSnapshot</a> smart constructor.
data NodeSnapshot

-- | Creates a value of <a>NodeSnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nsNodeGroupConfiguration</a> - The configuration for the source
--   node group (shard).</li>
--   <li><a>nsCacheNodeCreateTime</a> - The date and time when the cache
--   node was created in the source cache cluster.</li>
--   <li><a>nsCacheClusterId</a> - A unique identifier for the source cache
--   cluster.</li>
--   <li><a>nsCacheNodeId</a> - The cache node identifier for the node in
--   the source cache cluster.</li>
--   <li><a>nsNodeGroupId</a> - A unique identifier for the source node
--   group (shard).</li>
--   <li><a>nsSnapshotCreateTime</a> - The date and time when the source
--   node's metadata and cache data set was obtained for the snapshot.</li>
--   <li><a>nsCacheSize</a> - The size of the cache on the source cache
--   node.</li>
--   </ul>
nodeSnapshot :: NodeSnapshot

-- | The configuration for the source node group (shard).
nsNodeGroupConfiguration :: Lens' NodeSnapshot (Maybe NodeGroupConfiguration)

-- | The date and time when the cache node was created in the source cache
--   cluster.
nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

-- | A unique identifier for the source cache cluster.
nsCacheClusterId :: Lens' NodeSnapshot (Maybe Text)

-- | The cache node identifier for the node in the source cache cluster.
nsCacheNodeId :: Lens' NodeSnapshot (Maybe Text)

-- | A unique identifier for the source node group (shard).
nsNodeGroupId :: Lens' NodeSnapshot (Maybe Text)

-- | The date and time when the source node's metadata and cache data set
--   was obtained for the snapshot.
nsSnapshotCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

-- | The size of the cache on the source cache node.
nsCacheSize :: Lens' NodeSnapshot (Maybe Text)

-- | Describes a notification topic and its status. Notification topics are
--   used for publishing ElastiCache events to subscribers using Amazon
--   Simple Notification Service (SNS).
--   
--   <i>See:</i> <a>notificationConfiguration</a> smart constructor.
data NotificationConfiguration

-- | Creates a value of <a>NotificationConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ncTopicStatus</a> - The current state of the topic.</li>
--   <li><a>ncTopicARN</a> - The Amazon Resource Name (ARN) that identifies
--   the topic.</li>
--   </ul>
notificationConfiguration :: NotificationConfiguration

-- | The current state of the topic.
ncTopicStatus :: Lens' NotificationConfiguration (Maybe Text)

-- | The Amazon Resource Name (ARN) that identifies the topic.
ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)

-- | Describes an individual setting that controls some aspect of
--   ElastiCache behavior.
--   
--   <i>See:</i> <a>parameter</a> smart constructor.
data Parameter

-- | Creates a value of <a>Parameter</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pParameterValue</a> - The value of the parameter.</li>
--   <li><a>pMinimumEngineVersion</a> - The earliest cache engine version
--   to which the parameter can apply.</li>
--   <li><a>pSource</a> - The source of the parameter.</li>
--   <li><a>pIsModifiable</a> - Indicates whether (<tt>true</tt> ) or not
--   (<tt>false</tt> ) the parameter can be modified. Some parameters have
--   security or operational implications that prevent them from being
--   changed.</li>
--   <li><a>pDataType</a> - The valid data type for the parameter.</li>
--   <li><a>pAllowedValues</a> - The valid range of values for the
--   parameter.</li>
--   <li><a>pParameterName</a> - The name of the parameter.</li>
--   <li><a>pDescription</a> - A description of the parameter.</li>
--   <li><a>pChangeType</a> - Indicates whether a change to the parameter
--   is applied immediately or requires a reboot for the change to be
--   applied. You can force a reboot or wait until the next maintenance
--   window's reboot. For more information, see <a>Rebooting a Cluster</a>
--   .</li>
--   </ul>
parameter :: Parameter

-- | The value of the parameter.
pParameterValue :: Lens' Parameter (Maybe Text)

-- | The earliest cache engine version to which the parameter can apply.
pMinimumEngineVersion :: Lens' Parameter (Maybe Text)

-- | The source of the parameter.
pSource :: Lens' Parameter (Maybe Text)

-- | Indicates whether (<tt>true</tt> ) or not (<tt>false</tt> ) the
--   parameter can be modified. Some parameters have security or
--   operational implications that prevent them from being changed.
pIsModifiable :: Lens' Parameter (Maybe Bool)

-- | The valid data type for the parameter.
pDataType :: Lens' Parameter (Maybe Text)

-- | The valid range of values for the parameter.
pAllowedValues :: Lens' Parameter (Maybe Text)

-- | The name of the parameter.
pParameterName :: Lens' Parameter (Maybe Text)

-- | A description of the parameter.
pDescription :: Lens' Parameter (Maybe Text)

-- | Indicates whether a change to the parameter is applied immediately or
--   requires a reboot for the change to be applied. You can force a reboot
--   or wait until the next maintenance window's reboot. For more
--   information, see <a>Rebooting a Cluster</a> .
pChangeType :: Lens' Parameter (Maybe ChangeType)

-- | Describes a name-value pair that is used to update the value of a
--   parameter.
--   
--   <i>See:</i> <a>parameterNameValue</a> smart constructor.
data ParameterNameValue

-- | Creates a value of <a>ParameterNameValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnvParameterValue</a> - The value of the parameter.</li>
--   <li><a>pnvParameterName</a> - The name of the parameter.</li>
--   </ul>
parameterNameValue :: ParameterNameValue

-- | The value of the parameter.
pnvParameterValue :: Lens' ParameterNameValue (Maybe Text)

-- | The name of the parameter.
pnvParameterName :: Lens' ParameterNameValue (Maybe Text)

-- | A group of settings that are applied to the cache cluster in the
--   future, or that are currently being applied.
--   
--   <i>See:</i> <a>pendingModifiedValues</a> smart constructor.
data PendingModifiedValues

-- | Creates a value of <a>PendingModifiedValues</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmvEngineVersion</a> - The new cache engine version that the
--   cache cluster runs.</li>
--   <li><a>pmvCacheNodeType</a> - The cache node type that this cache
--   cluster or replication group is scaled to.</li>
--   <li><a>pmvCacheNodeIdsToRemove</a> - A list of cache node IDs that are
--   being removed (or will be removed) from the cache cluster. A node ID
--   is a numeric identifier (0001, 0002, etc.).</li>
--   <li><a>pmvNumCacheNodes</a> - The new number of cache nodes for the
--   cache cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   </ul>
pendingModifiedValues :: PendingModifiedValues

-- | The new cache engine version that the cache cluster runs.
pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)

-- | The cache node type that this cache cluster or replication group is
--   scaled to.
pmvCacheNodeType :: Lens' PendingModifiedValues (Maybe Text)

-- | A list of cache node IDs that are being removed (or will be removed)
--   from the cache cluster. A node ID is a numeric identifier (0001, 0002,
--   etc.).
pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]

-- | The new number of cache nodes for the cache cluster. For clusters
--   running Redis, this value must be 1. For clusters running Memcached,
--   this value must be between 1 and 20.
pmvNumCacheNodes :: Lens' PendingModifiedValues (Maybe Int)

-- | Contains the specific price and frequency of a recurring charges for a
--   reserved cache node, or for a reserved cache node offering.
--   
--   <i>See:</i> <a>recurringCharge</a> smart constructor.
data RecurringCharge

-- | Creates a value of <a>RecurringCharge</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcRecurringChargeFrequency</a> - The frequency of the recurring
--   charge.</li>
--   <li><a>rcRecurringChargeAmount</a> - The monetary amount of the
--   recurring charge.</li>
--   </ul>
recurringCharge :: RecurringCharge

-- | The frequency of the recurring charge.
rcRecurringChargeFrequency :: Lens' RecurringCharge (Maybe Text)

-- | The monetary amount of the recurring charge.
rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)

-- | Contains all of the attributes of a specific Redis replication group.
--   
--   <i>See:</i> <a>replicationGroup</a> smart constructor.
data ReplicationGroup

-- | Creates a value of <a>ReplicationGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgStatus</a> - The current state of this replication group -
--   <tt>creating</tt> , <tt>available</tt> , <tt>modifying</tt> ,
--   <tt>deleting</tt> , <tt>create-failed</tt> , <tt>snapshotting</tt>
--   .</li>
--   <li><a>rgNodeGroups</a> - A single element list with information about
--   the nodes in the replication group.</li>
--   <li><a>rgSnapshottingClusterId</a> - The cache cluster ID that is used
--   as the daily snapshot source for the replication group.</li>
--   <li><a>rgSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your node group
--   (shard). Example: <tt>05:00-09:00</tt> If you do not specify this
--   parameter, ElastiCache automatically chooses an appropriate time
--   range. <b>Note:</b> This parameter is only valid if the
--   <tt>Engine</tt> parameter is <tt>redis</tt> .</li>
--   <li><a>rgConfigurationEndpoint</a> - The configuration endpoint for
--   this replicaiton group. Use the configuration endpoint to connect to
--   this replication group.</li>
--   <li><a>rgMemberClusters</a> - The names of all the cache clusters that
--   are part of this replication group.</li>
--   <li><a>rgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic cache cluster snapshots before deleting
--   them. For example, if you set <tt>SnapshotRetentionLimit</tt> to 5, a
--   snapshot that was taken today is retained for 5 days before being
--   deleted. <i>Important:</i> If the value of
--   <tt>SnapshotRetentionLimit</tt> is set to zero (0), backups are turned
--   off.</li>
--   <li><a>rgDescription</a> - The description of the replication
--   group.</li>
--   <li><a>rgReplicationGroupId</a> - The identifier for the replication
--   group.</li>
--   <li><a>rgPendingModifiedValues</a> - A group of settings to be applied
--   to the replication group, either immediately or during the next
--   maintenance window.</li>
--   <li><a>rgAutomaticFailover</a> - Indicates the status of Multi-AZ for
--   this replication group.</li>
--   </ul>
replicationGroup :: ReplicationGroup

-- | The current state of this replication group - <tt>creating</tt> ,
--   <tt>available</tt> , <tt>modifying</tt> , <tt>deleting</tt> ,
--   <tt>create-failed</tt> , <tt>snapshotting</tt> .
rgStatus :: Lens' ReplicationGroup (Maybe Text)

-- | A single element list with information about the nodes in the
--   replication group.
rgNodeGroups :: Lens' ReplicationGroup [NodeGroup]

-- | The cache cluster ID that is used as the daily snapshot source for the
--   replication group.
rgSnapshottingClusterId :: Lens' ReplicationGroup (Maybe Text)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
--   daily snapshot of your node group (shard). Example:
--   <tt>05:00-09:00</tt> If you do not specify this parameter, ElastiCache
--   automatically chooses an appropriate time range. <b>Note:</b> This
--   parameter is only valid if the <tt>Engine</tt> parameter is
--   <tt>redis</tt> .
rgSnapshotWindow :: Lens' ReplicationGroup (Maybe Text)

-- | The configuration endpoint for this replicaiton group. Use the
--   configuration endpoint to connect to this replication group.
rgConfigurationEndpoint :: Lens' ReplicationGroup (Maybe Endpoint)

-- | The names of all the cache clusters that are part of this replication
--   group.
rgMemberClusters :: Lens' ReplicationGroup [Text]

-- | The number of days for which ElastiCache retains automatic cache
--   cluster snapshots before deleting them. For example, if you set
--   <tt>SnapshotRetentionLimit</tt> to 5, a snapshot that was taken today
--   is retained for 5 days before being deleted. <i>Important:</i> If the
--   value of <tt>SnapshotRetentionLimit</tt> is set to zero (0), backups
--   are turned off.
rgSnapshotRetentionLimit :: Lens' ReplicationGroup (Maybe Int)

-- | The description of the replication group.
rgDescription :: Lens' ReplicationGroup (Maybe Text)

-- | The identifier for the replication group.
rgReplicationGroupId :: Lens' ReplicationGroup (Maybe Text)

-- | A group of settings to be applied to the replication group, either
--   immediately or during the next maintenance window.
rgPendingModifiedValues :: Lens' ReplicationGroup (Maybe ReplicationGroupPendingModifiedValues)

-- | Indicates the status of Multi-AZ for this replication group.
rgAutomaticFailover :: Lens' ReplicationGroup (Maybe AutomaticFailoverStatus)

-- | The settings to be applied to the Redis replication group, either
--   immediately or during the next maintenance window.
--   
--   <i>See:</i> <a>replicationGroupPendingModifiedValues</a> smart
--   constructor.
data ReplicationGroupPendingModifiedValues

-- | Creates a value of <a>ReplicationGroupPendingModifiedValues</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgpmvPrimaryClusterId</a> - The primary cluster ID that is
--   applied immediately (if <tt>--apply-immediately</tt> was specified),
--   or during the next maintenance window.</li>
--   <li><a>rgpmvAutomaticFailoverStatus</a> - Indicates the status of
--   Multi-AZ for this Redis replication group.</li>
--   </ul>
replicationGroupPendingModifiedValues :: ReplicationGroupPendingModifiedValues

-- | The primary cluster ID that is applied immediately (if
--   <tt>--apply-immediately</tt> was specified), or during the next
--   maintenance window.
rgpmvPrimaryClusterId :: Lens' ReplicationGroupPendingModifiedValues (Maybe Text)

-- | Indicates the status of Multi-AZ for this Redis replication group.
rgpmvAutomaticFailoverStatus :: Lens' ReplicationGroupPendingModifiedValues (Maybe PendingAutomaticFailoverStatus)

-- | Represents the output of a <tt>PurchaseReservedCacheNodesOffering</tt>
--   operation.
--   
--   <i>See:</i> <a>reservedCacheNode</a> smart constructor.
data ReservedCacheNode

-- | Creates a value of <a>ReservedCacheNode</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcnCacheNodeType</a> - The cache node type for the reserved
--   cache nodes. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>rcnState</a> - The state of the reserved cache node.</li>
--   <li><a>rcnStartTime</a> - The time the reservation started.</li>
--   <li><a>rcnProductDescription</a> - The description of the reserved
--   cache node.</li>
--   <li><a>rcnCacheNodeCount</a> - The number of cache nodes that have
--   been reserved.</li>
--   <li><a>rcnReservedCacheNodeId</a> - The unique identifier for the
--   reservation.</li>
--   <li><a>rcnRecurringCharges</a> - The recurring price charged to run
--   this reserved cache node.</li>
--   <li><a>rcnOfferingType</a> - The offering type of this reserved cache
--   node.</li>
--   <li><a>rcnUsagePrice</a> - The hourly price charged for this reserved
--   cache node.</li>
--   <li><a>rcnFixedPrice</a> - The fixed price charged for this reserved
--   cache node.</li>
--   <li><a>rcnDuration</a> - The duration of the reservation in
--   seconds.</li>
--   <li><a>rcnReservedCacheNodesOfferingId</a> - The offering
--   identifier.</li>
--   </ul>
reservedCacheNode :: ReservedCacheNode

-- | The cache node type for the reserved cache nodes. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
rcnCacheNodeType :: Lens' ReservedCacheNode (Maybe Text)

-- | The state of the reserved cache node.
rcnState :: Lens' ReservedCacheNode (Maybe Text)

-- | The time the reservation started.
rcnStartTime :: Lens' ReservedCacheNode (Maybe UTCTime)

-- | The description of the reserved cache node.
rcnProductDescription :: Lens' ReservedCacheNode (Maybe Text)

-- | The number of cache nodes that have been reserved.
rcnCacheNodeCount :: Lens' ReservedCacheNode (Maybe Int)

-- | The unique identifier for the reservation.
rcnReservedCacheNodeId :: Lens' ReservedCacheNode (Maybe Text)

-- | The recurring price charged to run this reserved cache node.
rcnRecurringCharges :: Lens' ReservedCacheNode [RecurringCharge]

-- | The offering type of this reserved cache node.
rcnOfferingType :: Lens' ReservedCacheNode (Maybe Text)

-- | The hourly price charged for this reserved cache node.
rcnUsagePrice :: Lens' ReservedCacheNode (Maybe Double)

-- | The fixed price charged for this reserved cache node.
rcnFixedPrice :: Lens' ReservedCacheNode (Maybe Double)

-- | The duration of the reservation in seconds.
rcnDuration :: Lens' ReservedCacheNode (Maybe Int)

-- | The offering identifier.
rcnReservedCacheNodesOfferingId :: Lens' ReservedCacheNode (Maybe Text)

-- | Describes all of the attributes of a reserved cache node offering.
--   
--   <i>See:</i> <a>reservedCacheNodesOffering</a> smart constructor.
data ReservedCacheNodesOffering

-- | Creates a value of <a>ReservedCacheNodesOffering</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcnoCacheNodeType</a> - The cache node type for the reserved
--   cache node. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>rcnoProductDescription</a> - The cache engine used by the
--   offering.</li>
--   <li><a>rcnoRecurringCharges</a> - The recurring price charged to run
--   this reserved cache node.</li>
--   <li><a>rcnoOfferingType</a> - The offering type.</li>
--   <li><a>rcnoUsagePrice</a> - The hourly price charged for this
--   offering.</li>
--   <li><a>rcnoFixedPrice</a> - The fixed price charged for this
--   offering.</li>
--   <li><a>rcnoDuration</a> - The duration of the offering. in
--   seconds.</li>
--   <li><a>rcnoReservedCacheNodesOfferingId</a> - A unique identifier for
--   the reserved cache node offering.</li>
--   </ul>
reservedCacheNodesOffering :: ReservedCacheNodesOffering

-- | The cache node type for the reserved cache node. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
rcnoCacheNodeType :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The cache engine used by the offering.
rcnoProductDescription :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The recurring price charged to run this reserved cache node.
rcnoRecurringCharges :: Lens' ReservedCacheNodesOffering [RecurringCharge]

-- | The offering type.
rcnoOfferingType :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | The hourly price charged for this offering.
rcnoUsagePrice :: Lens' ReservedCacheNodesOffering (Maybe Double)

-- | The fixed price charged for this offering.
rcnoFixedPrice :: Lens' ReservedCacheNodesOffering (Maybe Double)

-- | The duration of the offering. in seconds.
rcnoDuration :: Lens' ReservedCacheNodesOffering (Maybe Int)

-- | A unique identifier for the reserved cache node offering.
rcnoReservedCacheNodesOfferingId :: Lens' ReservedCacheNodesOffering (Maybe Text)

-- | Represents a single cache security group and its status.
--   
--   <i>See:</i> <a>securityGroupMembership</a> smart constructor.
data SecurityGroupMembership

-- | Creates a value of <a>SecurityGroupMembership</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgmStatus</a> - The status of the cache security group
--   membership. The status changes whenever a cache security group is
--   modified, or when the cache security groups assigned to a cache
--   cluster are modified.</li>
--   <li><a>sgmSecurityGroupId</a> - The identifier of the cache security
--   group.</li>
--   </ul>
securityGroupMembership :: SecurityGroupMembership

-- | The status of the cache security group membership. The status changes
--   whenever a cache security group is modified, or when the cache
--   security groups assigned to a cache cluster are modified.
sgmStatus :: Lens' SecurityGroupMembership (Maybe Text)

-- | The identifier of the cache security group.
sgmSecurityGroupId :: Lens' SecurityGroupMembership (Maybe Text)

-- | Represents a copy of an entire Redis cache cluster as of the time when
--   the snapshot was taken.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEngineVersion</a> - The version of the cache engine version
--   that is used by the source cache cluster.</li>
--   <li><a>sCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the source cache cluster. Valid node types are
--   as follows: * General purpose: * Current generation:
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .</li>
--   <li><a>sCacheClusterCreateTime</a> - The date and time when the source
--   cache cluster was created.</li>
--   <li><a>sAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>sCacheParameterGroupName</a> - The cache parameter group that
--   is associated with the source cache cluster.</li>
--   <li><a>sReplicationGroupDescription</a> - A description of the source
--   replication group.</li>
--   <li><a>sVPCId</a> - The Amazon Virtual Private Cloud identifier (VPC
--   ID) of the cache subnet group for the source cache cluster.</li>
--   <li><a>sSnapshotStatus</a> - The status of the snapshot. Valid values:
--   <tt>creating</tt> | <tt>available</tt> | <tt>restoring</tt> |
--   <tt>copying</tt> | <tt>deleting</tt> .</li>
--   <li><a>sSnapshotWindow</a> - The daily time range during which
--   ElastiCache takes daily snapshots of the source cache cluster.</li>
--   <li><a>sCacheClusterId</a> - The user-supplied identifier of the
--   source cache cluster.</li>
--   <li><a>sEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) used by the source cache cluster.</li>
--   <li><a>sPreferredMaintenanceWindow</a> - Specifies the weekly time
--   range during which maintenance on the cluster is performed. It is
--   specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock
--   UTC). The minimum maintenance window is a 60 minute period. Valid
--   values for <tt>ddd</tt> are: * <tt>sun</tt> * <tt>mon</tt> *
--   <tt>tue</tt> * <tt>wed</tt> * <tt>thu</tt> * <tt>fri</tt> *
--   <tt>sat</tt> Example: <tt>sun:23:00-mon:01:30</tt></li>
--   <li><a>sTopicARN</a> - The Amazon Resource Name (ARN) for the topic
--   used by the source cache cluster for publishing notifications.</li>
--   <li><a>sNodeSnapshots</a> - A list of the cache nodes in the source
--   cache cluster.</li>
--   <li><a>sCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the source cache cluster.</li>
--   <li><a>sPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the source cache cluster is located.</li>
--   <li><a>sNumNodeGroups</a> - The number of node groups (shards) in this
--   snapshot. When restoring from a snapshot, the number of node groups
--   (shards) in the snapshot and in the restored replication group must be
--   the same.</li>
--   <li><a>sSnapshotRetentionLimit</a> - For an automatic snapshot, the
--   number of days for which ElastiCache retains the snapshot before
--   deleting it. For manual snapshots, this field reflects the
--   <tt>SnapshotRetentionLimit</tt> for the source cache cluster when the
--   snapshot was created. This field is otherwise ignored: Manual
--   snapshots do not expire, and can only be deleted using the
--   <tt>DeleteSnapshot</tt> operation. <b>Important</b> If the value of
--   SnapshotRetentionLimit is set to zero (0), backups are turned
--   off.</li>
--   <li><a>sSnapshotName</a> - The name of a snapshot. For an automatic
--   snapshot, the name is system-generated. For a manual snapshot, this is
--   the user-provided name.</li>
--   <li><a>sReplicationGroupId</a> - The unique identifier of the source
--   replication group.</li>
--   <li><a>sNumCacheNodes</a> - The number of cache nodes in the source
--   cache cluster. For clusters running Redis, this value must be 1. For
--   clusters running Memcached, this value must be between 1 and 20.</li>
--   <li><a>sPort</a> - The port number used by each cache nodes in the
--   source cache cluster.</li>
--   <li><a>sAutomaticFailover</a> - Indicates the status of Multi-AZ for
--   the source replication group.</li>
--   <li><a>sSnapshotSource</a> - Indicates whether the snapshot is from an
--   automatic backup (<tt>automated</tt> ) or was created manually
--   (<tt>manual</tt> ).</li>
--   </ul>
snapshot :: Snapshot

-- | The version of the cache engine version that is used by the source
--   cache cluster.
sEngineVersion :: Lens' Snapshot (Maybe Text)

-- | The name of the compute and memory capacity node type for the source
--   cache cluster. Valid node types are as follows: * General purpose: *
--   Current generation: <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt>
--   , <tt>cache.t2.medium</tt> , <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt> , <tt>cache.m4.large</tt> ,
--   <tt>cache.m4.xlarge</tt> , <tt>cache.m4.2xlarge</tt> ,
--   <tt>cache.m4.4xlarge</tt> , <tt>cache.m4.10xlarge</tt> * Previous
--   generation: <tt>cache.t1.micro</tt> , <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt> * Compute optimized: <tt>cache.c1.xlarge</tt>
--   * Memory optimized: * Current generation: <tt>cache.r3.large</tt> ,
--   <tt>cache.r3.xlarge</tt> , <tt>cache.r3.2xlarge</tt> ,
--   <tt>cache.r3.4xlarge</tt> , <tt>cache.r3.8xlarge</tt> * Previous
--   generation: <tt>cache.m2.xlarge</tt> , <tt>cache.m2.2xlarge</tt> ,
--   <tt>cache.m2.4xlarge</tt> <b>Notes:</b> * All T2 instances are created
--   in an Amazon Virtual Private Cloud (Amazon VPC). * Redis
--   backup<i>restore is not supported for Redis (cluster mode disabled) T1
--   and T2 instances. Backup</i>restore is supported on Redis (cluster
--   mode enabled) T2 instances. * Redis Append-only files (AOF)
--   functionality is not supported for T1 or T2 instances. For a complete
--   listing of node types and specifications, see <a>Amazon ElastiCache
--   Product Features and Details</a> and either <a>Cache Node
--   Type-Specific Parameters for Memcached</a> or <a>Cache Node
--   Type-Specific Parameters for Redis</a> .
sCacheNodeType :: Lens' Snapshot (Maybe Text)

-- | The date and time when the source cache cluster was created.
sCacheClusterCreateTime :: Lens' Snapshot (Maybe UTCTime)

-- | This parameter is currently disabled.
sAutoMinorVersionUpgrade :: Lens' Snapshot (Maybe Bool)

-- | The cache parameter group that is associated with the source cache
--   cluster.
sCacheParameterGroupName :: Lens' Snapshot (Maybe Text)

-- | A description of the source replication group.
sReplicationGroupDescription :: Lens' Snapshot (Maybe Text)

-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache
--   subnet group for the source cache cluster.
sVPCId :: Lens' Snapshot (Maybe Text)

-- | The status of the snapshot. Valid values: <tt>creating</tt> |
--   <tt>available</tt> | <tt>restoring</tt> | <tt>copying</tt> |
--   <tt>deleting</tt> .
sSnapshotStatus :: Lens' Snapshot (Maybe Text)

-- | The daily time range during which ElastiCache takes daily snapshots of
--   the source cache cluster.
sSnapshotWindow :: Lens' Snapshot (Maybe Text)

-- | The user-supplied identifier of the source cache cluster.
sCacheClusterId :: Lens' Snapshot (Maybe Text)

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   used by the source cache cluster.
sEngine :: Lens' Snapshot (Maybe Text)

-- | Specifies the weekly time range during which maintenance on the
--   cluster is performed. It is specified as a range in the format
--   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
--   window is a 60 minute period. Valid values for <tt>ddd</tt> are: *
--   <tt>sun</tt> * <tt>mon</tt> * <tt>tue</tt> * <tt>wed</tt> *
--   <tt>thu</tt> * <tt>fri</tt> * <tt>sat</tt> Example:
--   <tt>sun:23:00-mon:01:30</tt>
sPreferredMaintenanceWindow :: Lens' Snapshot (Maybe Text)

-- | The Amazon Resource Name (ARN) for the topic used by the source cache
--   cluster for publishing notifications.
sTopicARN :: Lens' Snapshot (Maybe Text)

-- | A list of the cache nodes in the source cache cluster.
sNodeSnapshots :: Lens' Snapshot [NodeSnapshot]

-- | The name of the cache subnet group associated with the source cache
--   cluster.
sCacheSubnetGroupName :: Lens' Snapshot (Maybe Text)

-- | The name of the Availability Zone in which the source cache cluster is
--   located.
sPreferredAvailabilityZone :: Lens' Snapshot (Maybe Text)

-- | The number of node groups (shards) in this snapshot. When restoring
--   from a snapshot, the number of node groups (shards) in the snapshot
--   and in the restored replication group must be the same.
sNumNodeGroups :: Lens' Snapshot (Maybe Int)

-- | For an automatic snapshot, the number of days for which ElastiCache
--   retains the snapshot before deleting it. For manual snapshots, this
--   field reflects the <tt>SnapshotRetentionLimit</tt> for the source
--   cache cluster when the snapshot was created. This field is otherwise
--   ignored: Manual snapshots do not expire, and can only be deleted using
--   the <tt>DeleteSnapshot</tt> operation. <b>Important</b> If the value
--   of SnapshotRetentionLimit is set to zero (0), backups are turned off.
sSnapshotRetentionLimit :: Lens' Snapshot (Maybe Int)

-- | The name of a snapshot. For an automatic snapshot, the name is
--   system-generated. For a manual snapshot, this is the user-provided
--   name.
sSnapshotName :: Lens' Snapshot (Maybe Text)

-- | The unique identifier of the source replication group.
sReplicationGroupId :: Lens' Snapshot (Maybe Text)

-- | The number of cache nodes in the source cache cluster. For clusters
--   running Redis, this value must be 1. For clusters running Memcached,
--   this value must be between 1 and 20.
sNumCacheNodes :: Lens' Snapshot (Maybe Int)

-- | The port number used by each cache nodes in the source cache cluster.
sPort :: Lens' Snapshot (Maybe Int)

-- | Indicates the status of Multi-AZ for the source replication group.
sAutomaticFailover :: Lens' Snapshot (Maybe AutomaticFailoverStatus)

-- | Indicates whether the snapshot is from an automatic backup
--   (<tt>automated</tt> ) or was created manually (<tt>manual</tt> ).
sSnapshotSource :: Lens' Snapshot (Maybe Text)

-- | Represents the subnet associated with a cache cluster. This parameter
--   refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC)
--   and used with ElastiCache.
--   
--   <i>See:</i> <a>subnet</a> smart constructor.
data Subnet

-- | Creates a value of <a>Subnet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sSubnetIdentifier</a> - The unique identifier for the
--   subnet.</li>
--   <li><a>sSubnetAvailabilityZone</a> - The Availability Zone associated
--   with the subnet.</li>
--   </ul>
subnet :: Subnet

-- | The unique identifier for the subnet.
sSubnetIdentifier :: Lens' Subnet (Maybe Text)

-- | The Availability Zone associated with the subnet.
sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)

-- | A cost allocation Tag that can be added to an ElastiCache cluster or
--   replication group. Tags are composed of a Key/Value pair. A tag with a
--   null Value is permitted.
--   
--   <i>See:</i> <a>tag</a> smart constructor.
data Tag

-- | Creates a value of <a>Tag</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tagValue</a> - The tag's value. May not be null.</li>
--   <li><a>tagKey</a> - The key for the tag.</li>
--   </ul>
tag :: Tag

-- | The tag's value. May not be null.
tagValue :: Lens' Tag (Maybe Text)

-- | The key for the tag.
tagKey :: Lens' Tag (Maybe Text)

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsOnResource</tt> , and <tt>RemoveTagsFromResource</tt>
--   operations.
--   
--   <i>See:</i> <a>tagListMessage</a> smart constructor.
data TagListMessage

-- | Creates a value of <a>TagListMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlmTagList</a> - A list of cost allocation tags as key-value
--   pairs.</li>
--   </ul>
tagListMessage :: TagListMessage

-- | A list of cost allocation tags as key-value pairs.
tlmTagList :: Lens' TagListMessage [Tag]
