-- 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.6.0


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
--   allowed number of node groups (shards) in a single replication group.
--   The default maximum is 15
_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 50.
_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 cluster.
_NodeQuotaForClusterExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The customer has exceeded the allowed rate of API calls.
_APICallRateForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The node group specified by the <tt>NodeGroupId</tt> parameter could
--   not be found. Please verify that the node group exists and that you
--   spelled the <tt>NodeGroupId</tt> value correctly.
_NodeGroupNotFoundFault :: 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 cluster running on a
--   <tt>cache.t1.micro</tt> cache node.</li>
--   <li>Creating a snapshot of a 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

-- | Prism for TestFailoverNotAvailableFault' errors.
_TestFailoverNotAvailableFault :: 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 cluster ID does not refer to an existing cluster.
_CacheClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of 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 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 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 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 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 cluster.</li>
--   <li><a>ccCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the cluster. The following node types are
--   supported by ElastiCache. Generally speaking, the current generation
--   types provide more memory and computational power at lower cost when
--   compared to their equivalent previous generation counterparts. *
--   General purpose: * Current generation: <b>T2 node types:</b>
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster.</li>
--   <li><a>ccCacheClusterCreateTime</a> - The date and time when the
--   cluster was created.</li>
--   <li><a>ccAtRestEncryptionEnabled</a> - A flag that enables encryption
--   at-rest when set to <tt>true</tt> . You cannot modify the value of
--   <tt>AtRestEncryptionEnabled</tt> after the cluster is created. To
--   enable at-rest encryption on a cluster you must set
--   <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>ccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>ccSecurityGroups</a> - A list of VPC Security Groups associated
--   with the cluster.</li>
--   <li><a>ccNotificationConfiguration</a> - Describes a notification
--   topic and its status. Notification topics are used for publishing
--   ElastiCache events to subscribers using Amazon Simple Notification
--   Service (SNS).</li>
--   <li><a>ccTransitEncryptionEnabled</a> - A flag that enables in-transit
--   encryption when set to <tt>true</tt> . You cannot modify the value of
--   <tt>TransitEncryptionEnabled</tt> after the cluster is created. To
--   enable in-transit encryption on a cluster you must set
--   <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>ccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your cluster.
--   Example: <tt>05:00-09:00</tt></li>
--   <li><a>ccCacheClusterId</a> - The user-supplied identifier of the
--   cluster. This identifier is a unique key that identifies a
--   cluster.</li>
--   <li><a>ccConfigurationEndpoint</a> - Represents a Memcached cluster
--   endpoint which, if Automatic Discovery is enabled on the cluster, can
--   be used by an application to connect to any node in the cluster. The
--   configuration endpoint will always have <tt>.cfg</tt> in it. Example:
--   <tt>mem-3.9dvc4r<i>.cfg</i> .usw2.cache.amazonaws.com:11211</tt></li>
--   <li><a>ccEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) to be used for this cluster.</li>
--   <li><a>ccCacheSecurityGroups</a> - A list of cache security group
--   elements, composed of name and status sub-elements.</li>
--   <li><a>ccAuthTokenEnabled</a> - A flag that enables using an
--   <tt>AuthToken</tt> (password) when issuing Redis commands. Default:
--   <tt>false</tt></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 cluster.</li>
--   <li><a>ccPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the cluster is located or <a>Multiple</a> if the cache
--   nodes are located in different Availability Zones.</li>
--   <li><a>ccCacheParameterGroup</a> - Status of the cache parameter
--   group.</li>
--   <li><a>ccCacheClusterStatus</a> - The current state of this 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 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 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
--   cluster belongs. If this field is empty, the 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 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 cluster.
ccEngineVersion :: Lens' CacheCluster (Maybe Text)

-- | The name of the compute and memory capacity node type for the cluster.
--   The following node types are supported by ElastiCache. Generally
--   speaking, the current generation types provide more memory and
--   computational power at lower cost when compared to their equivalent
--   previous generation counterparts. * General purpose: * Current
--   generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster.
ccCacheNodes :: Lens' CacheCluster [CacheNode]

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

-- | A flag that enables encryption at-rest when set to <tt>true</tt> . You
--   cannot modify the value of <tt>AtRestEncryptionEnabled</tt> after the
--   cluster is created. To enable at-rest encryption on a cluster you must
--   set <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create
--   a cluster. Default: <tt>false</tt>
ccAtRestEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)

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

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

-- | Describes a notification topic and its status. Notification topics are
--   used for publishing ElastiCache events to subscribers using Amazon
--   Simple Notification Service (SNS).
ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)

-- | A flag that enables in-transit encryption when set to <tt>true</tt> .
--   You cannot modify the value of <tt>TransitEncryptionEnabled</tt> after
--   the cluster is created. To enable in-transit encryption on a cluster
--   you must set <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when
--   you create a cluster. Default: <tt>false</tt>
ccTransitEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)

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

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

-- | Represents a Memcached cluster endpoint which, if Automatic Discovery
--   is enabled on the cluster, can be used by an application to connect to
--   any node in the cluster. The configuration endpoint will always have
--   <tt>.cfg</tt> in it. Example: <tt>mem-3.9dvc4r<i>.cfg</i>
--   .usw2.cache.amazonaws.com:11211</tt>
ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)

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

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

-- | A flag that enables using an <tt>AuthToken</tt> (password) when
--   issuing Redis commands. Default: <tt>false</tt>
ccAuthTokenEnabled :: Lens' CacheCluster (Maybe Bool)

-- | 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 cluster.
ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)

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

-- | Status of the cache parameter group.
ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)

-- | The current state of this 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 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 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 cluster belongs. If this field is
--   empty, the 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 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 cluster. Each cache node
--   runs its own instance of the cluster's protocol-compliant caching
--   software - either Memcached or Redis.
--   
--   The following node types are supported by ElastiCache. Generally
--   speaking, the current generation types provide more memory and
--   computational power at lower cost when compared to their equivalent
--   previous generation counterparts.
--   
--   <ul>
--   <li>General purpose:</li>
--   <li>Current generation:</li>
--   </ul>
--   
--   <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt>
--   
--   <b>M3 node types:</b> <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt>
--   
--   <b>M4 node types:</b> <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>
--   
--   <ul>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt>
--   
--   <b>M1 node types:</b> <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt>
--   
--   <ul>
--   <li>Compute optimized:</li>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>C1 node types:</b> <tt>cache.c1.xlarge</tt>
--   
--   <ul>
--   <li>Memory optimized:</li>
--   <li>Current generation:</li>
--   </ul>
--   
--   <b>R3 node types:</b> <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>
--   
--   <ul>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>M2 node types:</b> <tt>cache.m2.xlarge</tt> ,
--   <tt>cache.m2.2xlarge</tt> , <tt>cache.m2.4xlarge</tt>
--   
--   <b>Notes:</b>
--   
--   <ul>
--   <li>All T2 instances are created in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li>Redis (cluster mode disabled): Redis backup/restore is not
--   supported on T1 and T2 instances.</li>
--   <li>Redis (cluster mode enabled): Backup/restore is not supported on
--   T1 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 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 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 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 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 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 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 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
--   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 cluster level, the
--   identifier would be the name of the 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 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 cluster level, the identifier would be the name of the
--   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 keyspace for a
--   particular node group. Keyspaces range from 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 keyspace for a particular node group.
--   Keyspaces range from 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 cluster to which the node
--   belongs.</li>
--   <li><a>ngmCacheNodeId</a> - The ID of the node within its 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 cluster to which the node belongs.
ngmCacheClusterId :: Lens' NodeGroupMember (Maybe Text)

-- | The ID of the node within its 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 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 cluster.</li>
--   <li><a>nsCacheClusterId</a> - A unique identifier for the source
--   cluster.</li>
--   <li><a>nsCacheNodeId</a> - The cache node identifier for the node in
--   the source 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
--   cluster.
nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

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

-- | The cache node identifier for the node in the source 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 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
--   cluster runs.</li>
--   <li><a>pmvCacheNodeType</a> - The cache node type that this 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 cluster. A node ID is a
--   numeric identifier (0001, 0002, etc.).</li>
--   <li><a>pmvNumCacheNodes</a> - The new number of cache nodes for the
--   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 cluster runs.
pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)

