diff --git a/amazonka-elasticache.cabal b/amazonka-elasticache.cabal
--- a/amazonka-elasticache.cabal
+++ b/amazonka-elasticache.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-elasticache
-version:               0.3.0
+version:               0.3.1
 synopsis:              Amazon ElastiCache SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -42,6 +42,7 @@
 
     exposed-modules:
           Network.AWS.ElastiCache
+        , Network.AWS.ElastiCache.AddTagsToResource
         , Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
         , Network.AWS.ElastiCache.CopySnapshot
         , Network.AWS.ElastiCache.CreateCacheCluster
@@ -68,12 +69,14 @@
         , Network.AWS.ElastiCache.DescribeReservedCacheNodes
         , Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
         , Network.AWS.ElastiCache.DescribeSnapshots
+        , Network.AWS.ElastiCache.ListTagsForResource
         , Network.AWS.ElastiCache.ModifyCacheCluster
         , Network.AWS.ElastiCache.ModifyCacheParameterGroup
         , Network.AWS.ElastiCache.ModifyCacheSubnetGroup
         , Network.AWS.ElastiCache.ModifyReplicationGroup
         , Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering
         , Network.AWS.ElastiCache.RebootCacheCluster
+        , Network.AWS.ElastiCache.RemoveTagsFromResource
         , Network.AWS.ElastiCache.ResetCacheParameterGroup
         , Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress
         , Network.AWS.ElastiCache.Types
@@ -82,5 +85,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.3.0.*
+          amazonka-core == 0.3.1.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/ElastiCache.hs b/gen/Network/AWS/ElastiCache.hs
--- a/gen/Network/AWS/ElastiCache.hs
+++ b/gen/Network/AWS/ElastiCache.hs
@@ -21,7 +21,8 @@
 -- CloudWatch, Amazon ElastiCache provides enhanced visibility into key
 -- performance metrics associated with your Memcached or Redis nodes.
 module Network.AWS.ElastiCache
