diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.3`
+`1.4.4`
 
 
 ## Description
diff --git a/amazonka-cloudfront.cabal b/amazonka-cloudfront.cabal
--- a/amazonka-cloudfront.cabal
+++ b/amazonka-cloudfront.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-cloudfront
-version:               1.4.3
+version:               1.4.4
 synopsis:              Amazon CloudFront SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -11,7 +11,7 @@
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
     Amazon CloudFront is a web service that speeds up distribution of your static and dynamic web content, for example, .html, .css, .php, image, and media files, to end users. CloudFront delivers your content through a worldwide network of edge locations. When an end user requests content that you\'re serving with CloudFront, the user is routed to the edge location that provides the lowest latency, so content is delivered with the best possible performance. If the content is already in that edge location, CloudFront delivers it immediately. If the content is not currently in that edge location, CloudFront retrieves it from an Amazon S3 bucket or an HTTP server (for example, a web server) that you have identified as the source for the definitive version of your content.
     .
@@ -43,8 +43,10 @@
           Network.AWS.CloudFront
         , Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity
         , Network.AWS.CloudFront.CreateDistribution
+        , Network.AWS.CloudFront.CreateDistributionWithTags
         , Network.AWS.CloudFront.CreateInvalidation
         , Network.AWS.CloudFront.CreateStreamingDistribution
+        , Network.AWS.CloudFront.CreateStreamingDistributionWithTags
         , Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity
         , Network.AWS.CloudFront.DeleteDistribution
         , Network.AWS.CloudFront.DeleteStreamingDistribution
@@ -60,7 +62,10 @@
         , Network.AWS.CloudFront.ListDistributionsByWebACLId
         , Network.AWS.CloudFront.ListInvalidations
         , Network.AWS.CloudFront.ListStreamingDistributions
+        , Network.AWS.CloudFront.ListTagsForResource
+        , Network.AWS.CloudFront.TagResource
         , Network.AWS.CloudFront.Types
+        , Network.AWS.CloudFront.UntagResource
         , Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity
         , Network.AWS.CloudFront.UpdateDistribution
         , Network.AWS.CloudFront.UpdateStreamingDistribution
@@ -71,7 +76,7 @@
         , Network.AWS.CloudFront.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.3.*
+          amazonka-core == 1.4.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cloudfront-test
@@ -91,9 +96,9 @@
         , Test.AWS.CloudFront.Internal
 
     build-depends:
-          amazonka-core == 1.4.3.*
-        , amazonka-test == 1.4.3.*
-        , amazonka-cloudfront == 1.4.3.*
+          amazonka-core == 1.4.4.*
+        , amazonka-test == 1.4.4.*
+        , amazonka-cloudfront == 1.4.4.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/CreateDistributionWithTags.yaml b/fixture/CreateDistributionWithTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDistributionWithTags.yaml
diff --git a/fixture/CreateDistributionWithTagsResponse.proto b/fixture/CreateDistributionWithTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDistributionWithTagsResponse.proto
diff --git a/fixture/CreateStreamingDistributionWithTags.yaml b/fixture/CreateStreamingDistributionWithTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStreamingDistributionWithTags.yaml
diff --git a/fixture/CreateStreamingDistributionWithTagsResponse.proto b/fixture/CreateStreamingDistributionWithTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStreamingDistributionWithTagsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Network/AWS/CloudFront.hs b/gen/Network/AWS/CloudFront.hs
--- a/gen/Network/AWS/CloudFront.hs
+++ b/gen/Network/AWS/CloudFront.hs
@@ -23,6 +23,9 @@
     -- ** TooManyOriginCustomHeaders
     , _TooManyOriginCustomHeaders
 
+    -- ** InvalidTagging
+    , _InvalidTagging
+
     -- ** InvalidErrorCode
     , _InvalidErrorCode
 
@@ -53,6 +56,9 @@
     -- ** InvalidWebACLId
     , _InvalidWebACLId
 
+    -- ** TooManyQueryStringParameters
+    , _TooManyQueryStringParameters
+
     -- ** TooManyDistributionCNAMEs
     , _TooManyDistributionCNAMEs
 
@@ -95,6 +101,9 @@
     -- ** TooManyHeadersInForwardedValues
     , _TooManyHeadersInForwardedValues
 
+    -- ** NoSuchResource
+    , _NoSuchResource
+
     -- ** TooManyStreamingDistributionCNAMEs
     , _TooManyStreamingDistributionCNAMEs
 
@@ -110,6 +119,9 @@
     -- ** DistributionAlreadyExists
     , _DistributionAlreadyExists
 
+    -- ** InvalidQueryStringParameters
+    , _InvalidQueryStringParameters
+
     -- ** MissingBody
     , _MissingBody
 
@@ -191,12 +203,21 @@
     -- ** UpdateStreamingDistribution
     , module Network.AWS.CloudFront.UpdateStreamingDistribution
 
+    -- ** ListTagsForResource
+    , module Network.AWS.CloudFront.ListTagsForResource
+
+    -- ** CreateDistributionWithTags
+    , module Network.AWS.CloudFront.CreateDistributionWithTags
+
     -- ** CreateDistribution
     , module Network.AWS.CloudFront.CreateDistribution
 
     -- ** GetDistributionConfig
     , module Network.AWS.CloudFront.GetDistributionConfig
 
+    -- ** CreateStreamingDistributionWithTags
+    , module Network.AWS.CloudFront.CreateStreamingDistributionWithTags
+
     -- ** GetDistribution
     , module Network.AWS.CloudFront.GetDistribution
 
@@ -236,6 +257,9 @@
     -- ** GetCloudFrontOriginAccessIdentity
     , module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity
 
+    -- ** TagResource
+    , module Network.AWS.CloudFront.TagResource
+
     -- ** GetStreamingDistribution
     , module Network.AWS.CloudFront.GetStreamingDistribution
 
@@ -245,6 +269,9 @@
     -- ** DeleteDistribution
     , module Network.AWS.CloudFront.DeleteDistribution
 
+    -- ** UntagResource
+    , module Network.AWS.CloudFront.UntagResource
+
     -- ** ListDistributionsByWebACLId
     , module Network.AWS.CloudFront.ListDistributionsByWebACLId
 
@@ -259,6 +286,9 @@
     -- ** GeoRestrictionType
     , GeoRestrictionType (..)
 
+    -- ** HTTPVersion
+    , HTTPVersion (..)
+
     -- ** ItemSelection
     , ItemSelection (..)
 
@@ -418,6 +448,7 @@
     , Distribution
     , distribution
     , dId
+    , dARN
     , dStatus
     , dLastModifiedTime
     , dInProgressInvalidationBatches
@@ -428,6 +459,7 @@
     -- ** DistributionConfig
     , DistributionConfig
     , distributionConfig
+    , dcHTTPVersion
     , dcAliases
     , dcDefaultRootObject
     , dcPriceClass
@@ -443,6 +475,12 @@
     , dcComment
     , dcEnabled
 
+    -- ** DistributionConfigWithTags
+    , DistributionConfigWithTags
+    , distributionConfigWithTags
+    , dcwtDistributionConfig
+    , dcwtTags
+
     -- ** DistributionList
     , DistributionList
     , distributionList
@@ -457,6 +495,7 @@
     , DistributionSummary
     , distributionSummary
     , dsId
+    , dsARN
     , dsStatus
     , dsLastModifiedTime
     , dsDomainName
@@ -471,10 +510,12 @@
     , dsViewerCertificate
     , dsRestrictions
     , dsWebACLId
+    , dsHTTPVersion
 
     -- ** ForwardedValues
     , ForwardedValues
     , forwardedValues
+    , fvQueryStringCacheKeys
     , fvHeaders
     , fvQueryString
     , fvCookies
@@ -571,6 +612,12 @@
     , pItems
     , pQuantity
 
+    -- ** QueryStringCacheKeys
+    , QueryStringCacheKeys
+    , queryStringCacheKeys
+    , qsckItems
+    , qsckQuantity
+
     -- ** Restrictions
     , Restrictions
     , restrictions
@@ -598,6 +645,7 @@
     , streamingDistribution
     , sdLastModifiedTime
     , sdId
+    , sdARN
     , sdStatus
     , sdDomainName
     , sdActiveTrustedSigners
@@ -615,6 +663,12 @@
     , sdcTrustedSigners
     , sdcEnabled
 
+    -- ** StreamingDistributionConfigWithTags
+    , StreamingDistributionConfigWithTags
+    , streamingDistributionConfigWithTags
+    , sdcwtStreamingDistributionConfig
+    , sdcwtTags
+
     -- ** StreamingDistributionList
     , StreamingDistributionList
     , streamingDistributionList
@@ -629,6 +683,7 @@
     , StreamingDistributionSummary
     , streamingDistributionSummary
     , sdsId
+    , sdsARN
     , sdsStatus
     , sdsLastModifiedTime
     , sdsDomainName
@@ -646,6 +701,22 @@
     , slcBucket
     , slcPrefix
 
+    -- ** Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- ** TagKeys
+    , TagKeys
+    , tagKeys
+    , tkItems
+
+    -- ** Tags
+    , Tags
+    , tags
+    , tItems
+
     -- ** TrustedSigners
     , TrustedSigners
     , trustedSigners
@@ -667,8 +738,10 @@
 
 import           Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity
 import           Network.AWS.CloudFront.CreateDistribution
+import           Network.AWS.CloudFront.CreateDistributionWithTags
 import           Network.AWS.CloudFront.CreateInvalidation
 import           Network.AWS.CloudFront.CreateStreamingDistribution
+import           Network.AWS.CloudFront.CreateStreamingDistributionWithTags
 import           Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity
 import           Network.AWS.CloudFront.DeleteDistribution
 import           Network.AWS.CloudFront.DeleteStreamingDistribution
@@ -684,7 +757,10 @@
 import           Network.AWS.CloudFront.ListDistributionsByWebACLId
 import           Network.AWS.CloudFront.ListInvalidations
 import           Network.AWS.CloudFront.ListStreamingDistributions
+import           Network.AWS.CloudFront.ListTagsForResource
+import           Network.AWS.CloudFront.TagResource
 import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.UntagResource
 import           Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity
 import           Network.AWS.CloudFront.UpdateDistribution
 import           Network.AWS.CloudFront.UpdateStreamingDistribution
diff --git a/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
@@ -90,7 +90,7 @@
          CreateCloudFrontOriginAccessIdentity where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}CloudFrontOriginAccessIdentityConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}CloudFrontOriginAccessIdentityConfig"
               .
               _ccfoaiCloudFrontOriginAccessIdentityConfig
 
@@ -102,7 +102,7 @@
          where
         toPath
           = const
-              "/2016-01-28/origin-access-identity/cloudfront"
+              "/2016-09-07/origin-access-identity/cloudfront"
 
 instance ToQuery CreateCloudFrontOriginAccessIdentity
          where
diff --git a/gen/Network/AWS/CloudFront/CreateDistribution.hs b/gen/Network/AWS/CloudFront/CreateDistribution.hs
--- a/gen/Network/AWS/CloudFront/CreateDistribution.hs
+++ b/gen/Network/AWS/CloudFront/CreateDistribution.hs
@@ -87,7 +87,7 @@
 instance ToElement CreateDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}DistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}DistributionConfig"
               .
               _cdDistributionConfig
 
@@ -95,7 +95,7 @@
         toHeaders = const mempty
 
 instance ToPath CreateDistribution where
-        toPath = const "/2016-01-28/distribution"
+        toPath = const "/2016-09-07/distribution"
 
 instance ToQuery CreateDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/CreateDistributionWithTags.hs b/gen/Network/AWS/CloudFront/CreateDistributionWithTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFront/CreateDistributionWithTags.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudFront.CreateDistributionWithTags
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new distribution with tags.
+module Network.AWS.CloudFront.CreateDistributionWithTags
+    (
+    -- * Creating a Request
+      createDistributionWithTags
+    , CreateDistributionWithTags
+    -- * Request Lenses
+    , cdwtDistributionConfigWithTags
+
+    -- * Destructuring the Response
+    , createDistributionWithTagsResponse
+    , CreateDistributionWithTagsResponse
+    -- * Response Lenses
+    , cdwtrsETag
+    , cdwtrsDistribution
+    , cdwtrsLocation
+    , cdwtrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The request to create a new distribution with tags
+--
+-- /See:/ 'createDistributionWithTags' smart constructor.
+newtype CreateDistributionWithTags = CreateDistributionWithTags'
+    { _cdwtDistributionConfigWithTags :: DistributionConfigWithTags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDistributionWithTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdwtDistributionConfigWithTags'
+createDistributionWithTags
+    :: DistributionConfigWithTags -- ^ 'cdwtDistributionConfigWithTags'
+    -> CreateDistributionWithTags
+createDistributionWithTags pDistributionConfigWithTags_ =
+    CreateDistributionWithTags'
+    { _cdwtDistributionConfigWithTags = pDistributionConfigWithTags_
+    }
+
+-- | The distribution\'s configuration information.
+cdwtDistributionConfigWithTags :: Lens' CreateDistributionWithTags DistributionConfigWithTags
+cdwtDistributionConfigWithTags = lens _cdwtDistributionConfigWithTags (\ s a -> s{_cdwtDistributionConfigWithTags = a});
+
+instance AWSRequest CreateDistributionWithTags where
+        type Rs CreateDistributionWithTags =
+             CreateDistributionWithTagsResponse
+        request = postXML cloudFront
+        response
+          = receiveXML
+              (\ s h x ->
+                 CreateDistributionWithTagsResponse' <$>
+                   (h .#? "ETag") <*> (parseXML x) <*>
+                     (h .#? "Location")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable CreateDistributionWithTags
+
+instance NFData CreateDistributionWithTags
+
+instance ToElement CreateDistributionWithTags where
+        toElement
+          = mkElement
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}DistributionConfigWithTags"
+              .
+              _cdwtDistributionConfigWithTags
+
+instance ToHeaders CreateDistributionWithTags where
+        toHeaders = const mempty
+
+instance ToPath CreateDistributionWithTags where
+        toPath = const "/2016-09-07/distribution"
+
+instance ToQuery CreateDistributionWithTags where
+        toQuery = const (mconcat ["WithTags"])
+
+-- | The returned result of the corresponding request.
+--
+-- /See:/ 'createDistributionWithTagsResponse' smart constructor.
+data CreateDistributionWithTagsResponse = CreateDistributionWithTagsResponse'
+    { _cdwtrsETag           :: !(Maybe Text)
+    , _cdwtrsDistribution   :: !(Maybe Distribution)
+    , _cdwtrsLocation       :: !(Maybe Text)
+    , _cdwtrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDistributionWithTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdwtrsETag'
+--
+-- * 'cdwtrsDistribution'
+--
+-- * 'cdwtrsLocation'
+--
+-- * 'cdwtrsResponseStatus'
+createDistributionWithTagsResponse
+    :: Int -- ^ 'cdwtrsResponseStatus'
+    -> CreateDistributionWithTagsResponse
+createDistributionWithTagsResponse pResponseStatus_ =
+    CreateDistributionWithTagsResponse'
+    { _cdwtrsETag = Nothing
+    , _cdwtrsDistribution = Nothing
+    , _cdwtrsLocation = Nothing
+    , _cdwtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current version of the distribution created.
+cdwtrsETag :: Lens' CreateDistributionWithTagsResponse (Maybe Text)
+cdwtrsETag = lens _cdwtrsETag (\ s a -> s{_cdwtrsETag = a});
+
+-- | The distribution\'s information.
+cdwtrsDistribution :: Lens' CreateDistributionWithTagsResponse (Maybe Distribution)
+cdwtrsDistribution = lens _cdwtrsDistribution (\ s a -> s{_cdwtrsDistribution = a});
+
+-- | The fully qualified URI of the new distribution resource just created. For example: https:\/\/cloudfront.amazonaws.com\/2010-11-01\/distribution\/EDFDVBD632BHDS5.
+cdwtrsLocation :: Lens' CreateDistributionWithTagsResponse (Maybe Text)
+cdwtrsLocation = lens _cdwtrsLocation (\ s a -> s{_cdwtrsLocation = a});
+
+-- | The response status code.
+cdwtrsResponseStatus :: Lens' CreateDistributionWithTagsResponse Int
+cdwtrsResponseStatus = lens _cdwtrsResponseStatus (\ s a -> s{_cdwtrsResponseStatus = a});
+
+instance NFData CreateDistributionWithTagsResponse
diff --git a/gen/Network/AWS/CloudFront/CreateInvalidation.hs b/gen/Network/AWS/CloudFront/CreateInvalidation.hs
--- a/gen/Network/AWS/CloudFront/CreateInvalidation.hs
+++ b/gen/Network/AWS/CloudFront/CreateInvalidation.hs
@@ -95,7 +95,7 @@
 instance ToElement CreateInvalidation where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}InvalidationBatch"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}InvalidationBatch"
               .
               _ciInvalidationBatch
 
@@ -105,7 +105,7 @@
 instance ToPath CreateInvalidation where
         toPath CreateInvalidation'{..}
           = mconcat
-              ["/2016-01-28/distribution/", toBS _ciDistributionId,
+              ["/2016-09-07/distribution/", toBS _ciDistributionId,
                "/invalidation"]
 
 instance ToQuery CreateInvalidation where
diff --git a/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs b/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
@@ -87,7 +87,7 @@
 instance ToElement CreateStreamingDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}StreamingDistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}StreamingDistributionConfig"
               .
               _csdStreamingDistributionConfig
 
@@ -95,7 +95,7 @@
         toHeaders = const mempty
 
 instance ToPath CreateStreamingDistribution where
-        toPath = const "/2016-01-28/streaming-distribution"
+        toPath = const "/2016-09-07/streaming-distribution"
 
 instance ToQuery CreateStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/CreateStreamingDistributionWithTags.hs b/gen/Network/AWS/CloudFront/CreateStreamingDistributionWithTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFront/CreateStreamingDistributionWithTags.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudFront.CreateStreamingDistributionWithTags
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new streaming distribution with tags.
+module Network.AWS.CloudFront.CreateStreamingDistributionWithTags
+    (
+    -- * Creating a Request
+      createStreamingDistributionWithTags
+    , CreateStreamingDistributionWithTags
+    -- * Request Lenses
+    , csdwtStreamingDistributionConfigWithTags
+
+    -- * Destructuring the Response
+    , createStreamingDistributionWithTagsResponse
+    , CreateStreamingDistributionWithTagsResponse
+    -- * Response Lenses
+    , csdwtrsETag
+    , csdwtrsLocation
+    , csdwtrsStreamingDistribution
+    , csdwtrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The request to create a new streaming distribution with tags.
+--
+-- /See:/ 'createStreamingDistributionWithTags' smart constructor.
+newtype CreateStreamingDistributionWithTags = CreateStreamingDistributionWithTags'
+    { _csdwtStreamingDistributionConfigWithTags :: StreamingDistributionConfigWithTags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateStreamingDistributionWithTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csdwtStreamingDistributionConfigWithTags'
+createStreamingDistributionWithTags
+    :: StreamingDistributionConfigWithTags -- ^ 'csdwtStreamingDistributionConfigWithTags'
+    -> CreateStreamingDistributionWithTags
+createStreamingDistributionWithTags pStreamingDistributionConfigWithTags_ =
+    CreateStreamingDistributionWithTags'
+    { _csdwtStreamingDistributionConfigWithTags = pStreamingDistributionConfigWithTags_
+    }
+
+-- | The streaming distribution\'s configuration information.
+csdwtStreamingDistributionConfigWithTags :: Lens' CreateStreamingDistributionWithTags StreamingDistributionConfigWithTags
+csdwtStreamingDistributionConfigWithTags = lens _csdwtStreamingDistributionConfigWithTags (\ s a -> s{_csdwtStreamingDistributionConfigWithTags = a});
+
+instance AWSRequest
+         CreateStreamingDistributionWithTags where
+        type Rs CreateStreamingDistributionWithTags =
+             CreateStreamingDistributionWithTagsResponse
+        request = postXML cloudFront
+        response
+          = receiveXML
+              (\ s h x ->
+                 CreateStreamingDistributionWithTagsResponse' <$>
+                   (h .#? "ETag") <*> (h .#? "Location") <*>
+                     (parseXML x)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable CreateStreamingDistributionWithTags
+
+instance NFData CreateStreamingDistributionWithTags
+
+instance ToElement
+         CreateStreamingDistributionWithTags where
+        toElement
+          = mkElement
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}StreamingDistributionConfigWithTags"
+              .
+              _csdwtStreamingDistributionConfigWithTags
+
+instance ToHeaders
+         CreateStreamingDistributionWithTags where
+        toHeaders = const mempty
+
+instance ToPath CreateStreamingDistributionWithTags
+         where
+        toPath = const "/2016-09-07/streaming-distribution"
+
+instance ToQuery CreateStreamingDistributionWithTags
+         where
+        toQuery = const (mconcat ["WithTags"])
+
+-- | The returned result of the corresponding request.
+--
+-- /See:/ 'createStreamingDistributionWithTagsResponse' smart constructor.
+data CreateStreamingDistributionWithTagsResponse = CreateStreamingDistributionWithTagsResponse'
+    { _csdwtrsETag                  :: !(Maybe Text)
+    , _csdwtrsLocation              :: !(Maybe Text)
+    , _csdwtrsStreamingDistribution :: !(Maybe StreamingDistribution)
+    , _csdwtrsResponseStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateStreamingDistributionWithTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csdwtrsETag'
+--
+-- * 'csdwtrsLocation'
+--
+-- * 'csdwtrsStreamingDistribution'
+--
+-- * 'csdwtrsResponseStatus'
+createStreamingDistributionWithTagsResponse
+    :: Int -- ^ 'csdwtrsResponseStatus'
+    -> CreateStreamingDistributionWithTagsResponse
+createStreamingDistributionWithTagsResponse pResponseStatus_ =
+    CreateStreamingDistributionWithTagsResponse'
+    { _csdwtrsETag = Nothing
+    , _csdwtrsLocation = Nothing
+    , _csdwtrsStreamingDistribution = Nothing
+    , _csdwtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current version of the streaming distribution created.
+csdwtrsETag :: Lens' CreateStreamingDistributionWithTagsResponse (Maybe Text)
+csdwtrsETag = lens _csdwtrsETag (\ s a -> s{_csdwtrsETag = a});
+
+-- | The fully qualified URI of the new streaming distribution resource just created. For example: https:\/\/cloudfront.amazonaws.com\/2010-11-01\/streaming-distribution\/EGTXBD79H29TRA8.
+csdwtrsLocation :: Lens' CreateStreamingDistributionWithTagsResponse (Maybe Text)
+csdwtrsLocation = lens _csdwtrsLocation (\ s a -> s{_csdwtrsLocation = a});
+
+-- | The streaming distribution\'s information.
+csdwtrsStreamingDistribution :: Lens' CreateStreamingDistributionWithTagsResponse (Maybe StreamingDistribution)
+csdwtrsStreamingDistribution = lens _csdwtrsStreamingDistribution (\ s a -> s{_csdwtrsStreamingDistribution = a});
+
+-- | The response status code.
+csdwtrsResponseStatus :: Lens' CreateStreamingDistributionWithTagsResponse Int
+csdwtrsResponseStatus = lens _csdwtrsResponseStatus (\ s a -> s{_csdwtrsResponseStatus = a});
+
+instance NFData
+         CreateStreamingDistributionWithTagsResponse
diff --git a/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
@@ -95,7 +95,7 @@
          where
         toPath DeleteCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2016-01-28/origin-access-identity/cloudfront/",
+              ["/2016-09-07/origin-access-identity/cloudfront/",
                toBS _dcfoaiId]
 
 instance ToQuery DeleteCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/DeleteDistribution.hs b/gen/Network/AWS/CloudFront/DeleteDistribution.hs
--- a/gen/Network/AWS/CloudFront/DeleteDistribution.hs
+++ b/gen/Network/AWS/CloudFront/DeleteDistribution.hs
@@ -88,7 +88,7 @@
 
 instance ToPath DeleteDistribution where
         toPath DeleteDistribution'{..}
-          = mconcat ["/2016-01-28/distribution/", toBS _ddId]
+          = mconcat ["/2016-09-07/distribution/", toBS _ddId]
 
 instance ToQuery DeleteDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs b/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
@@ -90,7 +90,7 @@
 instance ToPath DeleteStreamingDistribution where
         toPath DeleteStreamingDistribution'{..}
           = mconcat
-              ["/2016-01-28/streaming-distribution/", toBS _dsdId]
+              ["/2016-09-07/streaming-distribution/", toBS _dsdId]
 
 instance ToQuery DeleteStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
@@ -91,7 +91,7 @@
          where
         toPath GetCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2016-01-28/origin-access-identity/cloudfront/",
+              ["/2016-09-07/origin-access-identity/cloudfront/",
                toBS _gcfoaiId]
 
 instance ToQuery GetCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
--- a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
@@ -93,7 +93,7 @@
          GetCloudFrontOriginAccessIdentityConfig where
         toPath GetCloudFrontOriginAccessIdentityConfig'{..}
           = mconcat
-              ["/2016-01-28/origin-access-identity/cloudfront/",
+              ["/2016-09-07/origin-access-identity/cloudfront/",
                toBS _gcfoaicId, "/config"]
 
 instance ToQuery
diff --git a/gen/Network/AWS/CloudFront/GetDistribution.hs b/gen/Network/AWS/CloudFront/GetDistribution.hs
--- a/gen/Network/AWS/CloudFront/GetDistribution.hs
+++ b/gen/Network/AWS/CloudFront/GetDistribution.hs
@@ -86,7 +86,7 @@
 
 instance ToPath GetDistribution where
         toPath GetDistribution'{..}
-          = mconcat ["/2016-01-28/distribution/", toBS _gdId]
+          = mconcat ["/2016-09-07/distribution/", toBS _gdId]
 
 instance ToQuery GetDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetDistributionConfig.hs b/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
--- a/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
@@ -88,7 +88,7 @@
 instance ToPath GetDistributionConfig where
         toPath GetDistributionConfig'{..}
           = mconcat
-              ["/2016-01-28/distribution/", toBS _gdcId, "/config"]
+              ["/2016-09-07/distribution/", toBS _gdcId, "/config"]
 
 instance ToQuery GetDistributionConfig where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetInvalidation.hs b/gen/Network/AWS/CloudFront/GetInvalidation.hs
--- a/gen/Network/AWS/CloudFront/GetInvalidation.hs
+++ b/gen/Network/AWS/CloudFront/GetInvalidation.hs
@@ -95,7 +95,7 @@
 instance ToPath GetInvalidation where
         toPath GetInvalidation'{..}
           = mconcat
-              ["/2016-01-28/distribution/", toBS _giDistributionId,
+              ["/2016-09-07/distribution/", toBS _giDistributionId,
                "/invalidation/", toBS _giId]
 
 instance ToQuery GetInvalidation where
diff --git a/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs b/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
@@ -88,7 +88,7 @@
 instance ToPath GetStreamingDistribution where
         toPath GetStreamingDistribution'{..}
           = mconcat
-              ["/2016-01-28/streaming-distribution/", toBS _gsdId]
+              ["/2016-09-07/streaming-distribution/", toBS _gsdId]
 
 instance ToQuery GetStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs b/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
--- a/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
@@ -90,7 +90,7 @@
 instance ToPath GetStreamingDistributionConfig where
         toPath GetStreamingDistributionConfig'{..}
           = mconcat
-              ["/2016-01-28/streaming-distribution/", toBS _gsdcId,
+              ["/2016-09-07/streaming-distribution/", toBS _gsdcId,
                "/config"]
 
 instance ToQuery GetStreamingDistributionConfig where
diff --git a/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs b/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
--- a/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
+++ b/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
@@ -121,7 +121,7 @@
          where
         toPath
           = const
-              "/2016-01-28/origin-access-identity/cloudfront"
+              "/2016-09-07/origin-access-identity/cloudfront"
 
 instance ToQuery ListCloudFrontOriginAccessIdentities
          where
diff --git a/gen/Network/AWS/CloudFront/ListDistributions.hs b/gen/Network/AWS/CloudFront/ListDistributions.hs
--- a/gen/Network/AWS/CloudFront/ListDistributions.hs
+++ b/gen/Network/AWS/CloudFront/ListDistributions.hs
@@ -106,7 +106,7 @@
         toHeaders = const mempty
 
 instance ToPath ListDistributions where
-        toPath = const "/2016-01-28/distribution"
+        toPath = const "/2016-09-07/distribution"
 
 instance ToQuery ListDistributions where
         toQuery ListDistributions'{..}
diff --git a/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs b/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
--- a/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
+++ b/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
@@ -104,7 +104,7 @@
 instance ToPath ListDistributionsByWebACLId where
         toPath ListDistributionsByWebACLId'{..}
           = mconcat
-              ["/2016-01-28/distributionsByWebACLId/",
+              ["/2016-09-07/distributionsByWebACLId/",
                toBS _ldbwaiWebACLId]
 
 instance ToQuery ListDistributionsByWebACLId where
diff --git a/gen/Network/AWS/CloudFront/ListInvalidations.hs b/gen/Network/AWS/CloudFront/ListInvalidations.hs
--- a/gen/Network/AWS/CloudFront/ListInvalidations.hs
+++ b/gen/Network/AWS/CloudFront/ListInvalidations.hs
@@ -118,7 +118,7 @@
 instance ToPath ListInvalidations where
         toPath ListInvalidations'{..}
           = mconcat
-              ["/2016-01-28/distribution/", toBS _liDistributionId,
+              ["/2016-09-07/distribution/", toBS _liDistributionId,
                "/invalidation"]
 
 instance ToQuery ListInvalidations where
diff --git a/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs b/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
--- a/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
+++ b/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
@@ -113,7 +113,7 @@
         toHeaders = const mempty
 
 instance ToPath ListStreamingDistributions where
-        toPath = const "/2016-01-28/streaming-distribution"
+        toPath = const "/2016-09-07/streaming-distribution"
 
 instance ToQuery ListStreamingDistributions where
         toQuery ListStreamingDistributions'{..}
diff --git a/gen/Network/AWS/CloudFront/ListTagsForResource.hs b/gen/Network/AWS/CloudFront/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFront/ListTagsForResource.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudFront.ListTagsForResource
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List tags for a CloudFront resource.
+module Network.AWS.CloudFront.ListTagsForResource
+    (
+    -- * Creating a Request
+      listTagsForResource
+    , ListTagsForResource
+    -- * Request Lenses
+    , ltfrResource
+
+    -- * Destructuring the Response
+    , listTagsForResourceResponse
+    , ListTagsForResourceResponse
+    -- * Response Lenses
+    , ltfrrsResponseStatus
+    , ltfrrsTags
+    ) where
+
+import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The request to list tags for a CloudFront resource.
+--
+-- /See:/ 'listTagsForResource' smart constructor.
+newtype ListTagsForResource = ListTagsForResource'
+    { _ltfrResource :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrResource'
+listTagsForResource
+    :: Text -- ^ 'ltfrResource'
+    -> ListTagsForResource
+listTagsForResource pResource_ =
+    ListTagsForResource'
+    { _ltfrResource = pResource_
+    }
+
+-- | An ARN of a CloudFront resource.
+ltfrResource :: Lens' ListTagsForResource Text
+ltfrResource = lens _ltfrResource (\ s a -> s{_ltfrResource = a});
+
+instance AWSRequest ListTagsForResource where
+        type Rs ListTagsForResource =
+             ListTagsForResourceResponse
+        request = get cloudFront
+        response
+          = receiveXML
+              (\ s h x ->
+                 ListTagsForResourceResponse' <$>
+                   (pure (fromEnum s)) <*> (parseXML x))
+
+instance Hashable ListTagsForResource
+
+instance NFData ListTagsForResource
+
+instance ToHeaders ListTagsForResource where
+        toHeaders = const mempty
+
+instance ToPath ListTagsForResource where
+        toPath = const "/2016-09-07/tagging"
+
+instance ToQuery ListTagsForResource where
+        toQuery ListTagsForResource'{..}
+          = mconcat ["Resource" =: _ltfrResource]
+
+-- | The returned result of the corresponding request.
+--
+-- /See:/ 'listTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+    { _ltfrrsResponseStatus :: !Int
+    , _ltfrrsTags           :: !Tags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrrsResponseStatus'
+--
+-- * 'ltfrrsTags'
+listTagsForResourceResponse
+    :: Int -- ^ 'ltfrrsResponseStatus'
+    -> Tags -- ^ 'ltfrrsTags'
+    -> ListTagsForResourceResponse
+listTagsForResourceResponse pResponseStatus_ pTags_ =
+    ListTagsForResourceResponse'
+    { _ltfrrsResponseStatus = pResponseStatus_
+    , _ltfrrsTags = pTags_
+    }
+
+-- | The response status code.
+ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
+ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a});
+
+-- | A complex type that contains zero or more Tag elements.
+ltfrrsTags :: Lens' ListTagsForResourceResponse Tags
+ltfrrsTags = lens _ltfrrsTags (\ s a -> s{_ltfrrsTags = a});
+
+instance NFData ListTagsForResourceResponse
diff --git a/gen/Network/AWS/CloudFront/TagResource.hs b/gen/Network/AWS/CloudFront/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFront/TagResource.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudFront.TagResource
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add tags to a CloudFront resource.
+module Network.AWS.CloudFront.TagResource
+    (
+    -- * Creating a Request
+      tagResource
+    , TagResource
+    -- * Request Lenses
+    , trResource
+    , trTags
+
+    -- * Destructuring the Response
+    , tagResourceResponse
+    , TagResourceResponse
+    ) where
+
+import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The request to add tags to a CloudFront resource.
+--
+-- /See:/ 'tagResource' smart constructor.
+data TagResource = TagResource'
+    { _trResource :: !Text
+    , _trTags     :: !Tags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trResource'
+--
+-- * 'trTags'
+tagResource
+    :: Text -- ^ 'trResource'
+    -> Tags -- ^ 'trTags'
+    -> TagResource
+tagResource pResource_ pTags_ =
+    TagResource'
+    { _trResource = pResource_
+    , _trTags = pTags_
+    }
+
+-- | An ARN of a CloudFront resource.
+trResource :: Lens' TagResource Text
+trResource = lens _trResource (\ s a -> s{_trResource = a});
+
+-- | A complex type that contains zero or more Tag elements.
+trTags :: Lens' TagResource Tags
+trTags = lens _trTags (\ s a -> s{_trTags = a});
+
+instance AWSRequest TagResource where
+        type Rs TagResource = TagResourceResponse
+        request = postXML cloudFront
+        response = receiveNull TagResourceResponse'
+
+instance Hashable TagResource
+
+instance NFData TagResource
+
+instance ToElement TagResource where
+        toElement
+          = mkElement
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}Tags"
+              .
+              _trTags
+
+instance ToHeaders TagResource where
+        toHeaders = const mempty
+
+instance ToPath TagResource where
+        toPath = const "/2016-09-07/tagging"
+
+instance ToQuery TagResource where
+        toQuery TagResource'{..}
+          = mconcat
+              ["Resource" =: _trResource, "Operation=Tag"]
+
+-- | /See:/ 'tagResourceResponse' smart constructor.
+data TagResourceResponse =
+    TagResourceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagResourceResponse' with the minimum fields required to make a request.
+--
+tagResourceResponse
+    :: TagResourceResponse
+tagResourceResponse = TagResourceResponse'
+
+instance NFData TagResourceResponse
diff --git a/gen/Network/AWS/CloudFront/Types.hs b/gen/Network/AWS/CloudFront/Types.hs
--- a/gen/Network/AWS/CloudFront/Types.hs
+++ b/gen/Network/AWS/CloudFront/Types.hs
@@ -17,6 +17,7 @@
 
     -- * Errors
     , _TooManyOriginCustomHeaders
+    , _InvalidTagging
     , _InvalidErrorCode
     , _TooManyCacheBehaviors
     , _TooManyCloudFrontOriginAccessIdentities
@@ -27,6 +28,7 @@
     , _InvalidArgument
     , _TooManyInvalidationsInProgress
     , _InvalidWebACLId
+    , _TooManyQueryStringParameters
     , _TooManyDistributionCNAMEs
     , _NoSuchCloudFrontOriginAccessIdentity
     , _CloudFrontOriginAccessIdentityInUse
@@ -41,11 +43,13 @@
     , _InvalidTTLOrder
     , _StreamingDistributionNotDisabled
     , _TooManyHeadersInForwardedValues
+    , _NoSuchResource
     , _TooManyStreamingDistributionCNAMEs
     , _InvalidRequiredProtocol
     , _TooManyDistributions
     , _TooManyCertificates
     , _DistributionAlreadyExists
+    , _InvalidQueryStringParameters
     , _MissingBody
     , _IllegalUpdate
     , _InvalidIfMatchVersion
@@ -73,6 +77,9 @@
     -- * GeoRestrictionType
     , GeoRestrictionType (..)
 
+    -- * HTTPVersion
+    , HTTPVersion (..)
+
     -- * ItemSelection
     , ItemSelection (..)
 
@@ -232,6 +239,7 @@
     , Distribution
     , distribution
     , dId
+    , dARN
     , dStatus
     , dLastModifiedTime
     , dInProgressInvalidationBatches
@@ -242,6 +250,7 @@
     -- * DistributionConfig
     , DistributionConfig
     , distributionConfig
+    , dcHTTPVersion
     , dcAliases
     , dcDefaultRootObject
     , dcPriceClass
@@ -257,6 +266,12 @@
     , dcComment
     , dcEnabled
 
+    -- * DistributionConfigWithTags
+    , DistributionConfigWithTags
+    , distributionConfigWithTags
+    , dcwtDistributionConfig
+    , dcwtTags
+
     -- * DistributionList
     , DistributionList
     , distributionList
@@ -271,6 +286,7 @@
     , DistributionSummary
     , distributionSummary
     , dsId
+    , dsARN
     , dsStatus
     , dsLastModifiedTime
     , dsDomainName
@@ -285,10 +301,12 @@
     , dsViewerCertificate
     , dsRestrictions
     , dsWebACLId
+    , dsHTTPVersion
 
     -- * ForwardedValues
     , ForwardedValues
     , forwardedValues
+    , fvQueryStringCacheKeys
     , fvHeaders
     , fvQueryString
     , fvCookies
@@ -385,6 +403,12 @@
     , pItems
     , pQuantity
 
+    -- * QueryStringCacheKeys
+    , QueryStringCacheKeys
+    , queryStringCacheKeys
+    , qsckItems
+    , qsckQuantity
+
     -- * Restrictions
     , Restrictions
     , restrictions
@@ -412,6 +436,7 @@
     , streamingDistribution
     , sdLastModifiedTime
     , sdId
+    , sdARN
     , sdStatus
     , sdDomainName
     , sdActiveTrustedSigners
@@ -429,6 +454,12 @@
     , sdcTrustedSigners
     , sdcEnabled
 
+    -- * StreamingDistributionConfigWithTags
+    , StreamingDistributionConfigWithTags
+    , streamingDistributionConfigWithTags
+    , sdcwtStreamingDistributionConfig
+    , sdcwtTags
+
     -- * StreamingDistributionList
     , StreamingDistributionList
     , streamingDistributionList
@@ -443,6 +474,7 @@
     , StreamingDistributionSummary
     , streamingDistributionSummary
     , sdsId
+    , sdsARN
     , sdsStatus
     , sdsLastModifiedTime
     , sdsDomainName
@@ -460,6 +492,22 @@
     , slcBucket
     , slcPrefix
 
+    -- * Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- * TagKeys
+    , TagKeys
+    , tagKeys
+    , tkItems
+
+    -- * Tags
+    , Tags
+    , tags
+    , tItems
+
     -- * TrustedSigners
     , TrustedSigners
     , trustedSigners
@@ -485,14 +533,14 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | API version '2016-01-28' of the Amazon CloudFront SDK configuration.
+-- | API version '2016-09-07' of the Amazon CloudFront SDK configuration.
 cloudFront :: Service
 cloudFront =
     Service
     { _svcAbbrev = "CloudFront"
     , _svcSigner = v4
     , _svcPrefix = "cloudfront"
-    , _svcVersion = "2016-01-28"
+    , _svcVersion = "2016-09-07"
     , _svcEndpoint = defaultEndpoint cloudFront
     , _svcTimeout = Just 70
     , _svcCheck = statusSuccess
@@ -524,6 +572,10 @@
 _TooManyOriginCustomHeaders =
     _ServiceError . hasStatus 400 . hasCode "TooManyOriginCustomHeaders"
 
+-- | The specified tagging for a CloudFront resource is invalid. For more information, see the error text.
+_InvalidTagging :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidTagging = _ServiceError . hasStatus 400 . hasCode "InvalidTagging"
+
 -- | Prism for InvalidErrorCode' errors.
 _InvalidErrorCode :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidErrorCode = _ServiceError . hasStatus 400 . hasCode "InvalidErrorCode"
@@ -572,6 +624,11 @@
 _InvalidWebACLId :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidWebACLId = _ServiceError . hasStatus 400 . hasCode "InvalidWebACLId"
 
+-- | Prism for TooManyQueryStringParameters' errors.
+_TooManyQueryStringParameters :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyQueryStringParameters =
+    _ServiceError . hasStatus 400 . hasCode "TooManyQueryStringParameters"
+
 -- | Your request contains more CNAMEs than are allowed per distribution.
 _TooManyDistributionCNAMEs :: AsError a => Getting (First ServiceError) a ServiceError
 _TooManyDistributionCNAMEs =
@@ -640,6 +697,10 @@
 _TooManyHeadersInForwardedValues =
     _ServiceError . hasStatus 400 . hasCode "TooManyHeadersInForwardedValues"
 
+-- | The specified CloudFront resource does not exist.
+_NoSuchResource :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchResource = _ServiceError . hasStatus 404 . hasCode "NoSuchResource"
+
 -- | Prism for TooManyStreamingDistributionCNAMEs' errors.
 _TooManyStreamingDistributionCNAMEs :: AsError a => Getting (First ServiceError) a ServiceError
 _TooManyStreamingDistributionCNAMEs =
@@ -665,6 +726,11 @@
 _DistributionAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
 _DistributionAlreadyExists =
     _ServiceError . hasStatus 409 . hasCode "DistributionAlreadyExists"
+
+-- | Prism for InvalidQueryStringParameters' errors.
+_InvalidQueryStringParameters :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidQueryStringParameters =
+    _ServiceError . hasStatus 400 . hasCode "InvalidQueryStringParameters"
 
 -- | This operation requires a body. Ensure that the body is present and the Content-Type header is set.
 _MissingBody :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/CloudFront/Types/Product.hs b/gen/Network/AWS/CloudFront/Types/Product.hs
--- a/gen/Network/AWS/CloudFront/Types/Product.hs
+++ b/gen/Network/AWS/CloudFront/Types/Product.hs
@@ -1129,6 +1129,7 @@
 -- /See:/ 'distribution' smart constructor.
 data Distribution = Distribution'
     { _dId                            :: !Text
+    , _dARN                           :: !Text
     , _dStatus                        :: !Text
     , _dLastModifiedTime              :: !ISO8601
     , _dInProgressInvalidationBatches :: !Int
@@ -1143,6 +1144,8 @@
 --
 -- * 'dId'
 --
+-- * 'dARN'
+--
 -- * 'dStatus'
 --
 -- * 'dLastModifiedTime'
@@ -1156,6 +1159,7 @@
 -- * 'dDistributionConfig'
 distribution
     :: Text -- ^ 'dId'
+    -> Text -- ^ 'dARN'
     -> Text -- ^ 'dStatus'
     -> UTCTime -- ^ 'dLastModifiedTime'
     -> Int -- ^ 'dInProgressInvalidationBatches'
@@ -1163,9 +1167,10 @@
     -> ActiveTrustedSigners -- ^ 'dActiveTrustedSigners'
     -> DistributionConfig -- ^ 'dDistributionConfig'
     -> Distribution
-distribution pId_ pStatus_ pLastModifiedTime_ pInProgressInvalidationBatches_ pDomainName_ pActiveTrustedSigners_ pDistributionConfig_ =
+distribution pId_ pARN_ pStatus_ pLastModifiedTime_ pInProgressInvalidationBatches_ pDomainName_ pActiveTrustedSigners_ pDistributionConfig_ =
     Distribution'
     { _dId = pId_
+    , _dARN = pARN_
     , _dStatus = pStatus_
     , _dLastModifiedTime = _Time # pLastModifiedTime_
     , _dInProgressInvalidationBatches = pInProgressInvalidationBatches_
@@ -1178,6 +1183,10 @@
 dId :: Lens' Distribution Text
 dId = lens _dId (\ s a -> s{_dId = a});
 
+-- | The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution\/EDFDVBD632BHDS5, where 123456789012 is your AWS account Id.
+dARN :: Lens' Distribution Text
+dARN = lens _dARN (\ s a -> s{_dARN = a});
+
 -- | This response element indicates the current status of the distribution. When the status is Deployed, the distribution\'s information is fully propagated throughout the Amazon CloudFront system.
 dStatus :: Lens' Distribution Text
 dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
@@ -1205,7 +1214,7 @@
 instance FromXML Distribution where
         parseXML x
           = Distribution' <$>
-              (x .@ "Id") <*> (x .@ "Status") <*>
+              (x .@ "Id") <*> (x .@ "ARN") <*> (x .@ "Status") <*>
                 (x .@ "LastModifiedTime")
                 <*> (x .@ "InProgressInvalidationBatches")
                 <*> (x .@ "DomainName")
@@ -1220,7 +1229,8 @@
 --
 -- /See:/ 'distributionConfig' smart constructor.
 data DistributionConfig = DistributionConfig'
-    { _dcAliases              :: !(Maybe Aliases)
+    { _dcHTTPVersion          :: !(Maybe HTTPVersion)
+    , _dcAliases              :: !(Maybe Aliases)
     , _dcDefaultRootObject    :: !(Maybe Text)
     , _dcPriceClass           :: !(Maybe PriceClass)
     , _dcCustomErrorResponses :: !(Maybe CustomErrorResponses)
@@ -1240,6 +1250,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dcHTTPVersion'
+--
 -- * 'dcAliases'
 --
 -- * 'dcDefaultRootObject'
@@ -1276,7 +1288,8 @@
     -> DistributionConfig
 distributionConfig pCallerReference_ pOrigins_ pDefaultCacheBehavior_ pComment_ pEnabled_ =
     DistributionConfig'
-    { _dcAliases = Nothing
+    { _dcHTTPVersion = Nothing
+    , _dcAliases = Nothing
     , _dcDefaultRootObject = Nothing
     , _dcPriceClass = Nothing
     , _dcCustomErrorResponses = Nothing
@@ -1292,6 +1305,10 @@
     , _dcEnabled = pEnabled_
     }
 
+-- | (Optional) Specify the maximum HTTP version that you want viewers to use to communicate with CloudFront. The default value for new web distributions is http2. Viewers that don\'t support HTTP\/2 will automatically use an earlier version.
+dcHTTPVersion :: Lens' DistributionConfig (Maybe HTTPVersion)
+dcHTTPVersion = lens _dcHTTPVersion (\ s a -> s{_dcHTTPVersion = a});
+
 -- | A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution.
 dcAliases :: Lens' DistributionConfig (Maybe Aliases)
 dcAliases = lens _dcAliases (\ s a -> s{_dcAliases = a});
@@ -1351,8 +1368,9 @@
 instance FromXML DistributionConfig where
         parseXML x
           = DistributionConfig' <$>
-              (x .@? "Aliases") <*> (x .@? "DefaultRootObject") <*>
-                (x .@? "PriceClass")
+              (x .@? "HttpVersion") <*> (x .@? "Aliases") <*>
+                (x .@? "DefaultRootObject")
+                <*> (x .@? "PriceClass")
                 <*> (x .@? "CustomErrorResponses")
                 <*> (x .@? "WebACLId")
                 <*> (x .@? "ViewerCertificate")
@@ -1372,7 +1390,8 @@
 instance ToXML DistributionConfig where
         toXML DistributionConfig'{..}
           = mconcat
-              ["Aliases" @= _dcAliases,
+              ["HttpVersion" @= _dcHTTPVersion,
+               "Aliases" @= _dcAliases,
                "DefaultRootObject" @= _dcDefaultRootObject,
                "PriceClass" @= _dcPriceClass,
                "CustomErrorResponses" @= _dcCustomErrorResponses,
@@ -1386,6 +1405,49 @@
                "DefaultCacheBehavior" @= _dcDefaultCacheBehavior,
                "Comment" @= _dcComment, "Enabled" @= _dcEnabled]
 
+-- | A distribution Configuration and a list of tags to be associated with the distribution.
+--
+-- /See:/ 'distributionConfigWithTags' smart constructor.
+data DistributionConfigWithTags = DistributionConfigWithTags'
+    { _dcwtDistributionConfig :: !DistributionConfig
+    , _dcwtTags               :: !Tags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DistributionConfigWithTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcwtDistributionConfig'
+--
+-- * 'dcwtTags'
+distributionConfigWithTags
+    :: DistributionConfig -- ^ 'dcwtDistributionConfig'
+    -> Tags -- ^ 'dcwtTags'
+    -> DistributionConfigWithTags
+distributionConfigWithTags pDistributionConfig_ pTags_ =
+    DistributionConfigWithTags'
+    { _dcwtDistributionConfig = pDistributionConfig_
+    , _dcwtTags = pTags_
+    }
+
+-- | A distribution Configuration.
+dcwtDistributionConfig :: Lens' DistributionConfigWithTags DistributionConfig
+dcwtDistributionConfig = lens _dcwtDistributionConfig (\ s a -> s{_dcwtDistributionConfig = a});
+
+-- | A complex type that contains zero or more Tag elements.
+dcwtTags :: Lens' DistributionConfigWithTags Tags
+dcwtTags = lens _dcwtTags (\ s a -> s{_dcwtTags = a});
+
+instance Hashable DistributionConfigWithTags
+
+instance NFData DistributionConfigWithTags
+
+instance ToXML DistributionConfigWithTags where
+        toXML DistributionConfigWithTags'{..}
+          = mconcat
+              ["DistributionConfig" @= _dcwtDistributionConfig,
+               "Tags" @= _dcwtTags]
+
 -- | A distribution list.
 --
 -- /See:/ 'distributionList' smart constructor.
@@ -1473,6 +1535,7 @@
 -- /See:/ 'distributionSummary' smart constructor.
 data DistributionSummary = DistributionSummary'
     { _dsId                   :: !Text
+    , _dsARN                  :: !Text
     , _dsStatus               :: !Text
     , _dsLastModifiedTime     :: !ISO8601
     , _dsDomainName           :: !Text
@@ -1487,6 +1550,7 @@
     , _dsViewerCertificate    :: !ViewerCertificate
     , _dsRestrictions         :: !Restrictions
     , _dsWebACLId             :: !Text
+    , _dsHTTPVersion          :: !HTTPVersion
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DistributionSummary' with the minimum fields required to make a request.
@@ -1495,6 +1559,8 @@
 --
 -- * 'dsId'
 --
+-- * 'dsARN'
+--
 -- * 'dsStatus'
 --
 -- * 'dsLastModifiedTime'
@@ -1522,8 +1588,11 @@
 -- * 'dsRestrictions'
 --
 -- * 'dsWebACLId'
+--
+-- * 'dsHTTPVersion'
 distributionSummary
     :: Text -- ^ 'dsId'
+    -> Text -- ^ 'dsARN'
     -> Text -- ^ 'dsStatus'
     -> UTCTime -- ^ 'dsLastModifiedTime'
     -> Text -- ^ 'dsDomainName'
@@ -1538,10 +1607,12 @@
     -> ViewerCertificate -- ^ 'dsViewerCertificate'
     -> Restrictions -- ^ 'dsRestrictions'
     -> Text -- ^ 'dsWebACLId'
+    -> HTTPVersion -- ^ 'dsHTTPVersion'
     -> DistributionSummary
-distributionSummary pId_ pStatus_ pLastModifiedTime_ pDomainName_ pAliases_ pOrigins_ pDefaultCacheBehavior_ pCacheBehaviors_ pCustomErrorResponses_ pComment_ pPriceClass_ pEnabled_ pViewerCertificate_ pRestrictions_ pWebACLId_ =
+distributionSummary pId_ pARN_ pStatus_ pLastModifiedTime_ pDomainName_ pAliases_ pOrigins_ pDefaultCacheBehavior_ pCacheBehaviors_ pCustomErrorResponses_ pComment_ pPriceClass_ pEnabled_ pViewerCertificate_ pRestrictions_ pWebACLId_ pHTTPVersion_ =
     DistributionSummary'
     { _dsId = pId_
+    , _dsARN = pARN_
     , _dsStatus = pStatus_
     , _dsLastModifiedTime = _Time # pLastModifiedTime_
     , _dsDomainName = pDomainName_
@@ -1556,12 +1627,17 @@
     , _dsViewerCertificate = pViewerCertificate_
     , _dsRestrictions = pRestrictions_
     , _dsWebACLId = pWebACLId_
+    , _dsHTTPVersion = pHTTPVersion_
     }
 
 -- | The identifier for the distribution. For example: EDFDVBD632BHDS5.
 dsId :: Lens' DistributionSummary Text
 dsId = lens _dsId (\ s a -> s{_dsId = a});
 
+-- | The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution\/EDFDVBD632BHDS5, where 123456789012 is your AWS account Id.
+dsARN :: Lens' DistributionSummary Text
+dsARN = lens _dsARN (\ s a -> s{_dsARN = a});
+
 -- | This response element indicates the current status of the distribution. When the status is Deployed, the distribution\'s information is fully propagated throughout the Amazon CloudFront system.
 dsStatus :: Lens' DistributionSummary Text
 dsStatus = lens _dsStatus (\ s a -> s{_dsStatus = a});
@@ -1618,10 +1694,14 @@
 dsWebACLId :: Lens' DistributionSummary Text
 dsWebACLId = lens _dsWebACLId (\ s a -> s{_dsWebACLId = a});
 
+-- | Specify the maximum HTTP version that you want viewers to use to communicate with CloudFront. The default value for new web distributions is http2. Viewers that don\'t support HTTP\/2 will automatically use an earlier version.
+dsHTTPVersion :: Lens' DistributionSummary HTTPVersion
+dsHTTPVersion = lens _dsHTTPVersion (\ s a -> s{_dsHTTPVersion = a});
+
 instance FromXML DistributionSummary where
         parseXML x
           = DistributionSummary' <$>
-              (x .@ "Id") <*> (x .@ "Status") <*>
+              (x .@ "Id") <*> (x .@ "ARN") <*> (x .@ "Status") <*>
                 (x .@ "LastModifiedTime")
                 <*> (x .@ "DomainName")
                 <*> (x .@ "Aliases")
@@ -1635,6 +1715,7 @@
                 <*> (x .@ "ViewerCertificate")
                 <*> (x .@ "Restrictions")
                 <*> (x .@ "WebACLId")
+                <*> (x .@ "HttpVersion")
 
 instance Hashable DistributionSummary
 
@@ -1644,15 +1725,18 @@
 --
 -- /See:/ 'forwardedValues' smart constructor.
 data ForwardedValues = ForwardedValues'
-    { _fvHeaders     :: !(Maybe Headers)
-    , _fvQueryString :: !Bool
-    , _fvCookies     :: !CookiePreference
+    { _fvQueryStringCacheKeys :: !(Maybe QueryStringCacheKeys)
+    , _fvHeaders              :: !(Maybe Headers)
+    , _fvQueryString          :: !Bool
+    , _fvCookies              :: !CookiePreference
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ForwardedValues' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fvQueryStringCacheKeys'
+--
 -- * 'fvHeaders'
 --
 -- * 'fvQueryString'
@@ -1664,16 +1748,25 @@
     -> ForwardedValues
 forwardedValues pQueryString_ pCookies_ =
     ForwardedValues'
-    { _fvHeaders = Nothing
+    { _fvQueryStringCacheKeys = Nothing
+    , _fvHeaders = Nothing
     , _fvQueryString = pQueryString_
     , _fvCookies = pCookies_
     }
 
+-- | A complex type that contains information about the query string parameters that you want CloudFront to use for caching for this cache behavior.
+fvQueryStringCacheKeys :: Lens' ForwardedValues (Maybe QueryStringCacheKeys)
+fvQueryStringCacheKeys = lens _fvQueryStringCacheKeys (\ s a -> s{_fvQueryStringCacheKeys = a});
+
 -- | A complex type that specifies the Headers, if any, that you want CloudFront to vary upon for this cache behavior.
 fvHeaders :: Lens' ForwardedValues (Maybe Headers)
 fvHeaders = lens _fvHeaders (\ s a -> s{_fvHeaders = a});
 
--- | Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior. If so, specify true; if not, specify false.
+-- | Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior and cache based on the query string parameters. CloudFront behavior depends on the value of QueryString and on the values that you specify for QueryStringCacheKeys, if any:
+--
+-- -   If you specify true for QueryString and you don\'t specify any values for QueryStringCacheKeys, CloudFront forwards all query string parameters to the origin and caches based on all query string parameters. Depending on how many query string parameters and values you have, this can adversely affect performance because CloudFront must forward more requests to the origin.
+-- -   If you specify true for QueryString and you specify one or more values for QueryStringCacheKeys, CloudFront forwards all query string parameters to the origin, but it only caches based on the query string parameters that you specify.
+-- -   If you specify false for QueryString, CloudFront doesn\'t forward any query string parameters to the origin, and doesn\'t cache based on query string parameters.
 fvQueryString :: Lens' ForwardedValues Bool
 fvQueryString = lens _fvQueryString (\ s a -> s{_fvQueryString = a});
 
@@ -1684,8 +1777,9 @@
 instance FromXML ForwardedValues where
         parseXML x
           = ForwardedValues' <$>
-              (x .@? "Headers") <*> (x .@ "QueryString") <*>
-                (x .@ "Cookies")
+              (x .@? "QueryStringCacheKeys") <*> (x .@? "Headers")
+                <*> (x .@ "QueryString")
+                <*> (x .@ "Cookies")
 
 instance Hashable ForwardedValues
 
@@ -1694,7 +1788,8 @@
 instance ToXML ForwardedValues where
         toXML ForwardedValues'{..}
           = mconcat
-              ["Headers" @= _fvHeaders,
+              ["QueryStringCacheKeys" @= _fvQueryStringCacheKeys,
+               "Headers" @= _fvHeaders,
                "QueryString" @= _fvQueryString,
                "Cookies" @= _fvCookies]
 
@@ -2447,6 +2542,53 @@
               ["Items" @= toXML (toXMLList "Path" <$> _pItems),
                "Quantity" @= _pQuantity]
 
+-- | /See:/ 'queryStringCacheKeys' smart constructor.
+data QueryStringCacheKeys = QueryStringCacheKeys'
+    { _qsckItems    :: !(Maybe [Text])
+    , _qsckQuantity :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'QueryStringCacheKeys' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qsckItems'
+--
+-- * 'qsckQuantity'
+queryStringCacheKeys
+    :: Int -- ^ 'qsckQuantity'
+    -> QueryStringCacheKeys
+queryStringCacheKeys pQuantity_ =
+    QueryStringCacheKeys'
+    { _qsckItems = Nothing
+    , _qsckQuantity = pQuantity_
+    }
+
+-- | Optional: A list that contains the query string parameters that you want CloudFront to use as a basis for caching for this cache behavior. If Quantity is 0, you can omit Items.
+qsckItems :: Lens' QueryStringCacheKeys [Text]
+qsckItems = lens _qsckItems (\ s a -> s{_qsckItems = a}) . _Default . _Coerce;
+
+-- | The number of whitelisted query string parameters for this cache behavior.
+qsckQuantity :: Lens' QueryStringCacheKeys Int
+qsckQuantity = lens _qsckQuantity (\ s a -> s{_qsckQuantity = a});
+
+instance FromXML QueryStringCacheKeys where
+        parseXML x
+          = QueryStringCacheKeys' <$>
+              (x .@? "Items" .!@ mempty >>=
+                 may (parseXMLList "Name"))
+                <*> (x .@ "Quantity")
+
+instance Hashable QueryStringCacheKeys
+
+instance NFData QueryStringCacheKeys
+
+instance ToXML QueryStringCacheKeys where
+        toXML QueryStringCacheKeys'{..}
+          = mconcat
+              ["Items" @= toXML (toXMLList "Name" <$> _qsckItems),
+               "Quantity" @= _qsckQuantity]
+
 -- | A complex type that identifies ways in which you want to restrict distribution of your content.
 --
 -- /See:/ 'restrictions' smart constructor.
@@ -2614,6 +2756,7 @@
 data StreamingDistribution = StreamingDistribution'
     { _sdLastModifiedTime            :: !(Maybe ISO8601)
     , _sdId                          :: !Text
+    , _sdARN                         :: !Text
     , _sdStatus                      :: !Text
     , _sdDomainName                  :: !Text
     , _sdActiveTrustedSigners        :: !ActiveTrustedSigners
@@ -2628,6 +2771,8 @@
 --
 -- * 'sdId'
 --
+-- * 'sdARN'
+--
 -- * 'sdStatus'
 --
 -- * 'sdDomainName'
@@ -2637,15 +2782,17 @@
 -- * 'sdStreamingDistributionConfig'
 streamingDistribution
     :: Text -- ^ 'sdId'
+    -> Text -- ^ 'sdARN'
     -> Text -- ^ 'sdStatus'
     -> Text -- ^ 'sdDomainName'
     -> ActiveTrustedSigners -- ^ 'sdActiveTrustedSigners'
     -> StreamingDistributionConfig -- ^ 'sdStreamingDistributionConfig'
     -> StreamingDistribution
-streamingDistribution pId_ pStatus_ pDomainName_ pActiveTrustedSigners_ pStreamingDistributionConfig_ =
+streamingDistribution pId_ pARN_ pStatus_ pDomainName_ pActiveTrustedSigners_ pStreamingDistributionConfig_ =
     StreamingDistribution'
     { _sdLastModifiedTime = Nothing
     , _sdId = pId_
+    , _sdARN = pARN_
     , _sdStatus = pStatus_
     , _sdDomainName = pDomainName_
     , _sdActiveTrustedSigners = pActiveTrustedSigners_
@@ -2660,6 +2807,10 @@
 sdId :: Lens' StreamingDistribution Text
 sdId = lens _sdId (\ s a -> s{_sdId = a});
 
+-- | The ARN (Amazon Resource Name) for the streaming distribution. For example: arn:aws:cloudfront::123456789012:streaming-distribution\/EDFDVBD632BHDS5, where 123456789012 is your AWS account Id.
+sdARN :: Lens' StreamingDistribution Text
+sdARN = lens _sdARN (\ s a -> s{_sdARN = a});
+
 -- | The current status of the streaming distribution. When the status is Deployed, the distribution\'s information is fully propagated throughout the Amazon CloudFront system.
 sdStatus :: Lens' StreamingDistribution Text
 sdStatus = lens _sdStatus (\ s a -> s{_sdStatus = a});
@@ -2680,7 +2831,8 @@
         parseXML x
           = StreamingDistribution' <$>
               (x .@? "LastModifiedTime") <*> (x .@ "Id") <*>
-                (x .@ "Status")
+                (x .@ "ARN")
+                <*> (x .@ "Status")
                 <*> (x .@ "DomainName")
                 <*> (x .@ "ActiveTrustedSigners")
                 <*> (x .@ "StreamingDistributionConfig")
@@ -2799,6 +2951,51 @@
                "TrustedSigners" @= _sdcTrustedSigners,
                "Enabled" @= _sdcEnabled]
 
+-- | A streaming distribution Configuration and a list of tags to be associated with the streaming distribution.
+--
+-- /See:/ 'streamingDistributionConfigWithTags' smart constructor.
+data StreamingDistributionConfigWithTags = StreamingDistributionConfigWithTags'
+    { _sdcwtStreamingDistributionConfig :: !StreamingDistributionConfig
+    , _sdcwtTags                        :: !Tags
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StreamingDistributionConfigWithTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdcwtStreamingDistributionConfig'
+--
+-- * 'sdcwtTags'
+streamingDistributionConfigWithTags
+    :: StreamingDistributionConfig -- ^ 'sdcwtStreamingDistributionConfig'
+    -> Tags -- ^ 'sdcwtTags'
+    -> StreamingDistributionConfigWithTags
+streamingDistributionConfigWithTags pStreamingDistributionConfig_ pTags_ =
+    StreamingDistributionConfigWithTags'
+    { _sdcwtStreamingDistributionConfig = pStreamingDistributionConfig_
+    , _sdcwtTags = pTags_
+    }
+
+-- | A streaming distribution Configuration.
+sdcwtStreamingDistributionConfig :: Lens' StreamingDistributionConfigWithTags StreamingDistributionConfig
+sdcwtStreamingDistributionConfig = lens _sdcwtStreamingDistributionConfig (\ s a -> s{_sdcwtStreamingDistributionConfig = a});
+
+-- | A complex type that contains zero or more Tag elements.
+sdcwtTags :: Lens' StreamingDistributionConfigWithTags Tags
+sdcwtTags = lens _sdcwtTags (\ s a -> s{_sdcwtTags = a});
+
+instance Hashable StreamingDistributionConfigWithTags
+
+instance NFData StreamingDistributionConfigWithTags
+
+instance ToXML StreamingDistributionConfigWithTags
+         where
+        toXML StreamingDistributionConfigWithTags'{..}
+          = mconcat
+              ["StreamingDistributionConfig" @=
+                 _sdcwtStreamingDistributionConfig,
+               "Tags" @= _sdcwtTags]
+
 -- | A streaming distribution list.
 --
 -- /See:/ 'streamingDistributionList' smart constructor.
@@ -2886,6 +3083,7 @@
 -- /See:/ 'streamingDistributionSummary' smart constructor.
 data StreamingDistributionSummary = StreamingDistributionSummary'
     { _sdsId               :: !Text
+    , _sdsARN              :: !Text
     , _sdsStatus           :: !Text
     , _sdsLastModifiedTime :: !ISO8601
     , _sdsDomainName       :: !Text
@@ -2903,6 +3101,8 @@
 --
 -- * 'sdsId'
 --
+-- * 'sdsARN'
+--
 -- * 'sdsStatus'
 --
 -- * 'sdsLastModifiedTime'
@@ -2922,6 +3122,7 @@
 -- * 'sdsEnabled'
 streamingDistributionSummary
     :: Text -- ^ 'sdsId'
+    -> Text -- ^ 'sdsARN'
     -> Text -- ^ 'sdsStatus'
     -> UTCTime -- ^ 'sdsLastModifiedTime'
     -> Text -- ^ 'sdsDomainName'
@@ -2932,9 +3133,10 @@
     -> PriceClass -- ^ 'sdsPriceClass'
     -> Bool -- ^ 'sdsEnabled'
     -> StreamingDistributionSummary
-streamingDistributionSummary pId_ pStatus_ pLastModifiedTime_ pDomainName_ pS3Origin_ pAliases_ pTrustedSigners_ pComment_ pPriceClass_ pEnabled_ =
+streamingDistributionSummary pId_ pARN_ pStatus_ pLastModifiedTime_ pDomainName_ pS3Origin_ pAliases_ pTrustedSigners_ pComment_ pPriceClass_ pEnabled_ =
     StreamingDistributionSummary'
     { _sdsId = pId_
+    , _sdsARN = pARN_
     , _sdsStatus = pStatus_
     , _sdsLastModifiedTime = _Time # pLastModifiedTime_
     , _sdsDomainName = pDomainName_
@@ -2950,6 +3152,10 @@
 sdsId :: Lens' StreamingDistributionSummary Text
 sdsId = lens _sdsId (\ s a -> s{_sdsId = a});
 
+-- | The ARN (Amazon Resource Name) for the streaming distribution. For example: arn:aws:cloudfront::123456789012:streaming-distribution\/EDFDVBD632BHDS5, where 123456789012 is your AWS account Id.
+sdsARN :: Lens' StreamingDistributionSummary Text
+sdsARN = lens _sdsARN (\ s a -> s{_sdsARN = a});
+
 -- | Indicates the current status of the distribution. When the status is Deployed, the distribution\'s information is fully propagated throughout the Amazon CloudFront system.
 sdsStatus :: Lens' StreamingDistributionSummary Text
 sdsStatus = lens _sdsStatus (\ s a -> s{_sdsStatus = a});
@@ -2989,7 +3195,7 @@
 instance FromXML StreamingDistributionSummary where
         parseXML x
           = StreamingDistributionSummary' <$>
-              (x .@ "Id") <*> (x .@ "Status") <*>
+              (x .@ "Id") <*> (x .@ "ARN") <*> (x .@ "Status") <*>
                 (x .@ "LastModifiedTime")
                 <*> (x .@ "DomainName")
                 <*> (x .@ "S3Origin")
@@ -3060,6 +3266,120 @@
           = mconcat
               ["Enabled" @= _slcEnabled, "Bucket" @= _slcBucket,
                "Prefix" @= _slcPrefix]
+
+-- | A complex type that contains Tag key and Tag value.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagValue :: !(Maybe Text)
+    , _tagKey   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagValue'
+--
+-- * 'tagKey'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Tag
+tag pKey_ =
+    Tag'
+    { _tagValue = Nothing
+    , _tagKey = pKey_
+    }
+
+-- | A string that contains an optional Tag value. The string length should be between 0 and 256 characters. Valid characters include a-z, A-Z, 0-9, space, and the special characters _ - . : \/ = + \'.
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+-- | A string that contains Tag key. The string length should be between 1 and 128 characters. Valid characters include a-z, A-Z, 0-9, space, and the special characters _ - . : \/ = + \'.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+instance FromXML Tag where
+        parseXML x
+          = Tag' <$> (x .@? "Value") <*> (x .@ "Key")
+
+instance Hashable Tag
+
+instance NFData Tag
+
+instance ToXML Tag where
+        toXML Tag'{..}
+          = mconcat ["Value" @= _tagValue, "Key" @= _tagKey]
+
+-- | A complex type that contains zero or more Tag elements.
+--
+-- /See:/ 'tagKeys' smart constructor.
+newtype TagKeys = TagKeys'
+    { _tkItems :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagKeys' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tkItems'
+tagKeys
+    :: TagKeys
+tagKeys =
+    TagKeys'
+    { _tkItems = Nothing
+    }
+
+-- | A complex type that contains Tag key elements
+tkItems :: Lens' TagKeys [Text]
+tkItems = lens _tkItems (\ s a -> s{_tkItems = a}) . _Default . _Coerce;
+
+instance Hashable TagKeys
+
+instance NFData TagKeys
+
+instance ToXML TagKeys where
+        toXML TagKeys'{..}
+          = mconcat
+              ["Items" @= toXML (toXMLList "Key" <$> _tkItems)]
+
+-- | A complex type that contains zero or more Tag elements.
+--
+-- /See:/ 'tags' smart constructor.
+newtype Tags = Tags'
+    { _tItems :: Maybe [Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tItems'
+tags
+    :: Tags
+tags =
+    Tags'
+    { _tItems = Nothing
+    }
+
+-- | A complex type that contains Tag elements
+tItems :: Lens' Tags [Tag]
+tItems = lens _tItems (\ s a -> s{_tItems = a}) . _Default . _Coerce;
+
+instance FromXML Tags where
+        parseXML x
+          = Tags' <$>
+              (x .@? "Items" .!@ mempty >>=
+                 may (parseXMLList "Tag"))
+
+instance Hashable Tags
+
+instance NFData Tags
+
+instance ToXML Tags where
+        toXML Tags'{..}
+          = mconcat
+              ["Items" @= toXML (toXMLList "Tag" <$> _tItems)]
 
 -- | A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don\'t want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it\'s currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution.
 --
diff --git a/gen/Network/AWS/CloudFront/Types/Sum.hs b/gen/Network/AWS/CloudFront/Types/Sum.hs
--- a/gen/Network/AWS/CloudFront/Types/Sum.hs
+++ b/gen/Network/AWS/CloudFront/Types/Sum.hs
@@ -83,6 +83,35 @@
 instance ToXML GeoRestrictionType where
     toXML = toXMLText
 
+data HTTPVersion
+    = HTTP1_1
+    | HTTP2
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText HTTPVersion where
+    parser = takeLowerText >>= \case
+        "http1.1" -> pure HTTP1_1
+        "http2" -> pure HTTP2
+        e -> fromTextError $ "Failure parsing HTTPVersion from value: '" <> e
+           <> "'. Accepted values: http1.1, http2"
+
+instance ToText HTTPVersion where
+    toText = \case
+        HTTP1_1 -> "http1.1"
+        HTTP2 -> "http2"
+
+instance Hashable     HTTPVersion
+instance NFData       HTTPVersion
+instance ToByteString HTTPVersion
+instance ToQuery      HTTPVersion
+instance ToHeader     HTTPVersion
+
+instance FromXML HTTPVersion where
+    parseXML = parseXMLText "HTTPVersion"
+
+instance ToXML HTTPVersion where
+    toXML = toXMLText
+
 data ItemSelection
     = ISAll
     | ISNone
@@ -135,7 +164,7 @@
         "post" -> pure Post
         "put" -> pure Put
         e -> fromTextError $ "Failure parsing Method from value: '" <> e
-           <> "'. Accepted values: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT"
+           <> "'. Accepted values: delete, get, head, options, patch, post, put"
 
 instance ToText Method where
     toText = \case
@@ -169,7 +198,7 @@
         "sslv3" -> pure MPVSSLV3
         "tlsv1" -> pure MPVTLSV1
         e -> fromTextError $ "Failure parsing MinimumProtocolVersion from value: '" <> e
-           <> "'. Accepted values: SSLv3, TLSv1"
+           <> "'. Accepted values: sslv3, tlsv1"
 
 instance ToText MinimumProtocolVersion where
     toText = \case
@@ -232,7 +261,7 @@
         "priceclass_200" -> pure PriceClass200
         "priceclass_all" -> pure PriceClassAll
         e -> fromTextError $ "Failure parsing PriceClass from value: '" <> e
-           <> "'. Accepted values: PriceClass_100, PriceClass_200, PriceClass_All"
+           <> "'. Accepted values: priceclass_100, priceclass_200, priceclass_all"
 
 instance ToText PriceClass where
     toText = \case
@@ -266,7 +295,7 @@
         "tlsv1.1" -> pure TLSV1_1
         "tlsv1.2" -> pure TLSV1_2
         e -> fromTextError $ "Failure parsing SSLProtocol from value: '" <> e
-           <> "'. Accepted values: SSLv3, TLSv1, TLSv1.1, TLSv1.2"
+           <> "'. Accepted values: sslv3, tlsv1, tlsv1.1, tlsv1.2"
 
 instance ToText SSLProtocol where
     toText = \case
diff --git a/gen/Network/AWS/CloudFront/UntagResource.hs b/gen/Network/AWS/CloudFront/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFront/UntagResource.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudFront.UntagResource
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Remove tags from a CloudFront resource.
+module Network.AWS.CloudFront.UntagResource
+    (
+    -- * Creating a Request
+      untagResource
+    , UntagResource
+    -- * Request Lenses
+    , urResource
+    , urTagKeys
+
+    -- * Destructuring the Response
+    , untagResourceResponse
+    , UntagResourceResponse
+    ) where
+
+import           Network.AWS.CloudFront.Types
+import           Network.AWS.CloudFront.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The request to remove tags from a CloudFront resource.
+--
+-- /See:/ 'untagResource' smart constructor.
+data UntagResource = UntagResource'
+    { _urResource :: !Text
+    , _urTagKeys  :: !TagKeys
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UntagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urResource'
+--
+-- * 'urTagKeys'
+untagResource
+    :: Text -- ^ 'urResource'
+    -> TagKeys -- ^ 'urTagKeys'
+    -> UntagResource
+untagResource pResource_ pTagKeys_ =
+    UntagResource'
+    { _urResource = pResource_
+    , _urTagKeys = pTagKeys_
+    }
+
+-- | An ARN of a CloudFront resource.
+urResource :: Lens' UntagResource Text
+urResource = lens _urResource (\ s a -> s{_urResource = a});
+
+-- | A complex type that contains zero or more Tag key elements.
+urTagKeys :: Lens' UntagResource TagKeys
+urTagKeys = lens _urTagKeys (\ s a -> s{_urTagKeys = a});
+
+instance AWSRequest UntagResource where
+        type Rs UntagResource = UntagResourceResponse
+        request = postXML cloudFront
+        response = receiveNull UntagResourceResponse'
+
+instance Hashable UntagResource
+
+instance NFData UntagResource
+
+instance ToElement UntagResource where
+        toElement
+          = mkElement
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}TagKeys"
+              .
+              _urTagKeys
+
+instance ToHeaders UntagResource where
+        toHeaders = const mempty
+
+instance ToPath UntagResource where
+        toPath = const "/2016-09-07/tagging"
+
+instance ToQuery UntagResource where
+        toQuery UntagResource'{..}
+          = mconcat
+              ["Resource" =: _urResource, "Operation=Untag"]
+
+-- | /See:/ 'untagResourceResponse' smart constructor.
+data UntagResourceResponse =
+    UntagResourceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UntagResourceResponse' with the minimum fields required to make a request.
+--
+untagResourceResponse
+    :: UntagResourceResponse
+untagResourceResponse = UntagResourceResponse'
+
+instance NFData UntagResourceResponse
diff --git a/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
@@ -107,7 +107,7 @@
          UpdateCloudFrontOriginAccessIdentity where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}CloudFrontOriginAccessIdentityConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}CloudFrontOriginAccessIdentityConfig"
               .
               _ucfoaiCloudFrontOriginAccessIdentityConfig
 
@@ -120,7 +120,7 @@
          where
         toPath UpdateCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2016-01-28/origin-access-identity/cloudfront/",
+              ["/2016-09-07/origin-access-identity/cloudfront/",
                toBS _ucfoaiId, "/config"]
 
 instance ToQuery UpdateCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/UpdateDistribution.hs b/gen/Network/AWS/CloudFront/UpdateDistribution.hs
--- a/gen/Network/AWS/CloudFront/UpdateDistribution.hs
+++ b/gen/Network/AWS/CloudFront/UpdateDistribution.hs
@@ -104,7 +104,7 @@
 instance ToElement UpdateDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}DistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}DistributionConfig"
               .
               _udDistributionConfig
 
@@ -115,7 +115,7 @@
 instance ToPath UpdateDistribution where
         toPath UpdateDistribution'{..}
           = mconcat
-              ["/2016-01-28/distribution/", toBS _udId, "/config"]
+              ["/2016-09-07/distribution/", toBS _udId, "/config"]
 
 instance ToQuery UpdateDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs b/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
@@ -104,7 +104,7 @@
 instance ToElement UpdateStreamingDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}StreamingDistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-09-07/}StreamingDistributionConfig"
               .
               _usdStreamingDistributionConfig
 
@@ -115,7 +115,7 @@
 instance ToPath UpdateStreamingDistribution where
         toPath UpdateStreamingDistribution'{..}
           = mconcat
-              ["/2016-01-28/streaming-distribution/", toBS _usdId,
+              ["/2016-09-07/streaming-distribution/", toBS _usdId,
                "/config"]
 
 instance ToQuery UpdateStreamingDistribution where
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Test/AWS/Gen/CloudFront.hs b/test/Test/AWS/Gen/CloudFront.hs
--- a/test/Test/AWS/Gen/CloudFront.hs
+++ b/test/Test/AWS/Gen/CloudFront.hs
@@ -34,12 +34,21 @@
 --         , requestUpdateStreamingDistribution $
 --             updateStreamingDistribution
 --
+--         , requestListTagsForResource $
+--             listTagsForResource
+--
+--         , requestCreateDistributionWithTags $
+--             createDistributionWithTags
+--
 --         , requestCreateDistribution $
 --             createDistribution
 --
 --         , requestGetDistributionConfig $
 --             getDistributionConfig
 --
+--         , requestCreateStreamingDistributionWithTags $
+--             createStreamingDistributionWithTags
+--
 --         , requestGetDistribution $
 --             getDistribution
 --
@@ -79,6 +88,9 @@
 --         , requestGetCloudFrontOriginAccessIdentity $
 --             getCloudFrontOriginAccessIdentity
 --
+--         , requestTagResource $
+--             tagResource
+--
 --         , requestGetStreamingDistribution $
 --             getStreamingDistribution
 --
@@ -88,6 +100,9 @@
 --         , requestDeleteDistribution $
 --             deleteDistribution
 --
+--         , requestUntagResource $
+--             untagResource
+--
 --         , requestListDistributionsByWebACLId $
 --             listDistributionsByWebACLId
 --
@@ -103,12 +118,21 @@
 --         , responseUpdateStreamingDistribution $
 --             updateStreamingDistributionResponse
 --
+--         , responseListTagsForResource $
+--             listTagsForResourceResponse
+--
+--         , responseCreateDistributionWithTags $
+--             createDistributionWithTagsResponse
+--
 --         , responseCreateDistribution $
 --             createDistributionResponse
 --
 --         , responseGetDistributionConfig $
 --             getDistributionConfigResponse
 --
+--         , responseCreateStreamingDistributionWithTags $
+--             createStreamingDistributionWithTagsResponse
+--
 --         , responseGetDistribution $
 --             getDistributionResponse
 --
@@ -148,6 +172,9 @@
 --         , responseGetCloudFrontOriginAccessIdentity $
 --             getCloudFrontOriginAccessIdentityResponse
 --
+--         , responseTagResource $
+--             tagResourceResponse
+--
 --         , responseGetStreamingDistribution $
 --             getStreamingDistributionResponse
 --
@@ -157,6 +184,9 @@
 --         , responseDeleteDistribution $
 --             deleteDistributionResponse
 --
+--         , responseUntagResource $
+--             untagResourceResponse
+--
 --         , responseListDistributionsByWebACLId $
 --             listDistributionsByWebACLIdResponse
 --
@@ -178,6 +208,16 @@
     "UpdateStreamingDistribution"
     "fixture/UpdateStreamingDistribution.yaml"
 
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource = req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestCreateDistributionWithTags :: CreateDistributionWithTags -> TestTree
+requestCreateDistributionWithTags = req
+    "CreateDistributionWithTags"
+    "fixture/CreateDistributionWithTags.yaml"
+
 requestCreateDistribution :: CreateDistribution -> TestTree
 requestCreateDistribution = req
     "CreateDistribution"
@@ -188,6 +228,11 @@
     "GetDistributionConfig"
     "fixture/GetDistributionConfig.yaml"
 
+requestCreateStreamingDistributionWithTags :: CreateStreamingDistributionWithTags -> TestTree
+requestCreateStreamingDistributionWithTags = req
+    "CreateStreamingDistributionWithTags"
+    "fixture/CreateStreamingDistributionWithTags.yaml"
+
 requestGetDistribution :: GetDistribution -> TestTree
 requestGetDistribution = req
     "GetDistribution"
@@ -253,6 +298,11 @@
     "GetCloudFrontOriginAccessIdentity"
     "fixture/GetCloudFrontOriginAccessIdentity.yaml"
 
+requestTagResource :: TagResource -> TestTree
+requestTagResource = req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
 requestGetStreamingDistribution :: GetStreamingDistribution -> TestTree
 requestGetStreamingDistribution = req
     "GetStreamingDistribution"
@@ -268,6 +318,11 @@
     "DeleteDistribution"
     "fixture/DeleteDistribution.yaml"
 
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource = req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
 requestListDistributionsByWebACLId :: ListDistributionsByWebACLId -> TestTree
 requestListDistributionsByWebACLId = req
     "ListDistributionsByWebACLId"
@@ -294,6 +349,20 @@
     cloudFront
     (Proxy :: Proxy UpdateStreamingDistribution)
 
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource = res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    cloudFront
+    (Proxy :: Proxy ListTagsForResource)
+
+responseCreateDistributionWithTags :: CreateDistributionWithTagsResponse -> TestTree
+responseCreateDistributionWithTags = res
+    "CreateDistributionWithTagsResponse"
+    "fixture/CreateDistributionWithTagsResponse.proto"
+    cloudFront
+    (Proxy :: Proxy CreateDistributionWithTags)
+
 responseCreateDistribution :: CreateDistributionResponse -> TestTree
 responseCreateDistribution = res
     "CreateDistributionResponse"
@@ -308,6 +377,13 @@
     cloudFront
     (Proxy :: Proxy GetDistributionConfig)
 
+responseCreateStreamingDistributionWithTags :: CreateStreamingDistributionWithTagsResponse -> TestTree
+responseCreateStreamingDistributionWithTags = res
+    "CreateStreamingDistributionWithTagsResponse"
+    "fixture/CreateStreamingDistributionWithTagsResponse.proto"
+    cloudFront
+    (Proxy :: Proxy CreateStreamingDistributionWithTags)
+
 responseGetDistribution :: GetDistributionResponse -> TestTree
 responseGetDistribution = res
     "GetDistributionResponse"
@@ -399,6 +475,13 @@
     cloudFront
     (Proxy :: Proxy GetCloudFrontOriginAccessIdentity)
 
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource = res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    cloudFront
+    (Proxy :: Proxy TagResource)
+
 responseGetStreamingDistribution :: GetStreamingDistributionResponse -> TestTree
 responseGetStreamingDistribution = res
     "GetStreamingDistributionResponse"
@@ -419,6 +502,13 @@
     "fixture/DeleteDistributionResponse.proto"
     cloudFront
     (Proxy :: Proxy DeleteDistribution)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource = res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    cloudFront
+    (Proxy :: Proxy UntagResource)
 
 responseListDistributionsByWebACLId :: ListDistributionsByWebACLIdResponse -> TestTree
 responseListDistributionsByWebACLId = res