-- | The cache node type that this 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 cluster. A node ID is a numeric identifier (0001, 0002,
--   etc.).
pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]

-- | The new number of cache nodes for the 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>rgCacheNodeType</a> - The name of the compute and memory
--   capacity node type for each node in the replication group.</li>
--   <li><a>rgNodeGroups</a> - A list of node groups in this replication
--   group. For Redis (cluster mode disabled) replication groups, this is a
--   single-element list. For Redis (cluster mode enabled) replication
--   groups, the list contains an entry for each node group (shard).</li>
--   <li><a>rgSnapshottingClusterId</a> - The cluster ID that is used as
--   the daily snapshot source for the replication group.</li>
--   <li><a>rgClusterEnabled</a> - A flag indicating whether or not this
--   replication group is cluster enabled; i.e., whether its data can be
--   partitioned across multiple shards (API/CLI: node groups). Valid
--   values: <tt>true</tt> | <tt>false</tt></li>
--   <li><a>rgAtRestEncryptionEnabled</a> - A flag that enables encryption
--   at-rest when set to <tt>true</tt> . You cannot modify the value of
--   <tt>AtRestEncryptionEnabled</tt> after the cluster is created. To
--   enable encryption at-rest on a cluster you must set
--   <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>rgTransitEncryptionEnabled</a> - A flag that enables in-transit
--   encryption when set to <tt>true</tt> . You cannot modify the value of
--   <tt>TransitEncryptionEnabled</tt> after the cluster is created. To
--   enable in-transit encryption on a cluster you must set
--   <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></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.</li>
--   <li><a>rgConfigurationEndpoint</a> - The configuration endpoint for
--   this replication group. Use the configuration endpoint to connect to
--   this replication group.</li>
--   <li><a>rgAuthTokenEnabled</a> - A flag that enables using an
--   <tt>AuthToken</tt> (password) when issuing Redis commands. Default:
--   <tt>false</tt></li>
--   <li><a>rgMemberClusters</a> - The identifiers of all the nodes that
--   are part of this replication group.</li>
--   <li><a>rgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic 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 user supplied 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 with
--   automatic failover for this Redis replication group. Amazon
--   ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</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)

-- | The name of the compute and memory capacity node type for each node in
--   the replication group.
rgCacheNodeType :: Lens' ReplicationGroup (Maybe Text)

-- | A list of node groups in this replication group. For Redis (cluster
--   mode disabled) replication groups, this is a single-element list. For
--   Redis (cluster mode enabled) replication groups, the list contains an
--   entry for each node group (shard).
rgNodeGroups :: Lens' ReplicationGroup [NodeGroup]

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

-- | A flag indicating whether or not this replication group is cluster
--   enabled; i.e., whether its data can be partitioned across multiple
--   shards (API/CLI: node groups). Valid values: <tt>true</tt> |
--   <tt>false</tt>
rgClusterEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | A flag that enables encryption at-rest when set to <tt>true</tt> . You
--   cannot modify the value of <tt>AtRestEncryptionEnabled</tt> after the
--   cluster is created. To enable encryption at-rest on a cluster you must
--   set <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create
--   a cluster. Default: <tt>false</tt>
rgAtRestEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | A flag that enables in-transit encryption when set to <tt>true</tt> .
--   You cannot modify the value of <tt>TransitEncryptionEnabled</tt> after
--   the cluster is created. To enable in-transit encryption on a cluster
--   you must set <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when
--   you create a cluster. Default: <tt>false</tt>
rgTransitEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | 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.
rgSnapshotWindow :: Lens' ReplicationGroup (Maybe Text)

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

-- | A flag that enables using an <tt>AuthToken</tt> (password) when
--   issuing Redis commands. Default: <tt>false</tt>
rgAuthTokenEnabled :: Lens' ReplicationGroup (Maybe Bool)

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

-- | The number of days for which ElastiCache retains automatic 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 user supplied 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 with automatic failover for this
--   Redis replication group. Amazon ElastiCache for Redis does not support
--   Multi-AZ with automatic failover on: * Redis versions earlier than
--   2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node types. *
--   Redis (cluster mode enabled): T1 node types.
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>rgpmvResharding</a> - The status of an online resharding
--   operation.</li>
--   <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 with automatic failover for this Redis replication group.
--   Amazon ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</li>
--   </ul>
replicationGroupPendingModifiedValues :: ReplicationGroupPendingModifiedValues

-- | The status of an online resharding operation.
rgpmvResharding :: Lens' ReplicationGroupPendingModifiedValues (Maybe ReshardingStatus)

-- | 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 with automatic failover for this
--   Redis replication group. Amazon ElastiCache for Redis does not support
--   Multi-AZ with automatic failover on: * Redis versions earlier than
--   2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node types. *
--   Redis (cluster mode enabled): T1 node types.
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. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node
--   types are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node
--   types are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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)

-- | A list of <tt>PreferredAvailabilityZones</tt> objects that specifies
--   the configuration of a node group in the resharded cluster.
--   
--   <i>See:</i> <a>reshardingConfiguration</a> smart constructor.
data ReshardingConfiguration

-- | Creates a value of <a>ReshardingConfiguration</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>rcPreferredAvailabilityZones</a> - A list of preferred
--   availability zones for the nodes in this cluster.</li>
--   </ul>
reshardingConfiguration :: ReshardingConfiguration

-- | A list of preferred availability zones for the nodes in this cluster.
rcPreferredAvailabilityZones :: Lens' ReshardingConfiguration [Text]

-- | The status of an online resharding operation.
--   
--   <i>See:</i> <a>reshardingStatus</a> smart constructor.
data ReshardingStatus

-- | Creates a value of <a>ReshardingStatus</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>rsSlotMigration</a> - Represents the progress of an online
--   resharding operation.</li>
--   </ul>
reshardingStatus :: ReshardingStatus

-- | Represents the progress of an online resharding operation.
rsSlotMigration :: Lens' ReshardingStatus (Maybe SlotMigration)

-- | 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 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 cluster are modified.
sgmStatus :: Lens' SecurityGroupMembership (Maybe Text)

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

-- | Represents the progress of an online resharding operation.
--   
--   <i>See:</i> <a>slotMigration</a> smart constructor.
data SlotMigration

-- | Creates a value of <a>SlotMigration</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>smProgressPercentage</a> - The percentage of the slot migration
--   that is complete.</li>
--   </ul>
slotMigration :: SlotMigration

-- | The percentage of the slot migration that is complete.
smProgressPercentage :: Lens' SlotMigration (Maybe Double)

-- | Represents a copy of an entire Redis 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 cluster.</li>
--   <li><a>sCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the source cluster. The following node types
--   are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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
--   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 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 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 cluster.</li>
--   <li><a>sCacheClusterId</a> - The user-supplied identifier of the
--   source cluster.</li>
--   <li><a>sEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) used by the source 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 cluster for publishing notifications.</li>
--   <li><a>sNodeSnapshots</a> - A list of the cache nodes in the source
--   cluster.</li>
--   <li><a>sCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the source cluster.</li>
--   <li><a>sPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the source 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 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
--   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 cluster.</li>
--   <li><a>sAutomaticFailover</a> - Indicates the status of Multi-AZ with
--   automatic failover for the source Redis replication group. Amazon
--   ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</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
--   cluster.
sEngineVersion :: Lens' Snapshot (Maybe Text)

-- | The name of the compute and memory capacity node type for the source
--   cluster. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 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 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 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 cluster.
sSnapshotWindow :: Lens' Snapshot (Maybe Text)

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

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   used by the source 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
--   cluster for publishing notifications.
sTopicARN :: Lens' Snapshot (Maybe Text)

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

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

-- | The name of the Availability Zone in which the source 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
--   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 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 cluster.
sPort :: Lens' Snapshot (Maybe Int)

-- | Indicates the status of Multi-AZ with automatic failover for the
--   source Redis replication group. Amazon ElastiCache for Redis does not
--   support Multi-AZ with automatic failover on: * Redis versions earlier
--   than 2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node
--   types. * Redis (cluster mode enabled): T1 node types.
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 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 be null.</li>
--   <li><a>tagKey</a> - The key for the tag. May not be null.</li>
--   </ul>
tag :: Tag

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

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

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsForResource</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]