-    ( module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
+    ( module Network.AWS.ElastiCache.AddTagsToResource
+    , module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
     , module Network.AWS.ElastiCache.CopySnapshot
     , module Network.AWS.ElastiCache.CreateCacheCluster
     , module Network.AWS.ElastiCache.CreateCacheParameterGroup
@@ -47,18 +48,21 @@
     , module Network.AWS.ElastiCache.DescribeReservedCacheNodes
     , module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
     , module Network.AWS.ElastiCache.DescribeSnapshots
+    , module Network.AWS.ElastiCache.ListTagsForResource
     , module Network.AWS.ElastiCache.ModifyCacheCluster
     , module Network.AWS.ElastiCache.ModifyCacheParameterGroup
     , module Network.AWS.ElastiCache.ModifyCacheSubnetGroup
     , module Network.AWS.ElastiCache.ModifyReplicationGroup
     , module Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering
     , module Network.AWS.ElastiCache.RebootCacheCluster
+    , module Network.AWS.ElastiCache.RemoveTagsFromResource
     , module Network.AWS.ElastiCache.ResetCacheParameterGroup
     , module Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress
     , module Network.AWS.ElastiCache.Types
     , module Network.AWS.ElastiCache.Waiters
     ) where
 
+import Network.AWS.ElastiCache.AddTagsToResource
 import Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
 import Network.AWS.ElastiCache.CopySnapshot
 import Network.AWS.ElastiCache.CreateCacheCluster
@@ -85,12 +89,14 @@
 import Network.AWS.ElastiCache.DescribeReservedCacheNodes
 import Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
 import Network.AWS.ElastiCache.DescribeSnapshots
+import Network.AWS.ElastiCache.ListTagsForResource
 import Network.AWS.ElastiCache.ModifyCacheCluster
 import Network.AWS.ElastiCache.ModifyCacheParameterGroup
 import Network.AWS.ElastiCache.ModifyCacheSubnetGroup
 import Network.AWS.ElastiCache.ModifyReplicationGroup
 import Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering
 import Network.AWS.ElastiCache.RebootCacheCluster
+import Network.AWS.ElastiCache.RemoveTagsFromResource
 import Network.AWS.ElastiCache.ResetCacheParameterGroup
 import Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress
 import Network.AWS.ElastiCache.Types
diff --git a/gen/Network/AWS/ElastiCache/AddTagsToResource.hs b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.ElastiCache.AddTagsToResource
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | The /AddTagsToResource/ action adds up to 10 cost allocation tags to the named
+-- resource. A /cost allocation tag/ is a key-value pair where the key and value
+-- are case-sensitive. Cost allocation tags can be used 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 <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Tagging.html Using CostAllocation Tags in Amazon ElastiCache>.
+--
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AddTagsToResource.html>
+module Network.AWS.ElastiCache.AddTagsToResource
+    (
+    -- * Request
+      AddTagsToResource
+    -- ** Request constructor
+    , addTagsToResource
+    -- ** Request lenses
+    , attrResourceName
+    , attrTags
+
+    -- * Response
+    , AddTagsToResourceResponse
+    -- ** Response constructor
+    , addTagsToResourceResponse
+    -- ** Response lenses
+    , attrrTagList
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.Query
+import Network.AWS.ElastiCache.Types
+import qualified GHC.Exts
+
+data AddTagsToResource = AddTagsToResource
+    { _attrResourceName :: Text
+    , _attrTags         :: List "member" Tag
+    } deriving (Eq, Read, Show)
+
+-- | 'AddTagsToResource' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'attrResourceName' @::@ 'Text'
+--
+-- * 'attrTags' @::@ ['Tag']
+--
+addTagsToResource :: Text -- ^ 'attrResourceName'
+                  -> AddTagsToResource
+addTagsToResource p1 = AddTagsToResource
+    { _attrResourceName = p1
+    , _attrTags         = mempty
+    }
+
+-- | The name of the resource to which the tags are to be added, for example 'myCluster01'.
+attrResourceName :: Lens' AddTagsToResource Text
+attrResourceName = lens _attrResourceName (\s a -> s { _attrResourceName = 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.
+attrTags :: Lens' AddTagsToResource [Tag]
+attrTags = lens _attrTags (\s a -> s { _attrTags = a }) . _List
+
+newtype AddTagsToResourceResponse = AddTagsToResourceResponse
+    { _attrrTagList :: List "member" Tag
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
+
+instance GHC.Exts.IsList AddTagsToResourceResponse where
+    type Item AddTagsToResourceResponse = Tag
+
+    fromList = AddTagsToResourceResponse . GHC.Exts.fromList
+    toList   = GHC.Exts.toList . _attrrTagList
+
+-- | 'AddTagsToResourceResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'attrrTagList' @::@ ['Tag']
+--
+addTagsToResourceResponse :: AddTagsToResourceResponse
+addTagsToResourceResponse = AddTagsToResourceResponse
+    { _attrrTagList = mempty
+    }
+
+-- | A list of cost allocation tags as a key-value pair.
+attrrTagList :: Lens' AddTagsToResourceResponse [Tag]
+attrrTagList = lens _attrrTagList (\s a -> s { _attrrTagList = a }) . _List
+
+instance ToPath AddTagsToResource where
+    toPath = const "/"
+
+instance ToQuery AddTagsToResource where
+    toQuery AddTagsToResource{..} = mconcat
+        [ "ResourceName" =? _attrResourceName
+        , "Tags"         =? _attrTags
+        ]
+
+instance ToHeaders AddTagsToResource
+
+instance AWSRequest AddTagsToResource where
+    type Sv AddTagsToResource = ElastiCache
+    type Rs AddTagsToResource = AddTagsToResourceResponse
+
+    request  = post "AddTagsToResource"
+    response = xmlResponse
+
+instance FromXML AddTagsToResourceResponse where
+    parseXML = withElement "AddTagsToResourceResult" $ \x -> AddTagsToResourceResponse
+        <$> x .@? "TagList" .!@ mempty
diff --git a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
@@ -22,10 +22,13 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /AuthorizeCacheSecurityGroupIngress/ operation allows network ingress to a
+-- | The /AuthorizeCacheSecurityGroupIngress/ action 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.
+--
+-- You cannot authorize ingress from an Amazon EC2 security group in one region
+-- to an ElastiCache cluster in another region.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AuthorizeCacheSecurityGroupIngress.html>
 module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
diff --git a/gen/Network/AWS/ElastiCache/CopySnapshot.hs b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CopySnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CopySnapshot/ operation makes a copy of an existing snapshot.
+-- | The /CopySnapshot/ action makes a copy of an existing snapshot.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CopySnapshot.html>
 module Network.AWS.ElastiCache.CopySnapshot
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateCacheCluster/ operation creates a cache cluster. All nodes in the
--- cache cluster run the same protocol-compliant cache engine software, either
+-- | The /CreateCacheCluster/ action creates a cache cluster. All nodes in the cache
+-- cluster run the same protocol-compliant cache engine software, either
 -- Memcached or Redis.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheCluster.html>
@@ -55,6 +55,7 @@
     , cccSnapshotName
     , cccSnapshotRetentionLimit
     , cccSnapshotWindow
+    , cccTags
 
     -- * Response
     , CreateCacheClusterResponse
@@ -91,6 +92,7 @@
     , _cccSnapshotName               :: Maybe Text
     , _cccSnapshotRetentionLimit     :: Maybe Int
     , _cccSnapshotWindow             :: Maybe Text
+    , _cccTags                       :: List "member" Tag
     } deriving (Eq, Read, Show)
 
 -- | 'CreateCacheCluster' constructor.
@@ -139,6 +141,8 @@
 --
 -- * 'cccSnapshotWindow' @::@ 'Maybe' 'Text'
 --
+-- * 'cccTags' @::@ ['Tag']
+--
 createCacheCluster :: Text -- ^ 'cccCacheClusterId'
                    -> CreateCacheCluster
 createCacheCluster p1 = CreateCacheCluster
@@ -155,6 +159,7 @@
     , _cccCacheSubnetGroupName       = Nothing
     , _cccCacheSecurityGroupNames    = mempty
     , _cccSecurityGroupIds           = mempty
+    , _cccTags                       = mempty
     , _cccSnapshotArns               = mempty
     , _cccSnapshotName               = Nothing
     , _cccPreferredMaintenanceWindow = Nothing
@@ -176,11 +181,7 @@
 cccAZMode :: Lens' CreateCacheCluster (Maybe AZMode)
 cccAZMode = lens _cccAZMode (\s a -> s { _cccAZMode = a })
 
--- | Determines whether minor engine upgrades will be applied automatically to the
--- node group during the maintenance window. A value of 'true' allows these
--- upgrades to occur; 'false' disables automatic upgrades.
---
--- Default: 'true'
+-- | This parameter is currently disabled.
 cccAutoMinorVersionUpgrade :: Lens' CreateCacheCluster (Maybe Bool)
 cccAutoMinorVersionUpgrade =
     lens _cccAutoMinorVersionUpgrade
@@ -248,23 +249,25 @@
 
 -- | The version number of the cache engine to be used for this cache cluster. To
 -- view the supported cache engine versions, use the /DescribeCacheEngineVersions/
--- operation.
+-- action.
 cccEngineVersion :: Lens' CreateCacheCluster (Maybe Text)
 cccEngineVersion = lens _cccEngineVersion (\s a -> s { _cccEngineVersion = a })
 
 -- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
 -- (SNS) topic to which notifications will be sent.
+--
+-- The Amazon SNS topic owner must be the same as the cache cluster owner.
 cccNotificationTopicArn :: Lens' CreateCacheCluster (Maybe Text)
 cccNotificationTopicArn =
     lens _cccNotificationTopicArn (\s a -> s { _cccNotificationTopicArn = a })
 
 -- | The initial number of cache nodes that the cache cluster will have.
 --
--- For Memcached, valid values are between 1 and 20. If you need to exceed this
--- limit, please fill out the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request/ http://aws.amazon.com/contact-us/elasticache-node-limit-request/>.
+-- For clusters running Redis, this value must be 1. For clusters running
+-- Memcached, this value must be between 1 and 50.
 --
--- For Redis, only single-node cache cluster are supported at this time, so the
--- value for this parameter must be 1.
+-- If you need more than 50 nodes for your Memcached cluster, please fill out
+-- the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request/ http://aws.amazon.com/contact-us/elasticache-node-limit-request/>.
 cccNumCacheNodes :: Lens' CreateCacheCluster (Maybe Int)
 cccNumCacheNodes = lens _cccNumCacheNodes (\s a -> s { _cccNumCacheNodes = a })
 
@@ -289,13 +292,20 @@
 --
 -- This option is only supported on Memcached.
 --
+-- If you are creating your cache cluster in an Amazon VPC (recommended) you
+-- can only locate nodes in Availability Zones that are associated with the
+-- subnets in the selected subnet group.
+--
+-- The number of Availability Zones listed must equal the value of 'NumCacheNodes'
+-- .
+--
 -- If you want all the nodes in the same Availability Zone, use 'PreferredAvailabilityZone' instead, or repeat the Availability Zone multiple times in the list.
 --
 -- Default: System chosen Availability Zones.
 --
--- Example: One Memcached node in each of three different Availability Zones: 'PreferredAvailabilityZones.member.1=us-east-1a&PreferredAvailabilityZones.member.2=us-east-1b&PreferredAvailabilityZones.member.3=us-east-1d'
+-- Example: One Memcached node in each of three different Availability Zones: 'PreferredAvailabilityZones.member.1=us-west-2a&PreferredAvailabilityZones.member.2=us-west-2b&PreferredAvailabilityZones.member.3=us-west-2c'
 --
--- Example: All three Memcached nodes in one Availability Zone: 'PreferredAvailabilityZones.member.1=us-east-1a&PreferredAvailabilityZones.member.2=us-east-1a&PreferredAvailabilityZones.member.3=us-east-1a'
+-- Example: All three Memcached nodes in one Availability Zone: 'PreferredAvailabilityZones.member.1=us-west-2a&PreferredAvailabilityZones.member.2=us-west-2a&PreferredAvailabilityZones.member.3=us-west-2a'
 cccPreferredAvailabilityZones :: Lens' CreateCacheCluster [Text]
 cccPreferredAvailabilityZones =
     lens _cccPreferredAvailabilityZones
@@ -315,10 +325,9 @@
 -- replication group as a read replica; otherwise, the cache cluster will be a
 -- standalone primary that is not part of any replication group.
 --
--- If the specified replication group is Automatic Failover enabled and the
--- availability zone is not specified, the cache cluster will be created in
--- availability zones that provide the best spread of read replicas across
--- availability zones.
+-- If the specified replication group is Multi-AZ enabled and the availability
+-- zone is not specified, the cache cluster will be created in availability
+-- zones that provide the best spread of read replicas across availability zones.
 --
 -- Note: This parameter is only valid if the 'Engine' parameter is 'redis'.
 cccReplicationGroupId :: Lens' CreateCacheCluster (Maybe Text)
@@ -379,6 +388,11 @@
 cccSnapshotWindow =
     lens _cccSnapshotWindow (\s a -> s { _cccSnapshotWindow = 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.
+cccTags :: Lens' CreateCacheCluster [Tag]
+cccTags = lens _cccTags (\s a -> s { _cccTags = a }) . _List
+
 newtype CreateCacheClusterResponse = CreateCacheClusterResponse
     { _cccrCacheCluster :: Maybe CacheCluster
     } deriving (Eq, Read, Show)
@@ -423,6 +437,7 @@
         , "SnapshotName"               =? _cccSnapshotName
         , "SnapshotRetentionLimit"     =? _cccSnapshotRetentionLimit
         , "SnapshotWindow"             =? _cccSnapshotWindow
+        , "Tags"                       =? _cccTags
         ]
 
 instance ToHeaders CreateCacheCluster
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
@@ -22,9 +22,9 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateCacheParameterGroup/ operation creates a new cache parameter group.
--- A cache parameter group is a collection of parameters that you apply to all
--- of the nodes in a cache cluster.
+-- | The /CreateCacheParameterGroup/ action creates a new cache parameter group. A
+-- cache parameter group is a collection of parameters that you apply to all of
+-- the nodes in a cache cluster.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheParameterGroup.html>
 module Network.AWS.ElastiCache.CreateCacheParameterGroup
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateCacheSecurityGroup/ operation creates a new cache security group.
--- Use a cache security group to control access to one or more cache clusters.
+-- | The /CreateCacheSecurityGroup/ action creates a new cache security group. Use a
+-- cache security group to control access to one or more cache clusters.
 --
 -- Cache security groups are only used when you are creating a cache cluster
 -- outside of an Amazon Virtual Private Cloud (VPC). If you are creating a cache
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateCacheSubnetGroup/ operation creates a new cache subnet group.
+-- | The /CreateCacheSubnetGroup/ action creates a new cache subnet group.
 --
 -- Use this parameter only when you are creating a cluster in an Amazon Virtual
 -- Private Cloud (VPC).
diff --git a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
@@ -22,10 +22,10 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateReplicationGroup/ operation creates a replication group. A
--- replication group is a collection of cache clusters, where one of the cache
--- clusters is a read/write primary and the others are read-only replicas.
--- Writes to the primary are automatically propagated to the replicas.
+-- | The /CreateReplicationGroup/ action creates a replication group. A replication
+-- group is a collection of cache clusters, where one of the cache clusters is a
+-- read/write primary and the others are read-only replicas. Writes to the
+-- primary are automatically propagated to the replicas.
 --
 -- When you create a replication group, you must specify an existing cache
 -- cluster that is in the primary role. When the replication group has been
@@ -63,6 +63,7 @@
     , crgSnapshotName
     , crgSnapshotRetentionLimit
     , crgSnapshotWindow
+    , crgTags
 
     -- * Response
     , CreateReplicationGroupResponse
@@ -99,7 +100,8 @@
     , _crgSnapshotName                :: Maybe Text
     , _crgSnapshotRetentionLimit      :: Maybe Int
     , _crgSnapshotWindow              :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    , _crgTags                        :: List "member" Tag
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateReplicationGroup' constructor.
 --
@@ -147,6 +149,8 @@
 --
 -- * 'crgSnapshotWindow' @::@ 'Maybe' 'Text'
 --
+-- * 'crgTags' @::@ ['Tag']
+--
 createReplicationGroup :: Text -- ^ 'crgReplicationGroupId'
                        -> Text -- ^ 'crgReplicationGroupDescription'
                        -> CreateReplicationGroup
@@ -164,6 +168,7 @@
     , _crgCacheSubnetGroupName        = Nothing
     , _crgCacheSecurityGroupNames     = mempty
     , _crgSecurityGroupIds            = mempty
+    , _crgTags                        = mempty
     , _crgSnapshotArns                = mempty
     , _crgSnapshotName                = Nothing
     , _crgPreferredMaintenanceWindow  = Nothing
@@ -174,11 +179,7 @@
     , _crgSnapshotWindow              = Nothing
     }
 
--- | Determines whether minor engine upgrades will be applied automatically to the
--- node group during the maintenance window. A value of 'true' allows these
--- upgrades to occur; 'false' disables automatic upgrades.
---
--- Default: 'true'
+-- | This parameter is currently disabled.
 crgAutoMinorVersionUpgrade :: Lens' CreateReplicationGroup (Maybe Bool)
 crgAutoMinorVersionUpgrade =
     lens _crgAutoMinorVersionUpgrade
@@ -187,10 +188,14 @@
 -- | Specifies whether a read-only replica will be automatically promoted to
 -- read/write primary if the existing primary fails.
 --
--- If 'true', automatic failover is enabled for this replication group. If 'false',
--- automatic failover is disabled for this replication group.
+-- If 'true', Multi-AZ is enabled for this replication group. If 'false', Multi-AZ
+-- is disabled for this replication group.
 --
 -- Default: false
+--
+-- ElastiCache Multi-AZ replication groups is not supported on:
+--
+-- Redis versions earlier than 2.8.6. T1 and T2 cache node types.
 crgAutomaticFailoverEnabled :: Lens' CreateReplicationGroup (Maybe Bool)
 crgAutomaticFailoverEnabled =
     lens _crgAutomaticFailoverEnabled
@@ -239,20 +244,21 @@
 crgEngine = lens _crgEngine (\s a -> s { _crgEngine = a })
 
 -- | The version number of the cach engine to be used for the cache clusters in
--- this replication group. To view the supported cache engine versions, use the /DescribeCacheEngineVersions/ operation.
+-- this replication group. To view the supported cache engine versions, use the /DescribeCacheEngineVersions/ action.
 crgEngineVersion :: Lens' CreateReplicationGroup (Maybe Text)
 crgEngineVersion = lens _crgEngineVersion (\s a -> s { _crgEngineVersion = a })
 
 -- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
 -- (SNS) topic to which notifications will be sent.
+--
+-- The Amazon SNS topic owner must be the same as the cache cluster owner.
 crgNotificationTopicArn :: Lens' CreateReplicationGroup (Maybe Text)
 crgNotificationTopicArn =
     lens _crgNotificationTopicArn (\s a -> s { _crgNotificationTopicArn = a })
 
 -- | The number of cache clusters this replication group will initially have.
 --
--- If /AutomaticFailover/ is 'enabled', the value of this parameter must be at
--- least 2.
+-- If /Multi-AZ/ is 'enabled', the value of this parameter must be at least 2.
 --
 -- The maximum permitted value for /NumCacheClusters/ is 6 (primary plus 5
 -- replicas). If you need to exceed this limit, please fill out the ElastiCache
@@ -270,12 +276,17 @@
 -- clusters will be created. The order of the availability zones in the list is
 -- not important.
 --
+-- If you are creating your replication group in an Amazon VPC (recommended),
+-- you can only locate cache clusters in availability zones associated with the
+-- subnets in the selected subnet group. The number of availability zones listed
+-- must equal the value of /NumCacheClusters/.
+--
 -- Default: system chosen availability zones.
 --
 -- Example: One Redis cache cluster in each of three availability zones.
--- PreferredAvailabilityZones.member.1=us-east-1a
--- PreferredAvailabilityZones.member.2=us-east-1c
--- PreferredAvailabilityZones.member.3=us-east-1d
+-- PreferredAvailabilityZones.member.1=us-west-2a
+-- PreferredAvailabilityZones.member.2=us-west-2c
+-- PreferredAvailabilityZones.member.3=us-west-2c
 crgPreferredCacheClusterAZs :: Lens' CreateReplicationGroup [Text]
 crgPreferredCacheClusterAZs =
     lens _crgPreferredCacheClusterAZs
@@ -370,6 +381,11 @@
 crgSnapshotWindow =
     lens _crgSnapshotWindow (\s a -> s { _crgSnapshotWindow = 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.
+crgTags :: Lens' CreateReplicationGroup [Tag]
+crgTags = lens _crgTags (\s a -> s { _crgTags = a }) . _List
+
 newtype CreateReplicationGroupResponse = CreateReplicationGroupResponse
     { _crgrReplicationGroup :: Maybe ReplicationGroup
     } deriving (Eq, Read, Show)
@@ -415,6 +431,7 @@
         , "SnapshotName"                =? _crgSnapshotName
         , "SnapshotRetentionLimit"      =? _crgSnapshotRetentionLimit
         , "SnapshotWindow"              =? _crgSnapshotWindow
+        , "Tags"                        =? _crgTags
         ]
 
 instance ToHeaders CreateReplicationGroup
diff --git a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /CreateSnapshot/ operation creates a copy of an entire cache cluster at a
+-- | The /CreateSnapshot/ action creates a copy of an entire cache cluster at a
 -- specific moment in time.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateSnapshot.html>
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
@@ -22,14 +22,13 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteCacheCluster/ operation deletes a previously provisioned cache
--- cluster. /DeleteCacheCluster/ deletes all associated cache nodes, node
--- endpoints and the cache cluster itself. When you receive a successful
--- response from this operation, Amazon ElastiCache immediately begins deleting
--- the cache cluster; you cannot cancel or revert this operation.
+-- | The /DeleteCacheCluster/ action deletes a previously provisioned cache cluster. /DeleteCacheCluster/ deletes all associated cache nodes, node endpoints and the
+-- cache cluster itself. When you receive a successful response from this
+-- action, Amazon ElastiCache immediately begins deleting the cache cluster; you
+-- cannot cancel or revert this action.
 --
 -- This API cannot be used to delete a cache cluster that is the last read
--- replica of a replication group that has automatic failover mode enabled.
+-- replica of a replication group that has Multi-AZ mode enabled.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheCluster.html>
 module Network.AWS.ElastiCache.DeleteCacheCluster
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteCacheParameterGroup/ operation deletes the specified cache parameter
+-- | The /DeleteCacheParameterGroup/ action deletes the specified cache parameter
 -- group. You cannot delete a cache parameter group if it is associated with any
 -- cache clusters.
 --
@@ -64,6 +64,9 @@
     }
 
 -- | The name of the cache parameter group to delete.
+--
+-- The specified cache security group must not be associated with any cache
+-- clusters.
 dcpg1CacheParameterGroupName :: Lens' DeleteCacheParameterGroup Text
 dcpg1CacheParameterGroupName =
     lens _dcpg1CacheParameterGroupName
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
@@ -22,8 +22,11 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteCacheSecurityGroup/ operation deletes a cache security group.
+-- | The /DeleteCacheSecurityGroup/ action deletes a cache security group.
 --
+-- You cannot delete a cache security group if it is associated with any cache
+-- clusters.
+--
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheSecurityGroup.html>
 module Network.AWS.ElastiCache.DeleteCacheSecurityGroup
     (
@@ -62,6 +65,8 @@
     }
 
 -- | The name of the cache security group to delete.
+--
+-- You cannot delete the default security group.
 dcsgCacheSecurityGroupName :: Lens' DeleteCacheSecurityGroup Text
 dcsgCacheSecurityGroupName =
     lens _dcsgCacheSecurityGroupName
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
@@ -22,7 +22,10 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteCacheSubnetGroup/ operation deletes a cache subnet group.
+-- | The /DeleteCacheSubnetGroup/ action deletes a cache subnet group.
+--
+-- You cannot delete a cache subnet group if it is associated with any cache
+-- clusters.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheSubnetGroup.html>
 module Network.AWS.ElastiCache.DeleteCacheSubnetGroup
diff --git a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
@@ -22,14 +22,14 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteReplicationGroup/ operation deletes an existing cluster. By default,
--- this operation deletes the entire cluster, including the primary node group
--- and all of the read replicas. You can optionally delete only the read
--- replicas, while retaining the primary node group.
+-- | The /DeleteReplicationGroup/ action deletes an existing replication group. By
+-- default, this action deletes the entire replication group, including the
+-- primary cluster and all of the read replicas. You can optionally delete only
+-- the read replicas, while retaining the primary cluster.
 --
--- When you receive a successful response from this operation, Amazon
--- ElastiCache immediately begins deleting the selected resources; you cannot
--- cancel or revert this operation.
+-- When you receive a successful response from this action, Amazon ElastiCache
+-- immediately begins deleting the selected resources; you cannot cancel or
+-- revert this action.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteReplicationGroup.html>
 module Network.AWS.ElastiCache.DeleteReplicationGroup
diff --git a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
@@ -22,9 +22,9 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DeleteSnapshot/ operation 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.
+-- | The /DeleteSnapshot/ action deletes an existing snapshot. When you receive a
+-- successful response from this action, ElastiCache immediately begins deleting
+-- the snapshot; you cannot cancel or revert this action.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteSnapshot.html>
 module Network.AWS.ElastiCache.DeleteSnapshot
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheClusters/ operation returns information about all provisioned
+-- | The /DescribeCacheClusters/ action returns information about all provisioned
 -- cache clusters if no cache cluster identifier is specified, or about a
 -- specific cache cluster if a cache cluster identifier is supplied.
 --
@@ -106,9 +106,9 @@
     lens _dcc1CacheClusterId (\s a -> s { _dcc1CacheClusterId = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcc1Marker :: Lens' DescribeCacheClusters (Maybe Text)
 dcc1Marker = lens _dcc1Marker (\s a -> s { _dcc1Marker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheEngineVersions/ operation returns a list of the available
--- cache engines and their versions.
+-- | The /DescribeCacheEngineVersions/ action returns a list of the available cache
+-- engines and their versions.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheEngineVersions.html>
 module Network.AWS.ElastiCache.DescribeCacheEngineVersions
@@ -117,9 +117,9 @@
     lens _dcevEngineVersion (\s a -> s { _dcevEngineVersion = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text)
 dcevMarker = lens _dcevMarker (\s a -> s { _dcevMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheParameterGroups/ operation returns a list of cache parameter
+-- | The /DescribeCacheParameterGroups/ action returns a list of cache parameter
 -- group descriptions. If a cache parameter group name is specified, the list
 -- will contain only the descriptions for that group.
 --
@@ -82,9 +82,9 @@
         (\s a -> s { _dcpgCacheParameterGroupName = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcpgMarker :: Lens' DescribeCacheParameterGroups (Maybe Text)
 dcpgMarker = lens _dcpgMarker (\s a -> s { _dcpgMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheParameters/ operation returns the detailed parameter list for
--- a particular cache parameter group.
+-- | The /DescribeCacheParameters/ action returns the detailed parameter list for a
+-- particular cache parameter group.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameters.html>
 module Network.AWS.ElastiCache.DescribeCacheParameters
@@ -88,9 +88,9 @@
         (\s a -> s { _dcpCacheParameterGroupName = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcpMarker :: Lens' DescribeCacheParameters (Maybe Text)
 dcpMarker = lens _dcpMarker (\s a -> s { _dcpMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
@@ -22,9 +22,9 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheSecurityGroups/ operation returns a list of cache security
--- group descriptions. If a cache security group name is specified, the list
--- will contain only the description of that group.
+-- | The /DescribeCacheSecurityGroups/ action returns a list of cache security group
+-- descriptions. If a cache security group name is specified, the list will
+-- contain only the description of that group.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheSecurityGroups.html>
 module Network.AWS.ElastiCache.DescribeCacheSecurityGroups
@@ -82,9 +82,9 @@
         (\s a -> s { _dcsg1CacheSecurityGroupName = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcsg1Marker :: Lens' DescribeCacheSecurityGroups (Maybe Text)
 dcsg1Marker = lens _dcsg1Marker (\s a -> s { _dcsg1Marker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeCacheSubnetGroups/ operation returns a list of cache subnet group
+-- | The /DescribeCacheSubnetGroups/ action returns a list of cache subnet group
 -- descriptions. If a subnet group name is specified, the list will contain only
 -- the description of that group.
 --
@@ -82,9 +82,9 @@
         (\s a -> s { _dcsgCacheSubnetGroupName = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dcsgMarker :: Lens' DescribeCacheSubnetGroups (Maybe Text)
 dcsgMarker = lens _dcsgMarker (\s a -> s { _dcsgMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeEngineDefaultParameters/ operation returns the default engine and
+-- | The /DescribeEngineDefaultParameters/ action returns the default engine and
 -- system parameter information for the specified cache engine.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEngineDefaultParameters.html>
@@ -82,9 +82,9 @@
         (\s a -> s { _dedpCacheParameterGroupFamily = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dedpMarker :: Lens' DescribeEngineDefaultParameters (Maybe Text)
 dedpMarker = lens _dedpMarker (\s a -> s { _dedpMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeEvents.hs b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEvents.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeEvents/ operation returns events related to cache clusters, cache
+-- | The /DescribeEvents/ action returns events related to cache clusters, cache
 -- security groups, and cache parameter groups. You can obtain events specific
 -- to a particular cache cluster, cache security group, or cache parameter group
 -- by providing the name as a parameter.
@@ -109,9 +109,9 @@
 deEndTime = lens _deEndTime (\s a -> s { _deEndTime = a }) . mapping _Time
 
 -- | 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 deMarker :: Lens' DescribeEvents (Maybe Text)
 deMarker = lens _deMarker (\s a -> s { _deMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
@@ -22,8 +22,9 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeReplicationGroups/ operation returns information about a
--- particular replication group. If no identifier is specified, /DescribeReplicationGroups/ returns information about all replication groups.
+-- | The /DescribeReplicationGroups/ action returns information about a particular
+-- replication group. If no identifier is specified, /DescribeReplicationGroups/
+-- returns information about all replication groups.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html>
 module Network.AWS.ElastiCache.DescribeReplicationGroups
@@ -75,9 +76,9 @@
     }
 
 -- | 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 drg1Marker :: Lens' DescribeReplicationGroups (Maybe Text)
 drg1Marker = lens _drg1Marker (\s a -> s { _drg1Marker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeReservedCacheNodes/ operation returns information about reserved
+-- | The /DescribeReservedCacheNodes/ action returns information about reserved
 -- cache nodes for this account, or about a specified reserved cache node.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReservedCacheNodes.html>
@@ -113,9 +113,9 @@
 drcnDuration = lens _drcnDuration (\s a -> s { _drcnDuration = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 drcnMarker :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnMarker = lens _drcnMarker (\s a -> s { _drcnMarker = a })
 
@@ -132,7 +132,7 @@
 -- | The offering type filter value. Use this parameter to show only the available
 -- offerings matching the specified offering type.
 --
--- Valid values: '"Light Utilization" | "Medium Utilization" | "HeavyUtilization"'
+-- Valid values: '"Light Utilization"|"Medium Utilization"|"Heavy Utilization"'
 drcnOfferingType :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnOfferingType = lens _drcnOfferingType (\s a -> s { _drcnOfferingType = a })
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeReservedCacheNodesOfferings/ operation lists available reserved
--- cache node offerings.
+-- | The /DescribeReservedCacheNodesOfferings/ action lists available reserved cache
+-- node offerings.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReservedCacheNodesOfferings.html>
 module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
@@ -108,9 +108,9 @@
 drcnoDuration = lens _drcnoDuration (\s a -> s { _drcnoDuration = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 drcnoMarker :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoMarker = lens _drcnoMarker (\s a -> s { _drcnoMarker = a })
 
@@ -127,7 +127,7 @@
 -- | The offering type filter value. Use this parameter to show only the available
 -- offerings matching the specified offering type.
 --
--- Valid Values: '"Light Utilization" | "Medium Utilization" | "HeavyUtilization"'
+-- Valid Values: '"Light Utilization"|"Medium Utilization"|"Heavy Utilization"'
 drcnoOfferingType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoOfferingType =
     lens _drcnoOfferingType (\s a -> s { _drcnoOfferingType = a })
diff --git a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
--- a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /DescribeSnapshots/ operation returns information about cache cluster
+-- | The /DescribeSnapshots/ action returns information about cache cluster
 -- snapshots. By default, /DescribeSnapshots/ lists all of your snapshots; it can
 -- optionally describe a single snapshot, or just the snapshots associated with
 -- a particular cache cluster.
@@ -92,9 +92,9 @@
 dsCacheClusterId = lens _dsCacheClusterId (\s a -> s { _dsCacheClusterId = 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dsMarker :: Lens' DescribeSnapshots (Maybe Text)
 dsMarker = lens _dsMarker (\s a -> s { _dsMarker = a })
 
@@ -140,9 +140,9 @@
     }
 
 -- | 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 /MaxRecords/.
+-- pagination of results from this action. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value specified
+-- by /MaxRecords/.
 dsrMarker :: Lens' DescribeSnapshotsResponse (Maybe Text)
 dsrMarker = lens _dsrMarker (\s a -> s { _dsrMarker = a })
 
diff --git a/gen/Network/AWS/ElastiCache/ListTagsForResource.hs b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.ElastiCache.ListTagsForResource
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | The /ListTagsForResource/ action lists all cost allocation tags currently on
+-- the named resource. A /cost allocation tag/ is a key-value pair where the key
+-- is case-sensitive and the value is optional. Cost allocation tags can be used
+-- to categorize and track your AWS costs.
+--
+-- You can have a maximum of 10 cost allocation tags on an ElastiCache
+-- resource. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html Using Cost Allocation Tags in AmazonElastiCache>.
+--
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListTagsForResource.html>
+module Network.AWS.ElastiCache.ListTagsForResource
+    (
+    -- * Request
+      ListTagsForResource
+    -- ** Request constructor
+    , listTagsForResource
+    -- ** Request lenses
+    , ltfrResourceName
+
+    -- * Response
+    , ListTagsForResourceResponse
+    -- ** Response constructor
+    , listTagsForResourceResponse
+    -- ** Response lenses
+    , ltfrrTagList
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.Query
+import Network.AWS.ElastiCache.Types
+import qualified GHC.Exts
+
+newtype ListTagsForResource = ListTagsForResource
+    { _ltfrResourceName :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'ListTagsForResource' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'ltfrResourceName' @::@ 'Text'
+--
+listTagsForResource :: Text -- ^ 'ltfrResourceName'
+                    -> ListTagsForResource
+listTagsForResource p1 = ListTagsForResource
+    { _ltfrResourceName = p1
+    }
+
+-- | The name of the resource for which you want the list of tags, for example 'myCluster01'.
+ltfrResourceName :: Lens' ListTagsForResource Text
+ltfrResourceName = lens _ltfrResourceName (\s a -> s { _ltfrResourceName = a })
+
+newtype ListTagsForResourceResponse = ListTagsForResourceResponse
+    { _ltfrrTagList :: List "member" Tag
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
+
+instance GHC.Exts.IsList ListTagsForResourceResponse where
+    type Item ListTagsForResourceResponse = Tag
+
+    fromList = ListTagsForResourceResponse . GHC.Exts.fromList
+    toList   = GHC.Exts.toList . _ltfrrTagList
+
+-- | 'ListTagsForResourceResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'ltfrrTagList' @::@ ['Tag']
+--
+listTagsForResourceResponse :: ListTagsForResourceResponse
+listTagsForResourceResponse = ListTagsForResourceResponse
+    { _ltfrrTagList = mempty
+    }
+
+-- | A list of cost allocation tags as a key-value pair.
+ltfrrTagList :: Lens' ListTagsForResourceResponse [Tag]
+ltfrrTagList = lens _ltfrrTagList (\s a -> s { _ltfrrTagList = a }) . _List
+
+instance ToPath ListTagsForResource where
+    toPath = const "/"
+
+instance ToQuery ListTagsForResource where
+    toQuery ListTagsForResource{..} = mconcat
+        [ "ResourceName" =? _ltfrResourceName
+        ]
+
+instance ToHeaders ListTagsForResource
+
+instance AWSRequest ListTagsForResource where
+    type Sv ListTagsForResource = ElastiCache
+    type Rs ListTagsForResource = ListTagsForResourceResponse
+
+    request  = post "ListTagsForResource"
+    response = xmlResponse
+
+instance FromXML ListTagsForResourceResponse where
+    parseXML = withElement "ListTagsForResourceResult" $ \x -> ListTagsForResourceResponse
+        <$> x .@? "TagList" .!@ mempty
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
@@ -22,9 +22,9 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /ModifyCacheCluster/ operation modifies the settings for a cache cluster.
--- You can use this operation to change one or more cluster configuration
--- parameters by specifying the parameters and the new values.
+-- | The /ModifyCacheCluster/ action modifies the settings for a cache cluster. You
+-- can use this action to change one or more cluster configuration parameters by
+-- specifying the parameters and the new values.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html>
 module Network.AWS.ElastiCache.ModifyCacheCluster
@@ -147,6 +147,16 @@
 -- Valid values: 'single-az' | 'cross-az'.
 --
 -- This option is only supported for Memcached cache clusters.
+--
+-- You cannot specify 'single-az' if the Memcached cache cluster already has
+-- cache nodes in different Availability Zones. If 'cross-az' is specified,
+-- existing Memcached nodes remain in their current Availability Zone.
+--
+-- Only newly created nodes will be located in different Availability Zones.
+-- For instructions on how to move existing Memcached nodes to different
+-- Availability Zones, see the Availability Zone Considerations section of <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html CacheNode Considerations for Memcached>.
+--
+--
 mccAZMode :: Lens' ModifyCacheCluster (Maybe AZMode)
 mccAZMode = lens _mccAZMode (\s a -> s { _mccAZMode = a })
 
@@ -166,12 +176,7 @@
 mccApplyImmediately =
     lens _mccApplyImmediately (\s a -> s { _mccApplyImmediately = a })
 
--- | If 'true', then minor engine upgrades will be applied automatically to the
--- cache cluster during the maintenance window.
---
--- Valid values: 'true' | 'false'
---
--- Default: 'true'
+-- | This parameter is currently disabled.
 mccAutoMinorVersionUpgrade :: Lens' ModifyCacheCluster (Maybe Bool)
 mccAutoMinorVersionUpgrade =
     lens _mccAutoMinorVersionUpgrade
@@ -183,7 +188,7 @@
     lens _mccCacheClusterId (\s a -> s { _mccCacheClusterId = 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 NumCacheNodes is less
+-- (0001, 0002, etc.). This parameter is only valid when /NumCacheNodes/ 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
@@ -225,7 +230,7 @@
 -- | The list of Availability Zones where the new Memcached cache nodes will be
 -- created.
 --
--- This parameter is only valid when 'NumCacheNodes' in the request is greater
+-- This parameter is only valid when /NumCacheNodes/ 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.
@@ -255,16 +260,15 @@
 --
 -- Impact of new add/remove requests upon pending requests
 --
--- Scenarios Pending Operation New Request Results   Scenario-1 Delete Delete
--- The new delete, pending or immediate, replaces the pending delete.   Scenario-2
--- Delete Create The new create, pending or immediate, replaces the pending
--- delete.   Scenario-3 Create Delete The new delete, pending or immediate,
--- replaces the pending create.   Scenario-4 Create Create The new create is
--- added to the pending create.
+-- Scenarios Pending action New Request Results   Scenario-1 Delete Delete The new delete, pending or immediate, replaces the pending delete.
+-- Scenario-2 Delete Create The new create, pending or immediate, replaces
+-- the pending delete.   Scenario-3 Create Delete The new delete, pending or
+-- immediate, replaces the pending create.   Scenario-4 Create Create The new
+-- create is added to the pending create.
 -- Important:
--- If the new create request is Apply
--- Immediately - Yes, all creates are performed immediately. If the new create
--- request is Apply Immediately - No, all creates are pending.   Example: 'NewAvailabilityZones.member.1=us-east-1a&NewAvailabilityZones.member.2=us-east-1b&NewAvailabilityZones.member.3=us-east-1d'
+-- If the new create request is
+-- Apply Immediately - Yes, all creates are performed immediately. If the new
+-- create request is Apply Immediately - No, all creates are pending.   Example: 'NewAvailabilityZones.member.1=us-west-2a&NewAvailabilityZones.member.2=us-west-2b&NewAvailabilityZones.member.3=us-west-2c'
 mccNewAvailabilityZones :: Lens' ModifyCacheCluster [Text]
 mccNewAvailabilityZones =
     lens _mccNewAvailabilityZones (\s a -> s { _mccNewAvailabilityZones = a })
@@ -272,6 +276,8 @@
 
 -- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
 -- will be sent.
+--
+-- The Amazon SNS topic owner must be same as the cache cluster owner.
 mccNotificationTopicArn :: Lens' ModifyCacheCluster (Maybe Text)
 mccNotificationTopicArn =
     lens _mccNotificationTopicArn (\s a -> s { _mccNotificationTopicArn = a })
@@ -296,7 +302,8 @@
 -- If you are removing cache nodes, you must use the 'CacheNodeIdsToRemove'
 -- parameter to provide the IDs of the specific cache nodes to remove.
 --
--- For cache clusters running Redis, the value of 'NumCacheNodes'must be 1.
+-- For clusters running Redis, this value must be 1. For clusters running
+-- Memcached, this value must be between 1 and 50.
 --
 -- Note:
 -- Adding or removing Memcached cache nodes can be applied immediately or
@@ -314,7 +321,7 @@
 -- does not automatically override a previous pending action to add nodes. The
 -- customer can modify the previous pending action to add more nodes or
 -- explicitly cancel the pending request and retry the new request. To cancel
--- pending actions to modify the number of cache nodes in a cluster, use the 'ModifyCacheCluster' request and set 'NumCacheNodes' equal to the number of cache nodes currently
+-- pending actions to modify the number of cache nodes in a cluster, use the 'ModifyCacheCluster' request and set /NumCacheNodes/ equal to the number of cache nodes currently
 -- in the cache cluster.
 mccNumCacheNodes :: Lens' ModifyCacheCluster (Maybe Int)
 mccNumCacheNodes = lens _mccNumCacheNodes (\s a -> s { _mccNumCacheNodes = a })
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /ModifyCacheParameterGroup/ operation modifies the parameters of a cache
+-- | The /ModifyCacheParameterGroup/ action 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.
 --
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /ModifyCacheSubnetGroup/ operation modifies an existing cache subnet group.
+-- | The /ModifyCacheSubnetGroup/ action modifies an existing cache subnet group.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheSubnetGroup.html>
 module Network.AWS.ElastiCache.ModifyCacheSubnetGroup
diff --git a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /ModifyReplicationGroup/ operation modifies the settings for a replication
+-- | The /ModifyReplicationGroup/ action modifies the settings for a replication
 -- group.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html>
@@ -155,10 +155,7 @@
 mrgApplyImmediately =
     lens _mrgApplyImmediately (\s a -> s { _mrgApplyImmediately = a })
 
--- | Determines whether minor engine upgrades will be applied automatically to all
--- of the clusters in the replication group during the maintenance window. A
--- value of 'true' allows these upgrades to occur; 'false' disables automatic
--- upgrades.
+-- | This parameter is currently disabled.
 mrgAutoMinorVersionUpgrade :: Lens' ModifyReplicationGroup (Maybe Bool)
 mrgAutoMinorVersionUpgrade =
     lens _mrgAutoMinorVersionUpgrade
@@ -168,6 +165,10 @@
 -- if the existing primary encounters a failure.
 --
 -- Valid values: 'true' | 'false'
+--
+-- ElastiCache Multi-AZ replication groups are not supported on:
+--
+-- Redis versions earlier than 2.8.6. T1 and T2 cache node types.
 mrgAutomaticFailoverEnabled :: Lens' ModifyReplicationGroup (Maybe Bool)
 mrgAutomaticFailoverEnabled =
     lens _mrgAutomaticFailoverEnabled
@@ -203,6 +204,8 @@
 
 -- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
 -- will be sent.
+--
+-- The Amazon SNS topic owner must be same as the replication group owner.
 mrgNotificationTopicArn :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgNotificationTopicArn =
     lens _mrgNotificationTopicArn (\s a -> s { _mrgNotificationTopicArn = a })
diff --git a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
--- a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
+++ b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /PurchaseReservedCacheNodesOffering/ operation allows you to purchase a
+-- | The /PurchaseReservedCacheNodesOffering/ action allows you to purchase a
 -- reserved cache node offering.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_PurchaseReservedCacheNodesOffering.html>
diff --git a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
@@ -22,11 +22,11 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /RebootCacheCluster/ operation reboots some, or all, of the cache nodes
--- within a provisioned cache cluster. This API will apply any modified cache
--- parameter groups to the cache cluster. The reboot action takes place as soon
--- as possible, and results in a momentary outage to the cache cluster. During
--- the reboot, the cache cluster status is set to REBOOTING.
+-- | The /RebootCacheCluster/ action reboots some, or all, of the cache nodes within
+-- a provisioned cache cluster. This API will apply any modified cache parameter
+-- groups to the cache cluster. The reboot action takes place as soon as
+-- possible, and results in a momentary outage to the cache cluster. During the
+-- reboot, the cache cluster status is set to REBOOTING.
 --
 -- The reboot causes the contents of the cache (for each cache node being
 -- rebooted) to be lost.
diff --git a/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.ElastiCache.RemoveTagsFromResource
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | The /RemoveTagsFromResource/ action removes the tags identified by the 'TagKeys'
+-- list from the named resource.
+--
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RemoveTagsFromResource.html>
+module Network.AWS.ElastiCache.RemoveTagsFromResource
+    (
+    -- * Request
+      RemoveTagsFromResource
+    -- ** Request constructor
+    , removeTagsFromResource
+    -- ** Request lenses
+    , rtfrResourceName
+    , rtfrTagKeys
+
+    -- * Response
+    , RemoveTagsFromResourceResponse
+    -- ** Response constructor
+    , removeTagsFromResourceResponse
+    -- ** Response lenses
+    , rtfrrTagList
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.Query
+import Network.AWS.ElastiCache.Types
+import qualified GHC.Exts
+
+data RemoveTagsFromResource = RemoveTagsFromResource
+    { _rtfrResourceName :: Text
+    , _rtfrTagKeys      :: List "member" Text
+    } deriving (Eq, Ord, Read, Show)
+
+-- | 'RemoveTagsFromResource' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rtfrResourceName' @::@ 'Text'
+--
+-- * 'rtfrTagKeys' @::@ ['Text']
+--
+removeTagsFromResource :: Text -- ^ 'rtfrResourceName'
+                       -> RemoveTagsFromResource
+removeTagsFromResource p1 = RemoveTagsFromResource
+    { _rtfrResourceName = p1
+    , _rtfrTagKeys      = mempty
+    }
+
+-- | The name of the ElastiCache resource from which you want the listed tags
+-- removed, for example 'myCluster01'.
+rtfrResourceName :: Lens' RemoveTagsFromResource Text
+rtfrResourceName = lens _rtfrResourceName (\s a -> s { _rtfrResourceName = a })
+
+-- | A list of 'TagKeys' identifying the tags you want removed from the named
+-- resource. For example, 'TagKeys.member.1=Region' removes the cost allocation
+-- tag with the key name 'Region' from the resource named by the /ResourceName/
+-- parameter.
+rtfrTagKeys :: Lens' RemoveTagsFromResource [Text]
+rtfrTagKeys = lens _rtfrTagKeys (\s a -> s { _rtfrTagKeys = a }) . _List
+
+newtype RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse
+    { _rtfrrTagList :: List "member" Tag
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
+
+instance GHC.Exts.IsList RemoveTagsFromResourceResponse where
+    type Item RemoveTagsFromResourceResponse = Tag
+
+    fromList = RemoveTagsFromResourceResponse . GHC.Exts.fromList
+    toList   = GHC.Exts.toList . _rtfrrTagList
+
+-- | 'RemoveTagsFromResourceResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rtfrrTagList' @::@ ['Tag']
+--
+removeTagsFromResourceResponse :: RemoveTagsFromResourceResponse
+removeTagsFromResourceResponse = RemoveTagsFromResourceResponse
+    { _rtfrrTagList = mempty
+    }
+
+-- | A list of cost allocation tags as a key-value pair.
+rtfrrTagList :: Lens' RemoveTagsFromResourceResponse [Tag]
+rtfrrTagList = lens _rtfrrTagList (\s a -> s { _rtfrrTagList = a }) . _List
+
+instance ToPath RemoveTagsFromResource where
+    toPath = const "/"
+
+instance ToQuery RemoveTagsFromResource where
+    toQuery RemoveTagsFromResource{..} = mconcat
+        [ "ResourceName" =? _rtfrResourceName
+        , "TagKeys"      =? _rtfrTagKeys
+        ]
+
+instance ToHeaders RemoveTagsFromResource
+
+instance AWSRequest RemoveTagsFromResource where
+    type Sv RemoveTagsFromResource = ElastiCache
+    type Rs RemoveTagsFromResource = RemoveTagsFromResourceResponse
+
+    request  = post "RemoveTagsFromResource"
+    response = xmlResponse
+
+instance FromXML RemoveTagsFromResourceResponse where
+    parseXML = withElement "RemoveTagsFromResourceResult" $ \x -> RemoveTagsFromResourceResponse
+        <$> x .@? "TagList" .!@ mempty
diff --git a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /ResetCacheParameterGroup/ operation modifies the parameters of a cache
+-- | The /ResetCacheParameterGroup/ action 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 /ResetAllParameters/ and /CacheParameterGroupName/
diff --git a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
@@ -22,8 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | The /RevokeCacheSecurityGroupIngress/ operation revokes ingress from a cache
--- security group. Use this operation to disallow access from an Amazon EC2
+-- | The /RevokeCacheSecurityGroupIngress/ action revokes ingress from a cache
+-- security group. Use this action to disallow access from an Amazon EC2
 -- security group that had been previously authorized.
 --
 -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RevokeCacheSecurityGroupIngress.html>
diff --git a/gen/Network/AWS/ElastiCache/Types.hs b/gen/Network/AWS/ElastiCache/Types.hs
--- a/gen/Network/AWS/ElastiCache/Types.hs
+++ b/gen/Network/AWS/ElastiCache/Types.hs
@@ -86,6 +86,12 @@
     , cntsvCacheNodeType
     , cntsvValue
 
+    -- * Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
+
     -- * PendingAutomaticFailoverStatus
     , PendingAutomaticFailoverStatus (..)
 
@@ -297,6 +303,11 @@
     , rcnoReservedCacheNodesOfferingId
     , rcnoUsagePrice
 
+    -- * TagListMessage
+    , TagListMessage
+    , tagListMessage
+    , tlmTagList
+
     -- * Endpoint
     , Endpoint
     , endpoint
@@ -332,7 +343,7 @@
 import Network.AWS.Signing
 import qualified GHC.Exts
 
--- | Version @2014-09-30@ of the Amazon ElastiCache service.
+-- | Version @2015-02-02@ of the Amazon ElastiCache service.
 data ElastiCache
 
 instance AWSService ElastiCache where
@@ -345,7 +356,7 @@
         service' = Service
             { _svcAbbrev       = "ElastiCache"
             , _svcPrefix       = "elasticache"
-            , _svcVersion      = "2014-09-30"
+            , _svcVersion      = "2015-02-02"
             , _svcTargetPrefix = Nothing
             , _svcJSONVersion  = Nothing
             , _svcHandle       = handle
@@ -375,7 +386,7 @@
             | otherwise = False
 
 ns :: Text
-ns = "http://elasticache.amazonaws.com/doc/2014-09-30/"
+ns = "http://elasticache.amazonaws.com/doc/2015-02-02/"
 {-# INLINE ns #-}
 
 data NodeSnapshot = NodeSnapshot
@@ -532,8 +543,7 @@
     , _sNodeSnapshots              = mempty
     }
 
--- | For the source cache cluster, indicates whether minor version patches are
--- applied automatically ('true') or not ('false').
+-- | This parameter is currently disabled.
 sAutoMinorVersionUpgrade :: Lens' Snapshot (Maybe Bool)
 sAutoMinorVersionUpgrade =
     lens _sAutoMinorVersionUpgrade
@@ -580,6 +590,9 @@
 sNodeSnapshots = lens _sNodeSnapshots (\s a -> s { _sNodeSnapshots = a }) . _List
 
 -- | The number of cache nodes in the source cache cluster.
+--
+-- For clusters running Redis, this value must be 1. For clusters running
+-- Memcached, this value must be between 1 and 50.
 sNumCacheNodes :: Lens' Snapshot (Maybe Int)
 sNumCacheNodes = lens _sNumCacheNodes (\s a -> s { _sNumCacheNodes = a })
 
@@ -853,6 +866,44 @@
         , "Value"         =? _cntsvValue
         ]
 
+data Tag = Tag
+    { _tagKey   :: Maybe Text
+    , _tagValue :: Maybe Text
+    } deriving (Eq, Ord, Read, Show)
+
+-- | 'Tag' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'tagKey' @::@ 'Maybe' 'Text'
+--
+-- * 'tagValue' @::@ 'Maybe' 'Text'
+--
+tag :: Tag
+tag = Tag
+    { _tagKey   = Nothing
+    , _tagValue = Nothing
+    }
+
+-- | The key for the tag.
+tagKey :: Lens' Tag (Maybe Text)
+tagKey = lens _tagKey (\s a -> s { _tagKey = a })
+
+-- | The tag's value. May be null.
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\s a -> s { _tagValue = a })
+
+instance FromXML Tag where
+    parseXML x = Tag
+        <$> x .@? "Key"
+        <*> x .@? "Value"
+
+instance ToQuery Tag where
+    toQuery Tag{..} = mconcat
+        [ "Key"   =? _tagKey
+        , "Value" =? _tagValue
+        ]
+
 data PendingAutomaticFailoverStatus
     = Disabled -- ^ disabled
     | Enabled  -- ^ enabled
@@ -936,7 +987,11 @@
     , _rgpmvAutomaticFailoverStatus = Nothing
     }
 
--- | Indicates the status of automatic failover for this replication group.
+-- | Indicates the status of Multi-AZ for this replication group.
+--
+-- ElastiCache Multi-AZ replication groups are not supported on:
+--
+-- Redis versions earlier than 2.8.6. T1 and T2 cache node types.
 rgpmvAutomaticFailoverStatus :: Lens' ReplicationGroupPendingModifiedValues (Maybe PendingAutomaticFailoverStatus)
 rgpmvAutomaticFailoverStatus =
     lens _rgpmvAutomaticFailoverStatus
@@ -1307,12 +1362,12 @@
     , _sSubnetAvailabilityZone = Nothing
     }
 
--- | The Availability Zone associated with the subnet
+-- | The Availability Zone associated with the subnet.
 sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)
 sSubnetAvailabilityZone =
     lens _sSubnetAvailabilityZone (\s a -> s { _sSubnetAvailabilityZone = a })
 
--- | The unique identifier for the subnet
+-- | The unique identifier for the subnet.
 sSubnetIdentifier :: Lens' Subnet (Maybe Text)
 sSubnetIdentifier =
     lens _sSubnetIdentifier (\s a -> s { _sSubnetIdentifier = a })
@@ -1468,8 +1523,7 @@
     , _ccSnapshotWindow             = Nothing
     }
 
--- | If 'true', then minor version patches are applied automatically; if 'false', then
--- automatic minor version patches are disabled.
+-- | This parameter is currently disabled.
 ccAutoMinorVersionUpgrade :: Lens' CacheCluster (Maybe Bool)
 ccAutoMinorVersionUpgrade =
     lens _ccAutoMinorVersionUpgrade
@@ -1542,6 +1596,9 @@
         (\s a -> s { _ccNotificationConfiguration = a })
 
 -- | The number of cache nodes in the cache cluster.
+--
+-- For clusters running Redis, this value must be 1. For clusters running
+-- Memcached, this value must be between 1 and 50.
 ccNumCacheNodes :: Lens' CacheCluster (Maybe Int)
 ccNumCacheNodes = lens _ccNumCacheNodes (\s a -> s { _ccNumCacheNodes = a })
 
@@ -1550,7 +1607,7 @@
     lens _ccPendingModifiedValues (\s a -> s { _ccPendingModifiedValues = a })
 
 -- | The name of the Availability Zone in which the cache cluster is located or
--- "Multiple" if the cache nodes are located in different Availability Zones.
+-- "Multiple"if the cache nodes are located in different Availability Zones.
 ccPreferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)
 ccPreferredAvailabilityZone =
     lens _ccPreferredAvailabilityZone
@@ -1826,7 +1883,7 @@
     lens _cnCustomerAvailabilityZone
         (\s a -> s { _cnCustomerAvailabilityZone = a })
 
--- | The hostname and IP address for connecting to this cache node.
+-- | The hostname for connecting to this cache node.
 cnEndpoint :: Lens' CacheNode (Maybe Endpoint)
 cnEndpoint = lens _cnEndpoint (\s a -> s { _cnEndpoint = a })
 
@@ -2404,7 +2461,11 @@
     , _rgAutomaticFailover     = Nothing
     }
 
--- | Indicates the status of automatic failover for this replication group.
+-- | Indicates the status of Multi-AZ for this replication group.
+--
+-- ElastiCache Multi-AZ replication groups are not supported on:
+--
+-- Redis versions earlier than 2.8.6. T1 and T2 cache node types.
 rgAutomaticFailover :: Lens' ReplicationGroup (Maybe AutomaticFailoverStatus)
 rgAutomaticFailover =
     lens _rgAutomaticFailover (\s a -> s { _rgAutomaticFailover = a })
@@ -2611,6 +2672,40 @@
         , "UsagePrice"                   =? _rcnoUsagePrice
         ]
 
+newtype TagListMessage = TagListMessage
+    { _tlmTagList :: List "member" Tag
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
+
+instance GHC.Exts.IsList TagListMessage where
+    type Item TagListMessage = Tag
+
+    fromList = TagListMessage . GHC.Exts.fromList
+    toList   = GHC.Exts.toList . _tlmTagList
+
+-- | 'TagListMessage' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'tlmTagList' @::@ ['Tag']
+--
+tagListMessage :: TagListMessage
+tagListMessage = TagListMessage
+    { _tlmTagList = mempty
+    }
+
+-- | A list of cost allocation tags as a key-value pair.
+tlmTagList :: Lens' TagListMessage [Tag]
+tlmTagList = lens _tlmTagList (\s a -> s { _tlmTagList = a }) . _List
+
+instance FromXML TagListMessage where
+    parseXML x = TagListMessage
+        <$> x .@? "TagList" .!@ mempty
+
+instance ToQuery TagListMessage where
+    toQuery TagListMessage{..} = mconcat
+        [ "TagList" =? _tlmTagList
+        ]
+
 data Endpoint = Endpoint
     { _eAddress :: Maybe Text
     , _ePort    :: Maybe Int
@@ -2684,6 +2779,9 @@
 pmvEngineVersion = lens _pmvEngineVersion (\s a -> s { _pmvEngineVersion = a })
 
 -- | The new number of cache nodes for the cache cluster.
+--
+-- For clusters running Redis, this value must be 1. For clusters running
+-- Memcached, this value must be between 1 and 50.
 pmvNumCacheNodes :: Lens' PendingModifiedValues (Maybe Int)
 pmvNumCacheNodes = lens _pmvNumCacheNodes (\s a -> s { _pmvNumCacheNodes = a })
 
