diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.1`
+`1.3.2`
 
 
 ## 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.1
+version:               1.3.2
 synopsis:              Amazon Elastic Compute Cloud SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -236,7 +236,7 @@
         , Network.AWS.EC2.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.1.*
+          amazonka-core == 1.3.2.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ec2-test
@@ -256,9 +256,9 @@
         , Test.AWS.EC2.Internal
 
     build-depends:
-          amazonka-core == 1.3.1.*
-        , amazonka-test == 1.3.1.*
-        , amazonka-ec2 == 1.3.1.*
+          amazonka-core == 1.3.2.*
+        , amazonka-test == 1.3.2.*
+        , amazonka-ec2 == 1.3.2.*
         , base
         , bytestring
         , lens
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
@@ -659,6 +659,9 @@
     -- ** AddressStatus
     , AddressStatus (..)
 
+    -- ** AllocationStrategy
+    , AllocationStrategy (..)
+
     -- ** ArchitectureValues
     , ArchitectureValues (..)
 
@@ -1894,7 +1897,9 @@
     -- ** Snapshot
     , Snapshot
     , snapshot
+    , sStateMessage
     , sOwnerAlias
+    , sDataEncryptionKeyId
     , sKMSKeyId
     , sTags
     , sSnapshotId
@@ -1991,6 +1996,7 @@
     , sfrcdValidUntil
     , sfrcdTerminateInstancesWithExpiration
     , sfrcdValidFrom
+    , sfrcdAllocationStrategy
     , sfrcdSpotPrice
     , sfrcdTargetCapacity
     , sfrcdIAMFleetRole
@@ -2058,12 +2064,12 @@
     -- ** Subnet
     , Subnet
     , subnet
+    , subMapPublicIPOnLaunch
+    , subDefaultForAz
     , subTags
     , subAvailabilityZone
     , subAvailableIPAddressCount
     , subCIdRBlock
-    , subDefaultForAz
-    , subMapPublicIPOnLaunch
     , subState
     , subSubnetId
     , subVPCId
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
@@ -18,16 +18,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Cancels one or more Spot Instance requests. Spot Instances are instances
+-- Cancels one or more Spot instance requests. Spot instances are instances
 -- that Amazon EC2 starts on your behalf when the bid price that you
--- specify exceeds the current Spot Price. Amazon EC2 periodically sets the
--- Spot Price based on available Spot Instance capacity and current Spot
--- Instance requests. For more information, see
+-- specify exceeds the current Spot price. Amazon EC2 periodically sets the
+-- Spot price based on available Spot instance capacity and current Spot
+-- instance requests. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
--- Canceling a Spot Instance request does not terminate running Spot
--- Instances associated with the request.
+-- Canceling a Spot instance request does not terminate running Spot
+-- instances associated with the request.
 --
 -- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CancelSpotInstanceRequests.html AWS API Reference> for CancelSpotInstanceRequests.
 module Network.AWS.EC2.CancelSpotInstanceRequests
@@ -83,7 +83,7 @@
 csirDryRun :: Lens' CancelSpotInstanceRequests (Maybe Bool)
 csirDryRun = lens _csirDryRun (\ s a -> s{_csirDryRun = a});
 
--- | One or more Spot Instance request IDs.
+-- | One or more Spot instance request IDs.
 csirSpotInstanceRequestIds :: Lens' CancelSpotInstanceRequests [Text]
 csirSpotInstanceRequestIds = lens _csirSpotInstanceRequestIds (\ s a -> s{_csirSpotInstanceRequestIds = a}) . _Coerce;
 
@@ -139,7 +139,7 @@
     , _csirrsResponseStatus = pResponseStatus_
     }
 
--- | One or more Spot Instance requests.
+-- | One or more Spot instance requests.
 csirrsCancelledSpotInstanceRequests :: Lens' CancelSpotInstanceRequestsResponse [CancelledSpotInstanceRequest]
 csirrsCancelledSpotInstanceRequests = lens _csirrsCancelledSpotInstanceRequests (\ s a -> s{_csirrsCancelledSpotInstanceRequests = a}) . _Default . _Coerce;
 
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
@@ -65,7 +65,9 @@
     , snapshot
     , Snapshot
     -- * Response Lenses
+    , sStateMessage
     , sOwnerAlias
+    , sDataEncryptionKeyId
     , sKMSKeyId
     , sTags
     , sSnapshotId
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
@@ -18,8 +18,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a data feed for Spot Instances, enabling you to view Spot
--- Instance usage logs. You can create one data feed per AWS account. For
+-- Creates a data feed for Spot instances, enabling you to view Spot
+-- instance usage logs. You can create one data feed per AWS account. For
 -- more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html Spot Instance Data Feed>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
@@ -88,7 +88,7 @@
 csdsDryRun :: Lens' CreateSpotDatafeedSubscription (Maybe Bool)
 csdsDryRun = lens _csdsDryRun (\ s a -> s{_csdsDryRun = a});
 
--- | The Amazon S3 bucket in which to store the Spot Instance data feed.
+-- | The Amazon S3 bucket in which to store the Spot instance data feed.
 csdsBucket :: Lens' CreateSpotDatafeedSubscription Text
 csdsBucket = lens _csdsBucket (\ s a -> s{_csdsBucket = a});
 
@@ -144,7 +144,7 @@
     , _csdsrsResponseStatus = pResponseStatus_
     }
 
--- | The Spot Instance data feed subscription.
+-- | The Spot instance data feed subscription.
 csdsrsSpotDatafeedSubscription :: Lens' CreateSpotDatafeedSubscriptionResponse (Maybe SpotDatafeedSubscription)
 csdsrsSpotDatafeedSubscription = lens _csdsrsSpotDatafeedSubscription (\ s a -> s{_csdsrsSpotDatafeedSubscription = a});
 
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
@@ -18,9 +18,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes the data feed for Spot Instances. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html Spot Instance Data Feed>
--- in the /Amazon Elastic Compute Cloud User Guide/.
+-- Deletes the data feed for Spot instances.
 --
 -- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSpotDatafeedSubscription.html AWS API Reference> for DeleteSpotDatafeedSubscription.
 module Network.AWS.EC2.DeleteSpotDatafeedSubscription
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
@@ -82,7 +82,9 @@
     , _dsgsDryRun = Nothing
     }
 
--- | One or more filters.
+-- | One or more filters. If using multiple filters for rules, the results
+-- include security groups for which any combination of rules - not
+-- necessarily a single rule - match all filters.
 --
 -- -   'description' - The description of the security group.
 --
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
@@ -18,7 +18,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the data feed for Spot Instances. For more information, see
+-- Describes the data feed for Spot instances. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html Spot Instance Data Feed>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
@@ -124,7 +124,7 @@
     , _dsdsrsResponseStatus = pResponseStatus_
     }
 
--- | The Spot Instance data feed subscription.
+-- | The Spot instance data feed subscription.
 dsdsrsSpotDatafeedSubscription :: Lens' DescribeSpotDatafeedSubscriptionResponse (Maybe SpotDatafeedSubscription)
 dsdsrsSpotDatafeedSubscription = lens _dsdsrsSpotDatafeedSubscription (\ s a -> s{_dsdsrsSpotDatafeedSubscription = a});
 
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
@@ -18,16 +18,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the Spot Instance requests that belong to your account. Spot
--- Instances are instances that Amazon EC2 launches when the bid price that
--- you specify exceeds the current Spot Price. Amazon EC2 periodically sets
--- the Spot Price based on available Spot Instance capacity and current
--- Spot Instance requests. For more information, see
+-- Describes the Spot instance requests that belong to your account. Spot
+-- instances are instances that Amazon EC2 launches when the bid price that
+-- you specify exceeds the current Spot price. Amazon EC2 periodically sets
+-- the Spot price based on available Spot instance capacity and current
+-- Spot instance requests. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
 -- You can use 'DescribeSpotInstanceRequests' to find a running Spot
--- Instance by examining the response. If the status of the Spot Instance
+-- instance by examining the response. If the status of the Spot instance
 -- is 'fulfilled', the instance ID appears in the response and contains the
 -- identifier of the instance. Alternatively, you can use DescribeInstances
 -- with a filter to look for instances where the instance lifecycle is
@@ -89,7 +89,7 @@
 --
 -- -   'availability-zone-group' - The Availability Zone group.
 --
--- -   'create-time' - The time stamp when the Spot Instance request was
+-- -   'create-time' - The time stamp when the Spot instance request was
 --     created.
 --
 -- -   'fault-code' - The fault code related to the request.
@@ -98,7 +98,7 @@
 --
 -- -   'instance-id' - The ID of the instance that fulfilled the request.
 --
--- -   'launch-group' - The Spot Instance launch group.
+-- -   'launch-group' - The Spot instance launch group.
 --
 -- -   'launch.block-device-mapping.delete-on-termination' - Indicates
 --     whether the Amazon EBS volume is deleted on instance termination.
@@ -128,7 +128,7 @@
 --     with.
 --
 -- -   'launch.monitoring-enabled' - Whether monitoring is enabled for the
---     Spot Instance.
+--     Spot instance.
 --
 -- -   'launch.ramdisk-id' - The RAM disk ID.
 --
@@ -162,23 +162,23 @@
 -- -   'product-description' - The product description associated with the
 --     instance ('Linux\/UNIX' | 'Windows').
 --
--- -   'spot-instance-request-id' - The Spot Instance request ID.
+-- -   'spot-instance-request-id' - The Spot instance request ID.
 --
--- -   'spot-price' - The maximum hourly price for any Spot Instance
+-- -   'spot-price' - The maximum hourly price for any Spot instance
 --     launched to fulfill the request.
 --
--- -   'state' - The state of the Spot Instance request ('open' | 'active'
+-- -   'state' - The state of the Spot instance request ('open' | 'active'
 --     | 'closed' | 'cancelled' | 'failed'). Spot bid status information
---     can help you track your Amazon EC2 Spot Instance requests. For more
+--     can help you track your Amazon EC2 Spot instance requests. For more
 --     information, see
 --     <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html Spot Bid Status>
 --     in the Amazon Elastic Compute Cloud User Guide.
 --
 -- -   'status-code' - The short code describing the most recent evaluation
---     of your Spot Instance request.
+--     of your Spot instance request.
 --
 -- -   'status-message' - The message explaining the status of the Spot
---     Instance request.
+--     instance request.
 --
 -- -   'tag':/key/=/value/ - The key\/value combination of a tag assigned
 --     to the resource.
@@ -194,7 +194,7 @@
 -- -   'tag-value' - The value of a tag assigned to the resource. This
 --     filter is independent of the 'tag-key' filter.
 --
--- -   'type' - The type of Spot Instance request ('one-time' |
+-- -   'type' - The type of Spot instance request ('one-time' |
 --     'persistent').
 --
 -- -   'launched-availability-zone' - The Availability Zone in which the
@@ -207,7 +207,7 @@
 dsirFilters :: Lens' DescribeSpotInstanceRequests [Filter]
 dsirFilters = lens _dsirFilters (\ s a -> s{_dsirFilters = a}) . _Default . _Coerce;
 
--- | One or more Spot Instance request IDs.
+-- | One or more Spot instance request IDs.
 dsirSpotInstanceRequestIds :: Lens' DescribeSpotInstanceRequests [Text]
 dsirSpotInstanceRequestIds = lens _dsirSpotInstanceRequestIds (\ s a -> s{_dsirSpotInstanceRequestIds = a}) . _Default . _Coerce;
 
@@ -273,7 +273,7 @@
     , _dsirrsResponseStatus = pResponseStatus_
     }
 
--- | One or more Spot Instance requests.
+-- | One or more Spot instance requests.
 dsirrsSpotInstanceRequests :: Lens' DescribeSpotInstanceRequestsResponse [SpotInstanceRequest]
 dsirrsSpotInstanceRequests = lens _dsirrsSpotInstanceRequests (\ s a -> s{_dsirrsSpotInstanceRequests = a}) . _Default . _Coerce;
 
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
@@ -18,7 +18,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the Spot Price history. The prices returned are listed in
+-- Describes the Spot price history. The prices returned are listed in
 -- chronological order, from the oldest to the most recent, for up to the
 -- past 90 days. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html Spot Instance Pricing History>
@@ -133,15 +133,15 @@
 --
 -- -   'instance-type' - The type of instance (for example, 'm1.small').
 --
--- -   'product-description' - The product description for the Spot Price
+-- -   'product-description' - The product description for the Spot price
 --     ('Linux\/UNIX' | 'SUSE Linux' | 'Windows' |
 --     'Linux\/UNIX (Amazon VPC)' | 'SUSE Linux (Amazon VPC)' |
 --     'Windows (Amazon VPC)').
 --
--- -   'spot-price' - The Spot Price. The value must match exactly (or use
+-- -   'spot-price' - The Spot price. The value must match exactly (or use
 --     wildcards; greater than or less than comparison is not supported).
 --
--- -   'timestamp' - The timestamp of the Spot Price history, in UTC format
+-- -   'timestamp' - The timestamp of the Spot price history, in UTC format
 --     (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). You can use
 --     wildcards (* and ?). Greater than or less than comparison is not
 --     supported.
@@ -259,7 +259,7 @@
 dsphrsNextToken :: Lens' DescribeSpotPriceHistoryResponse (Maybe Text)
 dsphrsNextToken = lens _dsphrsNextToken (\ s a -> s{_dsphrsNextToken = a});
 
--- | The historical Spot Prices.
+-- | The historical Spot prices.
 dsphrsSpotPriceHistory :: Lens' DescribeSpotPriceHistoryResponse [SpotPrice]
 dsphrsSpotPriceHistory = lens _dsphrsSpotPriceHistory (\ s a -> s{_dsphrsSpotPriceHistory = a}) . _Default . _Coerce;
 
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
@@ -20,12 +20,22 @@
 --
 -- Creates a Spot fleet request.
 --
--- You can submit a single request that specifies multiple instance types,
--- each with its own instance weighting that reflects its value to your
--- application workload. Amazon EC2 computes the bid price for each launch
--- specification and requests Spot Instances in the Spot pool where the
--- price per unit is the lowest. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html Spot Fleets>
+-- You can submit a single request that includes multiple launch
+-- specifications that vary by instance type, AMI, Availability Zone, or
+-- subnet.
+--
+-- By default, the Spot fleet requests Spot instances in the Spot pool
+-- where the price per unit is the lowest. Each launch specification can
+-- include its own instance weighting that reflects the value of the
+-- instance type to your application workload.
+--
+-- Alternatively, you can specify that the Spot fleet distribute the target
+-- capacity across the Spot pools included in its launch specifications. By
+-- ensuring that the Spot instances in your Spot fleet are in different
+-- Spot pools, you can improve the availability of your fleet.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html Spot Fleet Requests>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
 -- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RequestSpotFleet.html AWS API Reference> for RequestSpotFleet.
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
@@ -18,10 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a Spot Instance request. Spot Instances are instances that
+-- Creates a Spot instance request. Spot instances are instances that
 -- Amazon EC2 launches when the bid price that you specify exceeds the
--- current Spot Price. Amazon EC2 periodically sets the Spot Price based on
--- available Spot Instance capacity and current Spot Instance requests. For
+-- current Spot price. Amazon EC2 periodically sets the Spot price based on
+-- available Spot Instance capacity and current Spot instance requests. For
 -- more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
@@ -121,7 +121,7 @@
 rsiClientToken :: Lens' RequestSpotInstances (Maybe Text)
 rsiClientToken = lens _rsiClientToken (\ s a -> s{_rsiClientToken = a});
 
--- | The maximum number of Spot Instances to launch.
+-- | The maximum number of Spot instances to launch.
 --
 -- Default: 1
 rsiInstanceCount :: Lens' RequestSpotInstances (Maybe Int)
@@ -134,20 +134,20 @@
 -- | The user-specified name for a logical grouping of bids.
 --
 -- When you specify an Availability Zone group in a Spot Instance request,
--- all Spot Instances in the request are launched in the same Availability
+-- all Spot instances in the request are launched in the same Availability
 -- Zone. Instance proximity is maintained with this parameter, but the
 -- choice of Availability Zone is not. The group applies only to bids for
--- Spot Instances of the same instance type. Any additional Spot Instance
+-- Spot Instances of the same instance type. Any additional Spot instance
 -- requests that are specified with the same Availability Zone group name
 -- are launched in that same Availability Zone, as long as at least one
 -- instance from the group is still active.
 --
 -- If there is no active instance running in the Availability Zone group
--- that you specify for a new Spot Instance request (all instances are
+-- that you specify for a new Spot instance request (all instances are
 -- terminated, the bid is expired, or the bid falls below current market),
 -- then Amazon EC2 launches the instance in any Availability Zone where the
 -- constraint can be met. Consequently, the subsequent set of Spot
--- Instances could be placed in a different zone from the original request,
+-- instances could be placed in a different zone from the original request,
 -- even if you specified the same Availability Zone group.
 --
 -- Default: Instances are launched in any available Availability Zone.
@@ -163,14 +163,14 @@
 rsiValidUntil :: Lens' RequestSpotInstances (Maybe UTCTime)
 rsiValidUntil = lens _rsiValidUntil (\ s a -> s{_rsiValidUntil = a}) . mapping _Time;
 
--- | The instance launch group. Launch groups are Spot Instances that launch
+-- | The instance launch group. Launch groups are Spot instances that launch
 -- together and terminate together.
 --
 -- Default: Instances are launched and terminated individually
 rsiLaunchGroup :: Lens' RequestSpotInstances (Maybe Text)
 rsiLaunchGroup = lens _rsiLaunchGroup (\ s a -> s{_rsiLaunchGroup = a});
 
--- | The Spot Instance request type.
+-- | The Spot instance request type.
 --
 -- Default: 'one-time'
 rsiType :: Lens' RequestSpotInstances (Maybe SpotInstanceType)
@@ -193,7 +193,7 @@
 rsiDryRun :: Lens' RequestSpotInstances (Maybe Bool)
 rsiDryRun = lens _rsiDryRun (\ s a -> s{_rsiDryRun = a});
 
--- | The maximum hourly price (bid) for any Spot Instance launched to fulfill
+-- | The maximum hourly price (bid) for any Spot instance launched to fulfill
 -- the request.
 rsiSpotPrice :: Lens' RequestSpotInstances Text
 rsiSpotPrice = lens _rsiSpotPrice (\ s a -> s{_rsiSpotPrice = a});
@@ -254,7 +254,7 @@
     , _rsirsResponseStatus = pResponseStatus_
     }
 
--- | One or more Spot Instance requests.
+-- | One or more Spot instance requests.
 rsirsSpotInstanceRequests :: Lens' RequestSpotInstancesResponse [SpotInstanceRequest]
 rsirsSpotInstanceRequests = lens _rsirsSpotInstanceRequests (\ s a -> s{_rsirsSpotInstanceRequests = a}) . _Default . _Coerce;
 
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,9 @@
     -- * AddressStatus
     , AddressStatus (..)
 
+    -- * AllocationStrategy
+    , AllocationStrategy (..)
+
     -- * ArchitectureValues
     , ArchitectureValues (..)
 
@@ -1258,7 +1261,9 @@
     -- * Snapshot
     , Snapshot
     , snapshot
+    , sStateMessage
     , sOwnerAlias
+    , sDataEncryptionKeyId
     , sKMSKeyId
     , sTags
     , sSnapshotId
@@ -1355,6 +1360,7 @@
     , sfrcdValidUntil
     , sfrcdTerminateInstancesWithExpiration
     , sfrcdValidFrom
+    , sfrcdAllocationStrategy
     , sfrcdSpotPrice
     , sfrcdTargetCapacity
     , sfrcdIAMFleetRole
@@ -1422,12 +1428,12 @@
     -- * Subnet
     , Subnet
     , subnet
+    , subMapPublicIPOnLaunch
+    , subDefaultForAz
     , subTags
     , subAvailabilityZone
     , subAvailableIPAddressCount
     , subCIdRBlock
-    , subDefaultForAz
-    , subMapPublicIPOnLaunch
     , subState
     , subSubnetId
     , subVPCId
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
@@ -120,7 +120,7 @@
 aiInstanceType :: Lens' ActiveInstance (Maybe Text)
 aiInstanceType = lens _aiInstanceType (\ s a -> s{_aiInstanceType = a});
 
--- | The ID of the Spot Instance request.
+-- | The ID of the Spot instance request.
 aiSpotInstanceRequestId :: Lens' ActiveInstance (Maybe Text)
 aiSpotInstanceRequestId = lens _aiSpotInstanceRequestId (\ s a -> s{_aiSpotInstanceRequestId = a});
 
@@ -732,7 +732,7 @@
                 (x .@ "currentSpotFleetRequestState")
                 <*> (x .@ "previousSpotFleetRequestState")
 
--- | Describes a request to cancel a Spot Instance.
+-- | Describes a request to cancel a Spot instance.
 --
 -- /See:/ 'cancelledSpotInstanceRequest' smart constructor.
 data CancelledSpotInstanceRequest = CancelledSpotInstanceRequest'
@@ -755,11 +755,11 @@
     , _csirSpotInstanceRequestId = Nothing
     }
 
--- | The state of the Spot Instance request.
+-- | The state of the Spot instance request.
 csirState :: Lens' CancelledSpotInstanceRequest (Maybe CancelSpotInstanceRequestState)
 csirState = lens _csirState (\ s a -> s{_csirState = a});
 
--- | The ID of the Spot Instance request.
+-- | The ID of the Spot instance request.
 csirSpotInstanceRequestId :: Lens' CancelledSpotInstanceRequest (Maybe Text)
 csirSpotInstanceRequestId = lens _csirSpotInstanceRequestId (\ s a -> s{_csirSpotInstanceRequestId = a});
 
@@ -1664,23 +1664,23 @@
 --     valid. For more information, see the description.
 --
 -- -   'spotInstanceCountLimitExceeded' - You\'ve reached the limit on the
---     number of Spot Instances that you can launch.
+--     number of Spot instances that you can launch.
 --
 -- The following are the 'fleetRequestChange' events.
 --
 -- -   'active' - The Spot fleet has been validated and Amazon EC2 is
---     attempting to maintain the target number of running Spot Instances.
+--     attempting to maintain the target number of running Spot instances.
 --
 -- -   'cancelled' - The Spot fleet is canceled and has no running Spot
---     Instances. The Spot fleet will be deleted two days after its
+--     instances. The Spot fleet will be deleted two days after its
 --     instances were terminated.
 --
 -- -   'cancelled_running' - The Spot fleet is canceled and will not launch
---     additional Spot Instances, but its existing Spot Instances will
---     continue to run until they are interrupted or terminated.
+--     additional Spot instances, but its existing Spot instances continue
+--     to run until they are interrupted or terminated.
 --
 -- -   'cancelled_terminating' - The Spot fleet is canceled and its Spot
---     Instances are terminating.
+--     instances are terminating.
 --
 -- -   'expired' - The Spot fleet request has expired. A subsequent event
 --     indicates that the instances were terminated, if the request was
@@ -1690,7 +1690,7 @@
 --     adjusted because it was too high. This change is permanent.
 --
 -- -   'submitted' - The Spot fleet request is being evaluated and Amazon
---     EC2 is preparing to launch the target number of Spot Instances.
+--     EC2 is preparing to launch the target number of Spot instances.
 --
 -- The following are the 'instanceChange' events.
 --
@@ -7670,26 +7670,32 @@
 --
 -- /See:/ 'snapshot' smart constructor.
 data Snapshot = Snapshot'
-    { _sOwnerAlias  :: !(Maybe Text)
-    , _sKMSKeyId    :: !(Maybe Text)
-    , _sTags        :: !(Maybe [Tag])
-    , _sSnapshotId  :: !Text
-    , _sOwnerId     :: !Text
-    , _sVolumeId    :: !Text
-    , _sVolumeSize  :: !Int
-    , _sDescription :: !Text
-    , _sStartTime   :: !ISO8601
-    , _sProgress    :: !Text
-    , _sState       :: !SnapshotState
-    , _sEncrypted   :: !Bool
+    { _sStateMessage        :: !(Maybe Text)
+    , _sOwnerAlias          :: !(Maybe Text)
+    , _sDataEncryptionKeyId :: !(Maybe Text)
+    , _sKMSKeyId            :: !(Maybe Text)
+    , _sTags                :: !(Maybe [Tag])
+    , _sSnapshotId          :: !Text
+    , _sOwnerId             :: !Text
+    , _sVolumeId            :: !Text
+    , _sVolumeSize          :: !Int
+    , _sDescription         :: !Text
+    , _sStartTime           :: !ISO8601
+    , _sProgress            :: !Text
+    , _sState               :: !SnapshotState
+    , _sEncrypted           :: !Bool
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'Snapshot' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'sStateMessage'
+--
 -- * 'sOwnerAlias'
 --
+-- * 'sDataEncryptionKeyId'
+--
 -- * 'sKMSKeyId'
 --
 -- * 'sTags'
@@ -7724,7 +7730,9 @@
     -> Snapshot
 snapshot pSnapshotId_ pOwnerId_ pVolumeId_ pVolumeSize_ pDescription_ pStartTime_ pProgress_ pState_ pEncrypted_ =
     Snapshot'
-    { _sOwnerAlias = Nothing
+    { _sStateMessage = Nothing
+    , _sOwnerAlias = Nothing
+    , _sDataEncryptionKeyId = Nothing
     , _sKMSKeyId = Nothing
     , _sTags = Nothing
     , _sSnapshotId = pSnapshotId_
@@ -7738,11 +7746,29 @@
     , _sEncrypted = pEncrypted_
     }
 
+-- | Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot
+-- copy operation fails (for example, if the proper AWS Key Management
+-- Service (AWS KMS) permissions are not obtained) this field displays
+-- error state details to help you diagnose why the error occurred. This
+-- parameter is only returned by the DescribeSnapshots API operation.
+sStateMessage :: Lens' Snapshot (Maybe Text)
+sStateMessage = lens _sStateMessage (\ s a -> s{_sStateMessage = a});
+
 -- | The AWS account alias (for example, 'amazon', 'self') or AWS account ID
 -- that owns the snapshot.
 sOwnerAlias :: Lens' Snapshot (Maybe Text)
 sOwnerAlias = lens _sOwnerAlias (\ s a -> s{_sOwnerAlias = a});
 
+-- | The data encryption key identifier for the snapshot. This value is a
+-- unique identifier that corresponds to the data encryption key that was
+-- used to encrypt the original volume or snapshot copy. Because data
+-- encryption keys are inherited by volumes created from snapshots, and
+-- vice versa, if snapshots share the same data encryption key identifier,
+-- then they belong to the same volume\/snapshot lineage. This parameter is
+-- only returned by the DescribeSnapshots API operation.
+sDataEncryptionKeyId :: Lens' Snapshot (Maybe Text)
+sDataEncryptionKeyId = lens _sDataEncryptionKeyId (\ s a -> s{_sDataEncryptionKeyId = a});
+
 -- | The full ARN of the AWS Key Management Service (AWS KMS) customer master
 -- key (CMK) that was used to protect the volume encryption key for the
 -- parent volume.
@@ -7753,7 +7779,8 @@
 sTags :: Lens' Snapshot [Tag]
 sTags = lens _sTags (\ s a -> s{_sTags = a}) . _Default . _Coerce;
 
--- | The ID of the snapshot.
+-- | The ID of the snapshot. Each snapshot receives a unique identifier when
+-- it is created.
 sSnapshotId :: Lens' Snapshot Text
 sSnapshotId = lens _sSnapshotId (\ s a -> s{_sSnapshotId = a});
 
@@ -7761,7 +7788,7 @@
 sOwnerId :: Lens' Snapshot Text
 sOwnerId = lens _sOwnerId (\ s a -> s{_sOwnerId = a});
 
--- | The ID of the volume.
+-- | The ID of the volume that was used to create the snapshot.
 sVolumeId :: Lens' Snapshot Text
 sVolumeId = lens _sVolumeId (\ s a -> s{_sVolumeId = a});
 
@@ -7792,7 +7819,10 @@
 instance FromXML Snapshot where
         parseXML x
           = Snapshot' <$>
-              (x .@? "ownerAlias") <*> (x .@? "kmsKeyId") <*>
+              (x .@? "statusMessage") <*> (x .@? "ownerAlias") <*>
+                (x .@? "dataEncryptionKeyId")
+                <*> (x .@? "kmsKeyId")
+                <*>
                 (x .@? "tagSet" .!@ mempty >>=
                    may (parseXMLList "item"))
                 <*> (x .@ "snapshotId")
@@ -8069,7 +8099,7 @@
                 <*> (x .@? "description")
                 <*> (x .@? "snapshotId")
 
--- | Describes the data feed for a Spot Instance.
+-- | Describes the data feed for a Spot instance.
 --
 -- /See:/ 'spotDatafeedSubscription' smart constructor.
 data SpotDatafeedSubscription = SpotDatafeedSubscription'
@@ -8104,7 +8134,7 @@
     , _sdsFault = Nothing
     }
 
--- | The state of the Spot Instance data feed subscription.
+-- | The state of the Spot instance data feed subscription.
 sdsState :: Lens' SpotDatafeedSubscription (Maybe DatafeedSubscriptionState)
 sdsState = lens _sdsState (\ s a -> s{_sdsState = a});
 
@@ -8112,7 +8142,7 @@
 sdsPrefix :: Lens' SpotDatafeedSubscription (Maybe Text)
 sdsPrefix = lens _sdsPrefix (\ s a -> s{_sdsPrefix = a});
 
--- | The Amazon S3 bucket where the Spot Instance data feed is located.
+-- | The Amazon S3 bucket where the Spot instance data feed is located.
 sdsBucket :: Lens' SpotDatafeedSubscription (Maybe Text)
 sdsBucket = lens _sdsBucket (\ s a -> s{_sdsBucket = a});
 
@@ -8120,7 +8150,7 @@
 sdsOwnerId :: Lens' SpotDatafeedSubscription (Maybe Text)
 sdsOwnerId = lens _sdsOwnerId (\ s a -> s{_sdsOwnerId = a});
 
--- | The fault codes for the Spot Instance request, if any.
+-- | The fault codes for the Spot instance request, if any.
 sdsFault :: Lens' SpotDatafeedSubscription (Maybe SpotInstanceStateFault)
 sdsFault = lens _sdsFault (\ s a -> s{_sdsFault = a});
 
@@ -8132,7 +8162,7 @@
                 <*> (x .@? "ownerId")
                 <*> (x .@? "fault")
 
--- | Describes the launch specification for one or more Spot Instances.
+-- | Describes the launch specification for one or more Spot instances.
 --
 -- /See:/ 'spotFleetLaunchSpecification' smart constructor.
 data SpotFleetLaunchSpecification = SpotFleetLaunchSpecification'
@@ -8444,6 +8474,7 @@
     , _sfrcdValidUntil                       :: !(Maybe ISO8601)
     , _sfrcdTerminateInstancesWithExpiration :: !(Maybe Bool)
     , _sfrcdValidFrom                        :: !(Maybe ISO8601)
+    , _sfrcdAllocationStrategy               :: !(Maybe AllocationStrategy)
     , _sfrcdSpotPrice                        :: !Text
     , _sfrcdTargetCapacity                   :: !Int
     , _sfrcdIAMFleetRole                     :: !Text
@@ -8462,6 +8493,8 @@
 --
 -- * 'sfrcdValidFrom'
 --
+-- * 'sfrcdAllocationStrategy'
+--
 -- * 'sfrcdSpotPrice'
 --
 -- * 'sfrcdTargetCapacity'
@@ -8481,6 +8514,7 @@
     , _sfrcdValidUntil = Nothing
     , _sfrcdTerminateInstancesWithExpiration = Nothing
     , _sfrcdValidFrom = Nothing
+    , _sfrcdAllocationStrategy = Nothing
     , _sfrcdSpotPrice = pSpotPrice_
     , _sfrcdTargetCapacity = pTargetCapacity_
     , _sfrcdIAMFleetRole = pIAMFleetRole_
@@ -8495,13 +8529,13 @@
 sfrcdClientToken = lens _sfrcdClientToken (\ s a -> s{_sfrcdClientToken = a});
 
 -- | The end date and time of the request, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). At this point, no new Spot Instance
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). At this point, no new Spot instance
 -- requests are placed or enabled to fulfill the request.
 sfrcdValidUntil :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
 sfrcdValidUntil = lens _sfrcdValidUntil (\ s a -> s{_sfrcdValidUntil = a}) . mapping _Time;
 
--- | Indicates whether running instances should be terminated when the Spot
--- fleet request expires.
+-- | Indicates whether running Spot instances should be terminated when the
+-- Spot fleet request expires.
 sfrcdTerminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)
 sfrcdTerminateInstancesWithExpiration = lens _sfrcdTerminateInstancesWithExpiration (\ s a -> s{_sfrcdTerminateInstancesWithExpiration = a});
 
@@ -8511,6 +8545,11 @@
 sfrcdValidFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
 sfrcdValidFrom = lens _sfrcdValidFrom (\ s a -> s{_sfrcdValidFrom = a}) . mapping _Time;
 
+-- | Determines how to allocate the target capacity across the Spot pools
+-- specified by the Spot fleet request. The default is 'lowestPrice'.
+sfrcdAllocationStrategy :: Lens' SpotFleetRequestConfigData (Maybe AllocationStrategy)
+sfrcdAllocationStrategy = lens _sfrcdAllocationStrategy (\ s a -> s{_sfrcdAllocationStrategy = a});
+
 -- | The bid price per unit hour.
 sfrcdSpotPrice :: Lens' SpotFleetRequestConfigData Text
 sfrcdSpotPrice = lens _sfrcdSpotPrice (\ s a -> s{_sfrcdSpotPrice = a});
@@ -8521,14 +8560,14 @@
 sfrcdTargetCapacity :: Lens' SpotFleetRequestConfigData Int
 sfrcdTargetCapacity = lens _sfrcdTargetCapacity (\ s a -> s{_sfrcdTargetCapacity = a});
 
--- | Grants the Spot fleet service permission to terminate instances on your
--- behalf when you cancel a Spot fleet request using
+-- | Grants the Spot fleet permission to terminate Spot instances on your
+-- behalf when you cancel its Spot fleet request using
 -- CancelSpotFleetRequests or when the Spot fleet request expires, if you
 -- set 'terminateInstancesWithExpiration'.
 sfrcdIAMFleetRole :: Lens' SpotFleetRequestConfigData Text
 sfrcdIAMFleetRole = lens _sfrcdIAMFleetRole (\ s a -> s{_sfrcdIAMFleetRole = a});
 
--- | Information about the launch specifications for the instances.
+-- | Information about the launch specifications for the Spot fleet request.
 sfrcdLaunchSpecifications :: Lens' SpotFleetRequestConfigData (NonEmpty SpotFleetLaunchSpecification)
 sfrcdLaunchSpecifications = lens _sfrcdLaunchSpecifications (\ s a -> s{_sfrcdLaunchSpecifications = a}) . _List1;
 
@@ -8538,6 +8577,7 @@
               (x .@? "clientToken") <*> (x .@? "validUntil") <*>
                 (x .@? "terminateInstancesWithExpiration")
                 <*> (x .@? "validFrom")
+                <*> (x .@? "allocationStrategy")
                 <*> (x .@ "spotPrice")
                 <*> (x .@ "targetCapacity")
                 <*> (x .@ "iamFleetRole")
@@ -8553,13 +8593,14 @@
                "TerminateInstancesWithExpiration" =:
                  _sfrcdTerminateInstancesWithExpiration,
                "ValidFrom" =: _sfrcdValidFrom,
+               "AllocationStrategy" =: _sfrcdAllocationStrategy,
                "SpotPrice" =: _sfrcdSpotPrice,
                "TargetCapacity" =: _sfrcdTargetCapacity,
                "IamFleetRole" =: _sfrcdIAMFleetRole,
                toQueryList "LaunchSpecifications"
                  _sfrcdLaunchSpecifications]
 
--- | Describe a Spot Instance request.
+-- | Describe a Spot instance request.
 --
 -- /See:/ 'spotInstanceRequest' smart constructor.
 data SpotInstanceRequest = SpotInstanceRequest'
@@ -8639,26 +8680,26 @@
     }
 
 -- | The instance ID, if an instance has been launched to fulfill the Spot
--- Instance request.
+-- instance request.
 sirInstanceId :: Lens' SpotInstanceRequest (Maybe Text)
 sirInstanceId = lens _sirInstanceId (\ s a -> s{_sirInstanceId = a});
 
--- | The status code and status message describing the Spot Instance request.
+-- | The status code and status message describing the Spot instance request.
 sirStatus :: Lens' SpotInstanceRequest (Maybe SpotInstanceStatus)
 sirStatus = lens _sirStatus (\ s a -> s{_sirStatus = a});
 
--- | The state of the Spot Instance request. Spot bid status information can
--- help you track your Spot Instance requests. For more information, see
+-- | The state of the Spot instance request. Spot bid status information can
+-- help you track your Spot instance requests. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html Spot Bid Status>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 sirState :: Lens' SpotInstanceRequest (Maybe SpotInstanceState)
 sirState = lens _sirState (\ s a -> s{_sirState = a});
 
--- | The product description associated with the Spot Instance.
+-- | The product description associated with the Spot instance.
 sirProductDescription :: Lens' SpotInstanceRequest (Maybe RIProductDescription)
 sirProductDescription = lens _sirProductDescription (\ s a -> s{_sirProductDescription = a});
 
--- | The maximum hourly price (bid) for any Spot Instance launched to fulfill
+-- | The maximum hourly price (bid) for any Spot instance launched to fulfill
 -- the request.
 sirSpotPrice :: Lens' SpotInstanceRequest (Maybe Text)
 sirSpotPrice = lens _sirSpotPrice (\ s a -> s{_sirSpotPrice = a});
@@ -8668,7 +8709,7 @@
 sirLaunchSpecification = lens _sirLaunchSpecification (\ s a -> s{_sirLaunchSpecification = a});
 
 -- | The Availability Zone group. If you specify the same Availability Zone
--- group for all Spot Instance requests, all Spot Instances are launched in
+-- group for all Spot instance requests, all Spot instances are launched in
 -- the same Availability Zone.
 sirAvailabilityZoneGroup :: Lens' SpotInstanceRequest (Maybe Text)
 sirAvailabilityZoneGroup = lens _sirAvailabilityZoneGroup (\ s a -> s{_sirAvailabilityZoneGroup = a});
@@ -8685,20 +8726,20 @@
 sirValidUntil :: Lens' SpotInstanceRequest (Maybe UTCTime)
 sirValidUntil = lens _sirValidUntil (\ s a -> s{_sirValidUntil = a}) . mapping _Time;
 
--- | The instance launch group. Launch groups are Spot Instances that launch
+-- | The instance launch group. Launch groups are Spot instances that launch
 -- together and terminate together.
 sirLaunchGroup :: Lens' SpotInstanceRequest (Maybe Text)
 sirLaunchGroup = lens _sirLaunchGroup (\ s a -> s{_sirLaunchGroup = a});
 
--- | The fault codes for the Spot Instance request, if any.
+-- | The fault codes for the Spot instance request, if any.
 sirFault :: Lens' SpotInstanceRequest (Maybe SpotInstanceStateFault)
 sirFault = lens _sirFault (\ s a -> s{_sirFault = a});
 
--- | The ID of the Spot Instance request.
+-- | The ID of the Spot instance request.
 sirSpotInstanceRequestId :: Lens' SpotInstanceRequest (Maybe Text)
 sirSpotInstanceRequestId = lens _sirSpotInstanceRequestId (\ s a -> s{_sirSpotInstanceRequestId = a});
 
--- | The Spot Instance request type.
+-- | The Spot instance request type.
 sirType :: Lens' SpotInstanceRequest (Maybe SpotInstanceType)
 sirType = lens _sirType (\ s a -> s{_sirType = a});
 
@@ -8711,7 +8752,7 @@
 sirValidFrom :: Lens' SpotInstanceRequest (Maybe UTCTime)
 sirValidFrom = lens _sirValidFrom (\ s a -> s{_sirValidFrom = a}) . mapping _Time;
 
--- | The date and time when the Spot Instance request was created, in UTC
+-- | The date and time when the Spot instance request was created, in UTC
 -- format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
 sirCreateTime :: Lens' SpotInstanceRequest (Maybe UTCTime)
 sirCreateTime = lens _sirCreateTime (\ s a -> s{_sirCreateTime = a}) . mapping _Time;
@@ -8741,7 +8782,7 @@
                 (x .@? "tagSet" .!@ mempty >>=
                    may (parseXMLList "item"))
 
--- | Describes a Spot Instance state change.
+-- | Describes a Spot instance state change.
 --
 -- /See:/ 'spotInstanceStateFault' smart constructor.
 data SpotInstanceStateFault = SpotInstanceStateFault'
@@ -8764,11 +8805,11 @@
     , _sisfMessage = Nothing
     }
 
--- | The reason code for the Spot Instance state change.
+-- | The reason code for the Spot instance state change.
 sisfCode :: Lens' SpotInstanceStateFault (Maybe Text)
 sisfCode = lens _sisfCode (\ s a -> s{_sisfCode = a});
 
--- | The message for the Spot Instance state change.
+-- | The message for the Spot instance state change.
 sisfMessage :: Lens' SpotInstanceStateFault (Maybe Text)
 sisfMessage = lens _sisfMessage (\ s a -> s{_sisfMessage = a});
 
@@ -8777,7 +8818,7 @@
           = SpotInstanceStateFault' <$>
               (x .@? "code") <*> (x .@? "message")
 
--- | Describes the status of a Spot Instance request.
+-- | Describes the status of a Spot instance request.
 --
 -- /See:/ 'spotInstanceStatus' smart constructor.
 data SpotInstanceStatus = SpotInstanceStatus'
@@ -8823,7 +8864,7 @@
               (x .@? "updateTime") <*> (x .@? "code") <*>
                 (x .@? "message")
 
--- | Describes Spot Instance placement.
+-- | Describes Spot instance placement.
 --
 -- /See:/ 'spotPlacement' smart constructor.
 data SpotPlacement = SpotPlacement'
@@ -8865,7 +8906,7 @@
               ["AvailabilityZone" =: _spAvailabilityZone,
                "GroupName" =: _spGroupName]
 
--- | Describes the maximum hourly price (bid) for any Spot Instance launched
+-- | Describes the maximum hourly price (bid) for any Spot instance launched
 -- to fulfill the request.
 --
 -- /See:/ 'spotPrice' smart constructor.
@@ -8905,7 +8946,7 @@
 sProductDescription :: Lens' SpotPrice (Maybe RIProductDescription)
 sProductDescription = lens _sProductDescription (\ s a -> s{_sProductDescription = a});
 
--- | The maximum price (bid) that you are willing to pay for a Spot Instance.
+-- | The maximum price (bid) that you are willing to pay for a Spot instance.
 sSpotPrice :: Lens' SpotPrice (Maybe Text)
 sSpotPrice = lens _sSpotPrice (\ s a -> s{_sSpotPrice = a});
 
@@ -9023,12 +9064,12 @@
 --
 -- /See:/ 'subnet' smart constructor.
 data Subnet = Subnet'
-    { _subTags                    :: !(Maybe [Tag])
+    { _subMapPublicIPOnLaunch     :: !(Maybe Bool)
+    , _subDefaultForAz            :: !(Maybe Bool)
+    , _subTags                    :: !(Maybe [Tag])
     , _subAvailabilityZone        :: !Text
     , _subAvailableIPAddressCount :: !Int
     , _subCIdRBlock               :: !Text
-    , _subDefaultForAz            :: !Bool
-    , _subMapPublicIPOnLaunch     :: !Bool
     , _subState                   :: !SubnetState
     , _subSubnetId                :: !Text
     , _subVPCId                   :: !Text
@@ -9038,6 +9079,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'subMapPublicIPOnLaunch'
+--
+-- * 'subDefaultForAz'
+--
 -- * 'subTags'
 --
 -- * 'subAvailabilityZone'
@@ -9046,10 +9091,6 @@
 --
 -- * 'subCIdRBlock'
 --
--- * 'subDefaultForAz'
---
--- * 'subMapPublicIPOnLaunch'
---
 -- * 'subState'
 --
 -- * 'subSubnetId'
@@ -9059,25 +9100,32 @@
     :: Text -- ^ 'subAvailabilityZone'
     -> Int -- ^ 'subAvailableIPAddressCount'
     -> Text -- ^ 'subCIdRBlock'
-    -> Bool -- ^ 'subDefaultForAz'
-    -> Bool -- ^ 'subMapPublicIPOnLaunch'
     -> SubnetState -- ^ 'subState'
     -> Text -- ^ 'subSubnetId'
     -> Text -- ^ 'subVPCId'
     -> Subnet
-subnet pAvailabilityZone_ pAvailableIPAddressCount_ pCIdRBlock_ pDefaultForAz_ pMapPublicIPOnLaunch_ pState_ pSubnetId_ pVPCId_ =
+subnet pAvailabilityZone_ pAvailableIPAddressCount_ pCIdRBlock_ pState_ pSubnetId_ pVPCId_ =
     Subnet'
-    { _subTags = Nothing
+    { _subMapPublicIPOnLaunch = Nothing
+    , _subDefaultForAz = Nothing
+    , _subTags = Nothing
     , _subAvailabilityZone = pAvailabilityZone_
     , _subAvailableIPAddressCount = pAvailableIPAddressCount_
     , _subCIdRBlock = pCIdRBlock_
-    , _subDefaultForAz = pDefaultForAz_
-    , _subMapPublicIPOnLaunch = pMapPublicIPOnLaunch_
     , _subState = pState_
     , _subSubnetId = pSubnetId_
     , _subVPCId = pVPCId_
     }
 
+-- | Indicates whether instances launched in this subnet receive a public IP
+-- address.
+subMapPublicIPOnLaunch :: Lens' Subnet (Maybe Bool)
+subMapPublicIPOnLaunch = lens _subMapPublicIPOnLaunch (\ s a -> s{_subMapPublicIPOnLaunch = a});
+
+-- | Indicates whether this is the default subnet for the Availability Zone.
+subDefaultForAz :: Lens' Subnet (Maybe Bool)
+subDefaultForAz = lens _subDefaultForAz (\ s a -> s{_subDefaultForAz = a});
+
 -- | Any tags assigned to the subnet.
 subTags :: Lens' Subnet [Tag]
 subTags = lens _subTags (\ s a -> s{_subTags = a}) . _Default . _Coerce;
@@ -9095,15 +9143,6 @@
 subCIdRBlock :: Lens' Subnet Text
 subCIdRBlock = lens _subCIdRBlock (\ s a -> s{_subCIdRBlock = a});
 
--- | Indicates whether this is the default subnet for the Availability Zone.
-subDefaultForAz :: Lens' Subnet Bool
-subDefaultForAz = lens _subDefaultForAz (\ s a -> s{_subDefaultForAz = a});
-
--- | Indicates whether instances launched in this subnet receive a public IP
--- address.
-subMapPublicIPOnLaunch :: Lens' Subnet Bool
-subMapPublicIPOnLaunch = lens _subMapPublicIPOnLaunch (\ s a -> s{_subMapPublicIPOnLaunch = a});
-
 -- | The current state of the subnet.
 subState :: Lens' Subnet SubnetState
 subState = lens _subState (\ s a -> s{_subState = a});
@@ -9119,13 +9158,14 @@
 instance FromXML Subnet where
         parseXML x
           = Subnet' <$>
-              (x .@? "tagSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
+              (x .@? "mapPublicIpOnLaunch") <*>
+                (x .@? "defaultForAz")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
                 <*> (x .@ "availabilityZone")
                 <*> (x .@ "availableIpAddressCount")
                 <*> (x .@ "cidrBlock")
-                <*> (x .@ "defaultForAz")
-                <*> (x .@ "mapPublicIpOnLaunch")
                 <*> (x .@ "state")
                 <*> (x .@ "subnetId")
                 <*> (x .@ "vpcId")
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
@@ -69,6 +69,31 @@
 instance FromXML AddressStatus where
     parseXML = parseXMLText "AddressStatus"
 
+data AllocationStrategy
+    = Diversified
+    | LowestPrice
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText AllocationStrategy where
+    parser = takeLowerText >>= \case
+        "diversified" -> pure Diversified
+        "lowestprice" -> pure LowestPrice
+        e -> fromTextError $ "Failure parsing AllocationStrategy from value: '" <> e
+           <> "'. Accepted values: diversified, lowestPrice"
+
+instance ToText AllocationStrategy where
+    toText = \case
+        Diversified -> "diversified"
+        LowestPrice -> "lowestPrice"
+
+instance Hashable     AllocationStrategy
+instance ToByteString AllocationStrategy
+instance ToQuery      AllocationStrategy
+instance ToHeader     AllocationStrategy
+
+instance FromXML AllocationStrategy where
+    parseXML = parseXMLText "AllocationStrategy"
+
 data ArchitectureValues
     = I386
     | X86_64