-- | Represents the input of a <tt>TestFailover</tt> operation which test
--   automatic failover on a specified node group (called shard in the
--   console) in a replication group (called cluster in the console).
--   
--   <b>Note the following</b>
--   
--   <ul>
--   <li>A customer can use this operation to test automatic failover on up
--   to 5 shards (called node groups in the ElastiCache API and AWS CLI) in
--   any rolling 24-hour period.</li>
--   <li>If calling this operation on shards in different clusters (called
--   replication groups in the API and CLI), the calls can be made
--   concurrently.</li>
--   <li>If calling this operation multiple times on different shards in
--   the same Redis (cluster mode enabled) replication group, the first
--   node replacement must complete before a subsequent call can be
--   made.</li>
--   <li>To determine whether the node replacement is complete you can
--   check Events using the Amazon ElastiCache console, the AWS CLI, or the
--   ElastiCache API. Look for the following automatic failover related
--   events, listed here in order of occurrance:</li>
--   <li>Replication group message: <tt>Test Failover API called for node
--   group <a>node-group-id</a></tt></li>
--   <li>Cache cluster message: <tt>Failover from master node
--   <a>primary-node-id</a> to replica node <a>node-id</a>
--   completed</tt></li>
--   <li>Replication group message: <tt>Failover from master node
--   <a>primary-node-id</a> to replica node <a>node-id</a>
--   completed</tt></li>
--   <li>Cache cluster message: <tt>Recovering cache nodes
--   <a>node-id</a></tt></li>
--   <li>Cache cluster message: <tt>Finished recovery for cache nodes
--   <a>node-id</a></tt></li>
--   </ul>
--   
--   For more information see:
--   
--   <ul>
--   <li><a>Viewing ElastiCache Events</a> in the <i>ElastiCache User
--   Guide</i></li>
--   <li><a>DescribeEvents</a> in the ElastiCache API Reference</li>
--   </ul>
--   
--   Also see, <a>Testing Multi-AZ with Automatic Failover</a> in the
--   <i>ElastiCache User Guide</i> .
module Network.AWS.ElastiCache.TestFailover

-- | Creates a value of <a>TestFailover</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>tfReplicationGroupId</a> - The name of the replication group
--   (console: cluster) whose automatic failover is being tested by this
--   operation.</li>
--   <li><a>tfNodeGroupId</a> - The name of the node group (called shard in
--   the console) in this replication group on which automatic failover is
--   to be tested. You may test automatic failover on up to 5 node groups
--   in any rolling 24-hour period.</li>
--   </ul>
testFailover :: Text -> Text -> TestFailover

-- | <i>See:</i> <a>testFailover</a> smart constructor.
data TestFailover

-- | The name of the replication group (console: cluster) whose automatic
--   failover is being tested by this operation.
tfReplicationGroupId :: Lens' TestFailover Text

-- | The name of the node group (called shard in the console) in this
--   replication group on which automatic failover is to be tested. You may
--   test automatic failover on up to 5 node groups in any rolling 24-hour
--   period.
tfNodeGroupId :: Lens' TestFailover Text

-- | Creates a value of <a>TestFailoverResponse</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>tfrsReplicationGroup</a> - Undocumented member.</li>
--   <li><a>tfrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
testFailoverResponse :: Int -> TestFailoverResponse

-- | <i>See:</i> <a>testFailoverResponse</a> smart constructor.
data TestFailoverResponse

-- | Undocumented member.
tfrsReplicationGroup :: Lens' TestFailoverResponse (Maybe ReplicationGroup)

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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress.RevokeCacheSecurityGroupIngressResponse
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


-- | 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>ListTagsForResource</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 cluster.
--   This operation applies any modified cache parameter groups to the
--   cluster. The reboot operation takes place as soon as possible, and
--   results in a momentary outage to the cluster. During the reboot, the
--   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 cluster event is created.
--   
--   Rebooting a cluster is currently supported on Memcached and Redis
--   (cluster mode disabled) clusters. Rebooting is not supported on Redis
--   (cluster mode enabled) clusters.
--   
--   If you make changes to parameters that require a Redis (cluster mode
--   enabled) cluster reboot for the changes to be applied, see
--   <a>Rebooting a Cluster</a> for an alternate process.
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 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 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 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 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.RebootCacheCluster.RebootCacheClusterResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering.PurchaseReservedCacheNodesOfferingResponse
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


-- | Performs horizontal scaling on a Redis (cluster mode enabled) cluster
--   with no downtime. Requires Redis engine version 3.2.10 or newer. For
--   information on upgrading your engine to a newer version, see
--   <a>Upgrading Engine Versions</a> in the Amazon ElastiCache User Guide.
--   
--   For more information on ElastiCache for Redis online horizontal
--   scaling, see <a>ElastiCache for Redis Horizontal Scaling</a>
module Network.AWS.ElastiCache.ModifyReplicationGroupShardConfiguration

-- | Creates a value of <a>ModifyReplicationGroupShardConfiguration</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>mrgscReshardingConfiguration</a> - Specifies the preferred
--   availability zones for each node group in the cluster. If the value of
--   <tt>NodeGroupCount</tt> is greater than the current number of node
--   groups (shards), you can use this parameter to specify the preferred
--   availability zones of the cluster's shards. If you omit this parameter
--   ElastiCache selects availability zones for you. You can specify this
--   parameter only if the value of <tt>NodeGroupCount</tt> is greater than
--   the current number of node groups (shards).</li>
--   <li><a>mrgscNodeGroupsToRemove</a> - If the value of
--   <tt>NodeGroupCount</tt> is less than the current number of node groups
--   (shards), <tt>NodeGroupsToRemove</tt> is a required list of node group
--   ids to remove from the cluster.</li>
--   <li><a>mrgscReplicationGroupId</a> - The name of the Redis (cluster
--   mode enabled) cluster (replication group) on which the shards are to
--   be configured.</li>
--   <li><a>mrgscNodeGroupCount</a> - The number of node groups (shards)
--   that results from the modification of the shard configuration.</li>
--   <li><a>mrgscApplyImmediately</a> - Indicates that the shard
--   reconfiguration process begins immediately. At present, the only
--   permitted value for this parameter is <tt>true</tt> . Value: true</li>
--   </ul>
modifyReplicationGroupShardConfiguration :: Text -> Int -> Bool -> ModifyReplicationGroupShardConfiguration

-- | Represents the input for a
--   <tt>ModifyReplicationGroupShardConfiguration</tt> operation.
--   
--   <i>See:</i> <a>modifyReplicationGroupShardConfiguration</a> smart
--   constructor.
data ModifyReplicationGroupShardConfiguration

-- | Specifies the preferred availability zones for each node group in the
--   cluster. If the value of <tt>NodeGroupCount</tt> is greater than the
--   current number of node groups (shards), you can use this parameter to
--   specify the preferred availability zones of the cluster's shards. If
--   you omit this parameter ElastiCache selects availability zones for
--   you. You can specify this parameter only if the value of
--   <tt>NodeGroupCount</tt> is greater than the current number of node
--   groups (shards).
mrgscReshardingConfiguration :: Lens' ModifyReplicationGroupShardConfiguration [ReshardingConfiguration]

-- | If the value of <tt>NodeGroupCount</tt> is less than the current
--   number of node groups (shards), <tt>NodeGroupsToRemove</tt> is a
--   required list of node group ids to remove from the cluster.
mrgscNodeGroupsToRemove :: Lens' ModifyReplicationGroupShardConfiguration [Text]

-- | The name of the Redis (cluster mode enabled) cluster (replication
--   group) on which the shards are to be configured.
mrgscReplicationGroupId :: Lens' ModifyReplicationGroupShardConfiguration Text

-- | The number of node groups (shards) that results from the modification
--   of the shard configuration.
mrgscNodeGroupCount :: Lens' ModifyReplicationGroupShardConfiguration Int

-- | Indicates that the shard reconfiguration process begins immediately.
--   At present, the only permitted value for this parameter is
--   <tt>true</tt> . Value: true
mrgscApplyImmediately :: Lens' ModifyReplicationGroupShardConfiguration Bool

