diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.6`
+`1.3.7`
 
 
 ## Description
diff --git a/amazonka-ec2.cabal b/amazonka-ec2.cabal
--- a/amazonka-ec2.cabal
+++ b/amazonka-ec2.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ec2
-version:               1.3.6
+version:               1.3.7
 synopsis:              Amazon Elastic Compute Cloud SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -48,6 +48,7 @@
           Network.AWS.EC2
         , Network.AWS.EC2.AcceptVPCPeeringConnection
         , Network.AWS.EC2.AllocateAddress
+        , Network.AWS.EC2.AllocateHosts
         , Network.AWS.EC2.AssignPrivateIPAddresses
         , Network.AWS.EC2.AssociateAddress
         , Network.AWS.EC2.AssociateDHCPOptions
@@ -77,6 +78,7 @@
         , Network.AWS.EC2.CreateInstanceExportTask
         , Network.AWS.EC2.CreateInternetGateway
         , Network.AWS.EC2.CreateKeyPair
+        , Network.AWS.EC2.CreateNatGateway
         , Network.AWS.EC2.CreateNetworkACL
         , Network.AWS.EC2.CreateNetworkACLEntry
         , Network.AWS.EC2.CreateNetworkInterface
@@ -101,6 +103,7 @@
         , Network.AWS.EC2.DeleteFlowLogs
         , Network.AWS.EC2.DeleteInternetGateway
         , Network.AWS.EC2.DeleteKeyPair
+        , Network.AWS.EC2.DeleteNatGateway
         , Network.AWS.EC2.DeleteNetworkACL
         , Network.AWS.EC2.DeleteNetworkACLEntry
         , Network.AWS.EC2.DeleteNetworkInterface
@@ -130,6 +133,8 @@
         , Network.AWS.EC2.DescribeDHCPOptions
         , Network.AWS.EC2.DescribeExportTasks
         , Network.AWS.EC2.DescribeFlowLogs
+        , Network.AWS.EC2.DescribeHosts
+        , Network.AWS.EC2.DescribeIdFormat
         , Network.AWS.EC2.DescribeImageAttribute
         , Network.AWS.EC2.DescribeImages
         , Network.AWS.EC2.DescribeImportImageTasks
@@ -140,6 +145,7 @@
         , Network.AWS.EC2.DescribeInternetGateways
         , Network.AWS.EC2.DescribeKeyPairs
         , Network.AWS.EC2.DescribeMovingAddresses
+        , Network.AWS.EC2.DescribeNatGateways
         , Network.AWS.EC2.DescribeNetworkACLs
         , Network.AWS.EC2.DescribeNetworkInterfaceAttribute
         , Network.AWS.EC2.DescribeNetworkInterfaces
@@ -192,8 +198,11 @@
         , Network.AWS.EC2.ImportKeyPair
         , Network.AWS.EC2.ImportSnapshot
         , Network.AWS.EC2.ImportVolume
+        , Network.AWS.EC2.ModifyHosts
+        , Network.AWS.EC2.ModifyIdFormat
         , Network.AWS.EC2.ModifyImageAttribute
         , Network.AWS.EC2.ModifyInstanceAttribute
+        , Network.AWS.EC2.ModifyInstancePlacement
         , Network.AWS.EC2.ModifyNetworkInterfaceAttribute
         , Network.AWS.EC2.ModifyReservedInstances
         , Network.AWS.EC2.ModifySnapshotAttribute
@@ -209,6 +218,7 @@
         , Network.AWS.EC2.RegisterImage
         , Network.AWS.EC2.RejectVPCPeeringConnection
         , Network.AWS.EC2.ReleaseAddress
+        , Network.AWS.EC2.ReleaseHosts
         , Network.AWS.EC2.ReplaceNetworkACLAssociation
         , Network.AWS.EC2.ReplaceNetworkACLEntry
         , Network.AWS.EC2.ReplaceRoute
@@ -237,7 +247,7 @@
         , Network.AWS.EC2.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.6.*
+          amazonka-core == 1.3.7.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ec2-test
@@ -257,12 +267,11 @@
         , Test.AWS.EC2.Internal
 
     build-depends:
-          amazonka-core == 1.3.6.*
-        , amazonka-test == 1.3.6.*
-        , amazonka-ec2 == 1.3.6.*
+          amazonka-core == 1.3.7.*
+        , amazonka-test == 1.3.7.*
+        , amazonka-ec2 == 1.3.7.*
         , base
         , bytestring
-        , lens
         , tasty
         , tasty-hunit
         , text
diff --git a/fixture/AllocateHosts.yaml b/fixture/AllocateHosts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AllocateHosts.yaml
diff --git a/fixture/AllocateHostsResponse.proto b/fixture/AllocateHostsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AllocateHostsResponse.proto
diff --git a/fixture/CreateNatGateway.yaml b/fixture/CreateNatGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNatGateway.yaml
diff --git a/fixture/CreateNatGatewayResponse.proto b/fixture/CreateNatGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNatGatewayResponse.proto
diff --git a/fixture/DeleteNatGateway.yaml b/fixture/DeleteNatGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNatGateway.yaml
diff --git a/fixture/DeleteNatGatewayResponse.proto b/fixture/DeleteNatGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNatGatewayResponse.proto
diff --git a/fixture/DescribeHosts.yaml b/fixture/DescribeHosts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHosts.yaml
diff --git a/fixture/DescribeHostsResponse.proto b/fixture/DescribeHostsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHostsResponse.proto
diff --git a/fixture/DescribeIdFormat.yaml b/fixture/DescribeIdFormat.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIdFormat.yaml
diff --git a/fixture/DescribeIdFormatResponse.proto b/fixture/DescribeIdFormatResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIdFormatResponse.proto
diff --git a/fixture/DescribeNatGateways.yaml b/fixture/DescribeNatGateways.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeNatGateways.yaml
diff --git a/fixture/DescribeNatGatewaysResponse.proto b/fixture/DescribeNatGatewaysResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeNatGatewaysResponse.proto
diff --git a/fixture/ModifyHosts.yaml b/fixture/ModifyHosts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyHosts.yaml
diff --git a/fixture/ModifyHostsResponse.proto b/fixture/ModifyHostsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyHostsResponse.proto
diff --git a/fixture/ModifyIdFormat.yaml b/fixture/ModifyIdFormat.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyIdFormat.yaml
diff --git a/fixture/ModifyIdFormatResponse.proto b/fixture/ModifyIdFormatResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyIdFormatResponse.proto
diff --git a/fixture/ModifyInstancePlacement.yaml b/fixture/ModifyInstancePlacement.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyInstancePlacement.yaml
diff --git a/fixture/ModifyInstancePlacementResponse.proto b/fixture/ModifyInstancePlacementResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyInstancePlacementResponse.proto
diff --git a/fixture/ReleaseHosts.yaml b/fixture/ReleaseHosts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ReleaseHosts.yaml
diff --git a/fixture/ReleaseHostsResponse.proto b/fixture/ReleaseHostsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ReleaseHostsResponse.proto
diff --git a/gen/Network/AWS/EC2.hs b/gen/Network/AWS/EC2.hs
--- a/gen/Network/AWS/EC2.hs
+++ b/gen/Network/AWS/EC2.hs
@@ -204,6 +204,9 @@
     -- ** ReplaceNetworkACLAssociation
     , module Network.AWS.EC2.ReplaceNetworkACLAssociation
 
+    -- ** DescribeNatGateways
+    , module Network.AWS.EC2.DescribeNatGateways
+
     -- ** DescribeAddresses
     , module Network.AWS.EC2.DescribeAddresses
 
@@ -285,6 +288,9 @@
     -- ** AttachInternetGateway
     , module Network.AWS.EC2.AttachInternetGateway
 
+    -- ** ModifyInstancePlacement
+    , module Network.AWS.EC2.ModifyInstancePlacement
+
     -- ** DescribeFlowLogs
     , module Network.AWS.EC2.DescribeFlowLogs
 
@@ -297,6 +303,9 @@
     -- ** DescribeReservedInstances
     , module Network.AWS.EC2.DescribeReservedInstances
 
+    -- ** DescribeIdFormat
+    , module Network.AWS.EC2.DescribeIdFormat
+
     -- ** DescribeVPCs
     , module Network.AWS.EC2.DescribeVPCs
 
@@ -336,6 +345,9 @@
     -- ** ModifyVPCEndpoint
     , module Network.AWS.EC2.ModifyVPCEndpoint
 
+    -- ** AllocateHosts
+    , module Network.AWS.EC2.AllocateHosts
+
     -- ** RegisterImage
     , module Network.AWS.EC2.RegisterImage
 
@@ -432,6 +444,9 @@
     -- ** DescribeInstances (Paginated)
     , module Network.AWS.EC2.DescribeInstances
 
+    -- ** CreateNatGateway
+    , module Network.AWS.EC2.CreateNatGateway
+
     -- ** DescribeVPCPeeringConnections
     , module Network.AWS.EC2.DescribeVPCPeeringConnections
 
@@ -459,6 +474,9 @@
     -- ** DescribeNetworkInterfaceAttribute
     , module Network.AWS.EC2.DescribeNetworkInterfaceAttribute
 
+    -- ** ReleaseHosts
+    , module Network.AWS.EC2.ReleaseHosts
+
     -- ** ResetNetworkInterfaceAttribute
     , module Network.AWS.EC2.ResetNetworkInterfaceAttribute
 
@@ -471,6 +489,9 @@
     -- ** CreateVPNConnection
     , module Network.AWS.EC2.CreateVPNConnection
 
+    -- ** DeleteNatGateway
+    , module Network.AWS.EC2.DeleteNatGateway
+
     -- ** DescribeImportSnapshotTasks
     , module Network.AWS.EC2.DescribeImportSnapshotTasks
 
@@ -558,6 +579,9 @@
     -- ** DescribeAccountAttributes
     , module Network.AWS.EC2.DescribeAccountAttributes
 
+    -- ** ModifyHosts
+    , module Network.AWS.EC2.ModifyHosts
+
     -- ** RebootInstances
     , module Network.AWS.EC2.RebootInstances
 
@@ -585,9 +609,15 @@
     -- ** GetConsoleOutput
     , module Network.AWS.EC2.GetConsoleOutput
 
+    -- ** DescribeHosts
+    , module Network.AWS.EC2.DescribeHosts
+
     -- ** DescribeImageAttribute
     , module Network.AWS.EC2.DescribeImageAttribute
 
+    -- ** ModifyIdFormat
+    , module Network.AWS.EC2.ModifyIdFormat
+
     -- ** DeleteRouteTable
     , module Network.AWS.EC2.DeleteRouteTable
 
@@ -662,6 +692,12 @@
     -- ** AddressStatus
     , AddressStatus (..)
 
+    -- ** Affinity
+    , Affinity (..)
+
+    -- ** AllocationState
+    , AllocationState (..)
+
     -- ** AllocationStrategy
     , AllocationStrategy (..)
 
@@ -671,6 +707,9 @@
     -- ** AttachmentStatus
     , AttachmentStatus (..)
 
+    -- ** AutoPlacement
+    , AutoPlacement (..)
+
     -- ** AvailabilityZoneState
     , AvailabilityZoneState (..)
 
@@ -728,6 +767,9 @@
     -- ** GatewayType
     , GatewayType (..)
 
+    -- ** HostTenancy
+    , HostTenancy (..)
+
     -- ** HypervisorType
     , HypervisorType (..)
 
@@ -764,12 +806,18 @@
     -- ** MoveStatus
     , MoveStatus (..)
 
+    -- ** NatGatewayState
+    , NatGatewayState (..)
+
     -- ** NetworkInterfaceAttribute
     , NetworkInterfaceAttribute (..)
 
     -- ** NetworkInterfaceStatus
     , NetworkInterfaceStatus (..)
 
+    -- ** NetworkInterfaceType
+    , NetworkInterfaceType (..)
+
     -- ** OfferingTypeValues
     , OfferingTypeValues (..)
 
@@ -949,6 +997,12 @@
     , availabilityZoneMessage
     , azmMessage
 
+    -- ** AvailableCapacity
+    , AvailableCapacity
+    , availableCapacity
+    , acAvailableInstanceCapacity
+    , acAvailableVCPUs
+
     -- ** BlobAttributeValue
     , BlobAttributeValue
     , blobAttributeValue
@@ -1184,6 +1238,33 @@
     , hrEventType
     , hrEventInformation
 
+    -- ** Host
+    , Host
+    , host
+    , hState
+    , hClientToken
+    , hHostId
+    , hAvailableCapacity
+    , hHostReservationId
+    , hHostProperties
+    , hAvailabilityZone
+    , hInstances
+    , hAutoPlacement
+
+    -- ** HostInstance
+    , HostInstance
+    , hostInstance
+    , hiInstanceId
+    , hiInstanceType
+
+    -- ** HostProperties
+    , HostProperties
+    , hostProperties
+    , hpInstanceType
+    , hpTotalVCPUs
+    , hpCores
+    , hpSockets
+
     -- ** IAMInstanceProfile
     , IAMInstanceProfile
     , iamInstanceProfile
@@ -1217,6 +1298,13 @@
     , ipRange
     , irCIdRIP
 
+    -- ** IdFormat
+    , IdFormat
+    , idFormat
+    , ifUseLongIds
+    , ifDeadline
+    , ifResource
+
     -- ** Image
     , Image
     , image
@@ -1374,6 +1462,13 @@
     , ibdmsEBS
     , ibdmsDeviceName
 
+    -- ** InstanceCapacity
+    , InstanceCapacity
+    , instanceCapacity
+    , icAvailableCapacity
+    , icInstanceType
+    , icTotalCapacity
+
     -- ** InstanceCount
     , InstanceCount
     , instanceCount
@@ -1553,6 +1648,27 @@
     , masMoveStatus
     , masPublicIP
 
+    -- ** NatGateway
+    , NatGateway
+    , natGateway
+    , ngState
+    , ngFailureCode
+    , ngVPCId
+    , ngFailureMessage
+    , ngNatGatewayId
+    , ngSubnetId
+    , ngDeleteTime
+    , ngNatGatewayAddresses
+    , ngCreateTime
+
+    -- ** NatGatewayAddress
+    , NatGatewayAddress
+    , natGatewayAddress
+    , ngaPrivateIP
+    , ngaAllocationId
+    , ngaNetworkInterfaceId
+    , ngaPublicIP
+
     -- ** NetworkACL
     , NetworkACL
     , networkACL
@@ -1588,6 +1704,7 @@
     , niStatus
     , niPrivateIPAddresses
     , niSourceDestCheck
+    , niInterfaceType
     , niVPCId
     , niTagSet
     , niRequesterManaged
@@ -1646,6 +1763,8 @@
     -- ** Placement
     , Placement
     , placement
+    , pAffinity
+    , pHostId
     , pAvailabilityZone
     , pTenancy
     , pGroupName
@@ -1850,6 +1969,7 @@
     , rInstanceId
     , rOrigin
     , rState
+    , rNatGatewayId
     , rNetworkInterfaceId
     , rGatewayId
     , rInstanceOwnerId
@@ -2314,6 +2434,7 @@
 
 import           Network.AWS.EC2.AcceptVPCPeeringConnection
 import           Network.AWS.EC2.AllocateAddress
+import           Network.AWS.EC2.AllocateHosts
 import           Network.AWS.EC2.AssignPrivateIPAddresses
 import           Network.AWS.EC2.AssociateAddress
 import           Network.AWS.EC2.AssociateDHCPOptions
@@ -2343,6 +2464,7 @@
 import           Network.AWS.EC2.CreateInstanceExportTask
 import           Network.AWS.EC2.CreateInternetGateway
 import           Network.AWS.EC2.CreateKeyPair
+import           Network.AWS.EC2.CreateNatGateway
 import           Network.AWS.EC2.CreateNetworkACL
 import           Network.AWS.EC2.CreateNetworkACLEntry
 import           Network.AWS.EC2.CreateNetworkInterface
@@ -2367,6 +2489,7 @@
 import           Network.AWS.EC2.DeleteFlowLogs
 import           Network.AWS.EC2.DeleteInternetGateway
 import           Network.AWS.EC2.DeleteKeyPair
+import           Network.AWS.EC2.DeleteNatGateway
 import           Network.AWS.EC2.DeleteNetworkACL
 import           Network.AWS.EC2.DeleteNetworkACLEntry
 import           Network.AWS.EC2.DeleteNetworkInterface
@@ -2396,6 +2519,8 @@
 import           Network.AWS.EC2.DescribeDHCPOptions
 import           Network.AWS.EC2.DescribeExportTasks
 import           Network.AWS.EC2.DescribeFlowLogs
+import           Network.AWS.EC2.DescribeHosts
+import           Network.AWS.EC2.DescribeIdFormat
 import           Network.AWS.EC2.DescribeImageAttribute
 import           Network.AWS.EC2.DescribeImages
 import           Network.AWS.EC2.DescribeImportImageTasks
@@ -2406,6 +2531,7 @@
 import           Network.AWS.EC2.DescribeInternetGateways
 import           Network.AWS.EC2.DescribeKeyPairs
 import           Network.AWS.EC2.DescribeMovingAddresses
+import           Network.AWS.EC2.DescribeNatGateways
 import           Network.AWS.EC2.DescribeNetworkACLs
 import           Network.AWS.EC2.DescribeNetworkInterfaceAttribute
 import           Network.AWS.EC2.DescribeNetworkInterfaces
@@ -2458,8 +2584,11 @@
 import           Network.AWS.EC2.ImportKeyPair
 import           Network.AWS.EC2.ImportSnapshot
 import           Network.AWS.EC2.ImportVolume
+import           Network.AWS.EC2.ModifyHosts
+import           Network.AWS.EC2.ModifyIdFormat
 import           Network.AWS.EC2.ModifyImageAttribute
 import           Network.AWS.EC2.ModifyInstanceAttribute
+import           Network.AWS.EC2.ModifyInstancePlacement
 import           Network.AWS.EC2.ModifyNetworkInterfaceAttribute
 import           Network.AWS.EC2.ModifyReservedInstances
 import           Network.AWS.EC2.ModifySnapshotAttribute
@@ -2475,6 +2604,7 @@
 import           Network.AWS.EC2.RegisterImage
 import           Network.AWS.EC2.RejectVPCPeeringConnection
 import           Network.AWS.EC2.ReleaseAddress
+import           Network.AWS.EC2.ReleaseHosts
 import           Network.AWS.EC2.ReplaceNetworkACLAssociation
 import           Network.AWS.EC2.ReplaceNetworkACLEntry
 import           Network.AWS.EC2.ReplaceRoute
diff --git a/gen/Network/AWS/EC2/AcceptVPCPeeringConnection.hs b/gen/Network/AWS/EC2/AcceptVPCPeeringConnection.hs
--- a/gen/Network/AWS/EC2/AcceptVPCPeeringConnection.hs
+++ b/gen/Network/AWS/EC2/AcceptVPCPeeringConnection.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AllocateAddress.hs b/gen/Network/AWS/EC2/AllocateAddress.hs
--- a/gen/Network/AWS/EC2/AllocateAddress.hs
+++ b/gen/Network/AWS/EC2/AllocateAddress.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AllocateHosts.hs b/gen/Network/AWS/EC2/AllocateHosts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/AllocateHosts.hs
@@ -0,0 +1,176 @@
+{-# 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.EC2.AllocateHosts
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Allocates a Dedicated host to your account. At minimum you need to
+-- specify the instance size type, Availability Zone, and quantity of hosts
+-- you want to allocate.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-AllocateHosts.html AWS API Reference> for AllocateHosts.
+module Network.AWS.EC2.AllocateHosts
+    (
+    -- * Creating a Request
+      allocateHosts
+    , AllocateHosts
+    -- * Request Lenses
+    , ahClientToken
+    , ahAutoPlacement
+    , ahInstanceType
+    , ahQuantity
+    , ahAvailabilityZone
+
+    -- * Destructuring the Response
+    , allocateHostsResponse
+    , AllocateHostsResponse
+    -- * Response Lenses
+    , ahrsHostIds
+    , ahrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'allocateHosts' smart constructor.
+data AllocateHosts = AllocateHosts'
+    { _ahClientToken      :: !(Maybe Text)
+    , _ahAutoPlacement    :: !(Maybe AutoPlacement)
+    , _ahInstanceType     :: !Text
+    , _ahQuantity         :: !Int
+    , _ahAvailabilityZone :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocateHosts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ahClientToken'
+--
+-- * 'ahAutoPlacement'
+--
+-- * 'ahInstanceType'
+--
+-- * 'ahQuantity'
+--
+-- * 'ahAvailabilityZone'
+allocateHosts
+    :: Text -- ^ 'ahInstanceType'
+    -> Int -- ^ 'ahQuantity'
+    -> Text -- ^ 'ahAvailabilityZone'
+    -> AllocateHosts
+allocateHosts pInstanceType_ pQuantity_ pAvailabilityZone_ =
+    AllocateHosts'
+    { _ahClientToken = Nothing
+    , _ahAutoPlacement = Nothing
+    , _ahInstanceType = pInstanceType_
+    , _ahQuantity = pQuantity_
+    , _ahAvailabilityZone = pAvailabilityZone_
+    }
+
+-- | Unique, case-sensitive identifier you provide to ensure idempotency of
+-- the request. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+ahClientToken :: Lens' AllocateHosts (Maybe Text)
+ahClientToken = lens _ahClientToken (\ s a -> s{_ahClientToken = a});
+
+-- | This is enabled by default. This property allows instances to be
+-- automatically placed onto available Dedicated hosts, when you are
+-- launching instances without specifying a host ID.
+--
+-- Default: Enabled
+ahAutoPlacement :: Lens' AllocateHosts (Maybe AutoPlacement)
+ahAutoPlacement = lens _ahAutoPlacement (\ s a -> s{_ahAutoPlacement = a});
+
+-- | Specify the instance type that you want your Dedicated hosts to be
+-- configured for. When you specify the instance type, that is the only
+-- instance type that you can launch onto that host.
+ahInstanceType :: Lens' AllocateHosts Text
+ahInstanceType = lens _ahInstanceType (\ s a -> s{_ahInstanceType = a});
+
+-- | The number of Dedicated hosts you want to allocate to your account with
+-- these parameters.
+ahQuantity :: Lens' AllocateHosts Int
+ahQuantity = lens _ahQuantity (\ s a -> s{_ahQuantity = a});
+
+-- | The Availability Zone for the Dedicated hosts.
+ahAvailabilityZone :: Lens' AllocateHosts Text
+ahAvailabilityZone = lens _ahAvailabilityZone (\ s a -> s{_ahAvailabilityZone = a});
+
+instance AWSRequest AllocateHosts where
+        type Rs AllocateHosts = AllocateHostsResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 AllocateHostsResponse' <$>
+                   (x .@? "hostIdSet" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders AllocateHosts where
+        toHeaders = const mempty
+
+instance ToPath AllocateHosts where
+        toPath = const "/"
+
+instance ToQuery AllocateHosts where
+        toQuery AllocateHosts'{..}
+          = mconcat
+              ["Action" =: ("AllocateHosts" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "ClientToken" =: _ahClientToken,
+               "AutoPlacement" =: _ahAutoPlacement,
+               "InstanceType" =: _ahInstanceType,
+               "Quantity" =: _ahQuantity,
+               "AvailabilityZone" =: _ahAvailabilityZone]
+
+-- | /See:/ 'allocateHostsResponse' smart constructor.
+data AllocateHostsResponse = AllocateHostsResponse'
+    { _ahrsHostIds        :: !(Maybe [Text])
+    , _ahrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocateHostsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ahrsHostIds'
+--
+-- * 'ahrsResponseStatus'
+allocateHostsResponse
+    :: Int -- ^ 'ahrsResponseStatus'
+    -> AllocateHostsResponse
+allocateHostsResponse pResponseStatus_ =
+    AllocateHostsResponse'
+    { _ahrsHostIds = Nothing
+    , _ahrsResponseStatus = pResponseStatus_
+    }
+
+-- | The ID of the allocated Dedicated host. This is used when you want to
+-- launch an instance onto a specific host.
+ahrsHostIds :: Lens' AllocateHostsResponse [Text]
+ahrsHostIds = lens _ahrsHostIds (\ s a -> s{_ahrsHostIds = a}) . _Default . _Coerce;
+
+-- | The response status code.
+ahrsResponseStatus :: Lens' AllocateHostsResponse Int
+ahrsResponseStatus = lens _ahrsResponseStatus (\ s a -> s{_ahrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/AssignPrivateIPAddresses.hs b/gen/Network/AWS/EC2/AssignPrivateIPAddresses.hs
--- a/gen/Network/AWS/EC2/AssignPrivateIPAddresses.hs
+++ b/gen/Network/AWS/EC2/AssignPrivateIPAddresses.hs
@@ -51,6 +51,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AssociateAddress.hs b/gen/Network/AWS/EC2/AssociateAddress.hs
--- a/gen/Network/AWS/EC2/AssociateAddress.hs
+++ b/gen/Network/AWS/EC2/AssociateAddress.hs
@@ -64,6 +64,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -125,11 +126,13 @@
 aasNetworkInterfaceId :: Lens' AssociateAddress (Maybe Text)
 aasNetworkInterfaceId = lens _aasNetworkInterfaceId (\ s a -> s{_aasNetworkInterfaceId = a});
 
--- | [EC2-VPC] Allows an Elastic IP address that is already associated with
--- an instance or network interface to be re-associated with the specified
--- instance or network interface. Otherwise, the operation fails.
---
--- Default: 'false'
+-- | [EC2-VPC] For a VPC in an EC2-Classic account, specify true to allow an
+-- Elastic IP address that is already associated with an instance or
+-- network interface to be reassociated with the specified instance or
+-- network interface. Otherwise, the operation fails. In a VPC in an
+-- EC2-VPC-only account, reassociation is automatic, therefore you can
+-- specify false to ensure the operation fails if the Elastic IP address is
+-- already associated with another resource.
 aasAllowReassociation :: Lens' AssociateAddress (Maybe Bool)
 aasAllowReassociation = lens _aasAllowReassociation (\ s a -> s{_aasAllowReassociation = a});
 
diff --git a/gen/Network/AWS/EC2/AssociateDHCPOptions.hs b/gen/Network/AWS/EC2/AssociateDHCPOptions.hs
--- a/gen/Network/AWS/EC2/AssociateDHCPOptions.hs
+++ b/gen/Network/AWS/EC2/AssociateDHCPOptions.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AssociateRouteTable.hs b/gen/Network/AWS/EC2/AssociateRouteTable.hs
--- a/gen/Network/AWS/EC2/AssociateRouteTable.hs
+++ b/gen/Network/AWS/EC2/AssociateRouteTable.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AttachClassicLinkVPC.hs b/gen/Network/AWS/EC2/AttachClassicLinkVPC.hs
--- a/gen/Network/AWS/EC2/AttachClassicLinkVPC.hs
+++ b/gen/Network/AWS/EC2/AttachClassicLinkVPC.hs
@@ -54,6 +54,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AttachInternetGateway.hs b/gen/Network/AWS/EC2/AttachInternetGateway.hs
--- a/gen/Network/AWS/EC2/AttachInternetGateway.hs
+++ b/gen/Network/AWS/EC2/AttachInternetGateway.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AttachNetworkInterface.hs b/gen/Network/AWS/EC2/AttachNetworkInterface.hs
--- a/gen/Network/AWS/EC2/AttachNetworkInterface.hs
+++ b/gen/Network/AWS/EC2/AttachNetworkInterface.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AttachVPNGateway.hs b/gen/Network/AWS/EC2/AttachVPNGateway.hs
--- a/gen/Network/AWS/EC2/AttachVPNGateway.hs
+++ b/gen/Network/AWS/EC2/AttachVPNGateway.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AttachVolume.hs b/gen/Network/AWS/EC2/AttachVolume.hs
--- a/gen/Network/AWS/EC2/AttachVolume.hs
+++ b/gen/Network/AWS/EC2/AttachVolume.hs
@@ -76,6 +76,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/AuthorizeSecurityGroupEgress.hs b/gen/Network/AWS/EC2/AuthorizeSecurityGroupEgress.hs
--- a/gen/Network/AWS/EC2/AuthorizeSecurityGroupEgress.hs
+++ b/gen/Network/AWS/EC2/AuthorizeSecurityGroupEgress.hs
@@ -18,20 +18,17 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Adds one or more egress rules to a security group for use with a VPC.
--- Specifically, this action permits instances to send traffic to one or
--- more destination CIDR IP address ranges, or to one or more destination
--- security groups for the same VPC.
+-- [EC2-VPC only] Adds one or more egress rules to a security group for use
+-- with a VPC. Specifically, this action permits instances to send traffic
+-- to one or more destination CIDR IP address ranges, or to one or more
+-- destination security groups for the same VPC. This action doesn\'t apply
+-- to security groups for use in EC2-Classic. For more information, see
+-- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups for Your VPC>
+-- in the /Amazon Virtual Private Cloud User Guide/.
 --
 -- You can have up to 50 rules per security group (covering both ingress
 -- and egress rules).
 --
--- A security group is for use with instances either in the EC2-Classic
--- platform or in a specific VPC. This action doesn\'t apply to security
--- groups for use in EC2-Classic. For more information, see
--- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups for Your VPC>
--- in the /Amazon Virtual Private Cloud User Guide/.
---
 -- Each rule consists of the protocol (for example, TCP), plus either a
 -- CIDR range or a source group. For the TCP and UDP protocols, you must
 -- also specify the destination port or port range. For the ICMP protocol,
@@ -65,6 +62,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -120,7 +118,8 @@
     }
 
 -- | The start of port range for the TCP and UDP protocols, or an ICMP type
--- number. For the ICMP type number, use '-1' to specify all ICMP types.
+-- number. We recommend that you specify the port range in a set of IP
+-- permissions instead.
 asgeFromPort :: Lens' AuthorizeSecurityGroupEgress (Maybe Int)
 asgeFromPort = lens _asgeFromPort (\ s a -> s{_asgeFromPort = a});
 
@@ -129,20 +128,19 @@
 asgeIPPermissions :: Lens' AuthorizeSecurityGroupEgress [IPPermission]
 asgeIPPermissions = lens _asgeIPPermissions (\ s a -> s{_asgeIPPermissions = a}) . _Default . _Coerce;
 
--- | The IP protocol name ('tcp', 'udp', 'icmp') or number (see
--- <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>).
--- Use '-1' to specify all.
+-- | The IP protocol name or number. We recommend that you specify the
+-- protocol in a set of IP permissions instead.
 asgeIPProtocol :: Lens' AuthorizeSecurityGroupEgress (Maybe Text)
 asgeIPProtocol = lens _asgeIPProtocol (\ s a -> s{_asgeIPProtocol = a});
 
--- | The end of port range for the TCP and UDP protocols, or an ICMP code
--- number. For the ICMP code number, use '-1' to specify all ICMP codes for
--- the ICMP type.
+-- | The end of port range for the TCP and UDP protocols, or an ICMP type
+-- number. We recommend that you specify the port range in a set of IP
+-- permissions instead.
 asgeToPort :: Lens' AuthorizeSecurityGroupEgress (Maybe Int)
 asgeToPort = lens _asgeToPort (\ s a -> s{_asgeToPort = a});
 
--- | The CIDR IP address range. You can\'t specify this parameter when
--- specifying a source security group.
+-- | The CIDR IP address range. We recommend that you specify the CIDR range
+-- in a set of IP permissions instead.
 asgeCIdRIP :: Lens' AuthorizeSecurityGroupEgress (Maybe Text)
 asgeCIdRIP = lens _asgeCIdRIP (\ s a -> s{_asgeCIdRIP = a});
 
diff --git a/gen/Network/AWS/EC2/AuthorizeSecurityGroupIngress.hs b/gen/Network/AWS/EC2/AuthorizeSecurityGroupIngress.hs
--- a/gen/Network/AWS/EC2/AuthorizeSecurityGroupIngress.hs
+++ b/gen/Network/AWS/EC2/AuthorizeSecurityGroupIngress.hs
@@ -65,6 +65,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/BundleInstance.hs b/gen/Network/AWS/EC2/BundleInstance.hs
--- a/gen/Network/AWS/EC2/BundleInstance.hs
+++ b/gen/Network/AWS/EC2/BundleInstance.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelBundleTask.hs b/gen/Network/AWS/EC2/CancelBundleTask.hs
--- a/gen/Network/AWS/EC2/CancelBundleTask.hs
+++ b/gen/Network/AWS/EC2/CancelBundleTask.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelConversionTask.hs b/gen/Network/AWS/EC2/CancelConversionTask.hs
--- a/gen/Network/AWS/EC2/CancelConversionTask.hs
+++ b/gen/Network/AWS/EC2/CancelConversionTask.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelExportTask.hs b/gen/Network/AWS/EC2/CancelExportTask.hs
--- a/gen/Network/AWS/EC2/CancelExportTask.hs
+++ b/gen/Network/AWS/EC2/CancelExportTask.hs
@@ -39,6 +39,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelImportTask.hs b/gen/Network/AWS/EC2/CancelImportTask.hs
--- a/gen/Network/AWS/EC2/CancelImportTask.hs
+++ b/gen/Network/AWS/EC2/CancelImportTask.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelReservedInstancesListing.hs b/gen/Network/AWS/EC2/CancelReservedInstancesListing.hs
--- a/gen/Network/AWS/EC2/CancelReservedInstancesListing.hs
+++ b/gen/Network/AWS/EC2/CancelReservedInstancesListing.hs
@@ -18,7 +18,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Cancels the specified Reserved Instance listing in the Reserved Instance
+-- Cancels the specified Reserved instance listing in the Reserved Instance
 -- Marketplace.
 --
 -- For more information, see
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -66,7 +67,7 @@
     { _crilReservedInstancesListingId = pReservedInstancesListingId_
     }
 
--- | The ID of the Reserved Instance listing.
+-- | The ID of the Reserved instance listing.
 crilReservedInstancesListingId :: Lens' CancelReservedInstancesListing Text
 crilReservedInstancesListingId = lens _crilReservedInstancesListingId (\ s a -> s{_crilReservedInstancesListingId = a});
 
@@ -121,7 +122,7 @@
     , _crilrsResponseStatus = pResponseStatus_
     }
 
--- | The Reserved Instance listing.
+-- | The Reserved instance listing.
 crilrsReservedInstancesListings :: Lens' CancelReservedInstancesListingResponse [ReservedInstancesListing]
 crilrsReservedInstancesListings = lens _crilrsReservedInstancesListings (\ s a -> s{_crilrsReservedInstancesListings = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/CancelSpotFleetRequests.hs b/gen/Network/AWS/EC2/CancelSpotFleetRequests.hs
--- a/gen/Network/AWS/EC2/CancelSpotFleetRequests.hs
+++ b/gen/Network/AWS/EC2/CancelSpotFleetRequests.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CancelSpotInstanceRequests.hs b/gen/Network/AWS/EC2/CancelSpotInstanceRequests.hs
--- a/gen/Network/AWS/EC2/CancelSpotInstanceRequests.hs
+++ b/gen/Network/AWS/EC2/CancelSpotInstanceRequests.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ConfirmProductInstance.hs b/gen/Network/AWS/EC2/ConfirmProductInstance.hs
--- a/gen/Network/AWS/EC2/ConfirmProductInstance.hs
+++ b/gen/Network/AWS/EC2/ConfirmProductInstance.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CopyImage.hs b/gen/Network/AWS/EC2/CopyImage.hs
--- a/gen/Network/AWS/EC2/CopyImage.hs
+++ b/gen/Network/AWS/EC2/CopyImage.hs
@@ -20,8 +20,7 @@
 --
 -- Initiates the copy of an AMI from the specified source region to the
 -- current region. You specify the destination region by using its endpoint
--- when making the request. AMIs that use encrypted EBS snapshots cannot be
--- copied with this method.
+-- when making the request.
 --
 -- For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html Copying AMIs>
@@ -35,6 +34,8 @@
     , CopyImage
     -- * Request Lenses
     , ciClientToken
+    , ciEncrypted
+    , ciKMSKeyId
     , ciDescription
     , ciDryRun
     , ciSourceRegion
@@ -51,6 +52,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -58,6 +60,8 @@
 -- | /See:/ 'copyImage' smart constructor.
 data CopyImage = CopyImage'
     { _ciClientToken   :: !(Maybe Text)
+    , _ciEncrypted     :: !(Maybe Bool)
+    , _ciKMSKeyId      :: !(Maybe Text)
     , _ciDescription   :: !(Maybe Text)
     , _ciDryRun        :: !(Maybe Bool)
     , _ciSourceRegion  :: !Text
@@ -71,6 +75,10 @@
 --
 -- * 'ciClientToken'
 --
+-- * 'ciEncrypted'
+--
+-- * 'ciKMSKeyId'
+--
 -- * 'ciDescription'
 --
 -- * 'ciDryRun'
@@ -88,6 +96,8 @@
 copyImage pSourceRegion_ pSourceImageId_ pName_ =
     CopyImage'
     { _ciClientToken = Nothing
+    , _ciEncrypted = Nothing
+    , _ciKMSKeyId = Nothing
     , _ciDescription = Nothing
     , _ciDryRun = Nothing
     , _ciSourceRegion = pSourceRegion_
@@ -102,6 +112,29 @@
 ciClientToken :: Lens' CopyImage (Maybe Text)
 ciClientToken = lens _ciClientToken (\ s a -> s{_ciClientToken = a});
 
+-- | Specifies whether the destination snapshots of the copied image should
+-- be encrypted. The default CMK for EBS is used unless a non-default AWS
+-- Key Management Service (AWS KMS) CMK is specified with 'KmsKeyId'. For
+-- more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBS Encryption>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+ciEncrypted :: Lens' CopyImage (Maybe Bool)
+ciEncrypted = lens _ciEncrypted (\ s a -> s{_ciEncrypted = a});
+
+-- | The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when
+-- encrypting the snapshots of an image during a copy operation. This
+-- parameter is only required if you want to use a non-default CMK; if this
+-- parameter is not specified, the default CMK for EBS is used. The ARN
+-- contains the 'arn:aws:kms' namespace, followed by the region of the CMK,
+-- the AWS account ID of the CMK owner, the 'key' namespace, and then the
+-- CMK ID. For example,
+-- arn:aws:kms:/us-east-1/:/012345678910/:key\//abcd1234-a123-456a-a12b-a123b4cd56ef/.
+-- The specified CMK must exist in the region that the snapshot is being
+-- copied to. If a 'KmsKeyId' is specified, the 'Encrypted' flag must also
+-- be set.
+ciKMSKeyId :: Lens' CopyImage (Maybe Text)
+ciKMSKeyId = lens _ciKMSKeyId (\ s a -> s{_ciKMSKeyId = a});
+
 -- | A description for the new AMI in the destination region.
 ciDescription :: Lens' CopyImage (Maybe Text)
 ciDescription = lens _ciDescription (\ s a -> s{_ciDescription = a});
@@ -146,6 +179,8 @@
               ["Action" =: ("CopyImage" :: ByteString),
                "Version" =: ("2015-10-01" :: ByteString),
                "ClientToken" =: _ciClientToken,
+               "Encrypted" =: _ciEncrypted,
+               "KmsKeyId" =: _ciKMSKeyId,
                "Description" =: _ciDescription,
                "DryRun" =: _ciDryRun,
                "SourceRegion" =: _ciSourceRegion,
diff --git a/gen/Network/AWS/EC2/CopySnapshot.hs b/gen/Network/AWS/EC2/CopySnapshot.hs
--- a/gen/Network/AWS/EC2/CopySnapshot.hs
+++ b/gen/Network/AWS/EC2/CopySnapshot.hs
@@ -61,6 +61,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateCustomerGateway.hs b/gen/Network/AWS/EC2/CreateCustomerGateway.hs
--- a/gen/Network/AWS/EC2/CreateCustomerGateway.hs
+++ b/gen/Network/AWS/EC2/CreateCustomerGateway.hs
@@ -67,6 +67,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateDHCPOptions.hs b/gen/Network/AWS/EC2/CreateDHCPOptions.hs
--- a/gen/Network/AWS/EC2/CreateDHCPOptions.hs
+++ b/gen/Network/AWS/EC2/CreateDHCPOptions.hs
@@ -78,6 +78,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateFlowLogs.hs b/gen/Network/AWS/EC2/CreateFlowLogs.hs
--- a/gen/Network/AWS/EC2/CreateFlowLogs.hs
+++ b/gen/Network/AWS/EC2/CreateFlowLogs.hs
@@ -55,6 +55,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateImage.hs b/gen/Network/AWS/EC2/CreateImage.hs
--- a/gen/Network/AWS/EC2/CreateImage.hs
+++ b/gen/Network/AWS/EC2/CreateImage.hs
@@ -55,6 +55,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateInstanceExportTask.hs b/gen/Network/AWS/EC2/CreateInstanceExportTask.hs
--- a/gen/Network/AWS/EC2/CreateInstanceExportTask.hs
+++ b/gen/Network/AWS/EC2/CreateInstanceExportTask.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateInternetGateway.hs b/gen/Network/AWS/EC2/CreateInternetGateway.hs
--- a/gen/Network/AWS/EC2/CreateInternetGateway.hs
+++ b/gen/Network/AWS/EC2/CreateInternetGateway.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateKeyPair.hs b/gen/Network/AWS/EC2/CreateKeyPair.hs
--- a/gen/Network/AWS/EC2/CreateKeyPair.hs
+++ b/gen/Network/AWS/EC2/CreateKeyPair.hs
@@ -56,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateNatGateway.hs b/gen/Network/AWS/EC2/CreateNatGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/CreateNatGateway.hs
@@ -0,0 +1,163 @@
+{-# 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.EC2.CreateNatGateway
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Creates a NAT gateway in the specified subnet. A NAT gateway can be used
+-- to enable instances in a private subnet to connect to the Internet. This
+-- action creates a network interface in the specified subnet with a
+-- private IP address from the IP address range of the subnet. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html NAT Gateways>
+-- in the /Amazon Virtual Private Cloud User Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateNatGateway.html AWS API Reference> for CreateNatGateway.
+module Network.AWS.EC2.CreateNatGateway
+    (
+    -- * Creating a Request
+      createNatGateway
+    , CreateNatGateway
+    -- * Request Lenses
+    , cngClientToken
+    , cngSubnetId
+    , cngAllocationId
+
+    -- * Destructuring the Response
+    , createNatGatewayResponse
+    , CreateNatGatewayResponse
+    -- * Response Lenses
+    , cngrsClientToken
+    , cngrsNatGateway
+    , cngrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'createNatGateway' smart constructor.
+data CreateNatGateway = CreateNatGateway'
+    { _cngClientToken  :: !(Maybe Text)
+    , _cngSubnetId     :: !Text
+    , _cngAllocationId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateNatGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cngClientToken'
+--
+-- * 'cngSubnetId'
+--
+-- * 'cngAllocationId'
+createNatGateway
+    :: Text -- ^ 'cngSubnetId'
+    -> Text -- ^ 'cngAllocationId'
+    -> CreateNatGateway
+createNatGateway pSubnetId_ pAllocationId_ =
+    CreateNatGateway'
+    { _cngClientToken = Nothing
+    , _cngSubnetId = pSubnetId_
+    , _cngAllocationId = pAllocationId_
+    }
+
+-- | Unique, case-sensitive identifier you provide to ensure the idempotency
+-- of the request. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to Ensure Idempotency>.
+--
+-- Constraint: Maximum 64 ASCII characters.
+cngClientToken :: Lens' CreateNatGateway (Maybe Text)
+cngClientToken = lens _cngClientToken (\ s a -> s{_cngClientToken = a});
+
+-- | The subnet in which to create the NAT gateway.
+cngSubnetId :: Lens' CreateNatGateway Text
+cngSubnetId = lens _cngSubnetId (\ s a -> s{_cngSubnetId = a});
+
+-- | The allocation ID of an Elastic IP address to associate with the NAT
+-- gateway. If the Elastic IP address is associated with another resource,
+-- you must first disassociate it.
+cngAllocationId :: Lens' CreateNatGateway Text
+cngAllocationId = lens _cngAllocationId (\ s a -> s{_cngAllocationId = a});
+
+instance AWSRequest CreateNatGateway where
+        type Rs CreateNatGateway = CreateNatGatewayResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 CreateNatGatewayResponse' <$>
+                   (x .@? "clientToken") <*> (x .@? "natGateway") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders CreateNatGateway where
+        toHeaders = const mempty
+
+instance ToPath CreateNatGateway where
+        toPath = const "/"
+
+instance ToQuery CreateNatGateway where
+        toQuery CreateNatGateway'{..}
+          = mconcat
+              ["Action" =: ("CreateNatGateway" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "ClientToken" =: _cngClientToken,
+               "SubnetId" =: _cngSubnetId,
+               "AllocationId" =: _cngAllocationId]
+
+-- | /See:/ 'createNatGatewayResponse' smart constructor.
+data CreateNatGatewayResponse = CreateNatGatewayResponse'
+    { _cngrsClientToken    :: !(Maybe Text)
+    , _cngrsNatGateway     :: !(Maybe NatGateway)
+    , _cngrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateNatGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cngrsClientToken'
+--
+-- * 'cngrsNatGateway'
+--
+-- * 'cngrsResponseStatus'
+createNatGatewayResponse
+    :: Int -- ^ 'cngrsResponseStatus'
+    -> CreateNatGatewayResponse
+createNatGatewayResponse pResponseStatus_ =
+    CreateNatGatewayResponse'
+    { _cngrsClientToken = Nothing
+    , _cngrsNatGateway = Nothing
+    , _cngrsResponseStatus = pResponseStatus_
+    }
+
+-- | Unique, case-sensitive identifier to ensure the idempotency of the
+-- request. Only returned if a client token was provided in the request.
+cngrsClientToken :: Lens' CreateNatGatewayResponse (Maybe Text)
+cngrsClientToken = lens _cngrsClientToken (\ s a -> s{_cngrsClientToken = a});
+
+-- | Information about the NAT gateway.
+cngrsNatGateway :: Lens' CreateNatGatewayResponse (Maybe NatGateway)
+cngrsNatGateway = lens _cngrsNatGateway (\ s a -> s{_cngrsNatGateway = a});
+
+-- | The response status code.
+cngrsResponseStatus :: Lens' CreateNatGatewayResponse Int
+cngrsResponseStatus = lens _cngrsResponseStatus (\ s a -> s{_cngrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/CreateNetworkACL.hs b/gen/Network/AWS/EC2/CreateNetworkACL.hs
--- a/gen/Network/AWS/EC2/CreateNetworkACL.hs
+++ b/gen/Network/AWS/EC2/CreateNetworkACL.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateNetworkACLEntry.hs b/gen/Network/AWS/EC2/CreateNetworkACLEntry.hs
--- a/gen/Network/AWS/EC2/CreateNetworkACLEntry.hs
+++ b/gen/Network/AWS/EC2/CreateNetworkACLEntry.hs
@@ -62,6 +62,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateNetworkInterface.hs b/gen/Network/AWS/EC2/CreateNetworkInterface.hs
--- a/gen/Network/AWS/EC2/CreateNetworkInterface.hs
+++ b/gen/Network/AWS/EC2/CreateNetworkInterface.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreatePlacementGroup.hs b/gen/Network/AWS/EC2/CreatePlacementGroup.hs
--- a/gen/Network/AWS/EC2/CreatePlacementGroup.hs
+++ b/gen/Network/AWS/EC2/CreatePlacementGroup.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateReservedInstancesListing.hs b/gen/Network/AWS/EC2/CreateReservedInstancesListing.hs
--- a/gen/Network/AWS/EC2/CreateReservedInstancesListing.hs
+++ b/gen/Network/AWS/EC2/CreateReservedInstancesListing.hs
@@ -18,23 +18,23 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a listing for Amazon EC2 Reserved Instances to be sold in the
--- Reserved Instance Marketplace. You can submit one Reserved Instance
--- listing at a time. To get a list of your Reserved Instances, you can use
+-- Creates a listing for Amazon EC2 Reserved instances to be sold in the
+-- Reserved Instance Marketplace. You can submit one Reserved instance
+-- listing at a time. To get a list of your Reserved instances, you can use
 -- the DescribeReservedInstances operation.
 --
 -- The Reserved Instance Marketplace matches sellers who want to resell
--- Reserved Instance capacity that they no longer need with buyers who want
--- to purchase additional capacity. Reserved Instances bought and sold
+-- Reserved instance capacity that they no longer need with buyers who want
+-- to purchase additional capacity. Reserved instances bought and sold
 -- through the Reserved Instance Marketplace work like any other Reserved
--- Instances.
+-- instances.
 --
--- To sell your Reserved Instances, you must first register as a seller in
+-- To sell your Reserved instances, you must first register as a seller in
 -- the Reserved Instance Marketplace. After completing the registration
 -- process, you can create a Reserved Instance Marketplace listing of some
--- or all of your Reserved Instances, and specify the upfront price to
--- receive for them. Your Reserved Instance listings then become available
--- for purchase. To view the details of your Reserved Instance listing, you
+-- or all of your Reserved instances, and specify the upfront price to
+-- receive for them. Your Reserved instance listings then become available
+-- for purchase. To view the details of your Reserved instance listing, you
 -- can use the DescribeReservedInstancesListings operation.
 --
 -- For more information, see
@@ -63,6 +63,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -99,19 +100,19 @@
     , _crilClientToken = pClientToken_
     }
 
--- | The ID of the active Reserved Instance.
+-- | The ID of the active Reserved instance.
 crilReservedInstancesId :: Lens' CreateReservedInstancesListing Text
 crilReservedInstancesId = lens _crilReservedInstancesId (\ s a -> s{_crilReservedInstancesId = a});
 
--- | The number of instances that are a part of a Reserved Instance account
+-- | The number of instances that are a part of a Reserved instance account
 -- to be listed in the Reserved Instance Marketplace. This number should be
 -- less than or equal to the instance count associated with the Reserved
--- Instance ID specified in this call.
+-- instance ID specified in this call.
 crilInstanceCount :: Lens' CreateReservedInstancesListing Int
 crilInstanceCount = lens _crilInstanceCount (\ s a -> s{_crilInstanceCount = a});
 
--- | A list specifying the price of the Reserved Instance for each month
--- remaining in the Reserved Instance term.
+-- | A list specifying the price of the Reserved instance for each month
+-- remaining in the Reserved instance term.
 crilPriceSchedules :: Lens' CreateReservedInstancesListing [PriceScheduleSpecification]
 crilPriceSchedules = lens _crilPriceSchedules (\ s a -> s{_crilPriceSchedules = a}) . _Coerce;
 
@@ -175,7 +176,7 @@
     , _crersResponseStatus = pResponseStatus_
     }
 
--- | Information about the Reserved Instances listing.
+-- | Information about the Reserved instance listing.
 crersReservedInstancesListings :: Lens' CreateReservedInstancesListingResponse [ReservedInstancesListing]
 crersReservedInstancesListings = lens _crersReservedInstancesListings (\ s a -> s{_crersReservedInstancesListings = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/CreateRoute.hs b/gen/Network/AWS/EC2/CreateRoute.hs
--- a/gen/Network/AWS/EC2/CreateRoute.hs
+++ b/gen/Network/AWS/EC2/CreateRoute.hs
@@ -21,8 +21,8 @@
 -- Creates a route in a route table within a VPC.
 --
 -- You must specify one of the following targets: Internet gateway or
--- virtual private gateway, NAT instance, VPC peering connection, or
--- network interface.
+-- virtual private gateway, NAT instance, NAT gateway, VPC peering
+-- connection, or network interface.
 --
 -- When determining how to route traffic, we use the route with the most
 -- specific match. For example, let\'s say the traffic is destined for
@@ -50,6 +50,7 @@
     -- * Request Lenses
     , crVPCPeeringConnectionId
     , crInstanceId
+    , crNatGatewayId
     , crNetworkInterfaceId
     , crGatewayId
     , crDryRun
@@ -66,6 +67,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -74,6 +76,7 @@
 data CreateRoute = CreateRoute'
     { _crVPCPeeringConnectionId :: !(Maybe Text)
     , _crInstanceId             :: !(Maybe Text)
+    , _crNatGatewayId           :: !(Maybe Text)
     , _crNetworkInterfaceId     :: !(Maybe Text)
     , _crGatewayId              :: !(Maybe Text)
     , _crDryRun                 :: !(Maybe Bool)
@@ -89,6 +92,8 @@
 --
 -- * 'crInstanceId'
 --
+-- * 'crNatGatewayId'
+--
 -- * 'crNetworkInterfaceId'
 --
 -- * 'crGatewayId'
@@ -106,6 +111,7 @@
     CreateRoute'
     { _crVPCPeeringConnectionId = Nothing
     , _crInstanceId = Nothing
+    , _crNatGatewayId = Nothing
     , _crNetworkInterfaceId = Nothing
     , _crGatewayId = Nothing
     , _crDryRun = Nothing
@@ -122,6 +128,10 @@
 crInstanceId :: Lens' CreateRoute (Maybe Text)
 crInstanceId = lens _crInstanceId (\ s a -> s{_crInstanceId = a});
 
+-- | The ID of a NAT gateway.
+crNatGatewayId :: Lens' CreateRoute (Maybe Text)
+crNatGatewayId = lens _crNatGatewayId (\ s a -> s{_crNatGatewayId = a});
+
 -- | The ID of a network interface.
 crNetworkInterfaceId :: Lens' CreateRoute (Maybe Text)
 crNetworkInterfaceId = lens _crNetworkInterfaceId (\ s a -> s{_crNetworkInterfaceId = a});
@@ -170,6 +180,7 @@
                "VpcPeeringConnectionId" =:
                  _crVPCPeeringConnectionId,
                "InstanceId" =: _crInstanceId,
+               "NatGatewayId" =: _crNatGatewayId,
                "NetworkInterfaceId" =: _crNetworkInterfaceId,
                "GatewayId" =: _crGatewayId, "DryRun" =: _crDryRun,
                "RouteTableId" =: _crRouteTableId,
diff --git a/gen/Network/AWS/EC2/CreateRouteTable.hs b/gen/Network/AWS/EC2/CreateRouteTable.hs
--- a/gen/Network/AWS/EC2/CreateRouteTable.hs
+++ b/gen/Network/AWS/EC2/CreateRouteTable.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateSecurityGroup.hs b/gen/Network/AWS/EC2/CreateSecurityGroup.hs
--- a/gen/Network/AWS/EC2/CreateSecurityGroup.hs
+++ b/gen/Network/AWS/EC2/CreateSecurityGroup.hs
@@ -70,6 +70,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -123,7 +124,7 @@
 -- Constraints for EC2-Classic: ASCII characters
 --
 -- Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and
--- ._-:\/()#,\'[]+=&;{}!$*
+-- ._-:\/()#,\'[]+=&amp;;{}!$*
 csgGroupName :: Lens' CreateSecurityGroup Text
 csgGroupName = lens _csgGroupName (\ s a -> s{_csgGroupName = a});
 
@@ -134,7 +135,7 @@
 -- Constraints for EC2-Classic: ASCII characters
 --
 -- Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and
--- ._-:\/()#,\'[]+=&;{}!$*
+-- ._-:\/()#,\'[]+=&amp;;{}!$*
 csgDescription :: Lens' CreateSecurityGroup Text
 csgDescription = lens _csgDescription (\ s a -> s{_csgDescription = a});
 
diff --git a/gen/Network/AWS/EC2/CreateSnapshot.hs b/gen/Network/AWS/EC2/CreateSnapshot.hs
--- a/gen/Network/AWS/EC2/CreateSnapshot.hs
+++ b/gen/Network/AWS/EC2/CreateSnapshot.hs
@@ -83,6 +83,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateSpotDatafeedSubscription.hs b/gen/Network/AWS/EC2/CreateSpotDatafeedSubscription.hs
--- a/gen/Network/AWS/EC2/CreateSpotDatafeedSubscription.hs
+++ b/gen/Network/AWS/EC2/CreateSpotDatafeedSubscription.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateSubnet.hs b/gen/Network/AWS/EC2/CreateSubnet.hs
--- a/gen/Network/AWS/EC2/CreateSubnet.hs
+++ b/gen/Network/AWS/EC2/CreateSubnet.hs
@@ -68,6 +68,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateTags.hs b/gen/Network/AWS/EC2/CreateTags.hs
--- a/gen/Network/AWS/EC2/CreateTags.hs
+++ b/gen/Network/AWS/EC2/CreateTags.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVPC.hs b/gen/Network/AWS/EC2/CreateVPC.hs
--- a/gen/Network/AWS/EC2/CreateVPC.hs
+++ b/gen/Network/AWS/EC2/CreateVPC.hs
@@ -53,6 +53,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -89,6 +90,9 @@
 -- VPC are launched as dedicated tenancy instances regardless of the
 -- tenancy assigned to the instance at launch. Dedicated tenancy instances
 -- run on single-tenant hardware.
+--
+-- __Important:__ The 'host' value cannot be used with this parameter. Use
+-- the 'default' or 'dedicated' values only.
 --
 -- Default: 'default'
 cvInstanceTenancy :: Lens' CreateVPC (Maybe Tenancy)
diff --git a/gen/Network/AWS/EC2/CreateVPCEndpoint.hs b/gen/Network/AWS/EC2/CreateVPCEndpoint.hs
--- a/gen/Network/AWS/EC2/CreateVPCEndpoint.hs
+++ b/gen/Network/AWS/EC2/CreateVPCEndpoint.hs
@@ -51,6 +51,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVPCPeeringConnection.hs b/gen/Network/AWS/EC2/CreateVPCPeeringConnection.hs
--- a/gen/Network/AWS/EC2/CreateVPCPeeringConnection.hs
+++ b/gen/Network/AWS/EC2/CreateVPCPeeringConnection.hs
@@ -53,6 +53,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVPNConnection.hs b/gen/Network/AWS/EC2/CreateVPNConnection.hs
--- a/gen/Network/AWS/EC2/CreateVPNConnection.hs
+++ b/gen/Network/AWS/EC2/CreateVPNConnection.hs
@@ -59,6 +59,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVPNConnectionRoute.hs b/gen/Network/AWS/EC2/CreateVPNConnectionRoute.hs
--- a/gen/Network/AWS/EC2/CreateVPNConnectionRoute.hs
+++ b/gen/Network/AWS/EC2/CreateVPNConnectionRoute.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVPNGateway.hs b/gen/Network/AWS/EC2/CreateVPNGateway.hs
--- a/gen/Network/AWS/EC2/CreateVPNGateway.hs
+++ b/gen/Network/AWS/EC2/CreateVPNGateway.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/CreateVolume.hs b/gen/Network/AWS/EC2/CreateVolume.hs
--- a/gen/Network/AWS/EC2/CreateVolume.hs
+++ b/gen/Network/AWS/EC2/CreateVolume.hs
@@ -74,6 +74,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteCustomerGateway.hs b/gen/Network/AWS/EC2/DeleteCustomerGateway.hs
--- a/gen/Network/AWS/EC2/DeleteCustomerGateway.hs
+++ b/gen/Network/AWS/EC2/DeleteCustomerGateway.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteDHCPOptions.hs b/gen/Network/AWS/EC2/DeleteDHCPOptions.hs
--- a/gen/Network/AWS/EC2/DeleteDHCPOptions.hs
+++ b/gen/Network/AWS/EC2/DeleteDHCPOptions.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteFlowLogs.hs b/gen/Network/AWS/EC2/DeleteFlowLogs.hs
--- a/gen/Network/AWS/EC2/DeleteFlowLogs.hs
+++ b/gen/Network/AWS/EC2/DeleteFlowLogs.hs
@@ -39,6 +39,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteInternetGateway.hs b/gen/Network/AWS/EC2/DeleteInternetGateway.hs
--- a/gen/Network/AWS/EC2/DeleteInternetGateway.hs
+++ b/gen/Network/AWS/EC2/DeleteInternetGateway.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteKeyPair.hs b/gen/Network/AWS/EC2/DeleteKeyPair.hs
--- a/gen/Network/AWS/EC2/DeleteKeyPair.hs
+++ b/gen/Network/AWS/EC2/DeleteKeyPair.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteNatGateway.hs b/gen/Network/AWS/EC2/DeleteNatGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/DeleteNatGateway.hs
@@ -0,0 +1,122 @@
+{-# 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.EC2.DeleteNatGateway
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Deletes the specified NAT gateway. Deleting a NAT gateway disassociates
+-- its Elastic IP address, but does not release the address from your
+-- account. Deleting a NAT gateway does not delete any NAT gateway routes
+-- in your route tables.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteNatGateway.html AWS API Reference> for DeleteNatGateway.
+module Network.AWS.EC2.DeleteNatGateway
+    (
+    -- * Creating a Request
+      deleteNatGateway
+    , DeleteNatGateway
+    -- * Request Lenses
+    , dngNatGatewayId
+
+    -- * Destructuring the Response
+    , deleteNatGatewayResponse
+    , DeleteNatGatewayResponse
+    -- * Response Lenses
+    , delrsNatGatewayId
+    , delrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteNatGateway' smart constructor.
+newtype DeleteNatGateway = DeleteNatGateway'
+    { _dngNatGatewayId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteNatGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dngNatGatewayId'
+deleteNatGateway
+    :: Text -- ^ 'dngNatGatewayId'
+    -> DeleteNatGateway
+deleteNatGateway pNatGatewayId_ =
+    DeleteNatGateway'
+    { _dngNatGatewayId = pNatGatewayId_
+    }
+
+-- | The ID of the NAT gateway.
+dngNatGatewayId :: Lens' DeleteNatGateway Text
+dngNatGatewayId = lens _dngNatGatewayId (\ s a -> s{_dngNatGatewayId = a});
+
+instance AWSRequest DeleteNatGateway where
+        type Rs DeleteNatGateway = DeleteNatGatewayResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 DeleteNatGatewayResponse' <$>
+                   (x .@? "natGatewayId") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteNatGateway where
+        toHeaders = const mempty
+
+instance ToPath DeleteNatGateway where
+        toPath = const "/"
+
+instance ToQuery DeleteNatGateway where
+        toQuery DeleteNatGateway'{..}
+          = mconcat
+              ["Action" =: ("DeleteNatGateway" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "NatGatewayId" =: _dngNatGatewayId]
+
+-- | /See:/ 'deleteNatGatewayResponse' smart constructor.
+data DeleteNatGatewayResponse = DeleteNatGatewayResponse'
+    { _delrsNatGatewayId   :: !(Maybe Text)
+    , _delrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteNatGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delrsNatGatewayId'
+--
+-- * 'delrsResponseStatus'
+deleteNatGatewayResponse
+    :: Int -- ^ 'delrsResponseStatus'
+    -> DeleteNatGatewayResponse
+deleteNatGatewayResponse pResponseStatus_ =
+    DeleteNatGatewayResponse'
+    { _delrsNatGatewayId = Nothing
+    , _delrsResponseStatus = pResponseStatus_
+    }
+
+-- | The ID of the NAT gateway.
+delrsNatGatewayId :: Lens' DeleteNatGatewayResponse (Maybe Text)
+delrsNatGatewayId = lens _delrsNatGatewayId (\ s a -> s{_delrsNatGatewayId = a});
+
+-- | The response status code.
+delrsResponseStatus :: Lens' DeleteNatGatewayResponse Int
+delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/DeleteNetworkACL.hs b/gen/Network/AWS/EC2/DeleteNetworkACL.hs
--- a/gen/Network/AWS/EC2/DeleteNetworkACL.hs
+++ b/gen/Network/AWS/EC2/DeleteNetworkACL.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteNetworkACLEntry.hs b/gen/Network/AWS/EC2/DeleteNetworkACLEntry.hs
--- a/gen/Network/AWS/EC2/DeleteNetworkACLEntry.hs
+++ b/gen/Network/AWS/EC2/DeleteNetworkACLEntry.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteNetworkInterface.hs b/gen/Network/AWS/EC2/DeleteNetworkInterface.hs
--- a/gen/Network/AWS/EC2/DeleteNetworkInterface.hs
+++ b/gen/Network/AWS/EC2/DeleteNetworkInterface.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeletePlacementGroup.hs b/gen/Network/AWS/EC2/DeletePlacementGroup.hs
--- a/gen/Network/AWS/EC2/DeletePlacementGroup.hs
+++ b/gen/Network/AWS/EC2/DeletePlacementGroup.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteRoute.hs b/gen/Network/AWS/EC2/DeleteRoute.hs
--- a/gen/Network/AWS/EC2/DeleteRoute.hs
+++ b/gen/Network/AWS/EC2/DeleteRoute.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteRouteTable.hs b/gen/Network/AWS/EC2/DeleteRouteTable.hs
--- a/gen/Network/AWS/EC2/DeleteRouteTable.hs
+++ b/gen/Network/AWS/EC2/DeleteRouteTable.hs
@@ -39,6 +39,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteSecurityGroup.hs b/gen/Network/AWS/EC2/DeleteSecurityGroup.hs
--- a/gen/Network/AWS/EC2/DeleteSecurityGroup.hs
+++ b/gen/Network/AWS/EC2/DeleteSecurityGroup.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteSnapshot.hs b/gen/Network/AWS/EC2/DeleteSnapshot.hs
--- a/gen/Network/AWS/EC2/DeleteSnapshot.hs
+++ b/gen/Network/AWS/EC2/DeleteSnapshot.hs
@@ -53,6 +53,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteSpotDatafeedSubscription.hs b/gen/Network/AWS/EC2/DeleteSpotDatafeedSubscription.hs
--- a/gen/Network/AWS/EC2/DeleteSpotDatafeedSubscription.hs
+++ b/gen/Network/AWS/EC2/DeleteSpotDatafeedSubscription.hs
@@ -36,6 +36,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteSubnet.hs b/gen/Network/AWS/EC2/DeleteSubnet.hs
--- a/gen/Network/AWS/EC2/DeleteSubnet.hs
+++ b/gen/Network/AWS/EC2/DeleteSubnet.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteTags.hs b/gen/Network/AWS/EC2/DeleteTags.hs
--- a/gen/Network/AWS/EC2/DeleteTags.hs
+++ b/gen/Network/AWS/EC2/DeleteTags.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPC.hs b/gen/Network/AWS/EC2/DeleteVPC.hs
--- a/gen/Network/AWS/EC2/DeleteVPC.hs
+++ b/gen/Network/AWS/EC2/DeleteVPC.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPCEndpoints.hs b/gen/Network/AWS/EC2/DeleteVPCEndpoints.hs
--- a/gen/Network/AWS/EC2/DeleteVPCEndpoints.hs
+++ b/gen/Network/AWS/EC2/DeleteVPCEndpoints.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPCPeeringConnection.hs b/gen/Network/AWS/EC2/DeleteVPCPeeringConnection.hs
--- a/gen/Network/AWS/EC2/DeleteVPCPeeringConnection.hs
+++ b/gen/Network/AWS/EC2/DeleteVPCPeeringConnection.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPNConnection.hs b/gen/Network/AWS/EC2/DeleteVPNConnection.hs
--- a/gen/Network/AWS/EC2/DeleteVPNConnection.hs
+++ b/gen/Network/AWS/EC2/DeleteVPNConnection.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPNConnectionRoute.hs b/gen/Network/AWS/EC2/DeleteVPNConnectionRoute.hs
--- a/gen/Network/AWS/EC2/DeleteVPNConnectionRoute.hs
+++ b/gen/Network/AWS/EC2/DeleteVPNConnectionRoute.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVPNGateway.hs b/gen/Network/AWS/EC2/DeleteVPNGateway.hs
--- a/gen/Network/AWS/EC2/DeleteVPNGateway.hs
+++ b/gen/Network/AWS/EC2/DeleteVPNGateway.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeleteVolume.hs b/gen/Network/AWS/EC2/DeleteVolume.hs
--- a/gen/Network/AWS/EC2/DeleteVolume.hs
+++ b/gen/Network/AWS/EC2/DeleteVolume.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DeregisterImage.hs b/gen/Network/AWS/EC2/DeregisterImage.hs
--- a/gen/Network/AWS/EC2/DeregisterImage.hs
+++ b/gen/Network/AWS/EC2/DeregisterImage.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeAccountAttributes.hs b/gen/Network/AWS/EC2/DescribeAccountAttributes.hs
--- a/gen/Network/AWS/EC2/DescribeAccountAttributes.hs
+++ b/gen/Network/AWS/EC2/DescribeAccountAttributes.hs
@@ -60,6 +60,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeAddresses.hs b/gen/Network/AWS/EC2/DescribeAddresses.hs
--- a/gen/Network/AWS/EC2/DescribeAddresses.hs
+++ b/gen/Network/AWS/EC2/DescribeAddresses.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeAvailabilityZones.hs b/gen/Network/AWS/EC2/DescribeAvailabilityZones.hs
--- a/gen/Network/AWS/EC2/DescribeAvailabilityZones.hs
+++ b/gen/Network/AWS/EC2/DescribeAvailabilityZones.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeBundleTasks.hs b/gen/Network/AWS/EC2/DescribeBundleTasks.hs
--- a/gen/Network/AWS/EC2/DescribeBundleTasks.hs
+++ b/gen/Network/AWS/EC2/DescribeBundleTasks.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeClassicLinkInstances.hs b/gen/Network/AWS/EC2/DescribeClassicLinkInstances.hs
--- a/gen/Network/AWS/EC2/DescribeClassicLinkInstances.hs
+++ b/gen/Network/AWS/EC2/DescribeClassicLinkInstances.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeConversionTasks.hs b/gen/Network/AWS/EC2/DescribeConversionTasks.hs
--- a/gen/Network/AWS/EC2/DescribeConversionTasks.hs
+++ b/gen/Network/AWS/EC2/DescribeConversionTasks.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeCustomerGateways.hs b/gen/Network/AWS/EC2/DescribeCustomerGateways.hs
--- a/gen/Network/AWS/EC2/DescribeCustomerGateways.hs
+++ b/gen/Network/AWS/EC2/DescribeCustomerGateways.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeDHCPOptions.hs b/gen/Network/AWS/EC2/DescribeDHCPOptions.hs
--- a/gen/Network/AWS/EC2/DescribeDHCPOptions.hs
+++ b/gen/Network/AWS/EC2/DescribeDHCPOptions.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeExportTasks.hs b/gen/Network/AWS/EC2/DescribeExportTasks.hs
--- a/gen/Network/AWS/EC2/DescribeExportTasks.hs
+++ b/gen/Network/AWS/EC2/DescribeExportTasks.hs
@@ -39,6 +39,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeFlowLogs.hs b/gen/Network/AWS/EC2/DescribeFlowLogs.hs
--- a/gen/Network/AWS/EC2/DescribeFlowLogs.hs
+++ b/gen/Network/AWS/EC2/DescribeFlowLogs.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeHosts.hs b/gen/Network/AWS/EC2/DescribeHosts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/DescribeHosts.hs
@@ -0,0 +1,191 @@
+{-# 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.EC2.DescribeHosts
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Describes one or more of your Dedicated hosts.
+--
+-- The results describe only the Dedicated hosts in the region you\'re
+-- currently using. All listed instances consume capacity on your Dedicated
+-- host. Dedicated hosts that have recently been released will be listed
+-- with the state 'released'.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeHosts.html AWS API Reference> for DescribeHosts.
+module Network.AWS.EC2.DescribeHosts
+    (
+    -- * Creating a Request
+      describeHosts
+    , DescribeHosts
+    -- * Request Lenses
+    , dhNextToken
+    , dhFilter
+    , dhHostIds
+    , dhMaxResults
+
+    -- * Destructuring the Response
+    , describeHostsResponse
+    , DescribeHostsResponse
+    -- * Response Lenses
+    , dhrsHosts
+    , dhrsNextToken
+    , dhrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeHosts' smart constructor.
+data DescribeHosts = DescribeHosts'
+    { _dhNextToken  :: !(Maybe Text)
+    , _dhFilter     :: !(Maybe [Filter])
+    , _dhHostIds    :: !(Maybe [Text])
+    , _dhMaxResults :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHosts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhNextToken'
+--
+-- * 'dhFilter'
+--
+-- * 'dhHostIds'
+--
+-- * 'dhMaxResults'
+describeHosts
+    :: DescribeHosts
+describeHosts =
+    DescribeHosts'
+    { _dhNextToken = Nothing
+    , _dhFilter = Nothing
+    , _dhHostIds = Nothing
+    , _dhMaxResults = Nothing
+    }
+
+-- | The token to retrieve the next page of results.
+dhNextToken :: Lens' DescribeHosts (Maybe Text)
+dhNextToken = lens _dhNextToken (\ s a -> s{_dhNextToken = a});
+
+-- | One or more filters.
+--
+-- -   'instance-type' - The instance type size that the Dedicated host is
+--     configured to support.
+--
+-- -   'auto-placement' - Whether auto-placement is enabled or disabled
+--     ('on' | 'off').
+--
+-- -   'host-reservation-id' - The ID of the reservation associated with
+--     this host.
+--
+-- -   'client-token' - The idempotency token you provided when you
+--     launched the instance
+--
+-- -   'state'- The allocation state of the Dedicated host ('available' |
+--     'under-assessment' | 'permanent-failure' | 'released' |
+--     'released-permanent-failure').
+--
+-- -   'availability-zone' - The Availability Zone of the host.
+--
+dhFilter :: Lens' DescribeHosts [Filter]
+dhFilter = lens _dhFilter (\ s a -> s{_dhFilter = a}) . _Default . _Coerce;
+
+-- | The IDs of the Dedicated hosts. The IDs are used for targeted instance
+-- launches.
+dhHostIds :: Lens' DescribeHosts [Text]
+dhHostIds = lens _dhHostIds (\ s a -> s{_dhHostIds = a}) . _Default . _Coerce;
+
+-- | The maximum number of results to return for the request in a single
+-- page. The remaining results can be seen by sending another request with
+-- the returned 'nextToken' value. This value can be between 5 and 500; if
+-- 'maxResults' is given a larger value than 500, you will receive an
+-- error. You cannot specify this parameter and the host IDs parameter in
+-- the same request.
+dhMaxResults :: Lens' DescribeHosts (Maybe Int)
+dhMaxResults = lens _dhMaxResults (\ s a -> s{_dhMaxResults = a});
+
+instance AWSRequest DescribeHosts where
+        type Rs DescribeHosts = DescribeHostsResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 DescribeHostsResponse' <$>
+                   (x .@? "hostSet" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*> (x .@? "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeHosts where
+        toHeaders = const mempty
+
+instance ToPath DescribeHosts where
+        toPath = const "/"
+
+instance ToQuery DescribeHosts where
+        toQuery DescribeHosts'{..}
+          = mconcat
+              ["Action" =: ("DescribeHosts" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "NextToken" =: _dhNextToken,
+               toQuery (toQueryList "Filter" <$> _dhFilter),
+               toQuery (toQueryList "HostId" <$> _dhHostIds),
+               "MaxResults" =: _dhMaxResults]
+
+-- | /See:/ 'describeHostsResponse' smart constructor.
+data DescribeHostsResponse = DescribeHostsResponse'
+    { _dhrsHosts          :: !(Maybe [Host])
+    , _dhrsNextToken      :: !(Maybe Text)
+    , _dhrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHostsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhrsHosts'
+--
+-- * 'dhrsNextToken'
+--
+-- * 'dhrsResponseStatus'
+describeHostsResponse
+    :: Int -- ^ 'dhrsResponseStatus'
+    -> DescribeHostsResponse
+describeHostsResponse pResponseStatus_ =
+    DescribeHostsResponse'
+    { _dhrsHosts = Nothing
+    , _dhrsNextToken = Nothing
+    , _dhrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the Dedicated hosts.
+dhrsHosts :: Lens' DescribeHostsResponse [Host]
+dhrsHosts = lens _dhrsHosts (\ s a -> s{_dhrsHosts = a}) . _Default . _Coerce;
+
+-- | The token to use to retrieve the next page of results. This value is
+-- 'null' when there are no more results to return.
+dhrsNextToken :: Lens' DescribeHostsResponse (Maybe Text)
+dhrsNextToken = lens _dhrsNextToken (\ s a -> s{_dhrsNextToken = a});
+
+-- | The response status code.
+dhrsResponseStatus :: Lens' DescribeHostsResponse Int
+dhrsResponseStatus = lens _dhrsResponseStatus (\ s a -> s{_dhrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/DescribeIdFormat.hs b/gen/Network/AWS/EC2/DescribeIdFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/DescribeIdFormat.hs
@@ -0,0 +1,135 @@
+{-# 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.EC2.DescribeIdFormat
+-- Copyright   : (c) 2013-2015 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)
+--
+-- __Important: This command is reserved for future use, and is currently
+-- not available for you to use.__
+--
+-- Describes the ID format settings for your resources, for example, to
+-- view which resource types are enabled for longer IDs. This request only
+-- returns information about resource types whose ID formats can be
+-- modified; it does not return information about other resource types.
+--
+-- The following resource types support longer IDs: 'instance' |
+-- 'reservation'.
+--
+-- These settings apply to the IAM user who makes the request; they do not
+-- apply to the entire AWS account. By default, an IAM user defaults to the
+-- same settings as the root user, unless they explicitly override the
+-- settings by running the ModifyIdFormat command. These settings are
+-- applied on a per-region basis.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeIdFormat.html AWS API Reference> for DescribeIdFormat.
+module Network.AWS.EC2.DescribeIdFormat
+    (
+    -- * Creating a Request
+      describeIdFormat
+    , DescribeIdFormat
+    -- * Request Lenses
+    , difResource
+
+    -- * Destructuring the Response
+    , describeIdFormatResponse
+    , DescribeIdFormatResponse
+    -- * Response Lenses
+    , difrsStatuses
+    , difrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeIdFormat' smart constructor.
+newtype DescribeIdFormat = DescribeIdFormat'
+    { _difResource :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeIdFormat' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'difResource'
+describeIdFormat
+    :: DescribeIdFormat
+describeIdFormat =
+    DescribeIdFormat'
+    { _difResource = Nothing
+    }
+
+-- | The type of resource.
+difResource :: Lens' DescribeIdFormat (Maybe Text)
+difResource = lens _difResource (\ s a -> s{_difResource = a});
+
+instance AWSRequest DescribeIdFormat where
+        type Rs DescribeIdFormat = DescribeIdFormatResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 DescribeIdFormatResponse' <$>
+                   (x .@? "statusSet" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeIdFormat where
+        toHeaders = const mempty
+
+instance ToPath DescribeIdFormat where
+        toPath = const "/"
+
+instance ToQuery DescribeIdFormat where
+        toQuery DescribeIdFormat'{..}
+          = mconcat
+              ["Action" =: ("DescribeIdFormat" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "Resource" =: _difResource]
+
+-- | /See:/ 'describeIdFormatResponse' smart constructor.
+data DescribeIdFormatResponse = DescribeIdFormatResponse'
+    { _difrsStatuses       :: !(Maybe [IdFormat])
+    , _difrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeIdFormatResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'difrsStatuses'
+--
+-- * 'difrsResponseStatus'
+describeIdFormatResponse
+    :: Int -- ^ 'difrsResponseStatus'
+    -> DescribeIdFormatResponse
+describeIdFormatResponse pResponseStatus_ =
+    DescribeIdFormatResponse'
+    { _difrsStatuses = Nothing
+    , _difrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the ID format for the resource.
+difrsStatuses :: Lens' DescribeIdFormatResponse [IdFormat]
+difrsStatuses = lens _difrsStatuses (\ s a -> s{_difrsStatuses = a}) . _Default . _Coerce;
+
+-- | The response status code.
+difrsResponseStatus :: Lens' DescribeIdFormatResponse Int
+difrsResponseStatus = lens _difrsResponseStatus (\ s a -> s{_difrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/DescribeImageAttribute.hs b/gen/Network/AWS/EC2/DescribeImageAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeImageAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeImageAttribute.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeImages.hs b/gen/Network/AWS/EC2/DescribeImages.hs
--- a/gen/Network/AWS/EC2/DescribeImages.hs
+++ b/gen/Network/AWS/EC2/DescribeImages.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeImportImageTasks.hs b/gen/Network/AWS/EC2/DescribeImportImageTasks.hs
--- a/gen/Network/AWS/EC2/DescribeImportImageTasks.hs
+++ b/gen/Network/AWS/EC2/DescribeImportImageTasks.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeImportSnapshotTasks.hs b/gen/Network/AWS/EC2/DescribeImportSnapshotTasks.hs
--- a/gen/Network/AWS/EC2/DescribeImportSnapshotTasks.hs
+++ b/gen/Network/AWS/EC2/DescribeImportSnapshotTasks.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeInstanceAttribute.hs b/gen/Network/AWS/EC2/DescribeInstanceAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeInstanceAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeInstanceAttribute.hs
@@ -59,6 +59,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeInstanceStatus.hs b/gen/Network/AWS/EC2/DescribeInstanceStatus.hs
--- a/gen/Network/AWS/EC2/DescribeInstanceStatus.hs
+++ b/gen/Network/AWS/EC2/DescribeInstanceStatus.hs
@@ -70,6 +70,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DescribeInstances.hs b/gen/Network/AWS/EC2/DescribeInstances.hs
--- a/gen/Network/AWS/EC2/DescribeInstances.hs
+++ b/gen/Network/AWS/EC2/DescribeInstances.hs
@@ -56,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
@@ -96,6 +97,9 @@
 
 -- | One or more filters.
 --
+-- -   'affinity' - The affinity setting for an instance running on a
+--     Dedicated host ('default' | 'host').
+--
 -- -   'architecture' - The instance architecture ('i386' | 'x86_64').
 --
 -- -   'availability-zone' - The Availability Zone of the instance.
@@ -126,6 +130,9 @@
 -- -   'group-name' - The name of the security group for the instance.
 --     EC2-Classic only.
 --
+-- -   'host-Id' - The ID of the Dedicated host on which the instance is
+--     running, if applicable.
+--
 -- -   'hypervisor' - The hypervisor type of the instance ('ovm' | 'xen').
 --
 -- -   'iam-instance-profile.arn' - The instance profile associated with
@@ -220,7 +227,7 @@
 --     be 'false' for the instance to perform network address translation
 --     (NAT) in your VPC.
 --
--- -   'spot-instance-request-id' - The ID of the Spot Instance request.
+-- -   'spot-instance-request-id' - The ID of the Spot instance request.
 --
 -- -   'state-reason-code' - The reason code for the state change.
 --
@@ -242,7 +249,8 @@
 -- -   'tag-value' - The value of a tag assigned to the resource. This
 --     filter is independent of the 'tag-key' filter.
 --
--- -   'tenancy' - The tenancy of an instance ('dedicated' | 'default').
+-- -   'tenancy' - The tenancy of an instance ('dedicated' | 'default' |
+--     'host').
 --
 -- -   'virtualization-type' - The virtualization type of the instance
 --     ('paravirtual' | 'hvm').
@@ -436,7 +444,7 @@
 dirsNextToken :: Lens' DescribeInstancesResponse (Maybe Text)
 dirsNextToken = lens _dirsNextToken (\ s a -> s{_dirsNextToken = a});
 
--- | One or more reservations.
+-- | Zero or more reservations.
 dirsReservations :: Lens' DescribeInstancesResponse [Reservation]
 dirsReservations = lens _dirsReservations (\ s a -> s{_dirsReservations = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/DescribeInternetGateways.hs b/gen/Network/AWS/EC2/DescribeInternetGateways.hs
--- a/gen/Network/AWS/EC2/DescribeInternetGateways.hs
+++ b/gen/Network/AWS/EC2/DescribeInternetGateways.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeKeyPairs.hs b/gen/Network/AWS/EC2/DescribeKeyPairs.hs
--- a/gen/Network/AWS/EC2/DescribeKeyPairs.hs
+++ b/gen/Network/AWS/EC2/DescribeKeyPairs.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeMovingAddresses.hs b/gen/Network/AWS/EC2/DescribeMovingAddresses.hs
--- a/gen/Network/AWS/EC2/DescribeMovingAddresses.hs
+++ b/gen/Network/AWS/EC2/DescribeMovingAddresses.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeNatGateways.hs b/gen/Network/AWS/EC2/DescribeNatGateways.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/DescribeNatGateways.hs
@@ -0,0 +1,178 @@
+{-# 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.EC2.DescribeNatGateways
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Describes one or more of the your NAT gateways.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeNatGateways.html AWS API Reference> for DescribeNatGateways.
+module Network.AWS.EC2.DescribeNatGateways
+    (
+    -- * Creating a Request
+      describeNatGateways
+    , DescribeNatGateways
+    -- * Request Lenses
+    , dngNatGatewayIds
+    , dngNextToken
+    , dngFilter
+    , dngMaxResults
+
+    -- * Destructuring the Response
+    , describeNatGatewaysResponse
+    , DescribeNatGatewaysResponse
+    -- * Response Lenses
+    , dngrsNatGateways
+    , dngrsNextToken
+    , dngrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeNatGateways' smart constructor.
+data DescribeNatGateways = DescribeNatGateways'
+    { _dngNatGatewayIds :: !(Maybe [Text])
+    , _dngNextToken     :: !(Maybe Text)
+    , _dngFilter        :: !(Maybe [Filter])
+    , _dngMaxResults    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeNatGateways' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dngNatGatewayIds'
+--
+-- * 'dngNextToken'
+--
+-- * 'dngFilter'
+--
+-- * 'dngMaxResults'
+describeNatGateways
+    :: DescribeNatGateways
+describeNatGateways =
+    DescribeNatGateways'
+    { _dngNatGatewayIds = Nothing
+    , _dngNextToken = Nothing
+    , _dngFilter = Nothing
+    , _dngMaxResults = Nothing
+    }
+
+-- | One or more NAT gateway IDs.
+dngNatGatewayIds :: Lens' DescribeNatGateways [Text]
+dngNatGatewayIds = lens _dngNatGatewayIds (\ s a -> s{_dngNatGatewayIds = a}) . _Default . _Coerce;
+
+-- | The token to retrieve the next page of results.
+dngNextToken :: Lens' DescribeNatGateways (Maybe Text)
+dngNextToken = lens _dngNextToken (\ s a -> s{_dngNextToken = a});
+
+-- | One or more filters.
+--
+-- -   'nat-gateway-id' - The ID of the NAT gateway.
+--
+-- -   'state' - The state of the NAT gateway ('pending' | 'failed' |
+--     'available' | 'deleting' | 'deleted').
+--
+-- -   'subnet-id' - The ID of the subnet in which the NAT gateway resides.
+--
+-- -   'vpc-id' - The ID of the VPC in which the NAT gateway resides.
+--
+dngFilter :: Lens' DescribeNatGateways [Filter]
+dngFilter = lens _dngFilter (\ s a -> s{_dngFilter = a}) . _Default . _Coerce;
+
+-- | The maximum number of items to return for this request. The request
+-- returns a token that you can specify in a subsequent call to get the
+-- next set of results.
+--
+-- Constraint: If the value specified is greater than 1000, we return only
+-- 1000 items.
+dngMaxResults :: Lens' DescribeNatGateways (Maybe Int)
+dngMaxResults = lens _dngMaxResults (\ s a -> s{_dngMaxResults = a});
+
+instance AWSRequest DescribeNatGateways where
+        type Rs DescribeNatGateways =
+             DescribeNatGatewaysResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 DescribeNatGatewaysResponse' <$>
+                   (x .@? "natGatewaySet" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*> (x .@? "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeNatGateways where
+        toHeaders = const mempty
+
+instance ToPath DescribeNatGateways where
+        toPath = const "/"
+
+instance ToQuery DescribeNatGateways where
+        toQuery DescribeNatGateways'{..}
+          = mconcat
+              ["Action" =: ("DescribeNatGateways" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               toQuery
+                 (toQueryList "NatGatewayId" <$> _dngNatGatewayIds),
+               "NextToken" =: _dngNextToken,
+               toQuery (toQueryList "Filter" <$> _dngFilter),
+               "MaxResults" =: _dngMaxResults]
+
+-- | /See:/ 'describeNatGatewaysResponse' smart constructor.
+data DescribeNatGatewaysResponse = DescribeNatGatewaysResponse'
+    { _dngrsNatGateways    :: !(Maybe [NatGateway])
+    , _dngrsNextToken      :: !(Maybe Text)
+    , _dngrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeNatGatewaysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dngrsNatGateways'
+--
+-- * 'dngrsNextToken'
+--
+-- * 'dngrsResponseStatus'
+describeNatGatewaysResponse
+    :: Int -- ^ 'dngrsResponseStatus'
+    -> DescribeNatGatewaysResponse
+describeNatGatewaysResponse pResponseStatus_ =
+    DescribeNatGatewaysResponse'
+    { _dngrsNatGateways = Nothing
+    , _dngrsNextToken = Nothing
+    , _dngrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the NAT gateways.
+dngrsNatGateways :: Lens' DescribeNatGatewaysResponse [NatGateway]
+dngrsNatGateways = lens _dngrsNatGateways (\ s a -> s{_dngrsNatGateways = a}) . _Default . _Coerce;
+
+-- | The token to use to retrieve the next page of results. This value is
+-- 'null' when there are no more results to return.
+dngrsNextToken :: Lens' DescribeNatGatewaysResponse (Maybe Text)
+dngrsNextToken = lens _dngrsNextToken (\ s a -> s{_dngrsNextToken = a});
+
+-- | The response status code.
+dngrsResponseStatus :: Lens' DescribeNatGatewaysResponse Int
+dngrsResponseStatus = lens _dngrsResponseStatus (\ s a -> s{_dngrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/DescribeNetworkACLs.hs b/gen/Network/AWS/EC2/DescribeNetworkACLs.hs
--- a/gen/Network/AWS/EC2/DescribeNetworkACLs.hs
+++ b/gen/Network/AWS/EC2/DescribeNetworkACLs.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeNetworkInterfaceAttribute.hs b/gen/Network/AWS/EC2/DescribeNetworkInterfaceAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeNetworkInterfaceAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeNetworkInterfaceAttribute.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeNetworkInterfaces.hs b/gen/Network/AWS/EC2/DescribeNetworkInterfaces.hs
--- a/gen/Network/AWS/EC2/DescribeNetworkInterfaces.hs
+++ b/gen/Network/AWS/EC2/DescribeNetworkInterfaces.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -107,24 +108,27 @@
 --
 -- -   'attachment.attachment-id' - The ID of the interface attachment.
 --
+-- -   'attachment.attach.time' - The time that the network interface was
+--     attached to an instance.
+--
+-- -   'attachment.delete-on-termination' - Indicates whether the
+--     attachment is deleted when an instance is terminated.
+--
+-- -   'attachment.device-index' - The device index to which the network
+--     interface is attached.
+--
 -- -   'attachment.instance-id' - The ID of the instance to which the
 --     network interface is attached.
 --
 -- -   'attachment.instance-owner-id' - The owner ID of the instance to
 --     which the network interface is attached.
 --
--- -   'attachment.device-index' - The device index to which the network
---     interface is attached.
+-- -   'attachment.nat-gateway-id' - The ID of the NAT gateway to which the
+--     network interface is attached.
 --
 -- -   'attachment.status' - The status of the attachment ('attaching' |
 --     'attached' | 'detaching' | 'detached').
 --
--- -   'attachment.attach.time' - The time that the network interface was
---     attached to an instance.
---
--- -   'attachment.delete-on-termination' - Indicates whether the
---     attachment is deleted when an instance is terminated.
---
 -- -   'availability-zone' - The Availability Zone of the network
 --     interface.
 --
@@ -158,8 +162,8 @@
 -- -   'source-desk-check' - Indicates whether the network interface
 --     performs source\/destination checking. A value of 'true' means
 --     checking is enabled, and 'false' means checking is disabled. The
---     value must be 'false' for the network interface to perform Network
---     Address Translation (NAT) in your VPC.
+--     value must be 'false' for the network interface to perform network
+--     address translation (NAT) in your VPC.
 --
 -- -   'status' - The status of the network interface. If the network
 --     interface is not attached to an instance, the status is 'available';
diff --git a/gen/Network/AWS/EC2/DescribePlacementGroups.hs b/gen/Network/AWS/EC2/DescribePlacementGroups.hs
--- a/gen/Network/AWS/EC2/DescribePlacementGroups.hs
+++ b/gen/Network/AWS/EC2/DescribePlacementGroups.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribePrefixLists.hs b/gen/Network/AWS/EC2/DescribePrefixLists.hs
--- a/gen/Network/AWS/EC2/DescribePrefixLists.hs
+++ b/gen/Network/AWS/EC2/DescribePrefixLists.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeRegions.hs b/gen/Network/AWS/EC2/DescribeRegions.hs
--- a/gen/Network/AWS/EC2/DescribeRegions.hs
+++ b/gen/Network/AWS/EC2/DescribeRegions.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeReservedInstances.hs b/gen/Network/AWS/EC2/DescribeReservedInstances.hs
--- a/gen/Network/AWS/EC2/DescribeReservedInstances.hs
+++ b/gen/Network/AWS/EC2/DescribeReservedInstances.hs
@@ -18,9 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes one or more of the Reserved Instances that you purchased.
+-- Describes one or more of the Reserved instances that you purchased.
 --
--- For more information about Reserved Instances, see
+-- For more information about Reserved instances, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -82,24 +83,24 @@
 -- | One or more filters.
 --
 -- -   'availability-zone' - The Availability Zone where the Reserved
---     Instance can be used.
+--     instance can be used.
 --
--- -   'duration' - The duration of the Reserved Instance (one year or
+-- -   'duration' - The duration of the Reserved instance (one year or
 --     three years), in seconds ('31536000' | '94608000').
 --
--- -   'end' - The time when the Reserved Instance expires (for example,
+-- -   'end' - The time when the Reserved instance expires (for example,
 --     2015-08-07T11:54:42.000Z).
 --
--- -   'fixed-price' - The purchase price of the Reserved Instance (for
+-- -   'fixed-price' - The purchase price of the Reserved instance (for
 --     example, 9800.0).
 --
--- -   'instance-type' - The instance type on which the Reserved Instance
---     can be used.
+-- -   'instance-type' - The instance type that is covered by the
+--     reservation.
 --
--- -   'product-description' - The Reserved Instance product platform
+-- -   'product-description' - The Reserved instance product platform
 --     description. Instances that include '(Amazon VPC)' in the product
 --     platform description will only be displayed to EC2-Classic account
---     holders and are for use with Amazon VPC. ('Linux\/UNIX' |
+--     holders and are for use with Amazon VPC ('Linux\/UNIX' |
 --     'Linux\/UNIX (Amazon VPC)' | 'SUSE Linux' |
 --     'SUSE Linux (Amazon VPC)' | 'Red Hat Enterprise Linux' |
 --     'Red Hat Enterprise Linux (Amazon VPC)' | 'Windows' |
@@ -110,12 +111,12 @@
 --     'Windows with SQL Server Enterprise' |
 --     'Windows with SQL Server Enterprise (Amazon VPC)').
 --
--- -   'reserved-instances-id' - The ID of the Reserved Instance.
+-- -   'reserved-instances-id' - The ID of the Reserved instance.
 --
--- -   'start' - The time at which the Reserved Instance purchase request
+-- -   'start' - The time at which the Reserved instance purchase request
 --     was placed (for example, 2014-08-07T11:54:42.000Z).
 --
--- -   'state' - The state of the Reserved Instance ('payment-pending' |
+-- -   'state' - The state of the Reserved instance ('payment-pending' |
 --     'active' | 'payment-failed' | 'retired').
 --
 -- -   'tag':/key/=/value/ - The key\/value combination of a tag assigned
@@ -132,22 +133,22 @@
 -- -   'tag-value' - The value of a tag assigned to the resource. This
 --     filter is independent of the 'tag-key' filter.
 --
--- -   'usage-price' - The usage price of the Reserved Instance, per hour
+-- -   'usage-price' - The usage price of the Reserved instance, per hour
 --     (for example, 0.84).
 --
 driFilters :: Lens' DescribeReservedInstances [Filter]
 driFilters = lens _driFilters (\ s a -> s{_driFilters = a}) . _Default . _Coerce;
 
--- | One or more Reserved Instance IDs.
+-- | One or more Reserved instance IDs.
 --
--- Default: Describes all your Reserved Instances, or only those otherwise
+-- Default: Describes all your Reserved instances, or only those otherwise
 -- specified.
 driReservedInstancesIds :: Lens' DescribeReservedInstances [Text]
 driReservedInstancesIds = lens _driReservedInstancesIds (\ s a -> s{_driReservedInstancesIds = a}) . _Default . _Coerce;
 
--- | The Reserved Instance offering type. If you are using tools that predate
+-- | The Reserved instance offering type. If you are using tools that predate
 -- the 2011-11-01 API version, you only have access to the
--- 'Medium Utilization' Reserved Instance offering type.
+-- 'Medium Utilization' Reserved instance offering type.
 driOfferingType :: Lens' DescribeReservedInstances (Maybe OfferingTypeValues)
 driOfferingType = lens _driOfferingType (\ s a -> s{_driOfferingType = a});
 
@@ -211,7 +212,7 @@
     , _drirsResponseStatus = pResponseStatus_
     }
 
--- | A list of Reserved Instances.
+-- | A list of Reserved instances.
 drirsReservedInstances :: Lens' DescribeReservedInstancesResponse [ReservedInstances]
 drirsReservedInstances = lens _drirsReservedInstances (\ s a -> s{_drirsReservedInstances = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/DescribeReservedInstancesListings.hs b/gen/Network/AWS/EC2/DescribeReservedInstancesListings.hs
--- a/gen/Network/AWS/EC2/DescribeReservedInstancesListings.hs
+++ b/gen/Network/AWS/EC2/DescribeReservedInstancesListings.hs
@@ -18,24 +18,24 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes your account\'s Reserved Instance listings in the Reserved
+-- Describes your account\'s Reserved instance listings in the Reserved
 -- Instance Marketplace.
 --
 -- The Reserved Instance Marketplace matches sellers who want to resell
--- Reserved Instance capacity that they no longer need with buyers who want
--- to purchase additional capacity. Reserved Instances bought and sold
+-- Reserved instance capacity that they no longer need with buyers who want
+-- to purchase additional capacity. Reserved instances bought and sold
 -- through the Reserved Instance Marketplace work like any other Reserved
 -- Instances.
 --
--- As a seller, you choose to list some or all of your Reserved Instances,
+-- As a seller, you choose to list some or all of your Reserved instances,
 -- and you specify the upfront price to receive for them. Your Reserved
--- Instances are then listed in the Reserved Instance Marketplace and are
+-- instances are then listed in the Reserved Instance Marketplace and are
 -- available for purchase.
 --
--- As a buyer, you specify the configuration of the Reserved Instance to
+-- As a buyer, you specify the configuration of the Reserved instance to
 -- purchase, and the Marketplace matches what you\'re searching for with
 -- what\'s available. The Marketplace first sells the lowest priced
--- Reserved Instances to you, and continues to sell available Reserved
+-- Reserved instances to you, and continues to sell available Reserved
 -- Instance listings to you until your demand is met. You are charged based
 -- on the total price of all of the listings that you purchase.
 --
@@ -64,6 +64,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -95,12 +96,12 @@
 
 -- | One or more filters.
 --
--- -   'reserved-instances-id' - The ID of the Reserved Instances.
+-- -   'reserved-instances-id' - The ID of the Reserved instances.
 --
--- -   'reserved-instances-listing-id' - The ID of the Reserved Instances
+-- -   'reserved-instances-listing-id' - The ID of the Reserved instances
 --     listing.
 --
--- -   'status' - The status of the Reserved Instance listing ('pending' |
+-- -   'status' - The status of the Reserved instance listing ('pending' |
 --     'active' | 'cancelled' | 'closed').
 --
 -- -   'status-message' - The reason for the status.
@@ -108,11 +109,11 @@
 drilFilters :: Lens' DescribeReservedInstancesListings [Filter]
 drilFilters = lens _drilFilters (\ s a -> s{_drilFilters = a}) . _Default . _Coerce;
 
--- | One or more Reserved Instance IDs.
+-- | One or more Reserved instance IDs.
 drilReservedInstancesId :: Lens' DescribeReservedInstancesListings (Maybe Text)
 drilReservedInstancesId = lens _drilReservedInstancesId (\ s a -> s{_drilReservedInstancesId = a});
 
--- | One or more Reserved Instance Listing IDs.
+-- | One or more Reserved instance Listing IDs.
 drilReservedInstancesListingId :: Lens' DescribeReservedInstancesListings (Maybe Text)
 drilReservedInstancesListingId = lens _drilReservedInstancesListingId (\ s a -> s{_drilReservedInstancesListingId = a});
 
@@ -171,7 +172,7 @@
     , _drilrsResponseStatus = pResponseStatus_
     }
 
--- | Information about the Reserved Instance listing.
+-- | Information about the Reserved instance listing.
 drilrsReservedInstancesListings :: Lens' DescribeReservedInstancesListingsResponse [ReservedInstancesListing]
 drilrsReservedInstancesListings = lens _drilrsReservedInstancesListings (\ s a -> s{_drilrsReservedInstancesListings = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/DescribeReservedInstancesModifications.hs b/gen/Network/AWS/EC2/DescribeReservedInstancesModifications.hs
--- a/gen/Network/AWS/EC2/DescribeReservedInstancesModifications.hs
+++ b/gen/Network/AWS/EC2/DescribeReservedInstancesModifications.hs
@@ -18,8 +18,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the modifications made to your Reserved Instances. If no
--- parameter is specified, information about all your Reserved Instances
+-- Describes the modifications made to your Reserved instances. If no
+-- parameter is specified, information about all your Reserved instances
 -- modification requests is returned. If a modification ID is specified,
 -- only information about the specific modification is returned.
 --
@@ -51,6 +51,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
@@ -90,28 +91,28 @@
 -- -   'effective-date' - The time when the modification becomes effective.
 --
 -- -   'modification-result.reserved-instances-id' - The ID for the
---     Reserved Instances created as part of the modification request. This
+--     Reserved instances created as part of the modification request. This
 --     ID is only available when the status of the modification is
 --     'fulfilled'.
 --
 -- -   'modification-result.target-configuration.availability-zone' - The
---     Availability Zone for the new Reserved Instances.
+--     Availability Zone for the new Reserved instances.
 --
 -- -   'modification-result.target-configuration.instance-count ' - The
---     number of new Reserved Instances.
+--     number of new Reserved instances.
 --
 -- -   'modification-result.target-configuration.instance-type' - The
---     instance type of the new Reserved Instances.
+--     instance type of the new Reserved instances.
 --
 -- -   'modification-result.target-configuration.platform' - The network
---     platform of the new Reserved Instances ('EC2-Classic' | 'EC2-VPC').
+--     platform of the new Reserved instances ('EC2-Classic' | 'EC2-VPC').
 --
--- -   'reserved-instances-id' - The ID of the Reserved Instances modified.
+-- -   'reserved-instances-id' - The ID of the Reserved instances modified.
 --
 -- -   'reserved-instances-modification-id' - The ID of the modification
 --     request.
 --
--- -   'status' - The status of the Reserved Instances modification request
+-- -   'status' - The status of the Reserved instances modification request
 --     ('processing' | 'fulfilled' | 'failed').
 --
 -- -   'status-message' - The reason for the status.
@@ -206,7 +207,7 @@
 drimrsNextToken :: Lens' DescribeReservedInstancesModificationsResponse (Maybe Text)
 drimrsNextToken = lens _drimrsNextToken (\ s a -> s{_drimrsNextToken = a});
 
--- | The Reserved Instance modification information.
+-- | The Reserved instance modification information.
 drimrsReservedInstancesModifications :: Lens' DescribeReservedInstancesModificationsResponse [ReservedInstancesModification]
 drimrsReservedInstancesModifications = lens _drimrsReservedInstancesModifications (\ s a -> s{_drimrsReservedInstancesModifications = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/DescribeReservedInstancesOfferings.hs b/gen/Network/AWS/EC2/DescribeReservedInstancesOfferings.hs
--- a/gen/Network/AWS/EC2/DescribeReservedInstancesOfferings.hs
+++ b/gen/Network/AWS/EC2/DescribeReservedInstancesOfferings.hs
@@ -18,12 +18,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes Reserved Instance offerings that are available for purchase.
--- With Reserved Instances, you purchase the right to launch instances for
+-- Describes Reserved instance offerings that are available for purchase.
+-- With Reserved instances, you purchase the right to launch instances for
 -- a period of time. During that time period, you do not receive
 -- insufficient capacity errors, and you pay a lower usage rate than the
 -- rate charged for On-Demand instances for the actual time used.
 --
+-- If you have listed your own Reserved instances for sale in the Reserved
+-- Instance Marketplace, they will be excluded from these results. This is
+-- to ensure that you do not purchase your own Reserved instances.
+--
 -- For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
@@ -63,6 +67,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
@@ -144,7 +149,7 @@
 drioMaxDuration :: Lens' DescribeReservedInstancesOfferings (Maybe Integer)
 drioMaxDuration = lens _drioMaxDuration (\ s a -> s{_drioMaxDuration = a});
 
--- | The Reserved Instance product platform description. Instances that
+-- | The Reserved instance product platform description. Instances that
 -- include '(Amazon VPC)' in the description are for use with Amazon VPC.
 drioProductDescription :: Lens' DescribeReservedInstancesOfferings (Maybe RIProductDescription)
 drioProductDescription = lens _drioProductDescription (\ s a -> s{_drioProductDescription = a});
@@ -152,23 +157,23 @@
 -- | One or more filters.
 --
 -- -   'availability-zone' - The Availability Zone where the Reserved
---     Instance can be used.
+--     instance can be used.
 --
--- -   'duration' - The duration of the Reserved Instance (for example, one
+-- -   'duration' - The duration of the Reserved instance (for example, one
 --     year or three years), in seconds ('31536000' | '94608000').
 --
--- -   'fixed-price' - The purchase price of the Reserved Instance (for
+-- -   'fixed-price' - The purchase price of the Reserved instance (for
 --     example, 9800.0).
 --
--- -   'instance-type' - The instance type on which the Reserved Instance
---     can be used.
+-- -   'instance-type' - The instance type that is covered by the
+--     reservation.
 --
 -- -   'marketplace' - Set to 'true' to show only Reserved Instance
 --     Marketplace offerings. When this filter is not used, which is the
---     default behavior, all offerings from AWS and Reserved Instance
---     Marketplace are listed.
+--     default behavior, all offerings from both AWS and the Reserved
+--     Instance Marketplace are listed.
 --
--- -   'product-description' - The Reserved Instance product platform
+-- -   'product-description' - The Reserved instance product platform
 --     description. Instances that include '(Amazon VPC)' in the product
 --     platform description will only be displayed to EC2-Classic account
 --     holders and are for use with Amazon VPC. ('Linux\/UNIX' |
@@ -182,21 +187,21 @@
 --     'Windows with SQL Server Enterprise' |
 --     'Windows with SQL Server Enterprise (Amazon VPC)')
 --
--- -   'reserved-instances-offering-id' - The Reserved Instances offering
+-- -   'reserved-instances-offering-id' - The Reserved instances\' offering
 --     ID.
 --
--- -   'usage-price' - The usage price of the Reserved Instance, per hour
+-- -   'usage-price' - The usage price of the Reserved instance, per hour
 --     (for example, 0.84).
 --
 drioFilters :: Lens' DescribeReservedInstancesOfferings [Filter]
 drioFilters = lens _drioFilters (\ s a -> s{_drioFilters = a}) . _Default . _Coerce;
 
--- | Include Marketplace offerings in the response.
+-- | Include Reserved Instance Marketplace offerings in the response.
 drioIncludeMarketplace :: Lens' DescribeReservedInstancesOfferings (Maybe Bool)
 drioIncludeMarketplace = lens _drioIncludeMarketplace (\ s a -> s{_drioIncludeMarketplace = a});
 
--- | The instance type on which the Reserved Instance can be used. For more
--- information, see
+-- | The instance type that the reservation will cover (for example,
+-- 'm1.small'). For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 drioInstanceType :: Lens' DescribeReservedInstancesOfferings (Maybe InstanceType)
@@ -213,23 +218,23 @@
 drioMinDuration :: Lens' DescribeReservedInstancesOfferings (Maybe Integer)
 drioMinDuration = lens _drioMinDuration (\ s a -> s{_drioMinDuration = a});
 
--- | The Availability Zone in which the Reserved Instance can be used.
+-- | The Availability Zone in which the Reserved instance can be used.
 drioAvailabilityZone :: Lens' DescribeReservedInstancesOfferings (Maybe Text)
 drioAvailabilityZone = lens _drioAvailabilityZone (\ s a -> s{_drioAvailabilityZone = a});
 
--- | The Reserved Instance offering type. If you are using tools that predate
+-- | The Reserved instance offering type. If you are using tools that predate
 -- the 2011-11-01 API version, you only have access to the
--- 'Medium Utilization' Reserved Instance offering type.
+-- 'Medium Utilization' Reserved instance offering type.
 drioOfferingType :: Lens' DescribeReservedInstancesOfferings (Maybe OfferingTypeValues)
 drioOfferingType = lens _drioOfferingType (\ s a -> s{_drioOfferingType = a});
 
--- | One or more Reserved Instances offering IDs.
+-- | One or more Reserved instances offering IDs.
 drioReservedInstancesOfferingIds :: Lens' DescribeReservedInstancesOfferings [Text]
 drioReservedInstancesOfferingIds = lens _drioReservedInstancesOfferingIds (\ s a -> s{_drioReservedInstancesOfferingIds = a}) . _Default . _Coerce;
 
--- | The tenancy of the Reserved Instance offering. A Reserved Instance with
--- 'dedicated' tenancy runs on single-tenant hardware and can only be
--- launched within a VPC.
+-- | The tenancy of the instances covered by the reservation. A Reserved
+-- instance with a tenancy of 'dedicated' is applied to instances that run
+-- in a VPC on single-tenant hardware (i.e., Dedicated instances).
 --
 -- Default: 'default'
 drioInstanceTenancy :: Lens' DescribeReservedInstancesOfferings (Maybe Tenancy)
@@ -343,7 +348,7 @@
 driorsNextToken :: Lens' DescribeReservedInstancesOfferingsResponse (Maybe Text)
 driorsNextToken = lens _driorsNextToken (\ s a -> s{_driorsNextToken = a});
 
--- | A list of Reserved Instances offerings.
+-- | A list of Reserved instances offerings.
 driorsReservedInstancesOfferings :: Lens' DescribeReservedInstancesOfferingsResponse [ReservedInstancesOffering]
 driorsReservedInstancesOfferings = lens _driorsReservedInstancesOfferings (\ s a -> s{_driorsReservedInstancesOfferings = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/DescribeRouteTables.hs b/gen/Network/AWS/EC2/DescribeRouteTables.hs
--- a/gen/Network/AWS/EC2/DescribeRouteTables.hs
+++ b/gen/Network/AWS/EC2/DescribeRouteTables.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -91,7 +92,7 @@
 --     association.
 --
 -- -   'association.main' - Indicates whether the route table is the main
---     route table for the VPC.
+--     route table for the VPC ('true' | 'false').
 --
 -- -   'route-table-id' - The ID of the route table.
 --
@@ -106,6 +107,8 @@
 --
 -- -   'route.instance-id' - The ID of an instance specified in a route in
 --     the table.
+--
+-- -   'route.nat-gateway-id' - The ID of a NAT gateway.
 --
 -- -   'route.origin' - Describes how the route was created.
 --     'CreateRouteTable' indicates that the route was automatically
diff --git a/gen/Network/AWS/EC2/DescribeSecurityGroups.hs b/gen/Network/AWS/EC2/DescribeSecurityGroups.hs
--- a/gen/Network/AWS/EC2/DescribeSecurityGroups.hs
+++ b/gen/Network/AWS/EC2/DescribeSecurityGroups.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSnapshotAttribute.hs b/gen/Network/AWS/EC2/DescribeSnapshotAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeSnapshotAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeSnapshotAttribute.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSnapshots.hs b/gen/Network/AWS/EC2/DescribeSnapshots.hs
--- a/gen/Network/AWS/EC2/DescribeSnapshots.hs
+++ b/gen/Network/AWS/EC2/DescribeSnapshots.hs
@@ -94,6 +94,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DescribeSpotDatafeedSubscription.hs b/gen/Network/AWS/EC2/DescribeSpotDatafeedSubscription.hs
--- a/gen/Network/AWS/EC2/DescribeSpotDatafeedSubscription.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotDatafeedSubscription.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSpotFleetInstances.hs b/gen/Network/AWS/EC2/DescribeSpotFleetInstances.hs
--- a/gen/Network/AWS/EC2/DescribeSpotFleetInstances.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotFleetInstances.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSpotFleetRequestHistory.hs b/gen/Network/AWS/EC2/DescribeSpotFleetRequestHistory.hs
--- a/gen/Network/AWS/EC2/DescribeSpotFleetRequestHistory.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotFleetRequestHistory.hs
@@ -53,6 +53,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSpotFleetRequests.hs b/gen/Network/AWS/EC2/DescribeSpotFleetRequests.hs
--- a/gen/Network/AWS/EC2/DescribeSpotFleetRequests.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotFleetRequests.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs b/gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs
--- a/gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs
@@ -54,6 +54,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeSpotPriceHistory.hs b/gen/Network/AWS/EC2/DescribeSpotPriceHistory.hs
--- a/gen/Network/AWS/EC2/DescribeSpotPriceHistory.hs
+++ b/gen/Network/AWS/EC2/DescribeSpotPriceHistory.hs
@@ -60,6 +60,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DescribeSubnets.hs b/gen/Network/AWS/EC2/DescribeSubnets.hs
--- a/gen/Network/AWS/EC2/DescribeSubnets.hs
+++ b/gen/Network/AWS/EC2/DescribeSubnets.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeTags.hs b/gen/Network/AWS/EC2/DescribeTags.hs
--- a/gen/Network/AWS/EC2/DescribeTags.hs
+++ b/gen/Network/AWS/EC2/DescribeTags.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DescribeVPCAttribute.hs b/gen/Network/AWS/EC2/DescribeVPCAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeVPCAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCAttribute.hs
@@ -28,9 +28,9 @@
       describeVPCAttribute
     , DescribeVPCAttribute
     -- * Request Lenses
-    , dvpcaAttribute
     , dvpcaDryRun
     , dvpcaVPCId
+    , dvpcaAttribute
 
     -- * Destructuring the Response
     , describeVPCAttributeResponse
@@ -44,40 +44,38 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
 
 -- | /See:/ 'describeVPCAttribute' smart constructor.
 data DescribeVPCAttribute = DescribeVPCAttribute'
-    { _dvpcaAttribute :: !(Maybe VPCAttributeName)
-    , _dvpcaDryRun    :: !(Maybe Bool)
+    { _dvpcaDryRun    :: !(Maybe Bool)
     , _dvpcaVPCId     :: !Text
+    , _dvpcaAttribute :: !VPCAttributeName
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCAttribute' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dvpcaAttribute'
---
 -- * 'dvpcaDryRun'
 --
 -- * 'dvpcaVPCId'
+--
+-- * 'dvpcaAttribute'
 describeVPCAttribute
     :: Text -- ^ 'dvpcaVPCId'
+    -> VPCAttributeName -- ^ 'dvpcaAttribute'
     -> DescribeVPCAttribute
-describeVPCAttribute pVPCId_ =
+describeVPCAttribute pVPCId_ pAttribute_ =
     DescribeVPCAttribute'
-    { _dvpcaAttribute = Nothing
-    , _dvpcaDryRun = Nothing
+    { _dvpcaDryRun = Nothing
     , _dvpcaVPCId = pVPCId_
+    , _dvpcaAttribute = pAttribute_
     }
 
--- | The VPC attribute.
-dvpcaAttribute :: Lens' DescribeVPCAttribute (Maybe VPCAttributeName)
-dvpcaAttribute = lens _dvpcaAttribute (\ s a -> s{_dvpcaAttribute = a});
-
 -- | Checks whether you have the required permissions for the action, without
 -- actually making the request, and provides an error response. If you have
 -- the required permissions, the error response is 'DryRunOperation'.
@@ -89,6 +87,10 @@
 dvpcaVPCId :: Lens' DescribeVPCAttribute Text
 dvpcaVPCId = lens _dvpcaVPCId (\ s a -> s{_dvpcaVPCId = a});
 
+-- | The VPC attribute.
+dvpcaAttribute :: Lens' DescribeVPCAttribute VPCAttributeName
+dvpcaAttribute = lens _dvpcaAttribute (\ s a -> s{_dvpcaAttribute = a});
+
 instance AWSRequest DescribeVPCAttribute where
         type Rs DescribeVPCAttribute =
              DescribeVPCAttributeResponse
@@ -113,8 +115,8 @@
           = mconcat
               ["Action" =: ("DescribeVpcAttribute" :: ByteString),
                "Version" =: ("2015-10-01" :: ByteString),
-               "Attribute" =: _dvpcaAttribute,
-               "DryRun" =: _dvpcaDryRun, "VpcId" =: _dvpcaVPCId]
+               "DryRun" =: _dvpcaDryRun, "VpcId" =: _dvpcaVPCId,
+               "Attribute" =: _dvpcaAttribute]
 
 -- | /See:/ 'describeVPCAttributeResponse' smart constructor.
 data DescribeVPCAttributeResponse = DescribeVPCAttributeResponse'
diff --git a/gen/Network/AWS/EC2/DescribeVPCClassicLink.hs b/gen/Network/AWS/EC2/DescribeVPCClassicLink.hs
--- a/gen/Network/AWS/EC2/DescribeVPCClassicLink.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCClassicLink.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPCEndpointServices.hs b/gen/Network/AWS/EC2/DescribeVPCEndpointServices.hs
--- a/gen/Network/AWS/EC2/DescribeVPCEndpointServices.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCEndpointServices.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPCEndpoints.hs b/gen/Network/AWS/EC2/DescribeVPCEndpoints.hs
--- a/gen/Network/AWS/EC2/DescribeVPCEndpoints.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCEndpoints.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPCPeeringConnections.hs b/gen/Network/AWS/EC2/DescribeVPCPeeringConnections.hs
--- a/gen/Network/AWS/EC2/DescribeVPCPeeringConnections.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCPeeringConnections.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPCs.hs b/gen/Network/AWS/EC2/DescribeVPCs.hs
--- a/gen/Network/AWS/EC2/DescribeVPCs.hs
+++ b/gen/Network/AWS/EC2/DescribeVPCs.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPNConnections.hs b/gen/Network/AWS/EC2/DescribeVPNConnections.hs
--- a/gen/Network/AWS/EC2/DescribeVPNConnections.hs
+++ b/gen/Network/AWS/EC2/DescribeVPNConnections.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVPNGateways.hs b/gen/Network/AWS/EC2/DescribeVPNGateways.hs
--- a/gen/Network/AWS/EC2/DescribeVPNGateways.hs
+++ b/gen/Network/AWS/EC2/DescribeVPNGateways.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVolumeAttribute.hs b/gen/Network/AWS/EC2/DescribeVolumeAttribute.hs
--- a/gen/Network/AWS/EC2/DescribeVolumeAttribute.hs
+++ b/gen/Network/AWS/EC2/DescribeVolumeAttribute.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DescribeVolumeStatus.hs b/gen/Network/AWS/EC2/DescribeVolumeStatus.hs
--- a/gen/Network/AWS/EC2/DescribeVolumeStatus.hs
+++ b/gen/Network/AWS/EC2/DescribeVolumeStatus.hs
@@ -84,6 +84,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DescribeVolumes.hs b/gen/Network/AWS/EC2/DescribeVolumes.hs
--- a/gen/Network/AWS/EC2/DescribeVolumes.hs
+++ b/gen/Network/AWS/EC2/DescribeVolumes.hs
@@ -57,6 +57,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/EC2/DetachClassicLinkVPC.hs b/gen/Network/AWS/EC2/DetachClassicLinkVPC.hs
--- a/gen/Network/AWS/EC2/DetachClassicLinkVPC.hs
+++ b/gen/Network/AWS/EC2/DetachClassicLinkVPC.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DetachInternetGateway.hs b/gen/Network/AWS/EC2/DetachInternetGateway.hs
--- a/gen/Network/AWS/EC2/DetachInternetGateway.hs
+++ b/gen/Network/AWS/EC2/DetachInternetGateway.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DetachNetworkInterface.hs b/gen/Network/AWS/EC2/DetachNetworkInterface.hs
--- a/gen/Network/AWS/EC2/DetachNetworkInterface.hs
+++ b/gen/Network/AWS/EC2/DetachNetworkInterface.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DetachVPNGateway.hs b/gen/Network/AWS/EC2/DetachVPNGateway.hs
--- a/gen/Network/AWS/EC2/DetachVPNGateway.hs
+++ b/gen/Network/AWS/EC2/DetachVPNGateway.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DetachVolume.hs b/gen/Network/AWS/EC2/DetachVolume.hs
--- a/gen/Network/AWS/EC2/DetachVolume.hs
+++ b/gen/Network/AWS/EC2/DetachVolume.hs
@@ -61,6 +61,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DisableVGWRoutePropagation.hs b/gen/Network/AWS/EC2/DisableVGWRoutePropagation.hs
--- a/gen/Network/AWS/EC2/DisableVGWRoutePropagation.hs
+++ b/gen/Network/AWS/EC2/DisableVGWRoutePropagation.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DisableVPCClassicLink.hs b/gen/Network/AWS/EC2/DisableVPCClassicLink.hs
--- a/gen/Network/AWS/EC2/DisableVPCClassicLink.hs
+++ b/gen/Network/AWS/EC2/DisableVPCClassicLink.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DisassociateAddress.hs b/gen/Network/AWS/EC2/DisassociateAddress.hs
--- a/gen/Network/AWS/EC2/DisassociateAddress.hs
+++ b/gen/Network/AWS/EC2/DisassociateAddress.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/DisassociateRouteTable.hs b/gen/Network/AWS/EC2/DisassociateRouteTable.hs
--- a/gen/Network/AWS/EC2/DisassociateRouteTable.hs
+++ b/gen/Network/AWS/EC2/DisassociateRouteTable.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/EnableVGWRoutePropagation.hs b/gen/Network/AWS/EC2/EnableVGWRoutePropagation.hs
--- a/gen/Network/AWS/EC2/EnableVGWRoutePropagation.hs
+++ b/gen/Network/AWS/EC2/EnableVGWRoutePropagation.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/EnableVPCClassicLink.hs b/gen/Network/AWS/EC2/EnableVPCClassicLink.hs
--- a/gen/Network/AWS/EC2/EnableVPCClassicLink.hs
+++ b/gen/Network/AWS/EC2/EnableVPCClassicLink.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/EnableVolumeIO.hs b/gen/Network/AWS/EC2/EnableVolumeIO.hs
--- a/gen/Network/AWS/EC2/EnableVolumeIO.hs
+++ b/gen/Network/AWS/EC2/EnableVolumeIO.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/GetConsoleOutput.hs b/gen/Network/AWS/EC2/GetConsoleOutput.hs
--- a/gen/Network/AWS/EC2/GetConsoleOutput.hs
+++ b/gen/Network/AWS/EC2/GetConsoleOutput.hs
@@ -61,6 +61,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/GetPasswordData.hs b/gen/Network/AWS/EC2/GetPasswordData.hs
--- a/gen/Network/AWS/EC2/GetPasswordData.hs
+++ b/gen/Network/AWS/EC2/GetPasswordData.hs
@@ -56,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ImportImage.hs b/gen/Network/AWS/EC2/ImportImage.hs
--- a/gen/Network/AWS/EC2/ImportImage.hs
+++ b/gen/Network/AWS/EC2/ImportImage.hs
@@ -59,6 +59,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ImportInstance.hs b/gen/Network/AWS/EC2/ImportInstance.hs
--- a/gen/Network/AWS/EC2/ImportInstance.hs
+++ b/gen/Network/AWS/EC2/ImportInstance.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ImportKeyPair.hs b/gen/Network/AWS/EC2/ImportKeyPair.hs
--- a/gen/Network/AWS/EC2/ImportKeyPair.hs
+++ b/gen/Network/AWS/EC2/ImportKeyPair.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ImportSnapshot.hs b/gen/Network/AWS/EC2/ImportSnapshot.hs
--- a/gen/Network/AWS/EC2/ImportSnapshot.hs
+++ b/gen/Network/AWS/EC2/ImportSnapshot.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ImportVolume.hs b/gen/Network/AWS/EC2/ImportVolume.hs
--- a/gen/Network/AWS/EC2/ImportVolume.hs
+++ b/gen/Network/AWS/EC2/ImportVolume.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyHosts.hs b/gen/Network/AWS/EC2/ModifyHosts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/ModifyHosts.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.EC2.ModifyHosts
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Modify the auto-placement setting of a Dedicated host. When
+-- auto-placement is enabled, AWS will place instances that you launch with
+-- a tenancy of 'host', but without targeting a specific host ID, onto any
+-- available Dedicated host in your account which has auto-placement
+-- enabled. When auto-placement is disabled, you need to provide a host ID
+-- if you want the instance to launch onto a specific host. If no host ID
+-- is provided, the instance will be launched onto a suitable host which
+-- has auto-placement enabled.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyHosts.html AWS API Reference> for ModifyHosts.
+module Network.AWS.EC2.ModifyHosts
+    (
+    -- * Creating a Request
+      modifyHosts
+    , ModifyHosts
+    -- * Request Lenses
+    , mhHostIds
+    , mhAutoPlacement
+
+    -- * Destructuring the Response
+    , modifyHostsResponse
+    , ModifyHostsResponse
+    -- * Response Lenses
+    , mhrsUnsuccessful
+    , mhrsSuccessful
+    , mhrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'modifyHosts' smart constructor.
+data ModifyHosts = ModifyHosts'
+    { _mhHostIds       :: ![Text]
+    , _mhAutoPlacement :: !AutoPlacement
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHosts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhHostIds'
+--
+-- * 'mhAutoPlacement'
+modifyHosts
+    :: AutoPlacement -- ^ 'mhAutoPlacement'
+    -> ModifyHosts
+modifyHosts pAutoPlacement_ =
+    ModifyHosts'
+    { _mhHostIds = mempty
+    , _mhAutoPlacement = pAutoPlacement_
+    }
+
+-- | The host IDs of the Dedicated hosts you want to modify.
+mhHostIds :: Lens' ModifyHosts [Text]
+mhHostIds = lens _mhHostIds (\ s a -> s{_mhHostIds = a}) . _Coerce;
+
+-- | Specify whether to enable or disable auto-placement.
+mhAutoPlacement :: Lens' ModifyHosts AutoPlacement
+mhAutoPlacement = lens _mhAutoPlacement (\ s a -> s{_mhAutoPlacement = a});
+
+instance AWSRequest ModifyHosts where
+        type Rs ModifyHosts = ModifyHostsResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 ModifyHostsResponse' <$>
+                   (x .@? "unsuccessful" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*>
+                     (x .@? "successful" .!@ mempty >>=
+                        may (parseXMLList "item"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ModifyHosts where
+        toHeaders = const mempty
+
+instance ToPath ModifyHosts where
+        toPath = const "/"
+
+instance ToQuery ModifyHosts where
+        toQuery ModifyHosts'{..}
+          = mconcat
+              ["Action" =: ("ModifyHosts" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               toQueryList "HostId" _mhHostIds,
+               "AutoPlacement" =: _mhAutoPlacement]
+
+-- | /See:/ 'modifyHostsResponse' smart constructor.
+data ModifyHostsResponse = ModifyHostsResponse'
+    { _mhrsUnsuccessful   :: !(Maybe [UnsuccessfulItem])
+    , _mhrsSuccessful     :: !(Maybe [Text])
+    , _mhrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHostsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhrsUnsuccessful'
+--
+-- * 'mhrsSuccessful'
+--
+-- * 'mhrsResponseStatus'
+modifyHostsResponse
+    :: Int -- ^ 'mhrsResponseStatus'
+    -> ModifyHostsResponse
+modifyHostsResponse pResponseStatus_ =
+    ModifyHostsResponse'
+    { _mhrsUnsuccessful = Nothing
+    , _mhrsSuccessful = Nothing
+    , _mhrsResponseStatus = pResponseStatus_
+    }
+
+-- | The IDs of the Dedicated hosts that could not be modified. Check whether
+-- the setting you requested can be used.
+mhrsUnsuccessful :: Lens' ModifyHostsResponse [UnsuccessfulItem]
+mhrsUnsuccessful = lens _mhrsUnsuccessful (\ s a -> s{_mhrsUnsuccessful = a}) . _Default . _Coerce;
+
+-- | The IDs of the Dedicated hosts that were successfully modified.
+mhrsSuccessful :: Lens' ModifyHostsResponse [Text]
+mhrsSuccessful = lens _mhrsSuccessful (\ s a -> s{_mhrsSuccessful = a}) . _Default . _Coerce;
+
+-- | The response status code.
+mhrsResponseStatus :: Lens' ModifyHostsResponse Int
+mhrsResponseStatus = lens _mhrsResponseStatus (\ s a -> s{_mhrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/ModifyIdFormat.hs b/gen/Network/AWS/EC2/ModifyIdFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/ModifyIdFormat.hs
@@ -0,0 +1,116 @@
+{-# 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.EC2.ModifyIdFormat
+-- Copyright   : (c) 2013-2015 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)
+--
+-- __Important: This command is reserved for future use, and is currently
+-- not available for you to use.__
+--
+-- Modifies the ID format for the specified resource. You can specify that
+-- resources should receive longer IDs (17-character IDs) when they are
+-- created. The following resource types support longer IDs: 'instance' |
+-- 'reservation'.
+--
+-- This setting applies to the IAM user who makes the request; it does not
+-- apply to the entire AWS account. By default, an IAM user defaults to the
+-- same settings as the root user, unless they explicitly override the
+-- settings by running this request. These settings are applied on a
+-- per-region basis.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyIdFormat.html AWS API Reference> for ModifyIdFormat.
+module Network.AWS.EC2.ModifyIdFormat
+    (
+    -- * Creating a Request
+      modifyIdFormat
+    , ModifyIdFormat
+    -- * Request Lenses
+    , mifResource
+    , mifUseLongIds
+
+    -- * Destructuring the Response
+    , modifyIdFormatResponse
+    , ModifyIdFormatResponse
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'modifyIdFormat' smart constructor.
+data ModifyIdFormat = ModifyIdFormat'
+    { _mifResource   :: !Text
+    , _mifUseLongIds :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyIdFormat' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mifResource'
+--
+-- * 'mifUseLongIds'
+modifyIdFormat
+    :: Text -- ^ 'mifResource'
+    -> Bool -- ^ 'mifUseLongIds'
+    -> ModifyIdFormat
+modifyIdFormat pResource_ pUseLongIds_ =
+    ModifyIdFormat'
+    { _mifResource = pResource_
+    , _mifUseLongIds = pUseLongIds_
+    }
+
+-- | The type of resource.
+mifResource :: Lens' ModifyIdFormat Text
+mifResource = lens _mifResource (\ s a -> s{_mifResource = a});
+
+-- | Indicate whether the resource should use longer IDs (17-character IDs).
+mifUseLongIds :: Lens' ModifyIdFormat Bool
+mifUseLongIds = lens _mifUseLongIds (\ s a -> s{_mifUseLongIds = a});
+
+instance AWSRequest ModifyIdFormat where
+        type Rs ModifyIdFormat = ModifyIdFormatResponse
+        request = postQuery eC2
+        response = receiveNull ModifyIdFormatResponse'
+
+instance ToHeaders ModifyIdFormat where
+        toHeaders = const mempty
+
+instance ToPath ModifyIdFormat where
+        toPath = const "/"
+
+instance ToQuery ModifyIdFormat where
+        toQuery ModifyIdFormat'{..}
+          = mconcat
+              ["Action" =: ("ModifyIdFormat" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "Resource" =: _mifResource,
+               "UseLongIds" =: _mifUseLongIds]
+
+-- | /See:/ 'modifyIdFormatResponse' smart constructor.
+data ModifyIdFormatResponse =
+    ModifyIdFormatResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyIdFormatResponse' with the minimum fields required to make a request.
+--
+modifyIdFormatResponse
+    :: ModifyIdFormatResponse
+modifyIdFormatResponse = ModifyIdFormatResponse'
diff --git a/gen/Network/AWS/EC2/ModifyImageAttribute.hs b/gen/Network/AWS/EC2/ModifyImageAttribute.hs
--- a/gen/Network/AWS/EC2/ModifyImageAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifyImageAttribute.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyInstanceAttribute.hs b/gen/Network/AWS/EC2/ModifyInstanceAttribute.hs
--- a/gen/Network/AWS/EC2/ModifyInstanceAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifyInstanceAttribute.hs
@@ -56,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyInstancePlacement.hs b/gen/Network/AWS/EC2/ModifyInstancePlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/ModifyInstancePlacement.hs
@@ -0,0 +1,169 @@
+{-# 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.EC2.ModifyInstancePlacement
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Set the instance affinity value for a specific stopped instance and
+-- modify the instance tenancy setting.
+--
+-- Instance affinity is disabled by default. When instance affinity is
+-- 'host' and it is not associated with a specific Dedicated host, the next
+-- time it is launched it will automatically be associated with the host it
+-- lands on. This relationship will persist if the instance is
+-- stopped\/started, or rebooted.
+--
+-- You can modify the host ID associated with a stopped instance. If a
+-- stopped instance has a new host ID association, the instance will target
+-- that host when restarted.
+--
+-- You can modify the tenancy of a stopped instance with a tenancy of
+-- 'host' or 'dedicated'.
+--
+-- Affinity, hostID, and tenancy are not required parameters, but at least
+-- one of them must be specified in the request. Affinity and tenancy can
+-- be modified in the same request, but tenancy can only be modified on
+-- instances that are stopped.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyInstancePlacement.html AWS API Reference> for ModifyInstancePlacement.
+module Network.AWS.EC2.ModifyInstancePlacement
+    (
+    -- * Creating a Request
+      modifyInstancePlacement
+    , ModifyInstancePlacement
+    -- * Request Lenses
+    , mipAffinity
+    , mipHostId
+    , mipTenancy
+    , mipInstanceId
+
+    -- * Destructuring the Response
+    , modifyInstancePlacementResponse
+    , ModifyInstancePlacementResponse
+    -- * Response Lenses
+    , miprsReturn
+    , miprsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'modifyInstancePlacement' smart constructor.
+data ModifyInstancePlacement = ModifyInstancePlacement'
+    { _mipAffinity   :: !(Maybe Affinity)
+    , _mipHostId     :: !(Maybe Text)
+    , _mipTenancy    :: !(Maybe HostTenancy)
+    , _mipInstanceId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyInstancePlacement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mipAffinity'
+--
+-- * 'mipHostId'
+--
+-- * 'mipTenancy'
+--
+-- * 'mipInstanceId'
+modifyInstancePlacement
+    :: Text -- ^ 'mipInstanceId'
+    -> ModifyInstancePlacement
+modifyInstancePlacement pInstanceId_ =
+    ModifyInstancePlacement'
+    { _mipAffinity = Nothing
+    , _mipHostId = Nothing
+    , _mipTenancy = Nothing
+    , _mipInstanceId = pInstanceId_
+    }
+
+-- | The new affinity setting for the instance.
+mipAffinity :: Lens' ModifyInstancePlacement (Maybe Affinity)
+mipAffinity = lens _mipAffinity (\ s a -> s{_mipAffinity = a});
+
+-- | The ID of the Dedicated host that the instance will have affinity with.
+mipHostId :: Lens' ModifyInstancePlacement (Maybe Text)
+mipHostId = lens _mipHostId (\ s a -> s{_mipHostId = a});
+
+-- | The tenancy of the instance that you are modifying.
+mipTenancy :: Lens' ModifyInstancePlacement (Maybe HostTenancy)
+mipTenancy = lens _mipTenancy (\ s a -> s{_mipTenancy = a});
+
+-- | The ID of the instance that you are modifying.
+mipInstanceId :: Lens' ModifyInstancePlacement Text
+mipInstanceId = lens _mipInstanceId (\ s a -> s{_mipInstanceId = a});
+
+instance AWSRequest ModifyInstancePlacement where
+        type Rs ModifyInstancePlacement =
+             ModifyInstancePlacementResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 ModifyInstancePlacementResponse' <$>
+                   (x .@? "return") <*> (pure (fromEnum s)))
+
+instance ToHeaders ModifyInstancePlacement where
+        toHeaders = const mempty
+
+instance ToPath ModifyInstancePlacement where
+        toPath = const "/"
+
+instance ToQuery ModifyInstancePlacement where
+        toQuery ModifyInstancePlacement'{..}
+          = mconcat
+              ["Action" =:
+                 ("ModifyInstancePlacement" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               "Affinity" =: _mipAffinity, "HostId" =: _mipHostId,
+               "Tenancy" =: _mipTenancy,
+               "InstanceId" =: _mipInstanceId]
+
+-- | /See:/ 'modifyInstancePlacementResponse' smart constructor.
+data ModifyInstancePlacementResponse = ModifyInstancePlacementResponse'
+    { _miprsReturn         :: !(Maybe Bool)
+    , _miprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyInstancePlacementResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'miprsReturn'
+--
+-- * 'miprsResponseStatus'
+modifyInstancePlacementResponse
+    :: Int -- ^ 'miprsResponseStatus'
+    -> ModifyInstancePlacementResponse
+modifyInstancePlacementResponse pResponseStatus_ =
+    ModifyInstancePlacementResponse'
+    { _miprsReturn = Nothing
+    , _miprsResponseStatus = pResponseStatus_
+    }
+
+-- | Is 'true' if the request succeeds, and an error otherwise.
+miprsReturn :: Lens' ModifyInstancePlacementResponse (Maybe Bool)
+miprsReturn = lens _miprsReturn (\ s a -> s{_miprsReturn = a});
+
+-- | The response status code.
+miprsResponseStatus :: Lens' ModifyInstancePlacementResponse Int
+miprsResponseStatus = lens _miprsResponseStatus (\ s a -> s{_miprsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/ModifyNetworkInterfaceAttribute.hs b/gen/Network/AWS/EC2/ModifyNetworkInterfaceAttribute.hs
--- a/gen/Network/AWS/EC2/ModifyNetworkInterfaceAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifyNetworkInterfaceAttribute.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyReservedInstances.hs b/gen/Network/AWS/EC2/ModifyReservedInstances.hs
--- a/gen/Network/AWS/EC2/ModifyReservedInstances.hs
+++ b/gen/Network/AWS/EC2/ModifyReservedInstances.hs
@@ -19,8 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Modifies the Availability Zone, instance count, instance type, or
--- network platform (EC2-Classic or EC2-VPC) of your Reserved Instances.
--- The Reserved Instances to be modified must be identical, except for
+-- network platform (EC2-Classic or EC2-VPC) of your Reserved instances.
+-- The Reserved instances to be modified must be identical, except for
 -- Availability Zone, network platform, and instance type.
 --
 -- For more information, see
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -83,11 +84,11 @@
 mriClientToken :: Lens' ModifyReservedInstances (Maybe Text)
 mriClientToken = lens _mriClientToken (\ s a -> s{_mriClientToken = a});
 
--- | The IDs of the Reserved Instances to modify.
+-- | The IDs of the Reserved instances to modify.
 mriReservedInstancesIds :: Lens' ModifyReservedInstances [Text]
 mriReservedInstancesIds = lens _mriReservedInstancesIds (\ s a -> s{_mriReservedInstancesIds = a}) . _Coerce;
 
--- | The configuration settings for the Reserved Instances to modify.
+-- | The configuration settings for the Reserved instances to modify.
 mriTargetConfigurations :: Lens' ModifyReservedInstances [ReservedInstancesConfiguration]
 mriTargetConfigurations = lens _mriTargetConfigurations (\ s a -> s{_mriTargetConfigurations = a}) . _Coerce;
 
diff --git a/gen/Network/AWS/EC2/ModifySnapshotAttribute.hs b/gen/Network/AWS/EC2/ModifySnapshotAttribute.hs
--- a/gen/Network/AWS/EC2/ModifySnapshotAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifySnapshotAttribute.hs
@@ -52,6 +52,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifySpotFleetRequest.hs b/gen/Network/AWS/EC2/ModifySpotFleetRequest.hs
--- a/gen/Network/AWS/EC2/ModifySpotFleetRequest.hs
+++ b/gen/Network/AWS/EC2/ModifySpotFleetRequest.hs
@@ -62,6 +62,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifySubnetAttribute.hs b/gen/Network/AWS/EC2/ModifySubnetAttribute.hs
--- a/gen/Network/AWS/EC2/ModifySubnetAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifySubnetAttribute.hs
@@ -37,6 +37,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyVPCAttribute.hs b/gen/Network/AWS/EC2/ModifyVPCAttribute.hs
--- a/gen/Network/AWS/EC2/ModifyVPCAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifyVPCAttribute.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyVPCEndpoint.hs b/gen/Network/AWS/EC2/ModifyVPCEndpoint.hs
--- a/gen/Network/AWS/EC2/ModifyVPCEndpoint.hs
+++ b/gen/Network/AWS/EC2/ModifyVPCEndpoint.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ModifyVolumeAttribute.hs b/gen/Network/AWS/EC2/ModifyVolumeAttribute.hs
--- a/gen/Network/AWS/EC2/ModifyVolumeAttribute.hs
+++ b/gen/Network/AWS/EC2/ModifyVolumeAttribute.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/MonitorInstances.hs b/gen/Network/AWS/EC2/MonitorInstances.hs
--- a/gen/Network/AWS/EC2/MonitorInstances.hs
+++ b/gen/Network/AWS/EC2/MonitorInstances.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/MoveAddressToVPC.hs b/gen/Network/AWS/EC2/MoveAddressToVPC.hs
--- a/gen/Network/AWS/EC2/MoveAddressToVPC.hs
+++ b/gen/Network/AWS/EC2/MoveAddressToVPC.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/PurchaseReservedInstancesOffering.hs b/gen/Network/AWS/EC2/PurchaseReservedInstancesOffering.hs
--- a/gen/Network/AWS/EC2/PurchaseReservedInstancesOffering.hs
+++ b/gen/Network/AWS/EC2/PurchaseReservedInstancesOffering.hs
@@ -18,15 +18,15 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Purchases a Reserved Instance for use with your account. With Amazon EC2
--- Reserved Instances, you obtain a capacity reservation for a certain
+-- Purchases a Reserved instance for use with your account. With Amazon EC2
+-- Reserved instances, you obtain a capacity reservation for a certain
 -- instance configuration over a specified period of time and pay a lower
--- hourly rate compared to on-Demand Instance pricing.
+-- hourly rate compared to On-Demand Instance pricing.
 --
 -- Use DescribeReservedInstancesOfferings to get a list of Reserved
--- Instance offerings that match your specifications. After you\'ve
--- purchased a Reserved Instance, you can check for your new Reserved
--- Instance with DescribeReservedInstances.
+-- instance offerings that match your specifications. After you\'ve
+-- purchased a Reserved instance, you can check for your new Reserved
+-- instance with DescribeReservedInstances.
 --
 -- For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances>
@@ -56,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -92,7 +93,7 @@
     }
 
 -- | Specified for Reserved Instance Marketplace offerings to limit the total
--- order and ensure that the Reserved Instances are not purchased at
+-- order and ensure that the Reserved instances are not purchased at
 -- unexpected prices.
 prioLimitPrice :: Lens' PurchaseReservedInstancesOffering (Maybe ReservedInstanceLimitPrice)
 prioLimitPrice = lens _prioLimitPrice (\ s a -> s{_prioLimitPrice = a});
@@ -104,11 +105,11 @@
 prioDryRun :: Lens' PurchaseReservedInstancesOffering (Maybe Bool)
 prioDryRun = lens _prioDryRun (\ s a -> s{_prioDryRun = a});
 
--- | The ID of the Reserved Instance offering to purchase.
+-- | The ID of the Reserved instance offering to purchase.
 prioReservedInstancesOfferingId :: Lens' PurchaseReservedInstancesOffering Text
 prioReservedInstancesOfferingId = lens _prioReservedInstancesOfferingId (\ s a -> s{_prioReservedInstancesOfferingId = a});
 
--- | The number of Reserved Instances to purchase.
+-- | The number of Reserved instances to purchase.
 prioInstanceCount :: Lens' PurchaseReservedInstancesOffering Int
 prioInstanceCount = lens _prioInstanceCount (\ s a -> s{_prioInstanceCount = a});
 
@@ -167,7 +168,7 @@
     , _priorsResponseStatus = pResponseStatus_
     }
 
--- | The IDs of the purchased Reserved Instances.
+-- | The IDs of the purchased Reserved instances.
 priorsReservedInstancesId :: Lens' PurchaseReservedInstancesOfferingResponse (Maybe Text)
 priorsReservedInstancesId = lens _priorsReservedInstancesId (\ s a -> s{_priorsReservedInstancesId = a});
 
diff --git a/gen/Network/AWS/EC2/RebootInstances.hs b/gen/Network/AWS/EC2/RebootInstances.hs
--- a/gen/Network/AWS/EC2/RebootInstances.hs
+++ b/gen/Network/AWS/EC2/RebootInstances.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RegisterImage.hs b/gen/Network/AWS/EC2/RegisterImage.hs
--- a/gen/Network/AWS/EC2/RegisterImage.hs
+++ b/gen/Network/AWS/EC2/RegisterImage.hs
@@ -83,6 +83,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RejectVPCPeeringConnection.hs b/gen/Network/AWS/EC2/RejectVPCPeeringConnection.hs
--- a/gen/Network/AWS/EC2/RejectVPCPeeringConnection.hs
+++ b/gen/Network/AWS/EC2/RejectVPCPeeringConnection.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ReleaseAddress.hs b/gen/Network/AWS/EC2/ReleaseAddress.hs
--- a/gen/Network/AWS/EC2/ReleaseAddress.hs
+++ b/gen/Network/AWS/EC2/ReleaseAddress.hs
@@ -54,6 +54,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ReleaseHosts.hs b/gen/Network/AWS/EC2/ReleaseHosts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/EC2/ReleaseHosts.hs
@@ -0,0 +1,144 @@
+{-# 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.EC2.ReleaseHosts
+-- Copyright   : (c) 2013-2015 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)
+--
+-- When you no longer want to use a Dedicated host it can be released.
+-- On-Demand billing is stopped and the host goes into 'released' state.
+-- The host ID of Dedicated hosts that have been released can no longer be
+-- specified in another request, e.g., ModifyHosts. You must stop or
+-- terminate all instances on a host before it can be released.
+--
+-- When Dedicated hosts are released, it make take some time for them to
+-- stop counting toward your limit and you may receive capacity errors when
+-- trying to allocate new Dedicated hosts. Try waiting a few minutes, and
+-- then try again.
+--
+-- Released hosts will still appear in a DescribeHosts response.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ReleaseHosts.html AWS API Reference> for ReleaseHosts.
+module Network.AWS.EC2.ReleaseHosts
+    (
+    -- * Creating a Request
+      releaseHosts
+    , ReleaseHosts
+    -- * Request Lenses
+    , rhHostIds
+
+    -- * Destructuring the Response
+    , releaseHostsResponse
+    , ReleaseHostsResponse
+    -- * Response Lenses
+    , rhrsUnsuccessful
+    , rhrsSuccessful
+    , rhrsResponseStatus
+    ) where
+
+import           Network.AWS.EC2.Types
+import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'releaseHosts' smart constructor.
+newtype ReleaseHosts = ReleaseHosts'
+    { _rhHostIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReleaseHosts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rhHostIds'
+releaseHosts
+    :: ReleaseHosts
+releaseHosts =
+    ReleaseHosts'
+    { _rhHostIds = mempty
+    }
+
+-- | The IDs of the Dedicated hosts you want to release.
+rhHostIds :: Lens' ReleaseHosts [Text]
+rhHostIds = lens _rhHostIds (\ s a -> s{_rhHostIds = a}) . _Coerce;
+
+instance AWSRequest ReleaseHosts where
+        type Rs ReleaseHosts = ReleaseHostsResponse
+        request = postQuery eC2
+        response
+          = receiveXML
+              (\ s h x ->
+                 ReleaseHostsResponse' <$>
+                   (x .@? "unsuccessful" .!@ mempty >>=
+                      may (parseXMLList "item"))
+                     <*>
+                     (x .@? "successful" .!@ mempty >>=
+                        may (parseXMLList "item"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ReleaseHosts where
+        toHeaders = const mempty
+
+instance ToPath ReleaseHosts where
+        toPath = const "/"
+
+instance ToQuery ReleaseHosts where
+        toQuery ReleaseHosts'{..}
+          = mconcat
+              ["Action" =: ("ReleaseHosts" :: ByteString),
+               "Version" =: ("2015-10-01" :: ByteString),
+               toQueryList "HostId" _rhHostIds]
+
+-- | /See:/ 'releaseHostsResponse' smart constructor.
+data ReleaseHostsResponse = ReleaseHostsResponse'
+    { _rhrsUnsuccessful   :: !(Maybe [UnsuccessfulItem])
+    , _rhrsSuccessful     :: !(Maybe [Text])
+    , _rhrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReleaseHostsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rhrsUnsuccessful'
+--
+-- * 'rhrsSuccessful'
+--
+-- * 'rhrsResponseStatus'
+releaseHostsResponse
+    :: Int -- ^ 'rhrsResponseStatus'
+    -> ReleaseHostsResponse
+releaseHostsResponse pResponseStatus_ =
+    ReleaseHostsResponse'
+    { _rhrsUnsuccessful = Nothing
+    , _rhrsSuccessful = Nothing
+    , _rhrsResponseStatus = pResponseStatus_
+    }
+
+-- | The IDs of the Dedicated hosts that could not be released, including an
+-- error message.
+rhrsUnsuccessful :: Lens' ReleaseHostsResponse [UnsuccessfulItem]
+rhrsUnsuccessful = lens _rhrsUnsuccessful (\ s a -> s{_rhrsUnsuccessful = a}) . _Default . _Coerce;
+
+-- | The IDs of the Dedicated hosts that were successfully released.
+rhrsSuccessful :: Lens' ReleaseHostsResponse [Text]
+rhrsSuccessful = lens _rhrsSuccessful (\ s a -> s{_rhrsSuccessful = a}) . _Default . _Coerce;
+
+-- | The response status code.
+rhrsResponseStatus :: Lens' ReleaseHostsResponse Int
+rhrsResponseStatus = lens _rhrsResponseStatus (\ s a -> s{_rhrsResponseStatus = a});
diff --git a/gen/Network/AWS/EC2/ReplaceNetworkACLAssociation.hs b/gen/Network/AWS/EC2/ReplaceNetworkACLAssociation.hs
--- a/gen/Network/AWS/EC2/ReplaceNetworkACLAssociation.hs
+++ b/gen/Network/AWS/EC2/ReplaceNetworkACLAssociation.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ReplaceNetworkACLEntry.hs b/gen/Network/AWS/EC2/ReplaceNetworkACLEntry.hs
--- a/gen/Network/AWS/EC2/ReplaceNetworkACLEntry.hs
+++ b/gen/Network/AWS/EC2/ReplaceNetworkACLEntry.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ReplaceRoute.hs b/gen/Network/AWS/EC2/ReplaceRoute.hs
--- a/gen/Network/AWS/EC2/ReplaceRoute.hs
+++ b/gen/Network/AWS/EC2/ReplaceRoute.hs
@@ -20,7 +20,8 @@
 --
 -- Replaces an existing route within a route table in a VPC. You must
 -- provide only one of the following: Internet gateway or virtual private
--- gateway, NAT instance, VPC peering connection, or network interface.
+-- gateway, NAT instance, NAT gateway, VPC peering connection, or network
+-- interface.
 --
 -- For more information about route tables, see
 -- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html Route Tables>
@@ -35,6 +36,7 @@
     -- * Request Lenses
     , rrVPCPeeringConnectionId
     , rrInstanceId
+    , rrNatGatewayId
     , rrNetworkInterfaceId
     , rrGatewayId
     , rrDryRun
@@ -48,6 +50,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -56,6 +59,7 @@
 data ReplaceRoute = ReplaceRoute'
     { _rrVPCPeeringConnectionId :: !(Maybe Text)
     , _rrInstanceId             :: !(Maybe Text)
+    , _rrNatGatewayId           :: !(Maybe Text)
     , _rrNetworkInterfaceId     :: !(Maybe Text)
     , _rrGatewayId              :: !(Maybe Text)
     , _rrDryRun                 :: !(Maybe Bool)
@@ -71,6 +75,8 @@
 --
 -- * 'rrInstanceId'
 --
+-- * 'rrNatGatewayId'
+--
 -- * 'rrNetworkInterfaceId'
 --
 -- * 'rrGatewayId'
@@ -88,6 +94,7 @@
     ReplaceRoute'
     { _rrVPCPeeringConnectionId = Nothing
     , _rrInstanceId = Nothing
+    , _rrNatGatewayId = Nothing
     , _rrNetworkInterfaceId = Nothing
     , _rrGatewayId = Nothing
     , _rrDryRun = Nothing
@@ -103,6 +110,10 @@
 rrInstanceId :: Lens' ReplaceRoute (Maybe Text)
 rrInstanceId = lens _rrInstanceId (\ s a -> s{_rrInstanceId = a});
 
+-- | The ID of a NAT gateway.
+rrNatGatewayId :: Lens' ReplaceRoute (Maybe Text)
+rrNatGatewayId = lens _rrNatGatewayId (\ s a -> s{_rrNatGatewayId = a});
+
 -- | The ID of a network interface.
 rrNetworkInterfaceId :: Lens' ReplaceRoute (Maybe Text)
 rrNetworkInterfaceId = lens _rrNetworkInterfaceId (\ s a -> s{_rrNetworkInterfaceId = a});
@@ -146,6 +157,7 @@
                "VpcPeeringConnectionId" =:
                  _rrVPCPeeringConnectionId,
                "InstanceId" =: _rrInstanceId,
+               "NatGatewayId" =: _rrNatGatewayId,
                "NetworkInterfaceId" =: _rrNetworkInterfaceId,
                "GatewayId" =: _rrGatewayId, "DryRun" =: _rrDryRun,
                "RouteTableId" =: _rrRouteTableId,
diff --git a/gen/Network/AWS/EC2/ReplaceRouteTableAssociation.hs b/gen/Network/AWS/EC2/ReplaceRouteTableAssociation.hs
--- a/gen/Network/AWS/EC2/ReplaceRouteTableAssociation.hs
+++ b/gen/Network/AWS/EC2/ReplaceRouteTableAssociation.hs
@@ -51,6 +51,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ReportInstanceStatus.hs b/gen/Network/AWS/EC2/ReportInstanceStatus.hs
--- a/gen/Network/AWS/EC2/ReportInstanceStatus.hs
+++ b/gen/Network/AWS/EC2/ReportInstanceStatus.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RequestSpotFleet.hs b/gen/Network/AWS/EC2/RequestSpotFleet.hs
--- a/gen/Network/AWS/EC2/RequestSpotFleet.hs
+++ b/gen/Network/AWS/EC2/RequestSpotFleet.hs
@@ -58,6 +58,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RequestSpotInstances.hs b/gen/Network/AWS/EC2/RequestSpotInstances.hs
--- a/gen/Network/AWS/EC2/RequestSpotInstances.hs
+++ b/gen/Network/AWS/EC2/RequestSpotInstances.hs
@@ -55,6 +55,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ResetImageAttribute.hs b/gen/Network/AWS/EC2/ResetImageAttribute.hs
--- a/gen/Network/AWS/EC2/ResetImageAttribute.hs
+++ b/gen/Network/AWS/EC2/ResetImageAttribute.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ResetInstanceAttribute.hs b/gen/Network/AWS/EC2/ResetInstanceAttribute.hs
--- a/gen/Network/AWS/EC2/ResetInstanceAttribute.hs
+++ b/gen/Network/AWS/EC2/ResetInstanceAttribute.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ResetNetworkInterfaceAttribute.hs b/gen/Network/AWS/EC2/ResetNetworkInterfaceAttribute.hs
--- a/gen/Network/AWS/EC2/ResetNetworkInterfaceAttribute.hs
+++ b/gen/Network/AWS/EC2/ResetNetworkInterfaceAttribute.hs
@@ -39,6 +39,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/ResetSnapshotAttribute.hs b/gen/Network/AWS/EC2/ResetSnapshotAttribute.hs
--- a/gen/Network/AWS/EC2/ResetSnapshotAttribute.hs
+++ b/gen/Network/AWS/EC2/ResetSnapshotAttribute.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RestoreAddressToClassic.hs b/gen/Network/AWS/EC2/RestoreAddressToClassic.hs
--- a/gen/Network/AWS/EC2/RestoreAddressToClassic.hs
+++ b/gen/Network/AWS/EC2/RestoreAddressToClassic.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RevokeSecurityGroupEgress.hs b/gen/Network/AWS/EC2/RevokeSecurityGroupEgress.hs
--- a/gen/Network/AWS/EC2/RevokeSecurityGroupEgress.hs
+++ b/gen/Network/AWS/EC2/RevokeSecurityGroupEgress.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Removes one or more egress rules from a security group for EC2-VPC. The
--- values that you specify in the revoke request (for example, ports) must
--- match the existing rule\'s values for the rule to be revoked.
+-- [EC2-VPC only] Removes one or more egress rules from a security group
+-- for EC2-VPC. This action doesn\'t apply to security groups for use in
+-- EC2-Classic. The values that you specify in the revoke request (for
+-- example, ports) must match the existing rule\'s values for the rule to
+-- be revoked.
 --
 -- Each rule consists of the protocol and the CIDR range or source security
 -- group. For the TCP and UDP protocols, you must also specify the
@@ -54,6 +56,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -109,7 +112,8 @@
     }
 
 -- | The start of port range for the TCP and UDP protocols, or an ICMP type
--- number. For the ICMP type number, use '-1' to specify all ICMP types.
+-- number. We recommend that you specify the port range in a set of IP
+-- permissions instead.
 rsgeFromPort :: Lens' RevokeSecurityGroupEgress (Maybe Int)
 rsgeFromPort = lens _rsgeFromPort (\ s a -> s{_rsgeFromPort = a});
 
@@ -118,20 +122,19 @@
 rsgeIPPermissions :: Lens' RevokeSecurityGroupEgress [IPPermission]
 rsgeIPPermissions = lens _rsgeIPPermissions (\ s a -> s{_rsgeIPPermissions = a}) . _Default . _Coerce;
 
--- | The IP protocol name ('tcp', 'udp', 'icmp') or number (see
--- <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>).
--- Use '-1' to specify all.
+-- | The IP protocol name or number. We recommend that you specify the
+-- protocol in a set of IP permissions instead.
 rsgeIPProtocol :: Lens' RevokeSecurityGroupEgress (Maybe Text)
 rsgeIPProtocol = lens _rsgeIPProtocol (\ s a -> s{_rsgeIPProtocol = a});
 
--- | The end of port range for the TCP and UDP protocols, or an ICMP code
--- number. For the ICMP code number, use '-1' to specify all ICMP codes for
--- the ICMP type.
+-- | The end of port range for the TCP and UDP protocols, or an ICMP type
+-- number. We recommend that you specify the port range in a set of IP
+-- permissions instead.
 rsgeToPort :: Lens' RevokeSecurityGroupEgress (Maybe Int)
 rsgeToPort = lens _rsgeToPort (\ s a -> s{_rsgeToPort = a});
 
--- | The CIDR IP address range. You can\'t specify this parameter when
--- specifying a source security group.
+-- | The CIDR IP address range. We recommend that you specify the CIDR range
+-- in a set of IP permissions instead.
 rsgeCIdRIP :: Lens' RevokeSecurityGroupEgress (Maybe Text)
 rsgeCIdRIP = lens _rsgeCIdRIP (\ s a -> s{_rsgeCIdRIP = a});
 
diff --git a/gen/Network/AWS/EC2/RevokeSecurityGroupIngress.hs b/gen/Network/AWS/EC2/RevokeSecurityGroupIngress.hs
--- a/gen/Network/AWS/EC2/RevokeSecurityGroupIngress.hs
+++ b/gen/Network/AWS/EC2/RevokeSecurityGroupIngress.hs
@@ -55,6 +55,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/RunInstances.hs b/gen/Network/AWS/EC2/RunInstances.hs
--- a/gen/Network/AWS/EC2/RunInstances.hs
+++ b/gen/Network/AWS/EC2/RunInstances.hs
@@ -105,6 +105,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/StartInstances.hs b/gen/Network/AWS/EC2/StartInstances.hs
--- a/gen/Network/AWS/EC2/StartInstances.hs
+++ b/gen/Network/AWS/EC2/StartInstances.hs
@@ -61,6 +61,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/StopInstances.hs b/gen/Network/AWS/EC2/StopInstances.hs
--- a/gen/Network/AWS/EC2/StopInstances.hs
+++ b/gen/Network/AWS/EC2/StopInstances.hs
@@ -22,7 +22,7 @@
 -- instance from stopped to started, Amazon EC2 charges a full instance
 -- hour, even if transitions happen multiple times within a single hour.
 --
--- You can\'t start or stop Spot Instances.
+-- You can\'t start or stop Spot instances.
 --
 -- Instances that use Amazon EBS volumes as their root devices can be
 -- quickly stopped and started. When an instance is stopped, the compute
@@ -74,6 +74,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/TerminateInstances.hs b/gen/Network/AWS/EC2/TerminateInstances.hs
--- a/gen/Network/AWS/EC2/TerminateInstances.hs
+++ b/gen/Network/AWS/EC2/TerminateInstances.hs
@@ -63,6 +63,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/Types.hs b/gen/Network/AWS/EC2/Types.hs
--- a/gen/Network/AWS/EC2/Types.hs
+++ b/gen/Network/AWS/EC2/Types.hs
@@ -23,6 +23,12 @@
     -- * AddressStatus
     , AddressStatus (..)
 
+    -- * Affinity
+    , Affinity (..)
+
+    -- * AllocationState
+    , AllocationState (..)
+
     -- * AllocationStrategy
     , AllocationStrategy (..)
 
@@ -32,6 +38,9 @@
     -- * AttachmentStatus
     , AttachmentStatus (..)
 
+    -- * AutoPlacement
+    , AutoPlacement (..)
+
     -- * AvailabilityZoneState
     , AvailabilityZoneState (..)
 
@@ -89,6 +98,9 @@
     -- * GatewayType
     , GatewayType (..)
 
+    -- * HostTenancy
+    , HostTenancy (..)
+
     -- * HypervisorType
     , HypervisorType (..)
 
@@ -125,12 +137,18 @@
     -- * MoveStatus
     , MoveStatus (..)
 
+    -- * NatGatewayState
+    , NatGatewayState (..)
+
     -- * NetworkInterfaceAttribute
     , NetworkInterfaceAttribute (..)
 
     -- * NetworkInterfaceStatus
     , NetworkInterfaceStatus (..)
 
+    -- * NetworkInterfaceType
+    , NetworkInterfaceType (..)
+
     -- * OfferingTypeValues
     , OfferingTypeValues (..)
 
@@ -310,6 +328,12 @@
     , availabilityZoneMessage
     , azmMessage
 
+    -- * AvailableCapacity
+    , AvailableCapacity
+    , availableCapacity
+    , acAvailableInstanceCapacity
+    , acAvailableVCPUs
+
     -- * BlobAttributeValue
     , BlobAttributeValue
     , blobAttributeValue
@@ -545,6 +569,33 @@
     , hrEventType
     , hrEventInformation
 
+    -- * Host
+    , Host
+    , host
+    , hState
+    , hClientToken
+    , hHostId
+    , hAvailableCapacity
+    , hHostReservationId
+    , hHostProperties
+    , hAvailabilityZone
+    , hInstances
+    , hAutoPlacement
+
+    -- * HostInstance
+    , HostInstance
+    , hostInstance
+    , hiInstanceId
+    , hiInstanceType
+
+    -- * HostProperties
+    , HostProperties
+    , hostProperties
+    , hpInstanceType
+    , hpTotalVCPUs
+    , hpCores
+    , hpSockets
+
     -- * IAMInstanceProfile
     , IAMInstanceProfile
     , iamInstanceProfile
@@ -578,6 +629,13 @@
     , ipRange
     , irCIdRIP
 
+    -- * IdFormat
+    , IdFormat
+    , idFormat
+    , ifUseLongIds
+    , ifDeadline
+    , ifResource
+
     -- * Image
     , Image
     , image
@@ -735,6 +793,13 @@
     , ibdmsEBS
     , ibdmsDeviceName
 
+    -- * InstanceCapacity
+    , InstanceCapacity
+    , instanceCapacity
+    , icAvailableCapacity
+    , icInstanceType
+    , icTotalCapacity
+
     -- * InstanceCount
     , InstanceCount
     , instanceCount
@@ -914,6 +979,27 @@
     , masMoveStatus
     , masPublicIP
 
+    -- * NatGateway
+    , NatGateway
+    , natGateway
+    , ngState
+    , ngFailureCode
+    , ngVPCId
+    , ngFailureMessage
+    , ngNatGatewayId
+    , ngSubnetId
+    , ngDeleteTime
+    , ngNatGatewayAddresses
+    , ngCreateTime
+
+    -- * NatGatewayAddress
+    , NatGatewayAddress
+    , natGatewayAddress
+    , ngaPrivateIP
+    , ngaAllocationId
+    , ngaNetworkInterfaceId
+    , ngaPublicIP
+
     -- * NetworkACL
     , NetworkACL
     , networkACL
@@ -949,6 +1035,7 @@
     , niStatus
     , niPrivateIPAddresses
     , niSourceDestCheck
+    , niInterfaceType
     , niVPCId
     , niTagSet
     , niRequesterManaged
@@ -1007,6 +1094,8 @@
     -- * Placement
     , Placement
     , placement
+    , pAffinity
+    , pHostId
     , pAvailabilityZone
     , pTenancy
     , pGroupName
@@ -1211,6 +1300,7 @@
     , rInstanceId
     , rOrigin
     , rState
+    , rNatGatewayId
     , rNetworkInterfaceId
     , rGatewayId
     , rInstanceOwnerId
@@ -1675,6 +1765,7 @@
 
 import           Network.AWS.EC2.Types.Product
 import           Network.AWS.EC2.Types.Sum
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
diff --git a/gen/Network/AWS/EC2/Types/Product.hs b/gen/Network/AWS/EC2/Types/Product.hs
--- a/gen/Network/AWS/EC2/Types/Product.hs
+++ b/gen/Network/AWS/EC2/Types/Product.hs
@@ -18,6 +18,7 @@
 module Network.AWS.EC2.Types.Product where
 
 import           Network.AWS.EC2.Types.Sum
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 
 -- | Describes an account attribute.
@@ -366,6 +367,44 @@
         parseXML x
           = AvailabilityZoneMessage' <$> (x .@? "message")
 
+-- | The capacity information for instances launched onto the Dedicated host.
+--
+-- /See:/ 'availableCapacity' smart constructor.
+data AvailableCapacity = AvailableCapacity'
+    { _acAvailableInstanceCapacity :: !(Maybe [InstanceCapacity])
+    , _acAvailableVCPUs            :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AvailableCapacity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acAvailableInstanceCapacity'
+--
+-- * 'acAvailableVCPUs'
+availableCapacity
+    :: AvailableCapacity
+availableCapacity =
+    AvailableCapacity'
+    { _acAvailableInstanceCapacity = Nothing
+    , _acAvailableVCPUs = Nothing
+    }
+
+-- | The total number of instances that the Dedicated host supports.
+acAvailableInstanceCapacity :: Lens' AvailableCapacity [InstanceCapacity]
+acAvailableInstanceCapacity = lens _acAvailableInstanceCapacity (\ s a -> s{_acAvailableInstanceCapacity = a}) . _Default . _Coerce;
+
+-- | The number of vCPUs available on the Dedicated host.
+acAvailableVCPUs :: Lens' AvailableCapacity (Maybe Int)
+acAvailableVCPUs = lens _acAvailableVCPUs (\ s a -> s{_acAvailableVCPUs = a});
+
+instance FromXML AvailableCapacity where
+        parseXML x
+          = AvailableCapacity' <$>
+              (x .@? "availableInstanceCapacity" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "availableVCpus")
+
 -- | /See:/ 'blobAttributeValue' smart constructor.
 newtype BlobAttributeValue = BlobAttributeValue'
     { _bavValue :: Maybe Base64
@@ -2022,9 +2061,11 @@
 
 -- | Information about the error that occurred. 'Rate limited' indicates that
 -- CloudWatch logs throttling has been applied for one or more network
--- interfaces. 'Access error' indicates that the IAM role associated with
--- the flow log does not have sufficient permissions to publish to
--- CloudWatch Logs. 'Unknown error' indicates an internal error.
+-- interfaces, or that you\'ve reached the limit on the number of
+-- CloudWatch Logs log groups that you can create. 'Access error' indicates
+-- that the IAM role associated with the flow log does not have sufficient
+-- permissions to publish to CloudWatch Logs. 'Unknown error' indicates an
+-- internal error.
 flDeliverLogsErrorMessage :: Lens' FlowLog (Maybe Text)
 flDeliverLogsErrorMessage = lens _flDeliverLogsErrorMessage (\ s a -> s{_flDeliverLogsErrorMessage = a});
 
@@ -2152,6 +2193,200 @@
               (x .@ "timestamp") <*> (x .@ "eventType") <*>
                 (x .@ "eventInformation")
 
+-- | Describes the properties of the Dedicated host.
+--
+-- /See:/ 'host' smart constructor.
+data Host = Host'
+    { _hState             :: !(Maybe AllocationState)
+    , _hClientToken       :: !(Maybe Text)
+    , _hHostId            :: !(Maybe Text)
+    , _hAvailableCapacity :: !(Maybe AvailableCapacity)
+    , _hHostReservationId :: !(Maybe Text)
+    , _hHostProperties    :: !(Maybe HostProperties)
+    , _hAvailabilityZone  :: !(Maybe Text)
+    , _hInstances         :: !(Maybe [HostInstance])
+    , _hAutoPlacement     :: !(Maybe AutoPlacement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Host' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hState'
+--
+-- * 'hClientToken'
+--
+-- * 'hHostId'
+--
+-- * 'hAvailableCapacity'
+--
+-- * 'hHostReservationId'
+--
+-- * 'hHostProperties'
+--
+-- * 'hAvailabilityZone'
+--
+-- * 'hInstances'
+--
+-- * 'hAutoPlacement'
+host
+    :: Host
+host =
+    Host'
+    { _hState = Nothing
+    , _hClientToken = Nothing
+    , _hHostId = Nothing
+    , _hAvailableCapacity = Nothing
+    , _hHostReservationId = Nothing
+    , _hHostProperties = Nothing
+    , _hAvailabilityZone = Nothing
+    , _hInstances = Nothing
+    , _hAutoPlacement = Nothing
+    }
+
+-- | The Dedicated host\'s state.
+hState :: Lens' Host (Maybe AllocationState)
+hState = lens _hState (\ s a -> s{_hState = a});
+
+-- | Unique, case-sensitive identifier you provide to ensure idempotency of
+-- the request. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+hClientToken :: Lens' Host (Maybe Text)
+hClientToken = lens _hClientToken (\ s a -> s{_hClientToken = a});
+
+-- | The ID of the Dedicated host.
+hHostId :: Lens' Host (Maybe Text)
+hHostId = lens _hHostId (\ s a -> s{_hHostId = a});
+
+-- | The number of new instances that can be launched onto the Dedicated
+-- host.
+hAvailableCapacity :: Lens' Host (Maybe AvailableCapacity)
+hAvailableCapacity = lens _hAvailableCapacity (\ s a -> s{_hAvailableCapacity = a});
+
+-- | The reservation ID of the Dedicated host. This returns a 'null' response
+-- if the Dedicated host doesn\'t have an associated reservation.
+hHostReservationId :: Lens' Host (Maybe Text)
+hHostReservationId = lens _hHostReservationId (\ s a -> s{_hHostReservationId = a});
+
+-- | The hardware specifications of the Dedicated host.
+hHostProperties :: Lens' Host (Maybe HostProperties)
+hHostProperties = lens _hHostProperties (\ s a -> s{_hHostProperties = a});
+
+-- | The Availability Zone of the Dedicated host.
+hAvailabilityZone :: Lens' Host (Maybe Text)
+hAvailabilityZone = lens _hAvailabilityZone (\ s a -> s{_hAvailabilityZone = a});
+
+-- | The IDs and instance type that are currently running on the Dedicated
+-- host.
+hInstances :: Lens' Host [HostInstance]
+hInstances = lens _hInstances (\ s a -> s{_hInstances = a}) . _Default . _Coerce;
+
+-- | Whether auto-placement is on or off.
+hAutoPlacement :: Lens' Host (Maybe AutoPlacement)
+hAutoPlacement = lens _hAutoPlacement (\ s a -> s{_hAutoPlacement = a});
+
+instance FromXML Host where
+        parseXML x
+          = Host' <$>
+              (x .@? "state") <*> (x .@? "clientToken") <*>
+                (x .@? "hostId")
+                <*> (x .@? "availableCapacity")
+                <*> (x .@? "hostReservationId")
+                <*> (x .@? "hostProperties")
+                <*> (x .@? "availabilityZone")
+                <*>
+                (x .@? "instances" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "autoPlacement")
+
+-- | /See:/ 'hostInstance' smart constructor.
+data HostInstance = HostInstance'
+    { _hiInstanceId   :: !(Maybe Text)
+    , _hiInstanceType :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HostInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hiInstanceId'
+--
+-- * 'hiInstanceType'
+hostInstance
+    :: HostInstance
+hostInstance =
+    HostInstance'
+    { _hiInstanceId = Nothing
+    , _hiInstanceType = Nothing
+    }
+
+-- | the IDs of instances that are running on the Dedicated host.
+hiInstanceId :: Lens' HostInstance (Maybe Text)
+hiInstanceId = lens _hiInstanceId (\ s a -> s{_hiInstanceId = a});
+
+-- | The instance type size (e.g., m3.medium) of the running instance.
+hiInstanceType :: Lens' HostInstance (Maybe Text)
+hiInstanceType = lens _hiInstanceType (\ s a -> s{_hiInstanceType = a});
+
+instance FromXML HostInstance where
+        parseXML x
+          = HostInstance' <$>
+              (x .@? "instanceId") <*> (x .@? "instanceType")
+
+-- | /See:/ 'hostProperties' smart constructor.
+data HostProperties = HostProperties'
+    { _hpInstanceType :: !(Maybe Text)
+    , _hpTotalVCPUs   :: !(Maybe Int)
+    , _hpCores        :: !(Maybe Int)
+    , _hpSockets      :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HostProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hpInstanceType'
+--
+-- * 'hpTotalVCPUs'
+--
+-- * 'hpCores'
+--
+-- * 'hpSockets'
+hostProperties
+    :: HostProperties
+hostProperties =
+    HostProperties'
+    { _hpInstanceType = Nothing
+    , _hpTotalVCPUs = Nothing
+    , _hpCores = Nothing
+    , _hpSockets = Nothing
+    }
+
+-- | The instance type size that the Dedicated host supports (e.g.,
+-- m3.medium).
+hpInstanceType :: Lens' HostProperties (Maybe Text)
+hpInstanceType = lens _hpInstanceType (\ s a -> s{_hpInstanceType = a});
+
+-- | The number of vCPUs on the Dedicated host.
+hpTotalVCPUs :: Lens' HostProperties (Maybe Int)
+hpTotalVCPUs = lens _hpTotalVCPUs (\ s a -> s{_hpTotalVCPUs = a});
+
+-- | The number of cores on the Dedicated host.
+hpCores :: Lens' HostProperties (Maybe Int)
+hpCores = lens _hpCores (\ s a -> s{_hpCores = a});
+
+-- | The number of sockets on the Dedicated host.
+hpSockets :: Lens' HostProperties (Maybe Int)
+hpSockets = lens _hpSockets (\ s a -> s{_hpSockets = a});
+
+instance FromXML HostProperties where
+        parseXML x
+          = HostProperties' <$>
+              (x .@? "instanceType") <*> (x .@? "totalVCpus") <*>
+                (x .@? "cores")
+                <*> (x .@? "sockets")
+
 -- | Describes an IAM instance profile.
 --
 -- /See:/ 'iamInstanceProfile' smart constructor.
@@ -2336,15 +2571,11 @@
 ipIPRanges :: Lens' IPPermission [IPRange]
 ipIPRanges = lens _ipIPRanges (\ s a -> s{_ipIPRanges = a}) . _Default . _Coerce;
 
--- | The protocol.
+-- | The IP protocol name (for 'tcp', 'udp', and 'icmp') or number (see
+-- <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>).
 --
--- When you call DescribeSecurityGroups, the protocol value returned is the
--- number. Exception: For TCP, UDP, and ICMP, the value returned is the
--- name (for example, 'tcp', 'udp', or 'icmp'). For a list of protocol
--- numbers, see
--- <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>.
--- (VPC only) When you call AuthorizeSecurityGroupIngress, you can use '-1'
--- to specify all.
+-- [EC2-VPC only] When you authorize or revoke security group rules, you
+-- can use '-1' to specify all.
 ipIPProtocol :: Lens' IPPermission Text
 ipIPProtocol = lens _ipIPProtocol (\ s a -> s{_ipIPProtocol = a});
 
@@ -2407,6 +2638,53 @@
         toQuery IPRange'{..}
           = mconcat ["CidrIp" =: _irCIdRIP]
 
+-- | Describes the ID format for a resource.
+--
+-- /See:/ 'idFormat' smart constructor.
+data IdFormat = IdFormat'
+    { _ifUseLongIds :: !(Maybe Bool)
+    , _ifDeadline   :: !(Maybe ISO8601)
+    , _ifResource   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdFormat' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ifUseLongIds'
+--
+-- * 'ifDeadline'
+--
+-- * 'ifResource'
+idFormat
+    :: IdFormat
+idFormat =
+    IdFormat'
+    { _ifUseLongIds = Nothing
+    , _ifDeadline = Nothing
+    , _ifResource = Nothing
+    }
+
+-- | Indicates whether longer IDs (17-character IDs) are enabled for the
+-- resource.
+ifUseLongIds :: Lens' IdFormat (Maybe Bool)
+ifUseLongIds = lens _ifUseLongIds (\ s a -> s{_ifUseLongIds = a});
+
+-- | The date in UTC at which you are permanently switched over to using
+-- longer IDs.
+ifDeadline :: Lens' IdFormat (Maybe UTCTime)
+ifDeadline = lens _ifDeadline (\ s a -> s{_ifDeadline = a}) . mapping _Time;
+
+-- | The type of resource.
+ifResource :: Lens' IdFormat (Maybe Text)
+ifResource = lens _ifResource (\ s a -> s{_ifResource = a});
+
+instance FromXML IdFormat where
+        parseXML x
+          = IdFormat' <$>
+              (x .@? "useLongIds") <*> (x .@? "deadline") <*>
+                (x .@? "resource")
+
 -- | Describes an image.
 --
 -- /See:/ 'image' smart constructor.
@@ -3486,7 +3764,7 @@
 insStateTransitionReason :: Lens' Instance (Maybe Text)
 insStateTransitionReason = lens _insStateTransitionReason (\ s a -> s{_insStateTransitionReason = a});
 
--- | Indicates whether this is a Spot Instance.
+-- | Indicates whether this is a Spot instance.
 insInstanceLifecycle :: Lens' Instance (Maybe InstanceLifecycleType)
 insInstanceLifecycle = lens _insInstanceLifecycle (\ s a -> s{_insInstanceLifecycle = a});
 
@@ -3723,8 +4001,56 @@
                "NoDevice" =: _ibdmsNoDevice, "Ebs" =: _ibdmsEBS,
                "DeviceName" =: _ibdmsDeviceName]
 
--- | Describes a Reserved Instance listing state.
+-- | Information about the instance type that the Dedicated host supports.
 --
+-- /See:/ 'instanceCapacity' smart constructor.
+data InstanceCapacity = InstanceCapacity'
+    { _icAvailableCapacity :: !(Maybe Int)
+    , _icInstanceType      :: !(Maybe Text)
+    , _icTotalCapacity     :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceCapacity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icAvailableCapacity'
+--
+-- * 'icInstanceType'
+--
+-- * 'icTotalCapacity'
+instanceCapacity
+    :: InstanceCapacity
+instanceCapacity =
+    InstanceCapacity'
+    { _icAvailableCapacity = Nothing
+    , _icInstanceType = Nothing
+    , _icTotalCapacity = Nothing
+    }
+
+-- | The number of instances that can still be launched onto the Dedicated
+-- host.
+icAvailableCapacity :: Lens' InstanceCapacity (Maybe Int)
+icAvailableCapacity = lens _icAvailableCapacity (\ s a -> s{_icAvailableCapacity = a});
+
+-- | The instance type size supported by the Dedicated host.
+icInstanceType :: Lens' InstanceCapacity (Maybe Text)
+icInstanceType = lens _icInstanceType (\ s a -> s{_icInstanceType = a});
+
+-- | The total number of instances that can be launched onto the Dedicated
+-- host.
+icTotalCapacity :: Lens' InstanceCapacity (Maybe Int)
+icTotalCapacity = lens _icTotalCapacity (\ s a -> s{_icTotalCapacity = a});
+
+instance FromXML InstanceCapacity where
+        parseXML x
+          = InstanceCapacity' <$>
+              (x .@? "availableCapacity") <*>
+                (x .@? "instanceType")
+                <*> (x .@? "totalCapacity")
+
+-- | Describes a Reserved instance listing state.
+--
 -- /See:/ 'instanceCount' smart constructor.
 data InstanceCount = InstanceCount'
     { _icState         :: !(Maybe ListingState)
@@ -3746,11 +4072,11 @@
     , _icInstanceCount = Nothing
     }
 
--- | The states of the listed Reserved Instances.
+-- | The states of the listed Reserved instances.
 icState :: Lens' InstanceCount (Maybe ListingState)
 icState = lens _icState (\ s a -> s{_icState = a});
 
--- | The number of listed Reserved Instances in the state specified by the
+-- | The number of listed Reserved instances in the state specified by the
 -- 'state'.
 icInstanceCount :: Lens' InstanceCount (Maybe Int)
 icInstanceCount = lens _icInstanceCount (\ s a -> s{_icInstanceCount = a});
@@ -5053,6 +5379,179 @@
           = MovingAddressStatus' <$>
               (x .@? "moveStatus") <*> (x .@? "publicIp")
 
+-- | Describes a NAT gateway.
+--
+-- /See:/ 'natGateway' smart constructor.
+data NatGateway = NatGateway'
+    { _ngState               :: !(Maybe NatGatewayState)
+    , _ngFailureCode         :: !(Maybe Text)
+    , _ngVPCId               :: !(Maybe Text)
+    , _ngFailureMessage      :: !(Maybe Text)
+    , _ngNatGatewayId        :: !(Maybe Text)
+    , _ngSubnetId            :: !(Maybe Text)
+    , _ngDeleteTime          :: !(Maybe ISO8601)
+    , _ngNatGatewayAddresses :: !(Maybe [NatGatewayAddress])
+    , _ngCreateTime          :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NatGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngState'
+--
+-- * 'ngFailureCode'
+--
+-- * 'ngVPCId'
+--
+-- * 'ngFailureMessage'
+--
+-- * 'ngNatGatewayId'
+--
+-- * 'ngSubnetId'
+--
+-- * 'ngDeleteTime'
+--
+-- * 'ngNatGatewayAddresses'
+--
+-- * 'ngCreateTime'
+natGateway
+    :: NatGateway
+natGateway =
+    NatGateway'
+    { _ngState = Nothing
+    , _ngFailureCode = Nothing
+    , _ngVPCId = Nothing
+    , _ngFailureMessage = Nothing
+    , _ngNatGatewayId = Nothing
+    , _ngSubnetId = Nothing
+    , _ngDeleteTime = Nothing
+    , _ngNatGatewayAddresses = Nothing
+    , _ngCreateTime = Nothing
+    }
+
+-- | The state of the NAT gateway.
+ngState :: Lens' NatGateway (Maybe NatGatewayState)
+ngState = lens _ngState (\ s a -> s{_ngState = a});
+
+-- | If the NAT gateway could not be created, specifies the error code for
+-- the failure. ('InsufficientFreeAddressesInSubnet' |
+-- 'Gateway.NotAttached' | 'InvalidAllocationID.NotFound' |
+-- 'Resource.AlreadyAssociated' | 'InternalError')
+ngFailureCode :: Lens' NatGateway (Maybe Text)
+ngFailureCode = lens _ngFailureCode (\ s a -> s{_ngFailureCode = a});
+
+-- | The ID of the VPC in which the NAT gateway is located.
+ngVPCId :: Lens' NatGateway (Maybe Text)
+ngVPCId = lens _ngVPCId (\ s a -> s{_ngVPCId = a});
+
+-- | If the NAT gateway could not be created, specifies the error message for
+-- the failure, that corresponds to the error code.
+--
+-- -   For InsufficientFreeAddressesInSubnet:
+--     'Subnet has insufficient free addresses to create this NAT gateway'
+-- -   For Gateway.NotAttached:
+--     'Network vpc-xxxxxxxx has no Internet gateway attached'
+-- -   For InvalidAllocationID.NotFound:
+--     'Elastic IP address eipalloc-xxxxxxxx could not be associated with this NAT gateway'
+-- -   For Resource.AlreadyAssociated:
+--     'Elastic IP address eipalloc-xxxxxxxx is already associated'
+-- -   For InternalError:
+--     'Network interface eni-xxxxxxxx, created and used internally by this NAT gateway is in an invalid state. Please try again.'
+ngFailureMessage :: Lens' NatGateway (Maybe Text)
+ngFailureMessage = lens _ngFailureMessage (\ s a -> s{_ngFailureMessage = a});
+
+-- | The ID of the NAT gateway.
+ngNatGatewayId :: Lens' NatGateway (Maybe Text)
+ngNatGatewayId = lens _ngNatGatewayId (\ s a -> s{_ngNatGatewayId = a});
+
+-- | The ID of the subnet in which the NAT gateway is located.
+ngSubnetId :: Lens' NatGateway (Maybe Text)
+ngSubnetId = lens _ngSubnetId (\ s a -> s{_ngSubnetId = a});
+
+-- | The date and time the NAT gateway was deleted, if applicable.
+ngDeleteTime :: Lens' NatGateway (Maybe UTCTime)
+ngDeleteTime = lens _ngDeleteTime (\ s a -> s{_ngDeleteTime = a}) . mapping _Time;
+
+-- | Information about the IP addresses and network interface associated with
+-- the NAT gateway.
+ngNatGatewayAddresses :: Lens' NatGateway [NatGatewayAddress]
+ngNatGatewayAddresses = lens _ngNatGatewayAddresses (\ s a -> s{_ngNatGatewayAddresses = a}) . _Default . _Coerce;
+
+-- | The date and time the NAT gateway was created.
+ngCreateTime :: Lens' NatGateway (Maybe UTCTime)
+ngCreateTime = lens _ngCreateTime (\ s a -> s{_ngCreateTime = a}) . mapping _Time;
+
+instance FromXML NatGateway where
+        parseXML x
+          = NatGateway' <$>
+              (x .@? "state") <*> (x .@? "failureCode") <*>
+                (x .@? "vpcId")
+                <*> (x .@? "failureMessage")
+                <*> (x .@? "natGatewayId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "deleteTime")
+                <*>
+                (x .@? "natGatewayAddressSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "createTime")
+
+-- | Describes the IP addresses and network interface associated with a NAT
+-- gateway.
+--
+-- /See:/ 'natGatewayAddress' smart constructor.
+data NatGatewayAddress = NatGatewayAddress'
+    { _ngaPrivateIP          :: !(Maybe Text)
+    , _ngaAllocationId       :: !(Maybe Text)
+    , _ngaNetworkInterfaceId :: !(Maybe Text)
+    , _ngaPublicIP           :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NatGatewayAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngaPrivateIP'
+--
+-- * 'ngaAllocationId'
+--
+-- * 'ngaNetworkInterfaceId'
+--
+-- * 'ngaPublicIP'
+natGatewayAddress
+    :: NatGatewayAddress
+natGatewayAddress =
+    NatGatewayAddress'
+    { _ngaPrivateIP = Nothing
+    , _ngaAllocationId = Nothing
+    , _ngaNetworkInterfaceId = Nothing
+    , _ngaPublicIP = Nothing
+    }
+
+-- | The private IP address associated with the Elastic IP address.
+ngaPrivateIP :: Lens' NatGatewayAddress (Maybe Text)
+ngaPrivateIP = lens _ngaPrivateIP (\ s a -> s{_ngaPrivateIP = a});
+
+-- | The allocation ID of the Elastic IP address that\'s associated with the
+-- NAT gateway.
+ngaAllocationId :: Lens' NatGatewayAddress (Maybe Text)
+ngaAllocationId = lens _ngaAllocationId (\ s a -> s{_ngaAllocationId = a});
+
+-- | The ID of the network interface associated with the NAT gateway.
+ngaNetworkInterfaceId :: Lens' NatGatewayAddress (Maybe Text)
+ngaNetworkInterfaceId = lens _ngaNetworkInterfaceId (\ s a -> s{_ngaNetworkInterfaceId = a});
+
+-- | The Elastic IP address associated with the NAT gateway.
+ngaPublicIP :: Lens' NatGatewayAddress (Maybe Text)
+ngaPublicIP = lens _ngaPublicIP (\ s a -> s{_ngaPublicIP = a});
+
+instance FromXML NatGatewayAddress where
+        parseXML x
+          = NatGatewayAddress' <$>
+              (x .@? "privateIp") <*> (x .@? "allocationId") <*>
+                (x .@? "networkInterfaceId")
+                <*> (x .@? "publicIp")
+
 -- | Describes a network ACL.
 --
 -- /See:/ 'networkACL' smart constructor.
@@ -5267,6 +5766,7 @@
     , _niStatus             :: !(Maybe NetworkInterfaceStatus)
     , _niPrivateIPAddresses :: !(Maybe [NetworkInterfacePrivateIPAddress])
     , _niSourceDestCheck    :: !(Maybe Bool)
+    , _niInterfaceType      :: !(Maybe NetworkInterfaceType)
     , _niVPCId              :: !(Maybe Text)
     , _niTagSet             :: !(Maybe [Tag])
     , _niRequesterManaged   :: !(Maybe Bool)
@@ -5295,6 +5795,8 @@
 --
 -- * 'niSourceDestCheck'
 --
+-- * 'niInterfaceType'
+--
 -- * 'niVPCId'
 --
 -- * 'niTagSet'
@@ -5330,6 +5832,7 @@
     , _niStatus = Nothing
     , _niPrivateIPAddresses = Nothing
     , _niSourceDestCheck = Nothing
+    , _niInterfaceType = Nothing
     , _niVPCId = Nothing
     , _niTagSet = Nothing
     , _niRequesterManaged = Nothing
@@ -5362,6 +5865,10 @@
 niSourceDestCheck :: Lens' NetworkInterface (Maybe Bool)
 niSourceDestCheck = lens _niSourceDestCheck (\ s a -> s{_niSourceDestCheck = a});
 
+-- | The type of interface.
+niInterfaceType :: Lens' NetworkInterface (Maybe NetworkInterfaceType)
+niInterfaceType = lens _niInterfaceType (\ s a -> s{_niInterfaceType = a});
+
 -- | The ID of the VPC.
 niVPCId :: Lens' NetworkInterface (Maybe Text)
 niVPCId = lens _niVPCId (\ s a -> s{_niVPCId = a});
@@ -5430,6 +5937,7 @@
                 (x .@? "privateIpAddressesSet" .!@ mempty >>=
                    may (parseXMLList "item"))
                 <*> (x .@? "sourceDestCheck")
+                <*> (x .@? "interfaceType")
                 <*> (x .@? "vpcId")
                 <*>
                 (x .@? "tagSet" .!@ mempty >>=
@@ -5727,7 +6235,9 @@
 --
 -- /See:/ 'placement' smart constructor.
 data Placement = Placement'
-    { _pAvailabilityZone :: !(Maybe Text)
+    { _pAffinity         :: !(Maybe Text)
+    , _pHostId           :: !(Maybe Text)
+    , _pAvailabilityZone :: !(Maybe Text)
     , _pTenancy          :: !(Maybe Tenancy)
     , _pGroupName        :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -5736,6 +6246,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pAffinity'
+--
+-- * 'pHostId'
+--
 -- * 'pAvailabilityZone'
 --
 -- * 'pTenancy'
@@ -5745,17 +6259,30 @@
     :: Placement
 placement =
     Placement'
-    { _pAvailabilityZone = Nothing
+    { _pAffinity = Nothing
+    , _pHostId = Nothing
+    , _pAvailabilityZone = Nothing
     , _pTenancy = Nothing
     , _pGroupName = Nothing
     }
 
+-- | The affinity setting for the instance on the Dedicated host. This
+-- parameter is not supported for the ImportInstance command.
+pAffinity :: Lens' Placement (Maybe Text)
+pAffinity = lens _pAffinity (\ s a -> s{_pAffinity = a});
+
+-- | The ID of the Dedicted host on which the instance resides. This
+-- parameter is not support for the ImportInstance command.
+pHostId :: Lens' Placement (Maybe Text)
+pHostId = lens _pHostId (\ s a -> s{_pHostId = a});
+
 -- | The Availability Zone of the instance.
 pAvailabilityZone :: Lens' Placement (Maybe Text)
 pAvailabilityZone = lens _pAvailabilityZone (\ s a -> s{_pAvailabilityZone = a});
 
 -- | The tenancy of the instance (if the instance is running in a VPC). An
 -- instance with a tenancy of 'dedicated' runs on single-tenant hardware.
+-- The 'host' tenancy is not supported for the ImportInstance command.
 pTenancy :: Lens' Placement (Maybe Tenancy)
 pTenancy = lens _pTenancy (\ s a -> s{_pTenancy = a});
 
@@ -5767,13 +6294,16 @@
 instance FromXML Placement where
         parseXML x
           = Placement' <$>
-              (x .@? "availabilityZone") <*> (x .@? "tenancy") <*>
-                (x .@? "groupName")
+              (x .@? "affinity") <*> (x .@? "hostId") <*>
+                (x .@? "availabilityZone")
+                <*> (x .@? "tenancy")
+                <*> (x .@? "groupName")
 
 instance ToQuery Placement where
         toQuery Placement'{..}
           = mconcat
-              ["AvailabilityZone" =: _pAvailabilityZone,
+              ["Affinity" =: _pAffinity, "HostId" =: _pHostId,
+               "AvailabilityZone" =: _pAvailabilityZone,
                "Tenancy" =: _pTenancy, "GroupName" =: _pGroupName]
 
 -- | Describes a placement group.
@@ -5937,7 +6467,7 @@
         toQuery PrefixListId'{..}
           = mconcat ["PrefixListId" =: _pliPrefixListId]
 
--- | Describes the price for a Reserved Instance.
+-- | Describes the price for a Reserved instance.
 --
 -- /See:/ 'priceSchedule' smart constructor.
 data PriceSchedule = PriceSchedule'
@@ -5968,7 +6498,7 @@
     , _psPrice = Nothing
     }
 
--- | The currency for transacting the Reserved Instance resale. At this time,
+-- | The currency for transacting the Reserved instance resale. At this time,
 -- the only supported currency is 'USD'.
 psCurrencyCode :: Lens' PriceSchedule (Maybe CurrencyCodeValues)
 psCurrencyCode = lens _psCurrencyCode (\ s a -> s{_psCurrencyCode = a});
@@ -5979,11 +6509,11 @@
 psTerm = lens _psTerm (\ s a -> s{_psTerm = a});
 
 -- | The current price schedule, as determined by the term remaining for the
--- Reserved Instance in the listing.
+-- Reserved instance in the listing.
 --
 -- A specific price schedule is always in effect, but only one price
 -- schedule can be active at any time. Take, for example, a Reserved
--- Instance listing that has five months remaining in its term. When you
+-- instance listing that has five months remaining in its term. When you
 -- specify price schedules for five months and two months, this means that
 -- schedule 1, covering the first three months of the remaining term, will
 -- be active during months 5, 4, and 3. Then schedule 2, covering the last
@@ -6002,7 +6532,7 @@
                 (x .@? "active")
                 <*> (x .@? "price")
 
--- | Describes the price for a Reserved Instance.
+-- | Describes the price for a Reserved instance.
 --
 -- /See:/ 'priceScheduleSpecification' smart constructor.
 data PriceScheduleSpecification = PriceScheduleSpecification'
@@ -6029,7 +6559,7 @@
     , _pssPrice = Nothing
     }
 
--- | The currency for transacting the Reserved Instance resale. At this time,
+-- | The currency for transacting the Reserved instance resale. At this time,
 -- the only supported currency is 'USD'.
 pssCurrencyCode :: Lens' PriceScheduleSpecification (Maybe CurrencyCodeValues)
 pssCurrencyCode = lens _pssCurrencyCode (\ s a -> s{_pssCurrencyCode = a});
@@ -6049,7 +6579,7 @@
               ["CurrencyCode" =: _pssCurrencyCode,
                "Term" =: _pssTerm, "Price" =: _pssPrice]
 
--- | Describes a Reserved Instance offering.
+-- | Describes a Reserved instance offering.
 --
 -- /See:/ 'pricingDetail' smart constructor.
 data PricingDetail = PricingDetail'
@@ -6072,7 +6602,7 @@
     , _pdPrice = Nothing
     }
 
--- | The number of instances available for the price.
+-- | The number of reservations available for the price.
 pdCount :: Lens' PricingDetail (Maybe Int)
 pdCount = lens _pdCount (\ s a -> s{_pdCount = a});
 
@@ -6510,7 +7040,7 @@
                 <*> (x .@ "reservationId")
                 <*> (x .@ "ownerId")
 
--- | Describes the limit price of a Reserved Instance offering.
+-- | Describes the limit price of a Reserved instance offering.
 --
 -- /See:/ 'reservedInstanceLimitPrice' smart constructor.
 data ReservedInstanceLimitPrice = ReservedInstanceLimitPrice'
@@ -6549,7 +7079,7 @@
               ["Amount" =: _rilpAmount,
                "CurrencyCode" =: _rilpCurrencyCode]
 
--- | Describes a Reserved Instance.
+-- | Describes a Reserved instance.
 --
 -- /See:/ 'reservedInstances' smart constructor.
 data ReservedInstances = ReservedInstances'
@@ -6628,37 +7158,37 @@
     , _riTags = Nothing
     }
 
--- | The state of the Reserved Instance purchase.
+-- | The state of the Reserved instance purchase.
 riState :: Lens' ReservedInstances (Maybe ReservedInstanceState)
 riState = lens _riState (\ s a -> s{_riState = a});
 
--- | The currency of the Reserved Instance. It\'s specified using ISO 4217
+-- | The currency of the Reserved instance. It\'s specified using ISO 4217
 -- standard currency codes. At this time, the only supported currency is
 -- 'USD'.
 riCurrencyCode :: Lens' ReservedInstances (Maybe CurrencyCodeValues)
 riCurrencyCode = lens _riCurrencyCode (\ s a -> s{_riCurrencyCode = a});
 
--- | The number of Reserved Instances purchased.
+-- | The number of reservations purchased.
 riInstanceCount :: Lens' ReservedInstances (Maybe Int)
 riInstanceCount = lens _riInstanceCount (\ s a -> s{_riInstanceCount = a});
 
--- | The Reserved Instance product platform description.
+-- | The Reserved instance product platform description.
 riProductDescription :: Lens' ReservedInstances (Maybe RIProductDescription)
 riProductDescription = lens _riProductDescription (\ s a -> s{_riProductDescription = a});
 
--- | The date and time the Reserved Instance started.
+-- | The date and time the Reserved instance started.
 riStart :: Lens' ReservedInstances (Maybe UTCTime)
 riStart = lens _riStart (\ s a -> s{_riStart = a}) . mapping _Time;
 
--- | The instance type on which the Reserved Instance can be used.
+-- | The instance type on which the Reserved instance can be used.
 riInstanceType :: Lens' ReservedInstances (Maybe InstanceType)
 riInstanceType = lens _riInstanceType (\ s a -> s{_riInstanceType = a});
 
--- | The time when the Reserved Instance expires.
+-- | The time when the Reserved instance expires.
 riEnd :: Lens' ReservedInstances (Maybe UTCTime)
 riEnd = lens _riEnd (\ s a -> s{_riEnd = a}) . mapping _Time;
 
--- | The Availability Zone in which the Reserved Instance can be used.
+-- | The Availability Zone in which the Reserved instance can be used.
 riAvailabilityZone :: Lens' ReservedInstances (Maybe Text)
 riAvailabilityZone = lens _riAvailabilityZone (\ s a -> s{_riAvailabilityZone = a});
 
@@ -6666,19 +7196,19 @@
 riRecurringCharges :: Lens' ReservedInstances [RecurringCharge]
 riRecurringCharges = lens _riRecurringCharges (\ s a -> s{_riRecurringCharges = a}) . _Default . _Coerce;
 
--- | The Reserved Instance offering type.
+-- | The Reserved instance offering type.
 riOfferingType :: Lens' ReservedInstances (Maybe OfferingTypeValues)
 riOfferingType = lens _riOfferingType (\ s a -> s{_riOfferingType = a});
 
--- | The usage price of the Reserved Instance, per hour.
+-- | The usage price of the Reserved instance, per hour.
 riUsagePrice :: Lens' ReservedInstances (Maybe Double)
 riUsagePrice = lens _riUsagePrice (\ s a -> s{_riUsagePrice = a});
 
--- | The purchase price of the Reserved Instance.
+-- | The purchase price of the Reserved instance.
 riFixedPrice :: Lens' ReservedInstances (Maybe Double)
 riFixedPrice = lens _riFixedPrice (\ s a -> s{_riFixedPrice = a});
 
--- | The ID of the Reserved Instance.
+-- | The ID of the Reserved instance.
 riReservedInstancesId :: Lens' ReservedInstances (Maybe Text)
 riReservedInstancesId = lens _riReservedInstancesId (\ s a -> s{_riReservedInstancesId = a});
 
@@ -6686,7 +7216,7 @@
 riInstanceTenancy :: Lens' ReservedInstances (Maybe Tenancy)
 riInstanceTenancy = lens _riInstanceTenancy (\ s a -> s{_riInstanceTenancy = a});
 
--- | The duration of the Reserved Instance, in seconds.
+-- | The duration of the Reserved instance, in seconds.
 riDuration :: Lens' ReservedInstances (Maybe Integer)
 riDuration = lens _riDuration (\ s a -> s{_riDuration = a});
 
@@ -6718,7 +7248,7 @@
                    may (parseXMLList "item"))
 
 -- | Describes the configuration settings for the modified Reserved
--- Instances.
+-- instances.
 --
 -- /See:/ 'reservedInstancesConfiguration' smart constructor.
 data ReservedInstancesConfiguration = ReservedInstancesConfiguration'
@@ -6749,20 +7279,20 @@
     , _ricAvailabilityZone = Nothing
     }
 
--- | The network platform of the modified Reserved Instances, which is either
+-- | The network platform of the modified Reserved instances, which is either
 -- EC2-Classic or EC2-VPC.
 ricPlatform :: Lens' ReservedInstancesConfiguration (Maybe Text)
 ricPlatform = lens _ricPlatform (\ s a -> s{_ricPlatform = a});
 
--- | The number of modified Reserved Instances.
+-- | The number of modified Reserved instances.
 ricInstanceCount :: Lens' ReservedInstancesConfiguration (Maybe Int)
 ricInstanceCount = lens _ricInstanceCount (\ s a -> s{_ricInstanceCount = a});
 
--- | The instance type for the modified Reserved Instances.
+-- | The instance type for the modified Reserved instances.
 ricInstanceType :: Lens' ReservedInstancesConfiguration (Maybe InstanceType)
 ricInstanceType = lens _ricInstanceType (\ s a -> s{_ricInstanceType = a});
 
--- | The Availability Zone for the modified Reserved Instances.
+-- | The Availability Zone for the modified Reserved instances.
 ricAvailabilityZone :: Lens' ReservedInstancesConfiguration (Maybe Text)
 ricAvailabilityZone = lens _ricAvailabilityZone (\ s a -> s{_ricAvailabilityZone = a});
 
@@ -6781,7 +7311,7 @@
                "InstanceType" =: _ricInstanceType,
                "AvailabilityZone" =: _ricAvailabilityZone]
 
--- | Describes the ID of a Reserved Instance.
+-- | Describes the ID of a Reserved instance.
 --
 -- /See:/ 'reservedInstancesId' smart constructor.
 newtype ReservedInstancesId = ReservedInstancesId'
@@ -6800,7 +7330,7 @@
     { _riiReservedInstancesId = Nothing
     }
 
--- | The ID of the Reserved Instance.
+-- | The ID of the Reserved instance.
 riiReservedInstancesId :: Lens' ReservedInstancesId (Maybe Text)
 riiReservedInstancesId = lens _riiReservedInstancesId (\ s a -> s{_riiReservedInstancesId = a});
 
@@ -6809,7 +7339,7 @@
           = ReservedInstancesId' <$>
               (x .@? "reservedInstancesId")
 
--- | Describes a Reserved Instance listing.
+-- | Describes a Reserved instance listing.
 --
 -- /See:/ 'reservedInstancesListing' smart constructor.
 data ReservedInstancesListing = ReservedInstancesListing'
@@ -6864,7 +7394,7 @@
     , _rilReservedInstancesListingId = Nothing
     }
 
--- | The status of the Reserved Instance listing.
+-- | The status of the Reserved instance listing.
 rilStatus :: Lens' ReservedInstancesListing (Maybe ListingStatus)
 rilStatus = lens _rilStatus (\ s a -> s{_rilStatus = a});
 
@@ -6882,16 +7412,16 @@
 rilCreateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)
 rilCreateDate = lens _rilCreateDate (\ s a -> s{_rilCreateDate = a}) . mapping _Time;
 
--- | The price of the Reserved Instance listing.
+-- | The price of the Reserved instance listing.
 rilPriceSchedules :: Lens' ReservedInstancesListing [PriceSchedule]
 rilPriceSchedules = lens _rilPriceSchedules (\ s a -> s{_rilPriceSchedules = a}) . _Default . _Coerce;
 
--- | The reason for the current status of the Reserved Instance listing. The
+-- | The reason for the current status of the Reserved instance listing. The
 -- response can be blank.
 rilStatusMessage :: Lens' ReservedInstancesListing (Maybe Text)
 rilStatusMessage = lens _rilStatusMessage (\ s a -> s{_rilStatusMessage = a});
 
--- | The ID of the Reserved Instance.
+-- | The ID of the Reserved instance.
 rilReservedInstancesId :: Lens' ReservedInstancesListing (Maybe Text)
 rilReservedInstancesId = lens _rilReservedInstancesId (\ s a -> s{_rilReservedInstancesId = a});
 
@@ -6903,7 +7433,7 @@
 rilInstanceCounts :: Lens' ReservedInstancesListing [InstanceCount]
 rilInstanceCounts = lens _rilInstanceCounts (\ s a -> s{_rilInstanceCounts = a}) . _Default . _Coerce;
 
--- | The ID of the Reserved Instance listing.
+-- | The ID of the Reserved instance listing.
 rilReservedInstancesListingId :: Lens' ReservedInstancesListing (Maybe Text)
 rilReservedInstancesListingId = lens _rilReservedInstancesListingId (\ s a -> s{_rilReservedInstancesListingId = a});
 
@@ -6926,7 +7456,7 @@
                    may (parseXMLList "item"))
                 <*> (x .@? "reservedInstancesListingId")
 
--- | Describes a Reserved Instance modification.
+-- | Describes a Reserved instance modification.
 --
 -- /See:/ 'reservedInstancesModification' smart constructor.
 data ReservedInstancesModification = ReservedInstancesModification'
@@ -6978,11 +7508,11 @@
     }
 
 -- | Contains target configurations along with their corresponding new
--- Reserved Instance IDs.
+-- Reserved instance IDs.
 rimModificationResults :: Lens' ReservedInstancesModification [ReservedInstancesModificationResult]
 rimModificationResults = lens _rimModificationResults (\ s a -> s{_rimModificationResults = a}) . _Default . _Coerce;
 
--- | The status of the Reserved Instances modification request.
+-- | The status of the Reserved instances modification request.
 rimStatus :: Lens' ReservedInstancesModification (Maybe Text)
 rimStatus = lens _rimStatus (\ s a -> s{_rimStatus = a});
 
@@ -7008,11 +7538,11 @@
 rimStatusMessage :: Lens' ReservedInstancesModification (Maybe Text)
 rimStatusMessage = lens _rimStatusMessage (\ s a -> s{_rimStatusMessage = a});
 
--- | A unique ID for the Reserved Instance modification.
+-- | A unique ID for the Reserved instance modification.
 rimReservedInstancesModificationId :: Lens' ReservedInstancesModification (Maybe Text)
 rimReservedInstancesModificationId = lens _rimReservedInstancesModificationId (\ s a -> s{_rimReservedInstancesModificationId = a});
 
--- | The IDs of one or more Reserved Instances.
+-- | The IDs of one or more Reserved instances.
 rimReservedInstancesIds :: Lens' ReservedInstancesModification [ReservedInstancesId]
 rimReservedInstancesIds = lens _rimReservedInstancesIds (\ s a -> s{_rimReservedInstancesIds = a}) . _Default . _Coerce;
 
@@ -7053,13 +7583,13 @@
     , _rimrTargetConfiguration = Nothing
     }
 
--- | The ID for the Reserved Instances that were created as part of the
+-- | The ID for the Reserved instances that were created as part of the
 -- modification request. This field is only available when the modification
 -- is fulfilled.
 rimrReservedInstancesId :: Lens' ReservedInstancesModificationResult (Maybe Text)
 rimrReservedInstancesId = lens _rimrReservedInstancesId (\ s a -> s{_rimrReservedInstancesId = a});
 
--- | The target Reserved Instances configurations supplied as part of the
+-- | The target Reserved instances configurations supplied as part of the
 -- modification request.
 rimrTargetConfiguration :: Lens' ReservedInstancesModificationResult (Maybe ReservedInstancesConfiguration)
 rimrTargetConfiguration = lens _rimrTargetConfiguration (\ s a -> s{_rimrTargetConfiguration = a});
@@ -7071,7 +7601,7 @@
               (x .@? "reservedInstancesId") <*>
                 (x .@? "targetConfiguration")
 
--- | Describes a Reserved Instance offering.
+-- | Describes a Reserved instance offering.
 --
 -- /See:/ 'reservedInstancesOffering' smart constructor.
 data ReservedInstancesOffering = ReservedInstancesOffering'
@@ -7144,25 +7674,25 @@
 rioMarketplace :: Lens' ReservedInstancesOffering (Maybe Bool)
 rioMarketplace = lens _rioMarketplace (\ s a -> s{_rioMarketplace = a});
 
--- | The currency of the Reserved Instance offering you are purchasing. It\'s
+-- | The currency of the Reserved instance offering you are purchasing. It\'s
 -- specified using ISO 4217 standard currency codes. At this time, the only
 -- supported currency is 'USD'.
 rioCurrencyCode :: Lens' ReservedInstancesOffering (Maybe CurrencyCodeValues)
 rioCurrencyCode = lens _rioCurrencyCode (\ s a -> s{_rioCurrencyCode = a});
 
--- | The Reserved Instance product platform description.
+-- | The Reserved instance product platform description.
 rioProductDescription :: Lens' ReservedInstancesOffering (Maybe RIProductDescription)
 rioProductDescription = lens _rioProductDescription (\ s a -> s{_rioProductDescription = a});
 
--- | The instance type on which the Reserved Instance can be used.
+-- | The instance type on which the Reserved instance can be used.
 rioInstanceType :: Lens' ReservedInstancesOffering (Maybe InstanceType)
 rioInstanceType = lens _rioInstanceType (\ s a -> s{_rioInstanceType = a});
 
--- | The Availability Zone in which the Reserved Instance can be used.
+-- | The Availability Zone in which the Reserved instance can be used.
 rioAvailabilityZone :: Lens' ReservedInstancesOffering (Maybe Text)
 rioAvailabilityZone = lens _rioAvailabilityZone (\ s a -> s{_rioAvailabilityZone = a});
 
--- | The pricing details of the Reserved Instance offering.
+-- | The pricing details of the Reserved instance offering.
 rioPricingDetails :: Lens' ReservedInstancesOffering [PricingDetail]
 rioPricingDetails = lens _rioPricingDetails (\ s a -> s{_rioPricingDetails = a}) . _Default . _Coerce;
 
@@ -7170,15 +7700,15 @@
 rioRecurringCharges :: Lens' ReservedInstancesOffering [RecurringCharge]
 rioRecurringCharges = lens _rioRecurringCharges (\ s a -> s{_rioRecurringCharges = a}) . _Default . _Coerce;
 
--- | The Reserved Instance offering type.
+-- | The Reserved instance offering type.
 rioOfferingType :: Lens' ReservedInstancesOffering (Maybe OfferingTypeValues)
 rioOfferingType = lens _rioOfferingType (\ s a -> s{_rioOfferingType = a});
 
--- | The usage price of the Reserved Instance, per hour.
+-- | The usage price of the Reserved instance, per hour.
 rioUsagePrice :: Lens' ReservedInstancesOffering (Maybe Double)
 rioUsagePrice = lens _rioUsagePrice (\ s a -> s{_rioUsagePrice = a});
 
--- | The purchase price of the Reserved Instance.
+-- | The purchase price of the Reserved instance.
 rioFixedPrice :: Lens' ReservedInstancesOffering (Maybe Double)
 rioFixedPrice = lens _rioFixedPrice (\ s a -> s{_rioFixedPrice = a});
 
@@ -7186,11 +7716,11 @@
 rioInstanceTenancy :: Lens' ReservedInstancesOffering (Maybe Tenancy)
 rioInstanceTenancy = lens _rioInstanceTenancy (\ s a -> s{_rioInstanceTenancy = a});
 
--- | The ID of the Reserved Instance offering.
+-- | The ID of the Reserved instance offering.
 rioReservedInstancesOfferingId :: Lens' ReservedInstancesOffering (Maybe Text)
 rioReservedInstancesOfferingId = lens _rioReservedInstancesOfferingId (\ s a -> s{_rioReservedInstancesOfferingId = a});
 
--- | The duration of the Reserved Instance, in seconds.
+-- | The duration of the Reserved instance, in seconds.
 rioDuration :: Lens' ReservedInstancesOffering (Maybe Integer)
 rioDuration = lens _rioDuration (\ s a -> s{_rioDuration = a});
 
@@ -7222,6 +7752,7 @@
     , _rInstanceId              :: !(Maybe Text)
     , _rOrigin                  :: !(Maybe RouteOrigin)
     , _rState                   :: !(Maybe RouteState)
+    , _rNatGatewayId            :: !(Maybe Text)
     , _rNetworkInterfaceId      :: !(Maybe Text)
     , _rGatewayId               :: !(Maybe Text)
     , _rInstanceOwnerId         :: !(Maybe Text)
@@ -7241,6 +7772,8 @@
 --
 -- * 'rState'
 --
+-- * 'rNatGatewayId'
+--
 -- * 'rNetworkInterfaceId'
 --
 -- * 'rGatewayId'
@@ -7258,6 +7791,7 @@
     , _rInstanceId = Nothing
     , _rOrigin = Nothing
     , _rState = Nothing
+    , _rNatGatewayId = Nothing
     , _rNetworkInterfaceId = Nothing
     , _rGatewayId = Nothing
     , _rInstanceOwnerId = Nothing
@@ -7291,6 +7825,10 @@
 rState :: Lens' Route (Maybe RouteState)
 rState = lens _rState (\ s a -> s{_rState = a});
 
+-- | The ID of a NAT gateway.
+rNatGatewayId :: Lens' Route (Maybe Text)
+rNatGatewayId = lens _rNatGatewayId (\ s a -> s{_rNatGatewayId = a});
+
 -- | The ID of the network interface.
 rNetworkInterfaceId :: Lens' Route (Maybe Text)
 rNetworkInterfaceId = lens _rNetworkInterfaceId (\ s a -> s{_rNetworkInterfaceId = a});
@@ -7318,6 +7856,7 @@
                 (x .@? "instanceId")
                 <*> (x .@? "origin")
                 <*> (x .@? "state")
+                <*> (x .@? "natGatewayId")
                 <*> (x .@? "networkInterfaceId")
                 <*> (x .@? "gatewayId")
                 <*> (x .@? "instanceOwnerId")
@@ -8293,7 +8832,9 @@
 sflsRAMDiskId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
 sflsRAMDiskId = lens _sflsRAMDiskId (\ s a -> s{_sflsRAMDiskId = a});
 
--- | The ID of the subnet in which to launch the instances.
+-- | The ID of the subnet in which to launch the instances. To specify
+-- multiple subnets, separate them using commas; for example,
+-- \"subnet-a61dafcf, subnet-65ea5f08\".
 sflsSubnetId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
 sflsSubnetId = lens _sflsSubnetId (\ s a -> s{_sflsSubnetId = a});
 
@@ -8941,7 +9482,8 @@
     , _spGroupName = Nothing
     }
 
--- | The Availability Zone.
+-- | The Availability Zones. To specify multiple Availability Zones, separate
+-- them using commas; for example, \"us-west-2a, us-west-2b\".
 spAvailabilityZone :: Lens' SpotPlacement (Maybe Text)
 spAvailabilityZone = lens _spAvailabilityZone (\ s a -> s{_spAvailabilityZone = a});
 
@@ -9054,7 +9596,7 @@
 
 -- | The message for the state change.
 --
--- -   'Server.SpotInstanceTermination': A Spot Instance was terminated due
+-- -   'Server.SpotInstanceTermination': A Spot instance was terminated due
 --     to an increase in the market price.
 --
 -- -   'Server.InternalError': An internal error occurred during instance
diff --git a/gen/Network/AWS/EC2/Types/Sum.hs b/gen/Network/AWS/EC2/Types/Sum.hs
--- a/gen/Network/AWS/EC2/Types/Sum.hs
+++ b/gen/Network/AWS/EC2/Types/Sum.hs
@@ -22,7 +22,7 @@
 data AccountAttributeName
     = DefaultVPC
     | SupportedPlatforms
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AccountAttributeName where
     parser = takeLowerText >>= \case
@@ -45,7 +45,7 @@
     = InClassic
     | InVPC
     | MoveInProgress
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AddressStatus where
     parser = takeLowerText >>= \case
@@ -69,10 +69,66 @@
 instance FromXML AddressStatus where
     parseXML = parseXMLText "AddressStatus"
 
+data Affinity
+    = ADefault
+    | AHost
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText Affinity where
+    parser = takeLowerText >>= \case
+        "default" -> pure ADefault
+        "host" -> pure AHost
+        e -> fromTextError $ "Failure parsing Affinity from value: '" <> e
+           <> "'. Accepted values: default, host"
+
+instance ToText Affinity where
+    toText = \case
+        ADefault -> "default"
+        AHost -> "host"
+
+instance Hashable     Affinity
+instance ToByteString Affinity
+instance ToQuery      Affinity
+instance ToHeader     Affinity
+
+data AllocationState
+    = ASAvailable
+    | ASPermanentFailure
+    | ASReleased
+    | ASReleasedPermanentFailure
+    | ASUnderAssessment
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText AllocationState where
+    parser = takeLowerText >>= \case
+        "available" -> pure ASAvailable
+        "permanent-failure" -> pure ASPermanentFailure
+        "released" -> pure ASReleased
+        "released-permanent-failure" -> pure ASReleasedPermanentFailure
+        "under-assessment" -> pure ASUnderAssessment
+        e -> fromTextError $ "Failure parsing AllocationState from value: '" <> e
+           <> "'. Accepted values: available, permanent-failure, released, released-permanent-failure, under-assessment"
+
+instance ToText AllocationState where
+    toText = \case
+        ASAvailable -> "available"
+        ASPermanentFailure -> "permanent-failure"
+        ASReleased -> "released"
+        ASReleasedPermanentFailure -> "released-permanent-failure"
+        ASUnderAssessment -> "under-assessment"
+
+instance Hashable     AllocationState
+instance ToByteString AllocationState
+instance ToQuery      AllocationState
+instance ToHeader     AllocationState
+
+instance FromXML AllocationState where
+    parseXML = parseXMLText "AllocationState"
+
 data AllocationStrategy
     = Diversified
     | LowestPrice
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AllocationStrategy where
     parser = takeLowerText >>= \case
@@ -97,7 +153,7 @@
 data ArchitectureValues
     = I386
     | X86_64
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ArchitectureValues where
     parser = takeLowerText >>= \case
@@ -125,7 +181,7 @@
     | Busy
     | Detached
     | Detaching
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AttachmentStatus where
     parser = takeLowerText >>= \case
@@ -153,12 +209,37 @@
 instance FromXML AttachmentStatus where
     parseXML = parseXMLText "AttachmentStatus"
 
+data AutoPlacement
+    = ON
+    | Off
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText AutoPlacement where
+    parser = takeLowerText >>= \case
+        "on" -> pure ON
+        "off" -> pure Off
+        e -> fromTextError $ "Failure parsing AutoPlacement from value: '" <> e
+           <> "'. Accepted values: on, off"
+
+instance ToText AutoPlacement where
+    toText = \case
+        ON -> "on"
+        Off -> "off"
+
+instance Hashable     AutoPlacement
+instance ToByteString AutoPlacement
+instance ToQuery      AutoPlacement
+instance ToHeader     AutoPlacement
+
+instance FromXML AutoPlacement where
+    parseXML = parseXMLText "AutoPlacement"
+
 data AvailabilityZoneState
     = AZSAvailable
     | AZSImpaired
     | AZSInformation
     | AZSUnavailable
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AvailabilityZoneState where
     parser = takeLowerText >>= \case
@@ -192,7 +273,7 @@
     | BSFailed
     | BSModifying
     | BSSubmitted
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText BatchState where
     parser = takeLowerText >>= \case
@@ -232,7 +313,7 @@
     | BTSPending
     | BTSStoring
     | BTSWaitingForShutdown
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText BundleTaskState where
     parser = takeLowerText >>= \case
@@ -269,7 +350,7 @@
     | FleetRequestIdMalformed
     | FleetRequestNotInCancellableState
     | UnexpectedError
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CancelBatchErrorCode where
     parser = takeLowerText >>= \case
@@ -301,7 +382,7 @@
     | CSIRSClosed
     | CSIRSCompleted
     | CSIRSOpen
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CancelSpotInstanceRequestState where
     parser = takeLowerText >>= \case
@@ -331,7 +412,7 @@
 
 data ContainerFormat =
     Ova
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ContainerFormat where
     parser = takeLowerText >>= \case
@@ -356,7 +437,7 @@
     | CTSCancelled
     | CTSCancelling
     | CTSCompleted
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ConversionTaskState where
     parser = takeLowerText >>= \case
@@ -384,7 +465,7 @@
 
 data CurrencyCodeValues =
     Usd
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CurrencyCodeValues where
     parser = takeLowerText >>= \case
@@ -407,7 +488,7 @@
 data DatafeedSubscriptionState
     = DSSActive
     | DSSInactive
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DatafeedSubscriptionState where
     parser = takeLowerText >>= \case
@@ -432,7 +513,7 @@
 data DeviceType
     = EBS
     | InstanceStore
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DeviceType where
     parser = takeLowerText >>= \case
@@ -458,7 +539,7 @@
     = Raw
     | VHD
     | VMDK
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DiskImageFormat where
     parser = takeLowerText >>= \case
@@ -485,7 +566,7 @@
 data DomainType
     = DTStandard
     | DTVPC
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DomainType where
     parser = takeLowerText >>= \case
@@ -513,7 +594,7 @@
     | InstanceStop
     | SystemMaintenance
     | SystemReboot
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText EventCode where
     parser = takeLowerText >>= \case
@@ -545,7 +626,7 @@
     = Error'
     | FleetRequestChange
     | InstanceChange
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText EventType where
     parser = takeLowerText >>= \case
@@ -572,7 +653,7 @@
 data ExcessCapacityTerminationPolicy
     = ECTPDefault
     | ECTPNoTermination
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ExcessCapacityTerminationPolicy where
     parser = takeLowerText >>= \case
@@ -598,7 +679,7 @@
     = Citrix
     | Microsoft
     | VMware
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ExportEnvironment where
     parser = takeLowerText >>= \case
@@ -627,7 +708,7 @@
     | ETSCancelled
     | ETSCancelling
     | ETSCompleted
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ExportTaskState where
     parser = takeLowerText >>= \case
@@ -657,7 +738,7 @@
     = FLRTNetworkInterface
     | FLRTSubnet
     | FLRTVPC
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText FlowLogsResourceType where
     parser = takeLowerText >>= \case
@@ -680,7 +761,7 @@
 
 data GatewayType =
     IPsec_1
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText GatewayType where
     parser = takeLowerText >>= \case
@@ -700,10 +781,32 @@
 instance FromXML GatewayType where
     parseXML = parseXMLText "GatewayType"
 
+data HostTenancy
+    = HTDedicated
+    | HTHost
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText HostTenancy where
+    parser = takeLowerText >>= \case
+        "dedicated" -> pure HTDedicated
+        "host" -> pure HTHost
+        e -> fromTextError $ "Failure parsing HostTenancy from value: '" <> e
+           <> "'. Accepted values: dedicated, host"
+
+instance ToText HostTenancy where
+    toText = \case
+        HTDedicated -> "dedicated"
+        HTHost -> "host"
+
+instance Hashable     HostTenancy
+instance ToByteString HostTenancy
+instance ToQuery      HostTenancy
+instance ToHeader     HostTenancy
+
 data HypervisorType
     = Ovm
     | Xen
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText HypervisorType where
     parser = takeLowerText >>= \case
@@ -733,7 +836,7 @@
     | ProductCodes
     | RAMDisk
     | SRIOVNetSupport
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ImageAttributeName where
     parser = takeLowerText >>= \case
@@ -770,7 +873,7 @@
     | ISInvalid
     | ISPending
     | ISTransient
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ImageState where
     parser = takeLowerText >>= \case
@@ -806,7 +909,7 @@
     = ITVKernel
     | ITVMachine
     | ITVRAMDisk
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ImageTypeValues where
     parser = takeLowerText >>= \case
@@ -844,7 +947,7 @@
     | IANSRIOVNetSupport
     | IANSourceDestCheck
     | IANUserData
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText InstanceAttributeName where
     parser = takeLowerText >>= \case
@@ -887,7 +990,7 @@
 
 data InstanceLifecycleType =
     Spot
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText InstanceLifecycleType where
     parser = takeLowerText >>= \case
@@ -914,7 +1017,7 @@
     | ISNStopped
     | ISNStopping
     | ISNTerminated
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText InstanceStateName where
     parser = takeLowerText >>= \case
@@ -998,7 +1101,7 @@
     | T2_Medium
     | T2_Micro
     | T2_Small
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText InstanceType where
     parser = takeLowerText >>= \case
@@ -1127,7 +1230,7 @@
     | LCancelled
     | LPending
     | LSold
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ListingState where
     parser = takeLowerText >>= \case
@@ -1158,7 +1261,7 @@
     | LSCancelled
     | LSClosed
     | LSPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ListingStatus where
     parser = takeLowerText >>= \case
@@ -1189,7 +1292,7 @@
     | MSDisabling
     | MSEnabled
     | MSPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText MonitoringState where
     parser = takeLowerText >>= \case
@@ -1218,7 +1321,7 @@
 data MoveStatus
     = MovingToVPC
     | RestoringToClassic
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText MoveStatus where
     parser = takeLowerText >>= \case
@@ -1240,12 +1343,46 @@
 instance FromXML MoveStatus where
     parseXML = parseXMLText "MoveStatus"
 
+data NatGatewayState
+    = NGSAvailable
+    | NGSDeleted
+    | NGSDeleting
+    | NGSFailed
+    | NGSPending
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText NatGatewayState where
+    parser = takeLowerText >>= \case
+        "available" -> pure NGSAvailable
+        "deleted" -> pure NGSDeleted
+        "deleting" -> pure NGSDeleting
+        "failed" -> pure NGSFailed
+        "pending" -> pure NGSPending
+        e -> fromTextError $ "Failure parsing NatGatewayState from value: '" <> e
+           <> "'. Accepted values: available, deleted, deleting, failed, pending"
+
+instance ToText NatGatewayState where
+    toText = \case
+        NGSAvailable -> "available"
+        NGSDeleted -> "deleted"
+        NGSDeleting -> "deleting"
+        NGSFailed -> "failed"
+        NGSPending -> "pending"
+
+instance Hashable     NatGatewayState
+instance ToByteString NatGatewayState
+instance ToQuery      NatGatewayState
+instance ToHeader     NatGatewayState
+
+instance FromXML NatGatewayState where
+    parseXML = parseXMLText "NatGatewayState"
+
 data NetworkInterfaceAttribute
     = NIAAttachment
     | NIADescription
     | NIAGroupSet
     | NIASourceDestCheck
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText NetworkInterfaceAttribute where
     parser = takeLowerText >>= \case
@@ -1273,7 +1410,7 @@
     | NISAvailable
     | NISDetaching
     | NISInUse
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText NetworkInterfaceStatus where
     parser = takeLowerText >>= \case
@@ -1299,6 +1436,31 @@
 instance FromXML NetworkInterfaceStatus where
     parseXML = parseXMLText "NetworkInterfaceStatus"
 
+data NetworkInterfaceType
+    = Interface
+    | NatGateway
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText NetworkInterfaceType where
+    parser = takeLowerText >>= \case
+        "interface" -> pure Interface
+        "natgateway" -> pure NatGateway
+        e -> fromTextError $ "Failure parsing NetworkInterfaceType from value: '" <> e
+           <> "'. Accepted values: interface, natGateway"
+
+instance ToText NetworkInterfaceType where
+    toText = \case
+        Interface -> "interface"
+        NatGateway -> "natGateway"
+
+instance Hashable     NetworkInterfaceType
+instance ToByteString NetworkInterfaceType
+instance ToQuery      NetworkInterfaceType
+instance ToHeader     NetworkInterfaceType
+
+instance FromXML NetworkInterfaceType where
+    parseXML = parseXMLText "NetworkInterfaceType"
+
 data OfferingTypeValues
     = AllUpfront
     | HeavyUtilization
@@ -1306,7 +1468,7 @@
     | MediumUtilization
     | NoUpfront
     | PartialUpfront
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText OfferingTypeValues where
     parser = takeLowerText >>= \case
@@ -1339,7 +1501,7 @@
 data OperationType
     = Add
     | Remove
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText OperationType where
     parser = takeLowerText >>= \case
@@ -1360,7 +1522,7 @@
 
 data PermissionGroup =
     All
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PermissionGroup where
     parser = takeLowerText >>= \case
@@ -1385,7 +1547,7 @@
     | Deleted
     | Deleting
     | Pending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PlacementGroupState where
     parser = takeLowerText >>= \case
@@ -1413,7 +1575,7 @@
 
 data PlacementStrategy =
     Cluster
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PlacementStrategy where
     parser = takeLowerText >>= \case
@@ -1435,7 +1597,7 @@
 
 data PlatformValues =
     Windows
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PlatformValues where
     parser = takeLowerText >>= \case
@@ -1458,7 +1620,7 @@
 data ProductCodeValues
     = Devpay
     | Marketplace
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ProductCodeValues where
     parser = takeLowerText >>= \case
@@ -1485,7 +1647,7 @@
     | RIDLinuxUnixAmazonVPC
     | RIDWindows
     | RIDWindowsAmazonVPC
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText RIProductDescription where
     parser = takeLowerText >>= \case
@@ -1513,7 +1675,7 @@
 
 data RecurringChargeFrequency =
     Hourly
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText RecurringChargeFrequency where
     parser = takeLowerText >>= \case
@@ -1543,7 +1705,7 @@
     | PerformanceNetwork
     | PerformanceOther
     | Unresponsive
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ReportInstanceReasonCodes where
     parser = takeLowerText >>= \case
@@ -1579,7 +1741,7 @@
 data ReportStatusType
     = RSTImpaired
     | RSTOK
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ReportStatusType where
     parser = takeLowerText >>= \case
@@ -1603,7 +1765,7 @@
     | PaymentFailed
     | PaymentPending
     | Retired
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ReservedInstanceState where
     parser = takeLowerText >>= \case
@@ -1631,7 +1793,7 @@
 
 data ResetImageAttributeName =
     RIANLaunchPermission
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ResetImageAttributeName where
     parser = takeLowerText >>= \case
@@ -1666,7 +1828,7 @@
     | VPNConnection
     | VPNGateway
     | Volume
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ResourceType where
     parser = takeLowerText >>= \case
@@ -1722,7 +1884,7 @@
     = CreateRoute
     | CreateRouteTable
     | EnableVGWRoutePropagation
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText RouteOrigin where
     parser = takeLowerText >>= \case
@@ -1749,7 +1911,7 @@
 data RouteState
     = RSActive
     | RSBlackhole
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText RouteState where
     parser = takeLowerText >>= \case
@@ -1774,7 +1936,7 @@
 data RuleAction
     = Allow
     | Deny
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText RuleAction where
     parser = takeLowerText >>= \case
@@ -1799,7 +1961,7 @@
 data ShutdownBehavior
     = Stop
     | Terminate
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ShutdownBehavior where
     parser = takeLowerText >>= \case
@@ -1821,7 +1983,7 @@
 data SnapshotAttributeName
     = SANCreateVolumePermission
     | SANProductCodes
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SnapshotAttributeName where
     parser = takeLowerText >>= \case
@@ -1844,7 +2006,7 @@
     = SSCompleted
     | SSError'
     | SSPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SnapshotState where
     parser = takeLowerText >>= \case
@@ -1874,7 +2036,7 @@
     | SISClosed
     | SISFailed
     | SISOpen
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SpotInstanceState where
     parser = takeLowerText >>= \case
@@ -1905,7 +2067,7 @@
 data SpotInstanceType
     = OneTime
     | Persistent
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SpotInstanceType where
     parser = takeLowerText >>= \case
@@ -1932,7 +2094,7 @@
     | SDeleted
     | SDeleting
     | SPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText State where
     parser = takeLowerText >>= \case
@@ -1960,7 +2122,7 @@
 
 data StatusName =
     Reachability
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText StatusName where
     parser = takeLowerText >>= \case
@@ -1985,7 +2147,7 @@
     | STInitializing
     | STInsufficientData
     | STPassed
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText StatusType where
     parser = takeLowerText >>= \case
@@ -2014,7 +2176,7 @@
 data SubnetState
     = SubAvailable
     | SubPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SubnetState where
     parser = takeLowerText >>= \case
@@ -2042,7 +2204,7 @@
     | SSInsufficientData
     | SSNotApplicable
     | SSOK
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SummaryStatus where
     parser = takeLowerText >>= \case
@@ -2073,7 +2235,7 @@
 data TelemetryStatus
     = Down
     | UP
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText TelemetryStatus where
     parser = takeLowerText >>= \case
@@ -2098,19 +2260,22 @@
 data Tenancy
     = Dedicated
     | Default
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    | Host
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText Tenancy where
     parser = takeLowerText >>= \case
         "dedicated" -> pure Dedicated
         "default" -> pure Default
+        "host" -> pure Host
         e -> fromTextError $ "Failure parsing Tenancy from value: '" <> e
-           <> "'. Accepted values: dedicated, default"
+           <> "'. Accepted values: dedicated, default, host"
 
 instance ToText Tenancy where
     toText = \case
         Dedicated -> "dedicated"
         Default -> "default"
+        Host -> "host"
 
 instance Hashable     Tenancy
 instance ToByteString Tenancy
@@ -2124,7 +2289,7 @@
     = TTAccept
     | TTAll
     | TTReject
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText TrafficType where
     parser = takeLowerText >>= \case
@@ -2151,7 +2316,7 @@
 data VPCAttributeName
     = EnableDNSHostnames
     | EnableDNSSupport
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VPCAttributeName where
     parser = takeLowerText >>= \case
@@ -2180,7 +2345,7 @@
     | VPCSRCPendingAcceptance
     | VPCSRCProvisioning
     | VPCSRCRejected
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VPCPeeringConnectionStateReasonCode where
     parser = takeLowerText >>= \case
@@ -2219,7 +2384,7 @@
 data VPCState
     = VPCSAvailable
     | VPCSPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VPCState where
     parser = takeLowerText >>= \case
@@ -2246,7 +2411,7 @@
     | VSDeleted
     | VSDeleting
     | VSPending
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VPNState where
     parser = takeLowerText >>= \case
@@ -2274,7 +2439,7 @@
 
 data VPNStaticRouteSource =
     Static
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VPNStaticRouteSource where
     parser = takeLowerText >>= \case
@@ -2297,7 +2462,7 @@
 data VirtualizationType
     = HVM
     | Paravirtual
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VirtualizationType where
     parser = takeLowerText >>= \case
@@ -2325,7 +2490,7 @@
     | VASBusy
     | VASDetached
     | VASDetaching
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeAttachmentState where
     parser = takeLowerText >>= \case
@@ -2356,7 +2521,7 @@
 data VolumeAttributeName
     = VANAutoEnableIO
     | VANProductCodes
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeAttributeName where
     parser = takeLowerText >>= \case
@@ -2382,7 +2547,7 @@
     | VDeleting
     | VError'
     | VInUse
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeState where
     parser = takeLowerText >>= \case
@@ -2416,7 +2581,7 @@
     = Impaired
     | InsufficientData
     | OK
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeStatusInfoStatus where
     parser = takeLowerText >>= \case
@@ -2443,7 +2608,7 @@
 data VolumeStatusName
     = IOEnabled
     | IOPerformance
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeStatusName where
     parser = takeLowerText >>= \case
@@ -2469,7 +2634,7 @@
     = GP2
     | IO1
     | Standard
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText VolumeType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/EC2/UnassignPrivateIPAddresses.hs b/gen/Network/AWS/EC2/UnassignPrivateIPAddresses.hs
--- a/gen/Network/AWS/EC2/UnassignPrivateIPAddresses.hs
+++ b/gen/Network/AWS/EC2/UnassignPrivateIPAddresses.hs
@@ -38,6 +38,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/UnmonitorInstances.hs b/gen/Network/AWS/EC2/UnmonitorInstances.hs
--- a/gen/Network/AWS/EC2/UnmonitorInstances.hs
+++ b/gen/Network/AWS/EC2/UnmonitorInstances.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.EC2.Types
 import           Network.AWS.EC2.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/EC2/Waiters.hs b/gen/Network/AWS/EC2/Waiters.hs
--- a/gen/Network/AWS/EC2/Waiters.hs
+++ b/gen/Network/AWS/EC2/Waiters.hs
@@ -40,6 +40,7 @@
 import           Network.AWS.EC2.DescribeVPNConnections
 import           Network.AWS.EC2.GetPasswordData
 import           Network.AWS.EC2.Types
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Waiter
 
diff --git a/test/Test/AWS/EC2.hs b/test/Test/AWS/EC2.hs
--- a/test/Test/AWS/EC2.hs
+++ b/test/Test/AWS/EC2.hs
@@ -14,9 +14,9 @@
     , fixtures
     ) where
 
-import           Control.Lens
 import           Data.Time
 import           Network.AWS.EC2
+import           Network.AWS.Lens    ((&), (.~), (?~))
 import           Network.AWS.Prelude
 import           Test.AWS.Gen.EC2
 import           Test.AWS.TH
diff --git a/test/Test/AWS/Gen/EC2.hs b/test/Test/AWS/Gen/EC2.hs
--- a/test/Test/AWS/Gen/EC2.hs
+++ b/test/Test/AWS/Gen/EC2.hs
@@ -127,6 +127,9 @@
 --         , testReplaceNetworkACLAssociation $
 --             replaceNetworkACLAssociation
 --
+--         , testDescribeNatGateways $
+--             describeNatGateways
+--
 --         , testDescribeAddresses $
 --             describeAddresses
 --
@@ -208,6 +211,9 @@
 --         , testAttachInternetGateway $
 --             attachInternetGateway
 --
+--         , testModifyInstancePlacement $
+--             modifyInstancePlacement
+--
 --         , testDescribeFlowLogs $
 --             describeFlowLogs
 --
@@ -220,6 +226,9 @@
 --         , testDescribeReservedInstances $
 --             describeReservedInstances
 --
+--         , testDescribeIdFormat $
+--             describeIdFormat
+--
 --         , testDescribeVPCs $
 --             describeVPCs
 --
@@ -259,6 +268,9 @@
 --         , testModifyVPCEndpoint $
 --             modifyVPCEndpoint
 --
+--         , testAllocateHosts $
+--             allocateHosts
+--
 --         , testRegisterImage $
 --             registerImage
 --
@@ -355,6 +367,9 @@
 --         , testDescribeInstances $
 --             describeInstances
 --
+--         , testCreateNatGateway $
+--             createNatGateway
+--
 --         , testDescribeVPCPeeringConnections $
 --             describeVPCPeeringConnections
 --
@@ -382,6 +397,9 @@
 --         , testDescribeNetworkInterfaceAttribute $
 --             describeNetworkInterfaceAttribute
 --
+--         , testReleaseHosts $
+--             releaseHosts
+--
 --         , testResetNetworkInterfaceAttribute $
 --             resetNetworkInterfaceAttribute
 --
@@ -394,6 +412,9 @@
 --         , testCreateVPNConnection $
 --             createVPNConnection
 --
+--         , testDeleteNatGateway $
+--             deleteNatGateway
+--
 --         , testDescribeImportSnapshotTasks $
 --             describeImportSnapshotTasks
 --
@@ -481,6 +502,9 @@
 --         , testDescribeAccountAttributes $
 --             describeAccountAttributes
 --
+--         , testModifyHosts $
+--             modifyHosts
+--
 --         , testRebootInstances $
 --             rebootInstances
 --
@@ -508,9 +532,15 @@
 --         , testGetConsoleOutput $
 --             getConsoleOutput
 --
+--         , testDescribeHosts $
+--             describeHosts
+--
 --         , testDescribeImageAttribute $
 --             describeImageAttribute
 --
+--         , testModifyIdFormat $
+--             modifyIdFormat
+--
 --         , testDeleteRouteTable $
 --             deleteRouteTable
 --
@@ -679,6 +709,9 @@
 --         , testReplaceNetworkACLAssociationResponse $
 --             replaceNetworkACLAssociationResponse
 --
+--         , testDescribeNatGatewaysResponse $
+--             describeNatGatewaysResponse
+--
 --         , testDescribeAddressesResponse $
 --             describeAddressesResponse
 --
@@ -760,6 +793,9 @@
 --         , testAttachInternetGatewayResponse $
 --             attachInternetGatewayResponse
 --
+--         , testModifyInstancePlacementResponse $
+--             modifyInstancePlacementResponse
+--
 --         , testDescribeFlowLogsResponse $
 --             describeFlowLogsResponse
 --
@@ -772,6 +808,9 @@
 --         , testDescribeReservedInstancesResponse $
 --             describeReservedInstancesResponse
 --
+--         , testDescribeIdFormatResponse $
+--             describeIdFormatResponse
+--
 --         , testDescribeVPCsResponse $
 --             describeVPCsResponse
 --
@@ -811,6 +850,9 @@
 --         , testModifyVPCEndpointResponse $
 --             modifyVPCEndpointResponse
 --
+--         , testAllocateHostsResponse $
+--             allocateHostsResponse
+--
 --         , testRegisterImageResponse $
 --             registerImageResponse
 --
@@ -907,6 +949,9 @@
 --         , testDescribeInstancesResponse $
 --             describeInstancesResponse
 --
+--         , testCreateNatGatewayResponse $
+--             createNatGatewayResponse
+--
 --         , testDescribeVPCPeeringConnectionsResponse $
 --             describeVPCPeeringConnectionsResponse
 --
@@ -934,6 +979,9 @@
 --         , testDescribeNetworkInterfaceAttributeResponse $
 --             describeNetworkInterfaceAttributeResponse
 --
+--         , testReleaseHostsResponse $
+--             releaseHostsResponse
+--
 --         , testResetNetworkInterfaceAttributeResponse $
 --             resetNetworkInterfaceAttributeResponse
 --
@@ -946,6 +994,9 @@
 --         , testCreateVPNConnectionResponse $
 --             createVPNConnectionResponse
 --
+--         , testDeleteNatGatewayResponse $
+--             deleteNatGatewayResponse
+--
 --         , testDescribeImportSnapshotTasksResponse $
 --             describeImportSnapshotTasksResponse
 --
@@ -1033,6 +1084,9 @@
 --         , testDescribeAccountAttributesResponse $
 --             describeAccountAttributesResponse
 --
+--         , testModifyHostsResponse $
+--             modifyHostsResponse
+--
 --         , testRebootInstancesResponse $
 --             rebootInstancesResponse
 --
@@ -1060,9 +1114,15 @@
 --         , testGetConsoleOutputResponse $
 --             getConsoleOutputResponse
 --
+--         , testDescribeHostsResponse $
+--             describeHostsResponse
+--
 --         , testDescribeImageAttributeResponse $
 --             describeImageAttributeResponse
 --
+--         , testModifyIdFormatResponse $
+--             modifyIdFormatResponse
+--
 --         , testDeleteRouteTableResponse $
 --             deleteRouteTableResponse
 --
@@ -1299,6 +1359,11 @@
     "ReplaceNetworkACLAssociation"
     "fixture/ReplaceNetworkACLAssociation.yaml"
 
+testDescribeNatGateways :: DescribeNatGateways -> TestTree
+testDescribeNatGateways = req
+    "DescribeNatGateways"
+    "fixture/DescribeNatGateways.yaml"
+
 testDescribeAddresses :: DescribeAddresses -> TestTree
 testDescribeAddresses = req
     "DescribeAddresses"
@@ -1434,6 +1499,11 @@
     "AttachInternetGateway"
     "fixture/AttachInternetGateway.yaml"
 
+testModifyInstancePlacement :: ModifyInstancePlacement -> TestTree
+testModifyInstancePlacement = req
+    "ModifyInstancePlacement"
+    "fixture/ModifyInstancePlacement.yaml"
+
 testDescribeFlowLogs :: DescribeFlowLogs -> TestTree
 testDescribeFlowLogs = req
     "DescribeFlowLogs"
@@ -1454,6 +1524,11 @@
     "DescribeReservedInstances"
     "fixture/DescribeReservedInstances.yaml"
 
+testDescribeIdFormat :: DescribeIdFormat -> TestTree
+testDescribeIdFormat = req
+    "DescribeIdFormat"
+    "fixture/DescribeIdFormat.yaml"
+
 testDescribeVPCs :: DescribeVPCs -> TestTree
 testDescribeVPCs = req
     "DescribeVPCs"
@@ -1519,6 +1594,11 @@
     "ModifyVPCEndpoint"
     "fixture/ModifyVPCEndpoint.yaml"
 
+testAllocateHosts :: AllocateHosts -> TestTree
+testAllocateHosts = req
+    "AllocateHosts"
+    "fixture/AllocateHosts.yaml"
+
 testRegisterImage :: RegisterImage -> TestTree
 testRegisterImage = req
     "RegisterImage"
@@ -1679,6 +1759,11 @@
     "DescribeInstances"
     "fixture/DescribeInstances.yaml"
 
+testCreateNatGateway :: CreateNatGateway -> TestTree
+testCreateNatGateway = req
+    "CreateNatGateway"
+    "fixture/CreateNatGateway.yaml"
+
 testDescribeVPCPeeringConnections :: DescribeVPCPeeringConnections -> TestTree
 testDescribeVPCPeeringConnections = req
     "DescribeVPCPeeringConnections"
@@ -1724,6 +1809,11 @@
     "DescribeNetworkInterfaceAttribute"
     "fixture/DescribeNetworkInterfaceAttribute.yaml"
 
+testReleaseHosts :: ReleaseHosts -> TestTree
+testReleaseHosts = req
+    "ReleaseHosts"
+    "fixture/ReleaseHosts.yaml"
+
 testResetNetworkInterfaceAttribute :: ResetNetworkInterfaceAttribute -> TestTree
 testResetNetworkInterfaceAttribute = req
     "ResetNetworkInterfaceAttribute"
@@ -1744,6 +1834,11 @@
     "CreateVPNConnection"
     "fixture/CreateVPNConnection.yaml"
 
+testDeleteNatGateway :: DeleteNatGateway -> TestTree
+testDeleteNatGateway = req
+    "DeleteNatGateway"
+    "fixture/DeleteNatGateway.yaml"
+
 testDescribeImportSnapshotTasks :: DescribeImportSnapshotTasks -> TestTree
 testDescribeImportSnapshotTasks = req
     "DescribeImportSnapshotTasks"
@@ -1889,6 +1984,11 @@
     "DescribeAccountAttributes"
     "fixture/DescribeAccountAttributes.yaml"
 
+testModifyHosts :: ModifyHosts -> TestTree
+testModifyHosts = req
+    "ModifyHosts"
+    "fixture/ModifyHosts.yaml"
+
 testRebootInstances :: RebootInstances -> TestTree
 testRebootInstances = req
     "RebootInstances"
@@ -1934,11 +2034,21 @@
     "GetConsoleOutput"
     "fixture/GetConsoleOutput.yaml"
 
+testDescribeHosts :: DescribeHosts -> TestTree
+testDescribeHosts = req
+    "DescribeHosts"
+    "fixture/DescribeHosts.yaml"
+
 testDescribeImageAttribute :: DescribeImageAttribute -> TestTree
 testDescribeImageAttribute = req
     "DescribeImageAttribute"
     "fixture/DescribeImageAttribute.yaml"
 
+testModifyIdFormat :: ModifyIdFormat -> TestTree
+testModifyIdFormat = req
+    "ModifyIdFormat"
+    "fixture/ModifyIdFormat.yaml"
+
 testDeleteRouteTable :: DeleteRouteTable -> TestTree
 testDeleteRouteTable = req
     "DeleteRouteTable"
@@ -2282,6 +2392,13 @@
     eC2
     (Proxy :: Proxy ReplaceNetworkACLAssociation)
 
+testDescribeNatGatewaysResponse :: DescribeNatGatewaysResponse -> TestTree
+testDescribeNatGatewaysResponse = res
+    "DescribeNatGatewaysResponse"
+    "fixture/DescribeNatGatewaysResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeNatGateways)
+
 testDescribeAddressesResponse :: DescribeAddressesResponse -> TestTree
 testDescribeAddressesResponse = res
     "DescribeAddressesResponse"
@@ -2471,6 +2588,13 @@
     eC2
     (Proxy :: Proxy AttachInternetGateway)
 
+testModifyInstancePlacementResponse :: ModifyInstancePlacementResponse -> TestTree
+testModifyInstancePlacementResponse = res
+    "ModifyInstancePlacementResponse"
+    "fixture/ModifyInstancePlacementResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyInstancePlacement)
+
 testDescribeFlowLogsResponse :: DescribeFlowLogsResponse -> TestTree
 testDescribeFlowLogsResponse = res
     "DescribeFlowLogsResponse"
@@ -2499,6 +2623,13 @@
     eC2
     (Proxy :: Proxy DescribeReservedInstances)
 
+testDescribeIdFormatResponse :: DescribeIdFormatResponse -> TestTree
+testDescribeIdFormatResponse = res
+    "DescribeIdFormatResponse"
+    "fixture/DescribeIdFormatResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeIdFormat)
+
 testDescribeVPCsResponse :: DescribeVPCsResponse -> TestTree
 testDescribeVPCsResponse = res
     "DescribeVPCsResponse"
@@ -2590,6 +2721,13 @@
     eC2
     (Proxy :: Proxy ModifyVPCEndpoint)
 
+testAllocateHostsResponse :: AllocateHostsResponse -> TestTree
+testAllocateHostsResponse = res
+    "AllocateHostsResponse"
+    "fixture/AllocateHostsResponse.proto"
+    eC2
+    (Proxy :: Proxy AllocateHosts)
+
 testRegisterImageResponse :: RegisterImageResponse -> TestTree
 testRegisterImageResponse = res
     "RegisterImageResponse"
@@ -2814,6 +2952,13 @@
     eC2
     (Proxy :: Proxy DescribeInstances)
 
+testCreateNatGatewayResponse :: CreateNatGatewayResponse -> TestTree
+testCreateNatGatewayResponse = res
+    "CreateNatGatewayResponse"
+    "fixture/CreateNatGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateNatGateway)
+
 testDescribeVPCPeeringConnectionsResponse :: DescribeVPCPeeringConnectionsResponse -> TestTree
 testDescribeVPCPeeringConnectionsResponse = res
     "DescribeVPCPeeringConnectionsResponse"
@@ -2877,6 +3022,13 @@
     eC2
     (Proxy :: Proxy DescribeNetworkInterfaceAttribute)
 
+testReleaseHostsResponse :: ReleaseHostsResponse -> TestTree
+testReleaseHostsResponse = res
+    "ReleaseHostsResponse"
+    "fixture/ReleaseHostsResponse.proto"
+    eC2
+    (Proxy :: Proxy ReleaseHosts)
+
 testResetNetworkInterfaceAttributeResponse :: ResetNetworkInterfaceAttributeResponse -> TestTree
 testResetNetworkInterfaceAttributeResponse = res
     "ResetNetworkInterfaceAttributeResponse"
@@ -2905,6 +3057,13 @@
     eC2
     (Proxy :: Proxy CreateVPNConnection)
 
+testDeleteNatGatewayResponse :: DeleteNatGatewayResponse -> TestTree
+testDeleteNatGatewayResponse = res
+    "DeleteNatGatewayResponse"
+    "fixture/DeleteNatGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteNatGateway)
+
 testDescribeImportSnapshotTasksResponse :: DescribeImportSnapshotTasksResponse -> TestTree
 testDescribeImportSnapshotTasksResponse = res
     "DescribeImportSnapshotTasksResponse"
@@ -3108,6 +3267,13 @@
     eC2
     (Proxy :: Proxy DescribeAccountAttributes)
 
+testModifyHostsResponse :: ModifyHostsResponse -> TestTree
+testModifyHostsResponse = res
+    "ModifyHostsResponse"
+    "fixture/ModifyHostsResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyHosts)
+
 testRebootInstancesResponse :: RebootInstancesResponse -> TestTree
 testRebootInstancesResponse = res
     "RebootInstancesResponse"
@@ -3171,12 +3337,26 @@
     eC2
     (Proxy :: Proxy GetConsoleOutput)
 
+testDescribeHostsResponse :: DescribeHostsResponse -> TestTree
+testDescribeHostsResponse = res
+    "DescribeHostsResponse"
+    "fixture/DescribeHostsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeHosts)
+
 testDescribeImageAttributeResponse :: DescribeImageAttributeResponse -> TestTree
 testDescribeImageAttributeResponse = res
     "DescribeImageAttributeResponse"
     "fixture/DescribeImageAttributeResponse.proto"
     eC2
     (Proxy :: Proxy DescribeImageAttribute)
+
+testModifyIdFormatResponse :: ModifyIdFormatResponse -> TestTree
+testModifyIdFormatResponse = res
+    "ModifyIdFormatResponse"
+    "fixture/ModifyIdFormatResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyIdFormat)
 
 testDeleteRouteTableResponse :: DeleteRouteTableResponse -> TestTree
 testDeleteRouteTableResponse = res