-- | Creates a value of
--   <a>ModifyReplicationGroupShardConfigurationResponse</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>mrgscrsReplicationGroup</a> - Undocumented member.</li>
--   <li><a>mrgscrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
modifyReplicationGroupShardConfigurationResponse :: Int -> ModifyReplicationGroupShardConfigurationResponse

-- | <i>See:</i> <a>modifyReplicationGroupShardConfigurationResponse</a>
--   smart constructor.
data ModifyReplicationGroupShardConfigurationResponse

-- | Undocumented member.
mrgscrsReplicationGroup :: Lens' ModifyReplicationGroupShardConfigurationResponse (Maybe ReplicationGroup)

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


-- | 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> Amazon ElastiCache for Redis does not support Multi-AZ
--   with automatic failover on: * Redis versions earlier than 2.8.6. *
--   Redis (cluster mode disabled): T1 and T2 cache node types. * Redis
--   (cluster mode enabled): T1 node types.</li>
--   <li><a>mrgEngineVersion</a> - The upgraded version of the cache engine
--   to be run on the 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 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 clusters in the replication group. This parameter
--   can be used only with replication group containing 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>mrgNodeGroupId</a> - The name of the Node Group (called shard
--   in the console).</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 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> Amazon ElastiCache for Redis
--   does not support Multi-AZ with automatic failover on: * Redis versions
--   earlier than 2.8.6. * Redis (cluster mode disabled): T1 and T2 cache
--   node types. * Redis (cluster mode enabled): T1 node types.
mrgAutomaticFailoverEnabled :: Lens' ModifyReplicationGroup (Maybe Bool)

-- | The upgraded version of the cache engine to be run on the 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 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 clusters in the
--   replication group. This parameter can be used only with replication
--   group containing 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 name of the Node Group (called shard in the console).
mrgNodeGroupId :: 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 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyReplicationGroup.ModifyReplicationGroupResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheSubnetGroup.ModifyCacheSubnetGroupResponse
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


-- | 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 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 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 cluster up to.</li>
--   <li><a>mccSecurityGroupIds</a> - Specifies the VPC Security Groups
--   associated with the 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 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 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>ModifyCacheCluster</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 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 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 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 cluster. If
--   <tt>false</tt> , changes to the 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
--   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 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 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 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 cluster up to.
mccCacheNodeType :: Lens' ModifyCacheCluster (Maybe Text)

-- | Specifies the VPC Security Groups associated with the 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 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 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>ModifyCacheCluster</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 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 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
--   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 cluster. If
--   <tt>false</tt> , changes to the 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 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 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 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.ModifyCacheCluster.ModifyCacheClusterResponse
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


-- | 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 50 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>ListTagsForResource</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 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 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> - A string list, each element
--   of which specifies a cache node type which you can use to scale your
--   cluster or replication group. When scaling up a Redis cluster or
--   replication group using <tt>ModifyCacheCluster</tt> or
--   <tt>ModifyReplicationGroup</tt> , use a value from this list for the
--   <tt>CacheNodeType</tt> parameter.</li>
--   <li><a>lantmrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listAllowedNodeTypeModificationsResponse :: Int -> ListAllowedNodeTypeModificationsResponse

-- | Represents the allowed node types you can use to modify your cluster
--   or replication group.
--   
--   <i>See:</i> <a>listAllowedNodeTypeModificationsResponse</a> smart
--   constructor.
data ListAllowedNodeTypeModificationsResponse

-- | A string list, each element of which specifies a cache node type which
--   you can use to scale your cluster or replication group. When scaling
--   up a Redis cluster or replication group using
--   <tt>ModifyCacheCluster</tt> or <tt>ModifyReplicationGroup</tt> , use a
--   value from this list for the <tt>CacheNodeType</tt> parameter.
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 Control.DeepSeq.NFData Network.AWS.ElastiCache.ListAllowedNodeTypeModifications.ListAllowedNodeTypeModificationsResponse
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


-- | Returns information about 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 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 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshots
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeSnapshots.DescribeSnapshotsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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. The following node types are supported by
--   ElastiCache. Generally speaking, the current generation types provide
--   more memory and computational power at lower cost when compared to
--   their equivalent previous generation counterparts. * General purpose:
--   * Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The
--   following node types are supported by ElastiCache. Generally speaking,
--   the current generation types provide more memory and computational
--   power at lower cost when compared to their equivalent previous
--   generation counterparts. * General purpose: * Current generation:
--   <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferings
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings.DescribeReservedCacheNodesOfferingsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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. The following node types are supported by
--   ElastiCache. Generally speaking, the current generation types provide
--   more memory and computational power at lower cost when compared to
--   their equivalent previous generation counterparts. * General purpose:
--   * Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The
--   following node types are supported by ElastiCache. Generally speaking,
--   the current generation types provide more memory and computational
--   power at lower cost when compared to their equivalent previous
--   generation counterparts. * General purpose: * Current generation:
--   <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodes
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReservedCacheNodes.DescribeReservedCacheNodesResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeReplicationGroups.DescribeReplicationGroupsResponse
instance Network.AWS.Pager.AWSPager 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


-- | Returns events related to clusters, cache security groups, and cache
--   parameter groups. You can obtain events specific to a particular
--   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. <b>Example:</b>
--   2017-03-30T07:03:49.555Z</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. <b>Example:</b>
--   2017-03-30T07:03:49.555Z</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. <b>Example:</b> 2017-03-30T07:03:49.555Z
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. <b>Example:</b> 2017-03-30T07:03:49.555Z
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.Types.AWSRequest Network.AWS.ElastiCache.DescribeEvents.DescribeEvents
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEvents.DescribeEventsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeEngineDefaultParameters.DescribeEngineDefaultParametersResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSubnetGroups.DescribeCacheSubnetGroupsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheSecurityGroups.DescribeCacheSecurityGroupsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParameters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameters.DescribeCacheParametersResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroups
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheParameterGroups.DescribeCacheParameterGroupsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersions
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheEngineVersions.DescribeCacheEngineVersionsResponse
instance Network.AWS.Pager.AWSPager 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


-- | Returns information about all provisioned clusters if no cluster
--   identifier is specified, or about a specific cache cluster if a
--   cluster identifier is supplied.
--   
--   By default, abbreviated information about the clusters is returned.
--   You can use the optional <i>ShowCacheNodeInfo</i> flag to retrieve
--   detailed information about the cache nodes associated with the
--   clusters. These details include the DNS address and port for the cache
--   node endpoint.
--   
--   If the cluster is in the <i>creating</i> state, only cluster-level
--   information is displayed until all of the nodes are successfully
--   provisioned.
--   
--   If the cluster is in the <i>deleting</i> state, only cluster-level
--   information is displayed.
--   
--   If cache nodes are currently being added to the cluster, node endpoint
--   information and creation time for the additional nodes are not
--   displayed until they are completely provisioned. When the cluster
--   state is <i>available</i> , the cluster is ready for use.
--   
--   If cache nodes are currently being removed from the 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>dShowCacheClustersNotInReplicationGroups</a> - An optional flag
--   that can be included in the <tt>DescribeCacheCluster</tt> request to
--   show only nodes (API/CLI: clusters) that are not members of a
--   replication group. In practice, this mean Memcached and single node
--   Redis clusters.</li>
--   <li><a>dCacheClusterId</a> - The user-supplied cluster identifier. If
--   this parameter is specified, only information about that specific
--   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 <tt>DescribeCacheCluster</tt> 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

-- | An optional flag that can be included in the
--   <tt>DescribeCacheCluster</tt> request to show only nodes (API/CLI:
--   clusters) that are not members of a replication group. In practice,
--   this mean Memcached and single node Redis clusters.
dShowCacheClustersNotInReplicationGroups :: Lens' DescribeCacheClusters (Maybe Bool)

-- | The user-supplied cluster identifier. If this parameter is specified,
--   only information about that specific 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
--   <tt>DescribeCacheCluster</tt> 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 clusters. Each item in the
--   list contains detailed information about one 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 clusters. Each item in the list contains detailed
--   information about one 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.Types.AWSRequest Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClusters
instance Control.DeepSeq.NFData Network.AWS.ElastiCache.DescribeCacheClusters.DescribeCacheClustersResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteSnapshot.DeleteSnapshotResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteReplicationGroup.DeleteReplicationGroupResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSubnetGroup.DeleteCacheSubnetGroupResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheSecurityGroup.DeleteCacheSecurityGroupResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheParameterGroup.DeleteCacheParameterGroupResponse
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


-- | Deletes a previously provisioned cluster. <tt>DeleteCacheCluster</tt>
--   deletes all associated cache nodes, node endpoints and the cluster
--   itself. When you receive a successful response from this operation,
--   Amazon ElastiCache immediately begins deleting the cluster; you cannot
--   cancel or revert this operation.
--   
--   This operation cannot be used to delete a cluster that is the last
--   read replica of a replication group or node group (shard) that has
--   Multi-AZ mode enabled or a 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 cluster snapshot. This is the unique name that identifies the
--   snapshot. ElastiCache creates the snapshot, and then deletes the
--   cluster immediately afterward.</li>
--   <li><a>dccCacheClusterId</a> - The 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 cluster snapshot. This is the unique
--   name that identifies the snapshot. ElastiCache creates the snapshot,
--   and then deletes the cluster immediately afterward.
dccFinalSnapshotIdentifier :: Lens' DeleteCacheCluster (Maybe Text)

-- | The 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.DeleteCacheCluster.DeleteCacheClusterResponse
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


-- | Creates a copy of an entire 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 cluster.
--   The snapshot is created from this 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 cluster. The snapshot is created from
--   this 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateSnapshot.CreateSnapshotResponse
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


-- | 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
--   clusters, where one of the 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. However, if you
--   need to increase or decrease the number of node groups (console:
--   shards), you can avail yourself of ElastiCache for Redis' enhanced
--   backup and restore. For more information, see <a>Restoring From a
--   Backup with Cluster Resizing</a> in the <i>ElastiCache User Guide</i>
--   .
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 Amazon ElastiCache for Redis does not support Multi-AZ with
--   automatic failover on: * Redis versions earlier than 2.8.6. * Redis
--   (cluster mode disabled): T1 and T2 cache node types. * Redis (cluster
--   mode enabled): T1 node types.</li>
--   <li><a>crgEngineVersion</a> - The version number of the cache engine
--   to be used for the 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 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). The following node types are
--   supported by ElastiCache. Generally speaking, the current generation
--   types provide more memory and computational power at lower cost when
--   compared to their equivalent previous generation counterparts. *
--   General purpose: * Current generation: <b>T2 node types:</b>
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 individually configure each node group (shard), or you
--   can omit this parameter.</li>
--   <li><a>crgAtRestEncryptionEnabled</a> - A flag that enables encryption
--   at rest when set to <tt>true</tt> . You cannot modify the value of
--   <tt>AtRestEncryptionEnabled</tt> after the replication group is
--   created. To enable encryption at rest on a replication group you must
--   set <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create
--   the replication group. Default: <tt>false</tt></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 new replication group.
--   The Amazon S3 object name in the ARN cannot contain any commas. The
--   new replication group will have the number of node groups (console:
--   shards) specified by the parameter <i>NumNodeGroups</i> or the number
--   of node groups configured by <i>NodeGroupConfiguration</i> regardless
--   of the number of ARNs specified here. 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>crgTransitEncryptionEnabled</a> - A flag that enables
--   in-transit encryption when set to <tt>true</tt> . You cannot modify
--   the value of <tt>TransitEncryptionEnabled</tt> after the cluster is
--   created. To enable in-transit encryption on a cluster you must set
--   <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. This parameter is valid only if the <tt>Engine</tt> parameter
--   is <tt>redis</tt> , the <tt>EngineVersion</tt> parameter is
--   <tt>3.2.4</tt> or later, and the cluster is being created in an Amazon
--   VPC. If you enable in-transit encryption, you must also specify a
--   value for <tt>CacheSubnetGroup</tt> . Default: <tt>false</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> - <b>Reserved parameter.</b> The password used
--   to access a password protected server. This parameter is valid only
--   if: * The parameter <tt>TransitEncryptionEnabled</tt> was set to
--   <tt>true</tt> when the cluster was created. * The line
--   <tt>requirepass</tt> was added to the database configuration file.
--   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
--   <a>http://redis.io/commands/AUTH</a>.</li>
--   <li><a>crgPrimaryClusterId</a> - The identifier of the cluster that
--   serves as the primary for this replication group. This 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
--   clusters in this replication group.</li>
--   <li><a>crgPreferredMaintenanceWindow</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: 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
--   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>AutomaticFailoverEnabled</tt> is <tt>true</tt> , the value of this
--   parameter must be at least 2. If <tt>AutomaticFailoverEnabled</tt> is
--   <tt>false</tt> you can omit this parameter (it will default to 1), or
--   you can explicitly set it to a value between 2 and 6. 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 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 does not have to
--   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 Amazon ElastiCache
--   for Redis does not support Multi-AZ with automatic failover on: *
--   Redis versions earlier than 2.8.6. * Redis (cluster mode disabled): T1
--   and T2 cache node types. * Redis (cluster mode enabled): T1 node
--   types.
crgAutomaticFailoverEnabled :: Lens' CreateReplicationGroup (Maybe Bool)

-- | The version number of the cache engine to be used for the 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 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). The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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
--   individually configure each node group (shard), or you can omit this
--   parameter.
crgNodeGroupConfiguration :: Lens' CreateReplicationGroup [NodeGroupConfiguration]

-- | A flag that enables encryption at rest when set to <tt>true</tt> . You
--   cannot modify the value of <tt>AtRestEncryptionEnabled</tt> after the
--   replication group is created. To enable encryption at rest on a
--   replication group you must set <tt>AtRestEncryptionEnabled</tt> to
--   <tt>true</tt> when you create the replication group. Default:
--   <tt>false</tt>
crgAtRestEncryptionEnabled :: Lens' CreateReplicationGroup (Maybe Bool)

-- | 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 new replication group. The Amazon S3 object name in the
--   ARN cannot contain any commas. The new replication group will have the
--   number of node groups (console: shards) specified by the parameter
--   <i>NumNodeGroups</i> or the number of node groups configured by
--   <i>NodeGroupConfiguration</i> regardless of the number of ARNs
--   specified here. 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)

-- | A flag that enables in-transit encryption when set to <tt>true</tt> .
--   You cannot modify the value of <tt>TransitEncryptionEnabled</tt> after
--   the cluster is created. To enable in-transit encryption on a cluster
--   you must set <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when
--   you create a cluster. This parameter is valid only if the
--   <tt>Engine</tt> parameter is <tt>redis</tt> , the
--   <tt>EngineVersion</tt> parameter is <tt>3.2.4</tt> or later, and the
--   cluster is being created in an Amazon VPC. If you enable in-transit
--   encryption, you must also specify a value for
--   <tt>CacheSubnetGroup</tt> . Default: <tt>false</tt>
crgTransitEncryptionEnabled :: Lens' CreateReplicationGroup (Maybe Bool)

-- | 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)

-- | <b>Reserved parameter.</b> The password used to access a password
--   protected server. This parameter is valid only if: * The parameter
--   <tt>TransitEncryptionEnabled</tt> was set to <tt>true</tt> when the
--   cluster was created. * The line <tt>requirepass</tt> was added to the
--   database configuration file. 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 <a>http://redis.io/commands/AUTH</a>.
crgAuthToken :: Lens' CreateReplicationGroup (Maybe Text)

-- | The identifier of the cluster that serves as the primary for this
--   replication group. This 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 clusters in this
--   replication group.
crgEngine :: Lens' CreateReplicationGroup (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:
--   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 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>AutomaticFailoverEnabled</tt> is <tt>true</tt> , the value of this
--   parameter must be at least 2. If <tt>AutomaticFailoverEnabled</tt> is
--   <tt>false</tt> you can omit this parameter (it will default to 1), or
--   you can explicitly set it to a value between 2 and 6. 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
--   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 does not have to 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateReplicationGroup.CreateReplicationGroupResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSubnetGroup.CreateCacheSubnetGroupResponse
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


-- | Creates a new cache security group. Use a cache security group to
--   control access to one or more clusters.
--   
--   Cache security groups are only used when you are creating a cluster
--   outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are
--   creating a 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheSecurityGroup.CreateCacheSecurityGroupResponse
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


-- | Creates a new Amazon ElastiCache cache parameter group. An ElastiCache
--   cache parameter group is a collection of parameters and their values
--   that are applied to all of the nodes in any cluster or replication
--   group using the CacheParameterGroup.
--   
--   A newly created CacheParameterGroup is an exact duplicate of the
--   default parameter group for the CacheParameterGroupFamily. To
--   customize the newly created CacheParameterGroup you can change the
--   values of specific parameters. For more information, see:
--   
--   <ul>
--   <li><a>ModifyCacheParameterGroup</a> in the ElastiCache API
--   Reference.</li>
--   <li><a>Parameters and Parameter Groups</a> in the ElastiCache User
--   Guide.</li>
--   </ul>
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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheParameterGroup.CreateCacheParameterGroupResponse
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


-- | Creates a cluster. All nodes in the 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 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 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). The following node types are
--   supported by ElastiCache. Generally speaking, the current generation
--   types provide more memory and computational power at lower cost when
--   compared to their equivalent previous generation counterparts. *
--   General purpose: * Current generation: <b>T2 node types:</b>
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster. Use this parameter only when you are
--   creating a 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 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.</li>
--   <li><a>cccAuthToken</a> - <b>Reserved parameter.</b> The password used
--   to access a password protected server. This parameter is valid only
--   if: * The parameter <tt>TransitEncryptionEnabled</tt> was set to
--   <tt>true</tt> when the cluster was created. * The line
--   <tt>requirepass</tt> was added to the database configuration file.
--   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
--   <a>http://redis.io/commands/AUTH</a>.</li>
--   <li><a>cccEngine</a> - The name of the cache engine to be used for
--   this 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 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 cluster. Use this parameter only when you are creating
--   a 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 cluster is created. All nodes belonging to this Memcached
--   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 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 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 cluster should
--   belong. If this parameter is specified, the cluster is added to the
--   specified replication group as a read replica; otherwise, the cluster
--   is a standalone primary that is not part of any replication group. If
--   the specified replication group is Multi-AZ enabled and the
--   Availability Zone is not specified, the 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 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.</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 cluster. Use this parameter only when you are
--   creating a 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 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 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). The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster. Use this
--   parameter only when you are creating a 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 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.
cccSnapshotWindow :: Lens' CreateCacheCluster (Maybe Text)

-- | <b>Reserved parameter.</b> The password used to access a password
--   protected server. This parameter is valid only if: * The parameter
--   <tt>TransitEncryptionEnabled</tt> was set to <tt>true</tt> when the
--   cluster was created. * The line <tt>requirepass</tt> was added to the
--   database configuration file. 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 <a>http://redis.io/commands/AUTH</a>.
cccAuthToken :: Lens' CreateCacheCluster (Maybe Text)

-- | The name of the cache engine to be used for this 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
--   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 cluster. Use this
--   parameter only when you are creating a 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 cluster is created. All nodes
--   belonging to this Memcached 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 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 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 cluster should belong. If this parameter is
--   specified, the cluster is added to the specified replication group as
--   a read replica; otherwise, the cluster is a standalone primary that is
--   not part of any replication group. If the specified replication group
--   is Multi-AZ enabled and the Availability Zone is not specified, the
--   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 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.
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 cluster. Use
--   this parameter only when you are creating a 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CreateCacheCluster.CreateCacheClusterResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.CopySnapshot.CopySnapshotResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress.AuthorizeCacheSecurityGroupIngressResponse
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


-- | Adds up to 50 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>
--   . ElastiCache resources are <i>cluster</i> and <i>snapshot</i> . 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>
--   . ElastiCache resources are <i>cluster</i> and <i>snapshot</i> . 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>ListTagsForResource</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


module Network.AWS.ElastiCache.Waiters

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

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

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

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


-- | <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
--   allowed number of node groups (shards) in a single replication group.
--   The default maximum is 15
_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 50.
_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 cluster.
_NodeQuotaForClusterExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The customer has exceeded the allowed rate of API calls.
_APICallRateForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The node group specified by the <tt>NodeGroupId</tt> parameter could
--   not be found. Please verify that the node group exists and that you
--   spelled the <tt>NodeGroupId</tt> value correctly.
_NodeGroupNotFoundFault :: 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 cluster running on a
--   <tt>cache.t1.micro</tt> cache node.</li>
--   <li>Creating a snapshot of a 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

-- | Prism for TestFailoverNotAvailableFault' errors.
_TestFailoverNotAvailableFault :: 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 cluster ID does not refer to an existing cluster.
_CacheClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The request cannot be processed because it would exceed the allowed
--   number of 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 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 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 15 seconds until a successful
--   state is reached. An error is returned after 40 failed checks.
cacheClusterAvailable :: Wait DescribeCacheClusters

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

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

-- | Polls <a>DescribeReplicationGroups</a> every 15 seconds until a
--   successful state is reached. An error is returned after 40 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 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 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 cluster.</li>
--   <li><a>ccCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the cluster. The following node types are
--   supported by ElastiCache. Generally speaking, the current generation
--   types provide more memory and computational power at lower cost when
--   compared to their equivalent previous generation counterparts. *
--   General purpose: * Current generation: <b>T2 node types:</b>
--   <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster.</li>
--   <li><a>ccCacheClusterCreateTime</a> - The date and time when the
--   cluster was created.</li>
--   <li><a>ccAtRestEncryptionEnabled</a> - A flag that enables encryption
--   at-rest when set to <tt>true</tt> . You cannot modify the value of
--   <tt>AtRestEncryptionEnabled</tt> after the cluster is created. To
--   enable at-rest encryption on a cluster you must set
--   <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>ccAutoMinorVersionUpgrade</a> - This parameter is currently
--   disabled.</li>
--   <li><a>ccSecurityGroups</a> - A list of VPC Security Groups associated
--   with the cluster.</li>
--   <li><a>ccNotificationConfiguration</a> - Describes a notification
--   topic and its status. Notification topics are used for publishing
--   ElastiCache events to subscribers using Amazon Simple Notification
--   Service (SNS).</li>
--   <li><a>ccTransitEncryptionEnabled</a> - A flag that enables in-transit
--   encryption when set to <tt>true</tt> . You cannot modify the value of
--   <tt>TransitEncryptionEnabled</tt> after the cluster is created. To
--   enable in-transit encryption on a cluster you must set
--   <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>ccSnapshotWindow</a> - The daily time range (in UTC) during
--   which ElastiCache begins taking a daily snapshot of your cluster.
--   Example: <tt>05:00-09:00</tt></li>
--   <li><a>ccCacheClusterId</a> - The user-supplied identifier of the
--   cluster. This identifier is a unique key that identifies a
--   cluster.</li>
--   <li><a>ccConfigurationEndpoint</a> - Represents a Memcached cluster
--   endpoint which, if Automatic Discovery is enabled on the cluster, can
--   be used by an application to connect to any node in the cluster. The
--   configuration endpoint will always have <tt>.cfg</tt> in it. Example:
--   <tt>mem-3.9dvc4r<i>.cfg</i> .usw2.cache.amazonaws.com:11211</tt></li>
--   <li><a>ccEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) to be used for this cluster.</li>
--   <li><a>ccCacheSecurityGroups</a> - A list of cache security group
--   elements, composed of name and status sub-elements.</li>
--   <li><a>ccAuthTokenEnabled</a> - A flag that enables using an
--   <tt>AuthToken</tt> (password) when issuing Redis commands. Default:
--   <tt>false</tt></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 cluster.</li>
--   <li><a>ccPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the cluster is located or <a>Multiple</a> if the cache
--   nodes are located in different Availability Zones.</li>
--   <li><a>ccCacheParameterGroup</a> - Status of the cache parameter
--   group.</li>
--   <li><a>ccCacheClusterStatus</a> - The current state of this 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 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 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
--   cluster belongs. If this field is empty, the 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 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 cluster.
ccEngineVersion :: Lens' CacheCluster (Maybe Text)

-- | The name of the compute and memory capacity node type for the cluster.
--   The following node types are supported by ElastiCache. Generally
--   speaking, the current generation types provide more memory and
--   computational power at lower cost when compared to their equivalent
--   previous generation counterparts. * General purpose: * Current
--   generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 cluster.
ccCacheNodes :: Lens' CacheCluster [CacheNode]

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

-- | A flag that enables encryption at-rest when set to <tt>true</tt> . You
--   cannot modify the value of <tt>AtRestEncryptionEnabled</tt> after the
--   cluster is created. To enable at-rest encryption on a cluster you must
--   set <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create
--   a cluster. Default: <tt>false</tt>
ccAtRestEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)

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

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

-- | Describes a notification topic and its status. Notification topics are
--   used for publishing ElastiCache events to subscribers using Amazon
--   Simple Notification Service (SNS).
ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)

-- | A flag that enables in-transit encryption when set to <tt>true</tt> .
--   You cannot modify the value of <tt>TransitEncryptionEnabled</tt> after
--   the cluster is created. To enable in-transit encryption on a cluster
--   you must set <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when
--   you create a cluster. Default: <tt>false</tt>
ccTransitEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)

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

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

-- | Represents a Memcached cluster endpoint which, if Automatic Discovery
--   is enabled on the cluster, can be used by an application to connect to
--   any node in the cluster. The configuration endpoint will always have
--   <tt>.cfg</tt> in it. Example: <tt>mem-3.9dvc4r<i>.cfg</i>
--   .usw2.cache.amazonaws.com:11211</tt>
ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)

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

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

-- | A flag that enables using an <tt>AuthToken</tt> (password) when
--   issuing Redis commands. Default: <tt>false</tt>
ccAuthTokenEnabled :: Lens' CacheCluster (Maybe Bool)

-- | 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 cluster.
ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)

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

-- | Status of the cache parameter group.
ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)

-- | The current state of this 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 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 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 cluster belongs. If this field is
--   empty, the 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 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 cluster. Each cache node
--   runs its own instance of the cluster's protocol-compliant caching
--   software - either Memcached or Redis.
--   
--   The following node types are supported by ElastiCache. Generally
--   speaking, the current generation types provide more memory and
--   computational power at lower cost when compared to their equivalent
--   previous generation counterparts.
--   
--   <ul>
--   <li>General purpose:</li>
--   <li>Current generation:</li>
--   </ul>
--   
--   <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt>
--   
--   <b>M3 node types:</b> <tt>cache.m3.medium</tt> ,
--   <tt>cache.m3.large</tt> , <tt>cache.m3.xlarge</tt> ,
--   <tt>cache.m3.2xlarge</tt>
--   
--   <b>M4 node types:</b> <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>
--   
--   <ul>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt>
--   
--   <b>M1 node types:</b> <tt>cache.m1.small</tt> ,
--   <tt>cache.m1.medium</tt> , <tt>cache.m1.large</tt> ,
--   <tt>cache.m1.xlarge</tt>
--   
--   <ul>
--   <li>Compute optimized:</li>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>C1 node types:</b> <tt>cache.c1.xlarge</tt>
--   
--   <ul>
--   <li>Memory optimized:</li>
--   <li>Current generation:</li>
--   </ul>
--   
--   <b>R3 node types:</b> <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>
--   
--   <ul>
--   <li>Previous generation: (not recommended)</li>
--   </ul>
--   
--   <b>M2 node types:</b> <tt>cache.m2.xlarge</tt> ,
--   <tt>cache.m2.2xlarge</tt> , <tt>cache.m2.4xlarge</tt>
--   
--   <b>Notes:</b>
--   
--   <ul>
--   <li>All T2 instances are created in an Amazon Virtual Private Cloud
--   (Amazon VPC).</li>
--   <li>Redis (cluster mode disabled): Redis backup/restore is not
--   supported on T1 and T2 instances.</li>
--   <li>Redis (cluster mode enabled): Backup/restore is not supported on
--   T1 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 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 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 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 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 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 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 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
--   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 cluster level, the
--   identifier would be the name of the 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 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 cluster level, the identifier would be the name of the
--   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 keyspace for a
--   particular node group. Keyspaces range from 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 keyspace for a particular node group.
--   Keyspaces range from 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 cluster to which the node
--   belongs.</li>
--   <li><a>ngmCacheNodeId</a> - The ID of the node within its 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 cluster to which the node belongs.
ngmCacheClusterId :: Lens' NodeGroupMember (Maybe Text)

-- | The ID of the node within its 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 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 cluster.</li>
--   <li><a>nsCacheClusterId</a> - A unique identifier for the source
--   cluster.</li>
--   <li><a>nsCacheNodeId</a> - The cache node identifier for the node in
--   the source 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
--   cluster.
nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)

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

-- | The cache node identifier for the node in the source 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 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
--   cluster runs.</li>
--   <li><a>pmvCacheNodeType</a> - The cache node type that this 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 cluster. A node ID is a
--   numeric identifier (0001, 0002, etc.).</li>
--   <li><a>pmvNumCacheNodes</a> - The new number of cache nodes for the
--   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 cluster runs.
pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)

-- | The cache node type that this 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 cluster. A node ID is a numeric identifier (0001, 0002,
--   etc.).
pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]

-- | The new number of cache nodes for the 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>rgCacheNodeType</a> - The name of the compute and memory
--   capacity node type for each node in the replication group.</li>
--   <li><a>rgNodeGroups</a> - A list of node groups in this replication
--   group. For Redis (cluster mode disabled) replication groups, this is a
--   single-element list. For Redis (cluster mode enabled) replication
--   groups, the list contains an entry for each node group (shard).</li>
--   <li><a>rgSnapshottingClusterId</a> - The cluster ID that is used as
--   the daily snapshot source for the replication group.</li>
--   <li><a>rgClusterEnabled</a> - A flag indicating whether or not this
--   replication group is cluster enabled; i.e., whether its data can be
--   partitioned across multiple shards (API/CLI: node groups). Valid
--   values: <tt>true</tt> | <tt>false</tt></li>
--   <li><a>rgAtRestEncryptionEnabled</a> - A flag that enables encryption
--   at-rest when set to <tt>true</tt> . You cannot modify the value of
--   <tt>AtRestEncryptionEnabled</tt> after the cluster is created. To
--   enable encryption at-rest on a cluster you must set
--   <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></li>
--   <li><a>rgTransitEncryptionEnabled</a> - A flag that enables in-transit
--   encryption when set to <tt>true</tt> . You cannot modify the value of
--   <tt>TransitEncryptionEnabled</tt> after the cluster is created. To
--   enable in-transit encryption on a cluster you must set
--   <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when you create a
--   cluster. Default: <tt>false</tt></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.</li>
--   <li><a>rgConfigurationEndpoint</a> - The configuration endpoint for
--   this replication group. Use the configuration endpoint to connect to
--   this replication group.</li>
--   <li><a>rgAuthTokenEnabled</a> - A flag that enables using an
--   <tt>AuthToken</tt> (password) when issuing Redis commands. Default:
--   <tt>false</tt></li>
--   <li><a>rgMemberClusters</a> - The identifiers of all the nodes that
--   are part of this replication group.</li>
--   <li><a>rgSnapshotRetentionLimit</a> - The number of days for which
--   ElastiCache retains automatic 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 user supplied 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 with
--   automatic failover for this Redis replication group. Amazon
--   ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</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)

-- | The name of the compute and memory capacity node type for each node in
--   the replication group.
rgCacheNodeType :: Lens' ReplicationGroup (Maybe Text)

-- | A list of node groups in this replication group. For Redis (cluster
--   mode disabled) replication groups, this is a single-element list. For
--   Redis (cluster mode enabled) replication groups, the list contains an
--   entry for each node group (shard).
rgNodeGroups :: Lens' ReplicationGroup [NodeGroup]

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

-- | A flag indicating whether or not this replication group is cluster
--   enabled; i.e., whether its data can be partitioned across multiple
--   shards (API/CLI: node groups). Valid values: <tt>true</tt> |
--   <tt>false</tt>
rgClusterEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | A flag that enables encryption at-rest when set to <tt>true</tt> . You
--   cannot modify the value of <tt>AtRestEncryptionEnabled</tt> after the
--   cluster is created. To enable encryption at-rest on a cluster you must
--   set <tt>AtRestEncryptionEnabled</tt> to <tt>true</tt> when you create
--   a cluster. Default: <tt>false</tt>
rgAtRestEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | A flag that enables in-transit encryption when set to <tt>true</tt> .
--   You cannot modify the value of <tt>TransitEncryptionEnabled</tt> after
--   the cluster is created. To enable in-transit encryption on a cluster
--   you must set <tt>TransitEncryptionEnabled</tt> to <tt>true</tt> when
--   you create a cluster. Default: <tt>false</tt>
rgTransitEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)

-- | 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.
rgSnapshotWindow :: Lens' ReplicationGroup (Maybe Text)

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

-- | A flag that enables using an <tt>AuthToken</tt> (password) when
--   issuing Redis commands. Default: <tt>false</tt>
rgAuthTokenEnabled :: Lens' ReplicationGroup (Maybe Bool)

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

-- | The number of days for which ElastiCache retains automatic 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 user supplied 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 with automatic failover for this
--   Redis replication group. Amazon ElastiCache for Redis does not support
--   Multi-AZ with automatic failover on: * Redis versions earlier than
--   2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node types. *
--   Redis (cluster mode enabled): T1 node types.
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>rgpmvResharding</a> - The status of an online resharding
--   operation.</li>
--   <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 with automatic failover for this Redis replication group.
--   Amazon ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</li>
--   </ul>
replicationGroupPendingModifiedValues :: ReplicationGroupPendingModifiedValues

-- | The status of an online resharding operation.
rgpmvResharding :: Lens' ReplicationGroupPendingModifiedValues (Maybe ReshardingStatus)

-- | 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 with automatic failover for this
--   Redis replication group. Amazon ElastiCache for Redis does not support
--   Multi-AZ with automatic failover on: * Redis versions earlier than
--   2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node types. *
--   Redis (cluster mode enabled): T1 node types.
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. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node
--   types are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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. The following node
--   types are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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)

-- | A list of <tt>PreferredAvailabilityZones</tt> objects that specifies
--   the configuration of a node group in the resharded cluster.
--   
--   <i>See:</i> <a>reshardingConfiguration</a> smart constructor.
data ReshardingConfiguration

-- | Creates a value of <a>ReshardingConfiguration</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>rcPreferredAvailabilityZones</a> - A list of preferred
--   availability zones for the nodes in this cluster.</li>
--   </ul>
reshardingConfiguration :: ReshardingConfiguration

-- | A list of preferred availability zones for the nodes in this cluster.
rcPreferredAvailabilityZones :: Lens' ReshardingConfiguration [Text]

-- | The status of an online resharding operation.
--   
--   <i>See:</i> <a>reshardingStatus</a> smart constructor.
data ReshardingStatus

-- | Creates a value of <a>ReshardingStatus</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>rsSlotMigration</a> - Represents the progress of an online
--   resharding operation.</li>
--   </ul>
reshardingStatus :: ReshardingStatus

-- | Represents the progress of an online resharding operation.
rsSlotMigration :: Lens' ReshardingStatus (Maybe SlotMigration)

-- | 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 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 cluster are modified.
sgmStatus :: Lens' SecurityGroupMembership (Maybe Text)

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

-- | Represents the progress of an online resharding operation.
--   
--   <i>See:</i> <a>slotMigration</a> smart constructor.
data SlotMigration

-- | Creates a value of <a>SlotMigration</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>smProgressPercentage</a> - The percentage of the slot migration
--   that is complete.</li>
--   </ul>
slotMigration :: SlotMigration

-- | The percentage of the slot migration that is complete.
smProgressPercentage :: Lens' SlotMigration (Maybe Double)

-- | Represents a copy of an entire Redis 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 cluster.</li>
--   <li><a>sCacheNodeType</a> - The name of the compute and memory
--   capacity node type for the source cluster. The following node types
--   are supported by ElastiCache. Generally speaking, the current
--   generation types provide more memory and computational power at lower
--   cost when compared to their equivalent previous generation
--   counterparts. * General purpose: * Current generation: <b>T2 node
--   types:</b> <tt>cache.t2.micro</tt> , <tt>cache.t2.small</tt> ,
--   <tt>cache.t2.medium</tt> <b>M3 node types:</b>
--   <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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
--   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 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 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 cluster.</li>
--   <li><a>sCacheClusterId</a> - The user-supplied identifier of the
--   source cluster.</li>
--   <li><a>sEngine</a> - The name of the cache engine (<tt>memcached</tt>
--   or <tt>redis</tt> ) used by the source 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 cluster for publishing notifications.</li>
--   <li><a>sNodeSnapshots</a> - A list of the cache nodes in the source
--   cluster.</li>
--   <li><a>sCacheSubnetGroupName</a> - The name of the cache subnet group
--   associated with the source cluster.</li>
--   <li><a>sPreferredAvailabilityZone</a> - The name of the Availability
--   Zone in which the source 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 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
--   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 cluster.</li>
--   <li><a>sAutomaticFailover</a> - Indicates the status of Multi-AZ with
--   automatic failover for the source Redis replication group. Amazon
--   ElastiCache for Redis does not support Multi-AZ with automatic
--   failover on: * Redis versions earlier than 2.8.6. * Redis (cluster
--   mode disabled): T1 and T2 cache node types. * Redis (cluster mode
--   enabled): T1 node types.</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
--   cluster.
sEngineVersion :: Lens' Snapshot (Maybe Text)

-- | The name of the compute and memory capacity node type for the source
--   cluster. The following node types are supported by ElastiCache.
--   Generally speaking, the current generation types provide more memory
--   and computational power at lower cost when compared to their
--   equivalent previous generation counterparts. * General purpose: *
--   Current generation: <b>T2 node types:</b> <tt>cache.t2.micro</tt> ,
--   <tt>cache.t2.small</tt> , <tt>cache.t2.medium</tt> <b>M3 node
--   types:</b> <tt>cache.m3.medium</tt> , <tt>cache.m3.large</tt> ,
--   <tt>cache.m3.xlarge</tt> , <tt>cache.m3.2xlarge</tt> <b>M4 node
--   types:</b> <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: (not recommended)
--   <b>T1 node types:</b> <tt>cache.t1.micro</tt> <b>M1 node types:</b>
--   <tt>cache.m1.small</tt> , <tt>cache.m1.medium</tt> ,
--   <tt>cache.m1.large</tt> , <tt>cache.m1.xlarge</tt> * Compute
--   optimized: * Previous generation: (not recommended) <b>C1 node
--   types:</b> <tt>cache.c1.xlarge</tt> * Memory optimized: * Current
--   generation: <b>R3 node types:</b> <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: (not recommended) <b>M2 node types:</b>
--   <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 (cluster mode
--   disabled): Redis backup<i>restore is not supported on T1 and T2
--   instances. * Redis (cluster mode enabled): Backup</i>restore is not
--   supported on T1 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 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 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 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 cluster.
sSnapshotWindow :: Lens' Snapshot (Maybe Text)

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

-- | The name of the cache engine (<tt>memcached</tt> or <tt>redis</tt> )
--   used by the source 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
--   cluster for publishing notifications.
sTopicARN :: Lens' Snapshot (Maybe Text)

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

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

-- | The name of the Availability Zone in which the source 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
--   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 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 cluster.
sPort :: Lens' Snapshot (Maybe Int)

-- | Indicates the status of Multi-AZ with automatic failover for the
--   source Redis replication group. Amazon ElastiCache for Redis does not
--   support Multi-AZ with automatic failover on: * Redis versions earlier
--   than 2.8.6. * Redis (cluster mode disabled): T1 and T2 cache node
--   types. * Redis (cluster mode enabled): T1 node types.
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 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 be null.</li>
--   <li><a>tagKey</a> - The key for the tag. May not be null.</li>
--   </ul>
tag :: Tag

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

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

-- | Represents the output from the <tt>AddTagsToResource</tt> ,
--   <tt>ListTagsForResource</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]
