diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.2.0.2`
+`1.3.0`
 
 
 ## 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.2.0.2
+version:               1.3.0
 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.2.0.*
+          amazonka-core == 1.3.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ec2-test
@@ -256,9 +256,9 @@
         , Test.AWS.EC2.Internal
 
     build-depends:
-          amazonka-core == 1.2.0.*
-        , amazonka-test == 1.2.0.*
-        , amazonka-ec2 == 1.2.0.*
+          amazonka-core == 1.3.0.*
+        , amazonka-test == 1.3.0.*
+        , amazonka-ec2 == 1.3.0.*
         , 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
@@ -48,12 +48,12 @@
     -- ** ConversionTaskCompleted
     , conversionTaskCompleted
 
-    -- ** ConversionTaskDeleted
-    , conversionTaskDeleted
-
     -- ** InstanceStopped
     , instanceStopped
 
+    -- ** ConversionTaskDeleted
+    , conversionTaskDeleted
+
     -- ** PasswordDataAvailable
     , passwordDataAvailable
 
@@ -63,12 +63,12 @@
     -- ** SpotInstanceRequestFulfilled
     , spotInstanceRequestFulfilled
 
-    -- ** ExportTaskCompleted
-    , exportTaskCompleted
-
     -- ** VPCAvailable
     , vpcAvailable
 
+    -- ** ExportTaskCompleted
+    , exportTaskCompleted
+
     -- ** VPNConnectionAvailable
     , vpnConnectionAvailable
 
@@ -84,89 +84,89 @@
     -- ** VPNConnectionDeleted
     , vpnConnectionDeleted
 
-    -- ** ImageAvailable
-    , imageAvailable
-
     -- ** ConversionTaskCancelled
     , conversionTaskCancelled
 
-    -- ** InstanceExists
-    , instanceExists
-
-    -- ** VolumeAvailable
-    , volumeAvailable
+    -- ** ImageAvailable
+    , imageAvailable
 
     -- ** SnapshotCompleted
     , snapshotCompleted
 
+    -- ** InstanceExists
+    , instanceExists
+
     -- ** InstanceStatusOK
     , instanceStatusOK
 
+    -- ** VolumeAvailable
+    , volumeAvailable
+
     -- * Operations
     -- $operations
 
-    -- ** DetachNetworkInterface
-    , module Network.AWS.EC2.DetachNetworkInterface
+    -- ** ImportInstance
+    , module Network.AWS.EC2.ImportInstance
 
-    -- ** DeleteVPCEndpoints
-    , module Network.AWS.EC2.DeleteVPCEndpoints
+    -- ** RevokeSecurityGroupEgress
+    , module Network.AWS.EC2.RevokeSecurityGroupEgress
 
+    -- ** CreateVPNGateway
+    , module Network.AWS.EC2.CreateVPNGateway
+
+    -- ** CreateNetworkACL
+    , module Network.AWS.EC2.CreateNetworkACL
+
     -- ** DeleteKeyPair
     , module Network.AWS.EC2.DeleteKeyPair
 
-    -- ** DeleteFlowLogs
-    , module Network.AWS.EC2.DeleteFlowLogs
-
     -- ** DescribeTags (Paginated)
     , module Network.AWS.EC2.DescribeTags
 
-    -- ** RevokeSecurityGroupEgress
-    , module Network.AWS.EC2.RevokeSecurityGroupEgress
-
-    -- ** CreateVPNGateway
-    , module Network.AWS.EC2.CreateVPNGateway
+    -- ** DetachNetworkInterface
+    , module Network.AWS.EC2.DetachNetworkInterface
 
     -- ** DetachInternetGateway
     , module Network.AWS.EC2.DetachInternetGateway
 
-    -- ** CreateNetworkACL
-    , module Network.AWS.EC2.CreateNetworkACL
+    -- ** DeleteVPCEndpoints
+    , module Network.AWS.EC2.DeleteVPCEndpoints
 
-    -- ** ImportInstance
-    , module Network.AWS.EC2.ImportInstance
+    -- ** DeleteFlowLogs
+    , module Network.AWS.EC2.DeleteFlowLogs
 
     -- ** DescribeVPCClassicLink
     , module Network.AWS.EC2.DescribeVPCClassicLink
 
-    -- ** DeleteVPNConnection
-    , module Network.AWS.EC2.DeleteVPNConnection
-
-    -- ** AuthorizeSecurityGroupEgress
-    , module Network.AWS.EC2.AuthorizeSecurityGroupEgress
+    -- ** ModifySubnetAttribute
+    , module Network.AWS.EC2.ModifySubnetAttribute
 
-    -- ** DescribeBundleTasks
-    , module Network.AWS.EC2.DescribeBundleTasks
+    -- ** DetachVolume
+    , module Network.AWS.EC2.DetachVolume
 
-    -- ** CreateInternetGateway
-    , module Network.AWS.EC2.CreateInternetGateway
+    -- ** CancelBundleTask
+    , module Network.AWS.EC2.CancelBundleTask
 
     -- ** ReleaseAddress
     , module Network.AWS.EC2.ReleaseAddress
 
-    -- ** CancelBundleTask
-    , module Network.AWS.EC2.CancelBundleTask
+    -- ** CreateInternetGateway
+    , module Network.AWS.EC2.CreateInternetGateway
 
-    -- ** ModifyNetworkInterfaceAttribute
-    , module Network.AWS.EC2.ModifyNetworkInterfaceAttribute
+    -- ** DeleteVPNConnection
+    , module Network.AWS.EC2.DeleteVPNConnection
 
-    -- ** ModifySubnetAttribute
-    , module Network.AWS.EC2.ModifySubnetAttribute
+    -- ** DescribeBundleTasks
+    , module Network.AWS.EC2.DescribeBundleTasks
 
+    -- ** AuthorizeSecurityGroupEgress
+    , module Network.AWS.EC2.AuthorizeSecurityGroupEgress
+
     -- ** DeregisterImage
     , module Network.AWS.EC2.DeregisterImage
 
-    -- ** DetachVolume
-    , module Network.AWS.EC2.DetachVolume
+    -- ** ModifyNetworkInterfaceAttribute
+    , module Network.AWS.EC2.ModifyNetworkInterfaceAttribute
 
     -- ** CancelReservedInstancesListing
     , module Network.AWS.EC2.CancelReservedInstancesListing
@@ -177,215 +177,206 @@
     -- ** CancelSpotFleetRequests
     , module Network.AWS.EC2.CancelSpotFleetRequests
 
-    -- ** DescribeDHCPOptions
-    , module Network.AWS.EC2.DescribeDHCPOptions
-
     -- ** DescribeSpotPriceHistory (Paginated)
     , module Network.AWS.EC2.DescribeSpotPriceHistory
 
-    -- ** StopInstances
-    , module Network.AWS.EC2.StopInstances
+    -- ** DescribeDHCPOptions
+    , module Network.AWS.EC2.DescribeDHCPOptions
 
     -- ** ImportImage
     , module Network.AWS.EC2.ImportImage
 
-    -- ** DeleteNetworkACLEntry
-    , module Network.AWS.EC2.DeleteNetworkACLEntry
+    -- ** StopInstances
+    , module Network.AWS.EC2.StopInstances
 
+    -- ** DescribeInternetGateways
+    , module Network.AWS.EC2.DescribeInternetGateways
+
     -- ** DisableVPCClassicLink
     , module Network.AWS.EC2.DisableVPCClassicLink
 
-    -- ** AuthorizeSecurityGroupIngress
-    , module Network.AWS.EC2.AuthorizeSecurityGroupIngress
-
     -- ** BundleInstance
     , module Network.AWS.EC2.BundleInstance
 
-    -- ** DescribeVPCEndpointServices
-    , module Network.AWS.EC2.DescribeVPCEndpointServices
+    -- ** DescribeNetworkInterfaces
+    , module Network.AWS.EC2.DescribeNetworkInterfaces
 
     -- ** ReplaceNetworkACLAssociation
     , module Network.AWS.EC2.ReplaceNetworkACLAssociation
 
-    -- ** CreateVPCPeeringConnection
-    , module Network.AWS.EC2.CreateVPCPeeringConnection
-
-    -- ** ResetSnapshotAttribute
-    , module Network.AWS.EC2.ResetSnapshotAttribute
-
     -- ** DescribeAddresses
     , module Network.AWS.EC2.DescribeAddresses
 
-    -- ** DescribeInternetGateways
-    , module Network.AWS.EC2.DescribeInternetGateways
+    -- ** DescribeSnapshotAttribute
+    , module Network.AWS.EC2.DescribeSnapshotAttribute
 
     -- ** ReplaceRoute
     , module Network.AWS.EC2.ReplaceRoute
 
-    -- ** CreateTags
-    , module Network.AWS.EC2.CreateTags
+    -- ** DescribeVPCEndpointServices
+    , module Network.AWS.EC2.DescribeVPCEndpointServices
 
+    -- ** AuthorizeSecurityGroupIngress
+    , module Network.AWS.EC2.AuthorizeSecurityGroupIngress
+
+    -- ** CreateVPCPeeringConnection
+    , module Network.AWS.EC2.CreateVPCPeeringConnection
+
     -- ** DescribeSubnets
     , module Network.AWS.EC2.DescribeSubnets
 
-    -- ** DescribeNetworkInterfaces
-    , module Network.AWS.EC2.DescribeNetworkInterfaces
+    -- ** CreateTags
+    , module Network.AWS.EC2.CreateTags
 
     -- ** PurchaseReservedInstancesOffering
     , module Network.AWS.EC2.PurchaseReservedInstancesOffering
 
-    -- ** DescribeSnapshotAttribute
-    , module Network.AWS.EC2.DescribeSnapshotAttribute
+    -- ** DeleteNetworkACLEntry
+    , module Network.AWS.EC2.DeleteNetworkACLEntry
 
-    -- ** CreateCustomerGateway
-    , module Network.AWS.EC2.CreateCustomerGateway
+    -- ** ResetSnapshotAttribute
+    , module Network.AWS.EC2.ResetSnapshotAttribute
 
-    -- ** AttachInternetGateway
-    , module Network.AWS.EC2.AttachInternetGateway
+    -- ** DescribeVPNConnections
+    , module Network.AWS.EC2.DescribeVPNConnections
 
-    -- ** DeleteTags
-    , module Network.AWS.EC2.DeleteTags
+    -- ** DeleteRoute
+    , module Network.AWS.EC2.DeleteRoute
 
     -- ** ReplaceNetworkACLEntry
     , module Network.AWS.EC2.ReplaceNetworkACLEntry
 
+    -- ** DescribeVPCEndpoints
+    , module Network.AWS.EC2.DescribeVPCEndpoints
+
     -- ** ResetInstanceAttribute
     , module Network.AWS.EC2.ResetInstanceAttribute
 
-    -- ** DeleteRoute
-    , module Network.AWS.EC2.DeleteRoute
-
-    -- ** DescribeVPNConnections
-    , module Network.AWS.EC2.DescribeVPNConnections
-
-    -- ** DescribeFlowLogs
-    , module Network.AWS.EC2.DescribeFlowLogs
+    -- ** AttachNetworkInterface
+    , module Network.AWS.EC2.AttachNetworkInterface
 
-    -- ** DeleteSecurityGroup
-    , module Network.AWS.EC2.DeleteSecurityGroup
+    -- ** DescribeInstanceStatus (Paginated)
+    , module Network.AWS.EC2.DescribeInstanceStatus
 
-    -- ** DescribeReservedInstancesOfferings (Paginated)
-    , module Network.AWS.EC2.DescribeReservedInstancesOfferings
+    -- ** ImportKeyPair
+    , module Network.AWS.EC2.ImportKeyPair
 
-    -- ** DeleteVPCPeeringConnection
-    , module Network.AWS.EC2.DeleteVPCPeeringConnection
+    -- ** DeleteTags
+    , module Network.AWS.EC2.DeleteTags
 
-    -- ** DescribeVPCEndpoints
-    , module Network.AWS.EC2.DescribeVPCEndpoints
+    -- ** ConfirmProductInstance
+    , module Network.AWS.EC2.ConfirmProductInstance
 
     -- ** DescribeInstanceAttribute
     , module Network.AWS.EC2.DescribeInstanceAttribute
 
-    -- ** ConfirmProductInstance
-    , module Network.AWS.EC2.ConfirmProductInstance
+    -- ** DescribeReservedInstancesOfferings (Paginated)
+    , module Network.AWS.EC2.DescribeReservedInstancesOfferings
 
-    -- ** ImportKeyPair
-    , module Network.AWS.EC2.ImportKeyPair
+    -- ** CreateCustomerGateway
+    , module Network.AWS.EC2.CreateCustomerGateway
 
-    -- ** AttachNetworkInterface
-    , module Network.AWS.EC2.AttachNetworkInterface
+    -- ** DeleteSecurityGroup
+    , module Network.AWS.EC2.DeleteSecurityGroup
 
-    -- ** DescribeInstanceStatus (Paginated)
-    , module Network.AWS.EC2.DescribeInstanceStatus
+    -- ** DeleteVPCPeeringConnection
+    , module Network.AWS.EC2.DeleteVPCPeeringConnection
 
-    -- ** CancelConversionTask
-    , module Network.AWS.EC2.CancelConversionTask
+    -- ** AttachInternetGateway
+    , module Network.AWS.EC2.AttachInternetGateway
 
-    -- ** ReportInstanceStatus
-    , module Network.AWS.EC2.ReportInstanceStatus
+    -- ** DescribeFlowLogs
+    , module Network.AWS.EC2.DescribeFlowLogs
 
+    -- ** RunInstances
+    , module Network.AWS.EC2.RunInstances
+
     -- ** AssociateDHCPOptions
     , module Network.AWS.EC2.AssociateDHCPOptions
 
+    -- ** DescribeReservedInstances
+    , module Network.AWS.EC2.DescribeReservedInstances
+
     -- ** DescribeVPCs
     , module Network.AWS.EC2.DescribeVPCs
 
-    -- ** RequestSpotInstances
-    , module Network.AWS.EC2.RequestSpotInstances
-
-    -- ** ModifyImageAttribute
-    , module Network.AWS.EC2.ModifyImageAttribute
-
-    -- ** DescribeReservedInstances
-    , module Network.AWS.EC2.DescribeReservedInstances
+    -- ** DescribeConversionTasks
+    , module Network.AWS.EC2.DescribeConversionTasks
 
     -- ** AllocateAddress
     , module Network.AWS.EC2.AllocateAddress
 
-    -- ** RunInstances
-    , module Network.AWS.EC2.RunInstances
+    -- ** CancelConversionTask
+    , module Network.AWS.EC2.CancelConversionTask
 
+    -- ** ModifyImageAttribute
+    , module Network.AWS.EC2.ModifyImageAttribute
+
     -- ** CreateRouteTable
     , module Network.AWS.EC2.CreateRouteTable
 
+    -- ** ReportInstanceStatus
+    , module Network.AWS.EC2.ReportInstanceStatus
+
     -- ** AttachVolume
     , module Network.AWS.EC2.AttachVolume
 
-    -- ** DescribeConversionTasks
-    , module Network.AWS.EC2.DescribeConversionTasks
-
-    -- ** RejectVPCPeeringConnection
-    , module Network.AWS.EC2.RejectVPCPeeringConnection
-
-    -- ** RevokeSecurityGroupIngress
-    , module Network.AWS.EC2.RevokeSecurityGroupIngress
+    -- ** RequestSpotInstances
+    , module Network.AWS.EC2.RequestSpotInstances
 
     -- ** DescribeVolumes
     , module Network.AWS.EC2.DescribeVolumes
 
+    -- ** RejectVPCPeeringConnection
+    , module Network.AWS.EC2.RejectVPCPeeringConnection
+
     -- ** DeleteVPNConnectionRoute
     , module Network.AWS.EC2.DeleteVPNConnectionRoute
 
-    -- ** ModifyReservedInstances
-    , module Network.AWS.EC2.ModifyReservedInstances
+    -- ** ModifyVPCEndpoint
+    , module Network.AWS.EC2.ModifyVPCEndpoint
 
     -- ** RegisterImage
     , module Network.AWS.EC2.RegisterImage
 
-    -- ** ModifyVPCEndpoint
-    , module Network.AWS.EC2.ModifyVPCEndpoint
-
-    -- ** DeleteVPNGateway
-    , module Network.AWS.EC2.DeleteVPNGateway
+    -- ** RevokeSecurityGroupIngress
+    , module Network.AWS.EC2.RevokeSecurityGroupIngress
 
-    -- ** CreateVPC
-    , module Network.AWS.EC2.CreateVPC
+    -- ** ModifyReservedInstances
+    , module Network.AWS.EC2.ModifyReservedInstances
 
-    -- ** DescribeMovingAddresses
-    , module Network.AWS.EC2.DescribeMovingAddresses
+    -- ** CreateFlowLogs
+    , module Network.AWS.EC2.CreateFlowLogs
 
-    -- ** DescribeVolumeAttribute
-    , module Network.AWS.EC2.DescribeVolumeAttribute
+    -- ** DescribeSpotFleetRequests
+    , module Network.AWS.EC2.DescribeSpotFleetRequests
 
     -- ** MoveAddressToVPC
     , module Network.AWS.EC2.MoveAddressToVPC
 
-    -- ** GetPasswordData
-    , module Network.AWS.EC2.GetPasswordData
+    -- ** DeleteNetworkACL
+    , module Network.AWS.EC2.DeleteNetworkACL
 
-    -- ** CreateFlowLogs
-    , module Network.AWS.EC2.CreateFlowLogs
+    -- ** DeleteVPNGateway
+    , module Network.AWS.EC2.DeleteVPNGateway
 
     -- ** DescribeImportImageTasks
     , module Network.AWS.EC2.DescribeImportImageTasks
 
-    -- ** DeleteNetworkACL
-    , module Network.AWS.EC2.DeleteNetworkACL
-
-    -- ** DescribeSpotFleetRequests
-    , module Network.AWS.EC2.DescribeSpotFleetRequests
+    -- ** DescribeVolumeAttribute
+    , module Network.AWS.EC2.DescribeVolumeAttribute
 
-    -- ** CopySnapshot
-    , module Network.AWS.EC2.CopySnapshot
+    -- ** DescribeMovingAddresses
+    , module Network.AWS.EC2.DescribeMovingAddresses
 
-    -- ** ModifyVolumeAttribute
-    , module Network.AWS.EC2.ModifyVolumeAttribute
+    -- ** GetPasswordData
+    , module Network.AWS.EC2.GetPasswordData
 
-    -- ** DescribeVPCAttribute
-    , module Network.AWS.EC2.DescribeVPCAttribute
+    -- ** CreateVPC
+    , module Network.AWS.EC2.CreateVPC
 
-    -- ** CreateVolume
-    , module Network.AWS.EC2.CreateVolume
+    -- ** CopySnapshot
+    , module Network.AWS.EC2.CopySnapshot
 
     -- ** DisassociateAddress
     , module Network.AWS.EC2.DisassociateAddress
@@ -393,102 +384,111 @@
     -- ** DeleteVPC
     , module Network.AWS.EC2.DeleteVPC
 
-    -- ** DescribePrefixLists
-    , module Network.AWS.EC2.DescribePrefixLists
-
     -- ** CreateInstanceExportTask
     , module Network.AWS.EC2.CreateInstanceExportTask
 
+    -- ** DescribeVPCAttribute
+    , module Network.AWS.EC2.DescribeVPCAttribute
+
+    -- ** CreateVolume
+    , module Network.AWS.EC2.CreateVolume
+
+    -- ** ModifyVolumeAttribute
+    , module Network.AWS.EC2.ModifyVolumeAttribute
+
     -- ** DescribeSpotDatafeedSubscription
     , module Network.AWS.EC2.DescribeSpotDatafeedSubscription
 
-    -- ** DetachVPNGateway
-    , module Network.AWS.EC2.DetachVPNGateway
-
-    -- ** DescribeExportTasks
-    , module Network.AWS.EC2.DescribeExportTasks
+    -- ** DescribePrefixLists
+    , module Network.AWS.EC2.DescribePrefixLists
 
     -- ** DeletePlacementGroup
     , module Network.AWS.EC2.DeletePlacementGroup
 
+    -- ** RequestSpotFleet
+    , module Network.AWS.EC2.RequestSpotFleet
+
     -- ** CreateSubnet
     , module Network.AWS.EC2.CreateSubnet
 
-    -- ** EnableVolumeIO
-    , module Network.AWS.EC2.EnableVolumeIO
+    -- ** CreateNetworkInterface
+    , module Network.AWS.EC2.CreateNetworkInterface
 
-    -- ** CancelExportTask
-    , module Network.AWS.EC2.CancelExportTask
+    -- ** DescribeSecurityGroups
+    , module Network.AWS.EC2.DescribeSecurityGroups
 
-    -- ** RequestSpotFleet
-    , module Network.AWS.EC2.RequestSpotFleet
+    -- ** DescribeExportTasks
+    , module Network.AWS.EC2.DescribeExportTasks
 
+    -- ** DetachVPNGateway
+    , module Network.AWS.EC2.DetachVPNGateway
+
+    -- ** EnableVolumeIO
+    , module Network.AWS.EC2.EnableVolumeIO
+
     -- ** DescribeInstances (Paginated)
     , module Network.AWS.EC2.DescribeInstances
 
-    -- ** DescribeSecurityGroups
-    , module Network.AWS.EC2.DescribeSecurityGroups
-
     -- ** DescribeVPCPeeringConnections
     , module Network.AWS.EC2.DescribeVPCPeeringConnections
 
-    -- ** CreateNetworkInterface
-    , module Network.AWS.EC2.CreateNetworkInterface
+    -- ** CancelExportTask
+    , module Network.AWS.EC2.CancelExportTask
 
-    -- ** AssociateAddress
-    , module Network.AWS.EC2.AssociateAddress
+    -- ** DeleteNetworkInterface
+    , module Network.AWS.EC2.DeleteNetworkInterface
 
+    -- ** ReplaceRouteTableAssociation
+    , module Network.AWS.EC2.ReplaceRouteTableAssociation
+
     -- ** StartInstances
     , module Network.AWS.EC2.StartInstances
 
-    -- ** DescribeCustomerGateways
-    , module Network.AWS.EC2.DescribeCustomerGateways
-
-    -- ** ResetNetworkInterfaceAttribute
-    , module Network.AWS.EC2.ResetNetworkInterfaceAttribute
-
-    -- ** CreateVPNConnection
-    , module Network.AWS.EC2.CreateVPNConnection
+    -- ** CreatePlacementGroup
+    , module Network.AWS.EC2.CreatePlacementGroup
 
     -- ** DescribeSnapshots (Paginated)
     , module Network.AWS.EC2.DescribeSnapshots
 
-    -- ** CreatePlacementGroup
-    , module Network.AWS.EC2.CreatePlacementGroup
-
-    -- ** ReplaceRouteTableAssociation
-    , module Network.AWS.EC2.ReplaceRouteTableAssociation
+    -- ** AssociateAddress
+    , module Network.AWS.EC2.AssociateAddress
 
     -- ** DescribeNetworkInterfaceAttribute
     , module Network.AWS.EC2.DescribeNetworkInterfaceAttribute
 
-    -- ** DescribeReservedInstancesListings
-    , module Network.AWS.EC2.DescribeReservedInstancesListings
-
-    -- ** DeleteNetworkInterface
-    , module Network.AWS.EC2.DeleteNetworkInterface
+    -- ** ResetNetworkInterfaceAttribute
+    , module Network.AWS.EC2.ResetNetworkInterfaceAttribute
 
     -- ** DeleteInternetGateway
     , module Network.AWS.EC2.DeleteInternetGateway
 
-    -- ** DeleteSubnet
-    , module Network.AWS.EC2.DeleteSubnet
+    -- ** DescribeReservedInstancesListings
+    , module Network.AWS.EC2.DescribeReservedInstancesListings
 
-    -- ** CreateVPCEndpoint
-    , module Network.AWS.EC2.CreateVPCEndpoint
+    -- ** CreateVPNConnection
+    , module Network.AWS.EC2.CreateVPNConnection
 
     -- ** DescribeImportSnapshotTasks
     , module Network.AWS.EC2.DescribeImportSnapshotTasks
 
+    -- ** DescribeCustomerGateways
+    , module Network.AWS.EC2.DescribeCustomerGateways
+
+    -- ** DeleteSubnet
+    , module Network.AWS.EC2.DeleteSubnet
+
     -- ** CopyImage
     , module Network.AWS.EC2.CopyImage
 
-    -- ** DisassociateRouteTable
-    , module Network.AWS.EC2.DisassociateRouteTable
+    -- ** CreateVPCEndpoint
+    , module Network.AWS.EC2.CreateVPCEndpoint
 
     -- ** UnmonitorInstances
     , module Network.AWS.EC2.UnmonitorInstances
 
+    -- ** CreateSecurityGroup
+    , module Network.AWS.EC2.CreateSecurityGroup
+
     -- ** ImportVolume
     , module Network.AWS.EC2.ImportVolume
 
@@ -498,65 +498,68 @@
     -- ** CreateSpotDatafeedSubscription
     , module Network.AWS.EC2.CreateSpotDatafeedSubscription
 
-    -- ** AssignPrivateIPAddresses
-    , module Network.AWS.EC2.AssignPrivateIPAddresses
+    -- ** CancelSpotInstanceRequests
+    , module Network.AWS.EC2.CancelSpotInstanceRequests
 
+    -- ** CreateRoute
+    , module Network.AWS.EC2.CreateRoute
+
     -- ** DeleteSnapshot
     , module Network.AWS.EC2.DeleteSnapshot
 
-    -- ** DeleteCustomerGateway
-    , module Network.AWS.EC2.DeleteCustomerGateway
+    -- ** AssignPrivateIPAddresses
+    , module Network.AWS.EC2.AssignPrivateIPAddresses
 
     -- ** ModifyInstanceAttribute
     , module Network.AWS.EC2.ModifyInstanceAttribute
 
-    -- ** CreateSecurityGroup
-    , module Network.AWS.EC2.CreateSecurityGroup
+    -- ** DeleteCustomerGateway
+    , module Network.AWS.EC2.DeleteCustomerGateway
 
-    -- ** CancelSpotInstanceRequests
-    , module Network.AWS.EC2.CancelSpotInstanceRequests
+    -- ** DisassociateRouteTable
+    , module Network.AWS.EC2.DisassociateRouteTable
 
-    -- ** CreateRoute
-    , module Network.AWS.EC2.CreateRoute
+    -- ** DeleteSpotDatafeedSubscription
+    , module Network.AWS.EC2.DeleteSpotDatafeedSubscription
 
-    -- ** CreateNetworkACLEntry
-    , module Network.AWS.EC2.CreateNetworkACLEntry
+    -- ** EnableVPCClassicLink
+    , module Network.AWS.EC2.EnableVPCClassicLink
 
-    -- ** ModifySnapshotAttribute
-    , module Network.AWS.EC2.ModifySnapshotAttribute
+    -- ** DescribePlacementGroups
+    , module Network.AWS.EC2.DescribePlacementGroups
 
     -- ** EnableVGWRoutePropagation
     , module Network.AWS.EC2.EnableVGWRoutePropagation
 
-    -- ** CreateSnapshot
-    , module Network.AWS.EC2.CreateSnapshot
-
     -- ** DescribeSpotFleetRequestHistory
     , module Network.AWS.EC2.DescribeSpotFleetRequestHistory
 
-    -- ** DeleteSpotDatafeedSubscription
-    , module Network.AWS.EC2.DeleteSpotDatafeedSubscription
+    -- ** ModifySnapshotAttribute
+    , module Network.AWS.EC2.ModifySnapshotAttribute
 
-    -- ** DescribePlacementGroups
-    , module Network.AWS.EC2.DescribePlacementGroups
+    -- ** CreateSnapshot
+    , module Network.AWS.EC2.CreateSnapshot
 
+    -- ** CreateNetworkACLEntry
+    , module Network.AWS.EC2.CreateNetworkACLEntry
+
     -- ** CreateReservedInstancesListing
     , module Network.AWS.EC2.CreateReservedInstancesListing
 
-    -- ** EnableVPCClassicLink
-    , module Network.AWS.EC2.EnableVPCClassicLink
+    -- ** AttachVPNGateway
+    , module Network.AWS.EC2.AttachVPNGateway
 
-    -- ** DescribeKeyPairs
-    , module Network.AWS.EC2.DescribeKeyPairs
+    -- ** CreateDHCPOptions
+    , module Network.AWS.EC2.CreateDHCPOptions
 
+    -- ** DescribeAccountAttributes
+    , module Network.AWS.EC2.DescribeAccountAttributes
+
     -- ** RebootInstances
     , module Network.AWS.EC2.RebootInstances
 
-    -- ** AttachVPNGateway
-    , module Network.AWS.EC2.AttachVPNGateway
-
-    -- ** CreateVPNConnectionRoute
-    , module Network.AWS.EC2.CreateVPNConnectionRoute
+    -- ** CreateImage
+    , module Network.AWS.EC2.CreateImage
 
     -- ** DescribeClassicLinkInstances
     , module Network.AWS.EC2.DescribeClassicLinkInstances
@@ -564,92 +567,89 @@
     -- ** TerminateInstances
     , module Network.AWS.EC2.TerminateInstances
 
-    -- ** CreateDHCPOptions
-    , module Network.AWS.EC2.CreateDHCPOptions
+    -- ** DescribeKeyPairs
+    , module Network.AWS.EC2.DescribeKeyPairs
 
+    -- ** CreateVPNConnectionRoute
+    , module Network.AWS.EC2.CreateVPNConnectionRoute
+
     -- ** AssociateRouteTable
     , module Network.AWS.EC2.AssociateRouteTable
 
-    -- ** CreateImage
-    , module Network.AWS.EC2.CreateImage
+    -- ** DescribeVPNGateways
+    , module Network.AWS.EC2.DescribeVPNGateways
 
-    -- ** DescribeAccountAttributes
-    , module Network.AWS.EC2.DescribeAccountAttributes
+    -- ** GetConsoleOutput
+    , module Network.AWS.EC2.GetConsoleOutput
 
+    -- ** DescribeImageAttribute
+    , module Network.AWS.EC2.DescribeImageAttribute
+
+    -- ** DeleteRouteTable
+    , module Network.AWS.EC2.DeleteRouteTable
+
     -- ** ResetImageAttribute
     , module Network.AWS.EC2.ResetImageAttribute
 
-    -- ** DescribeNetworkACLs
-    , module Network.AWS.EC2.DescribeNetworkACLs
-
-    -- ** CancelImportTask
-    , module Network.AWS.EC2.CancelImportTask
+    -- ** DescribeReservedInstancesModifications (Paginated)
+    , module Network.AWS.EC2.DescribeReservedInstancesModifications
 
-    -- ** GetConsoleOutput
-    , module Network.AWS.EC2.GetConsoleOutput
+    -- ** DescribeSpotInstanceRequests
+    , module Network.AWS.EC2.DescribeSpotInstanceRequests
 
     -- ** UnassignPrivateIPAddresses
     , module Network.AWS.EC2.UnassignPrivateIPAddresses
 
-    -- ** DeleteRouteTable
-    , module Network.AWS.EC2.DeleteRouteTable
-
-    -- ** DescribeImageAttribute
-    , module Network.AWS.EC2.DescribeImageAttribute
-
     -- ** DeleteDHCPOptions
     , module Network.AWS.EC2.DeleteDHCPOptions
 
-    -- ** DescribeVPNGateways
-    , module Network.AWS.EC2.DescribeVPNGateways
+    -- ** DescribeNetworkACLs
+    , module Network.AWS.EC2.DescribeNetworkACLs
 
+    -- ** CancelImportTask
+    , module Network.AWS.EC2.CancelImportTask
+
     -- ** DetachClassicLinkVPC
     , module Network.AWS.EC2.DetachClassicLinkVPC
 
-    -- ** DescribeReservedInstancesModifications (Paginated)
-    , module Network.AWS.EC2.DescribeReservedInstancesModifications
-
-    -- ** DescribeSpotInstanceRequests
-    , module Network.AWS.EC2.DescribeSpotInstanceRequests
+    -- ** DescribeRegions
+    , module Network.AWS.EC2.DescribeRegions
 
     -- ** MonitorInstances
     , module Network.AWS.EC2.MonitorInstances
 
-    -- ** DescribeRegions
-    , module Network.AWS.EC2.DescribeRegions
-
-    -- ** ModifyVPCAttribute
-    , module Network.AWS.EC2.ModifyVPCAttribute
+    -- ** AcceptVPCPeeringConnection
+    , module Network.AWS.EC2.AcceptVPCPeeringConnection
 
-    -- ** DescribeSpotFleetInstances
-    , module Network.AWS.EC2.DescribeSpotFleetInstances
+    -- ** ImportSnapshot
+    , module Network.AWS.EC2.ImportSnapshot
 
     -- ** DescribeVolumeStatus (Paginated)
     , module Network.AWS.EC2.DescribeVolumeStatus
 
-    -- ** DeleteVolume
-    , module Network.AWS.EC2.DeleteVolume
+    -- ** DescribeRouteTables
+    , module Network.AWS.EC2.DescribeRouteTables
 
+    -- ** DescribeAvailabilityZones
+    , module Network.AWS.EC2.DescribeAvailabilityZones
+
+    -- ** ModifyVPCAttribute
+    , module Network.AWS.EC2.ModifyVPCAttribute
+
     -- ** DescribeImages
     , module Network.AWS.EC2.DescribeImages
 
-    -- ** CreateKeyPair
-    , module Network.AWS.EC2.CreateKeyPair
-
     -- ** RestoreAddressToClassic
     , module Network.AWS.EC2.RestoreAddressToClassic
 
-    -- ** DescribeAvailabilityZones
-    , module Network.AWS.EC2.DescribeAvailabilityZones
-
-    -- ** ImportSnapshot
-    , module Network.AWS.EC2.ImportSnapshot
+    -- ** CreateKeyPair
+    , module Network.AWS.EC2.CreateKeyPair
 
-    -- ** AcceptVPCPeeringConnection
-    , module Network.AWS.EC2.AcceptVPCPeeringConnection
+    -- ** DeleteVolume
+    , module Network.AWS.EC2.DeleteVolume
 
-    -- ** DescribeRouteTables
-    , module Network.AWS.EC2.DescribeRouteTables
+    -- ** DescribeSpotFleetInstances
+    , module Network.AWS.EC2.DescribeSpotFleetInstances
 
     -- * Types
 
@@ -764,6 +764,9 @@
     -- ** OfferingTypeValues
     , OfferingTypeValues (..)
 
+    -- ** OperationType
+    , OperationType (..)
+
     -- ** PermissionGroup
     , PermissionGroup (..)
 
@@ -905,8 +908,8 @@
     -- ** Address
     , Address
     , address
-    , aInstanceId
     , aAssociationId
+    , aInstanceId
     , aNetworkInterfaceOwnerId
     , aAllocationId
     , aDomain
@@ -927,8 +930,8 @@
     -- ** AvailabilityZone
     , AvailabilityZone
     , availabilityZone
-    , azRegionName
     , azState
+    , azRegionName
     , azZoneName
     , azMessages
 
@@ -1096,8 +1099,8 @@
     -- ** EBSInstanceBlockDevice
     , EBSInstanceBlockDevice
     , ebsInstanceBlockDevice
-    , eibdDeleteOnTermination
     , eibdStatus
+    , eibdDeleteOnTermination
     , eibdVolumeId
     , eibdAttachTime
 
@@ -1155,8 +1158,8 @@
     , flTrafficType
     , flDeliverLogsStatus
     , flDeliverLogsErrorMessage
-    , flDeliverLogsPermissionARN
     , flLogGroupName
+    , flDeliverLogsPermissionARN
     , flFlowLogId
 
     -- ** GroupIdentifier
@@ -1218,8 +1221,8 @@
     , iCreationDate
     , iProductCodes
     , iStateReason
-    , iBlockDeviceMappings
     , iDescription
+    , iBlockDeviceMappings
     , iTags
     , iImageId
     , iImageLocation
@@ -1235,8 +1238,8 @@
     -- ** ImageDiskContainer
     , ImageDiskContainer
     , imageDiskContainer
-    , idcURL
     , idcFormat
+    , idcURL
     , idcDeviceName
     , idcUserBucket
     , idcDescription
@@ -1263,12 +1266,12 @@
     , iilsAdditionalInfo
     , iilsGroupNames
     , iilsSubnetId
-    , iilsGroupIds
     , iilsInstanceType
+    , iilsGroupIds
     , iilsUserData
     , iilsMonitoring
-    , iilsInstanceInitiatedShutdownBehavior
     , iilsPrivateIPAddress
+    , iilsInstanceInitiatedShutdownBehavior
     , iilsArchitecture
     , iilsPlacement
 
@@ -1316,17 +1319,17 @@
     , insClientToken
     , insSourceDestCheck
     , insVPCId
-    , insNetworkInterfaces
     , insKeyName
+    , insNetworkInterfaces
     , insRAMDiskId
-    , insKernelId
     , insSubnetId
+    , insKernelId
     , insRootDeviceName
-    , insEBSOptimized
     , insSRIOVNetSupport
+    , insEBSOptimized
     , insStateTransitionReason
-    , insIAMInstanceProfile
     , insInstanceLifecycle
+    , insIAMInstanceProfile
     , insPrivateIPAddress
     , insProductCodes
     , insSpotInstanceRequestId
@@ -1371,8 +1374,8 @@
     -- ** InstanceExportDetails
     , InstanceExportDetails
     , instanceExportDetails
-    , iedInstanceId
     , iedTargetEnvironment
+    , iedInstanceId
 
     -- ** InstanceMonitoring
     , InstanceMonitoring
@@ -1383,15 +1386,15 @@
     -- ** InstanceNetworkInterface
     , InstanceNetworkInterface
     , instanceNetworkInterface
-    , iniPrivateIPAddresses
-    , iniStatus
     , iniGroups
+    , iniStatus
+    , iniPrivateIPAddresses
     , iniSourceDestCheck
     , iniVPCId
     , iniNetworkInterfaceId
     , iniSubnetId
-    , iniAttachment
     , iniMACAddress
+    , iniAttachment
     , iniOwnerId
     , iniPrivateIPAddress
     , iniPrivateDNSName
@@ -1408,8 +1411,8 @@
     -- ** InstanceNetworkInterfaceAttachment
     , InstanceNetworkInterfaceAttachment
     , instanceNetworkInterfaceAttachment
-    , iniaDeleteOnTermination
     , iniaStatus
+    , iniaDeleteOnTermination
     , iniaAttachmentId
     , iniaAttachTime
     , iniaDeviceIndex
@@ -1417,16 +1420,16 @@
     -- ** InstanceNetworkInterfaceSpecification
     , InstanceNetworkInterfaceSpecification
     , instanceNetworkInterfaceSpecification
+    , inisGroups
     , inisPrivateIPAddresses
     , inisDeleteOnTermination
-    , inisGroups
     , inisAssociatePublicIPAddress
     , inisNetworkInterfaceId
     , inisSubnetId
     , inisPrivateIPAddress
     , inisSecondaryPrivateIPAddressCount
-    , inisDeviceIndex
     , inisDescription
+    , inisDeviceIndex
 
     -- ** InstancePrivateIPAddress
     , InstancePrivateIPAddress
@@ -1454,8 +1457,8 @@
     , instanceStatus
     , isInstanceId
     , isSystemStatus
-    , isAvailabilityZone
     , isEvents
+    , isAvailabilityZone
     , isInstanceStatus
     , isInstanceState
 
@@ -1515,19 +1518,19 @@
     , LaunchSpecification
     , launchSpecification
     , lsSecurityGroups
-    , lsNetworkInterfaces
     , lsKeyName
+    , lsNetworkInterfaces
     , lsRAMDiskId
-    , lsKernelId
     , lsSubnetId
+    , lsKernelId
     , lsInstanceType
     , lsEBSOptimized
     , lsUserData
     , lsMonitoring
     , lsIAMInstanceProfile
     , lsImageId
-    , lsBlockDeviceMappings
     , lsAddressingType
+    , lsBlockDeviceMappings
     , lsPlacement
 
     -- ** Monitoring
@@ -1548,8 +1551,8 @@
     , naNetworkACLId
     , naVPCId
     , naAssociations
-    , naIsDefault
     , naTags
+    , naIsDefault
 
     -- ** NetworkACLAssociation
     , NetworkACLAssociation
@@ -1572,17 +1575,17 @@
     -- ** NetworkInterface
     , NetworkInterface
     , networkInterface
-    , niPrivateIPAddresses
-    , niStatus
     , niGroups
+    , niStatus
+    , niPrivateIPAddresses
     , niSourceDestCheck
-    , niTagSet
     , niVPCId
+    , niTagSet
     , niRequesterManaged
     , niNetworkInterfaceId
     , niSubnetId
-    , niAttachment
     , niMACAddress
+    , niAttachment
     , niOwnerId
     , niAvailabilityZone
     , niPrivateIPAddress
@@ -1604,8 +1607,8 @@
     , NetworkInterfaceAttachment
     , networkInterfaceAttachment
     , niaInstanceId
-    , niaDeleteOnTermination
     , niaStatus
+    , niaDeleteOnTermination
     , niaAttachmentId
     , niaInstanceOwnerId
     , niaAttachTime
@@ -1704,8 +1707,8 @@
     -- ** RecurringCharge
     , RecurringCharge
     , recurringCharge
-    , rcFrequency
     , rcAmount
+    , rcFrequency
 
     -- ** RegionInfo
     , RegionInfo
@@ -1718,19 +1721,19 @@
     , requestSpotLaunchSpecification
     , rslsSecurityGroupIds
     , rslsSecurityGroups
-    , rslsNetworkInterfaces
     , rslsKeyName
+    , rslsNetworkInterfaces
     , rslsRAMDiskId
-    , rslsKernelId
     , rslsSubnetId
+    , rslsKernelId
     , rslsInstanceType
     , rslsEBSOptimized
     , rslsUserData
     , rslsMonitoring
     , rslsIAMInstanceProfile
     , rslsImageId
-    , rslsBlockDeviceMappings
     , rslsAddressingType
+    , rslsBlockDeviceMappings
     , rslsPlacement
 
     -- ** Reservation
@@ -1757,14 +1760,14 @@
     , riProductDescription
     , riStart
     , riInstanceType
-    , riAvailabilityZone
     , riEnd
+    , riAvailabilityZone
+    , riRecurringCharges
     , riOfferingType
     , riUsagePrice
-    , riRecurringCharges
-    , riInstanceTenancy
     , riFixedPrice
     , riReservedInstancesId
+    , riInstanceTenancy
     , riDuration
     , riTags
 
@@ -1791,9 +1794,9 @@
     , rilPriceSchedules
     , rilStatusMessage
     , rilReservedInstancesId
+    , rilTags
     , rilInstanceCounts
     , rilReservedInstancesListingId
-    , rilTags
 
     -- ** ReservedInstancesModification
     , ReservedInstancesModification
@@ -1823,20 +1826,20 @@
     , rioInstanceType
     , rioAvailabilityZone
     , rioPricingDetails
+    , rioRecurringCharges
     , rioOfferingType
     , rioUsagePrice
-    , rioRecurringCharges
-    , rioReservedInstancesOfferingId
-    , rioInstanceTenancy
     , rioFixedPrice
+    , rioInstanceTenancy
+    , rioReservedInstancesOfferingId
     , rioDuration
 
     -- ** Route
     , Route
     , route
+    , rVPCPeeringConnectionId
     , rInstanceId
     , rOrigin
-    , rVPCPeeringConnectionId
     , rState
     , rNetworkInterfaceId
     , rGatewayId
@@ -1847,8 +1850,8 @@
     -- ** RouteTable
     , RouteTable
     , routeTable
-    , rtRoutes
     , rtRouteTableId
+    , rtRoutes
     , rtVPCId
     , rtPropagatingVGWs
     , rtAssociations
@@ -1909,20 +1912,20 @@
     , snapshotDetail
     , sdStatus
     , sdProgress
-    , sdURL
     , sdFormat
+    , sdURL
     , sdDeviceName
+    , sdStatusMessage
     , sdUserBucket
     , sdDiskImageSize
-    , sdStatusMessage
     , sdDescription
     , sdSnapshotId
 
     -- ** SnapshotDiskContainer
     , SnapshotDiskContainer
     , snapshotDiskContainer
-    , sdcURL
     , sdcFormat
+    , sdcURL
     , sdcUserBucket
     , sdcDescription
 
@@ -1931,11 +1934,11 @@
     , snapshotTaskDetail
     , stdStatus
     , stdProgress
-    , stdURL
     , stdFormat
+    , stdURL
+    , stdStatusMessage
     , stdUserBucket
     , stdDiskImageSize
-    , stdStatusMessage
     , stdDescription
     , stdSnapshotId
 
@@ -1952,19 +1955,21 @@
     , SpotFleetLaunchSpecification
     , spotFleetLaunchSpecification
     , sflsSecurityGroups
-    , sflsNetworkInterfaces
+    , sflsSpotPrice
+    , sflsWeightedCapacity
     , sflsKeyName
+    , sflsNetworkInterfaces
     , sflsRAMDiskId
-    , sflsKernelId
     , sflsSubnetId
+    , sflsKernelId
     , sflsInstanceType
     , sflsEBSOptimized
     , sflsUserData
     , sflsMonitoring
     , sflsIAMInstanceProfile
     , sflsImageId
-    , sflsBlockDeviceMappings
     , sflsAddressingType
+    , sflsBlockDeviceMappings
     , sflsPlacement
 
     -- ** SpotFleetMonitoring
@@ -1999,17 +2004,17 @@
     , sirState
     , sirProductDescription
     , sirSpotPrice
-    , sirAvailabilityZoneGroup
     , sirLaunchSpecification
+    , sirAvailabilityZoneGroup
     , sirLaunchedAvailabilityZone
     , sirValidUntil
-    , sirFault
     , sirLaunchGroup
+    , sirFault
     , sirSpotInstanceRequestId
     , sirType
     , sirValidFrom
-    , sirTags
     , sirCreateTime
+    , sirTags
 
     -- ** SpotInstanceStateFault
     , SpotInstanceStateFault
@@ -2149,8 +2154,8 @@
     -- ** VPCEndpoint
     , VPCEndpoint
     , vpcEndpoint
-    , vePolicyDocument
     , veState
+    , vePolicyDocument
     , veVPCId
     , veCreationTimestamp
     , veServiceName
@@ -2160,8 +2165,8 @@
     -- ** VPCPeeringConnection
     , VPCPeeringConnection
     , vpcPeeringConnection
-    , vpcpcStatus
     , vpcpcVPCPeeringConnectionId
+    , vpcpcStatus
     , vpcpcAccepterVPCInfo
     , vpcpcRequesterVPCInfo
     , vpcpcExpirationTime
@@ -2183,14 +2188,14 @@
     -- ** VPNConnection
     , VPNConnection
     , vpnConnection
+    , vcCustomerGatewayConfiguration
     , vcRoutes
     , vcVPNGatewayId
     , vcOptions
-    , vcVGWTelemetry
     , vcTags
+    , vcVGWTelemetry
     , vcVPNConnectionId
     , vcCustomerGatewayId
-    , vcCustomerGatewayConfiguration
     , vcState
     , vcType
 
@@ -2207,8 +2212,8 @@
     -- ** VPNGateway
     , VPNGateway
     , vpnGateway
-    , vgVPCAttachments
     , vgState
+    , vgVPCAttachments
     , vgVPNGatewayId
     , vgAvailabilityZone
     , vgType
@@ -2286,8 +2291,8 @@
     , volumeStatusItem
     , vsiVolumeStatus
     , vsiActions
-    , vsiAvailabilityZone
     , vsiEvents
+    , vsiAvailabilityZone
     , vsiVolumeId
     ) where
 
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
@@ -39,7 +39,7 @@
     , AcceptVPCPeeringConnectionResponse
     -- * Response Lenses
     , avpcrsVPCPeeringConnection
-    , avpcrsStatus
+    , avpcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -110,7 +110,7 @@
 -- | /See:/ 'acceptVPCPeeringConnectionResponse' smart constructor.
 data AcceptVPCPeeringConnectionResponse = AcceptVPCPeeringConnectionResponse'
     { _avpcrsVPCPeeringConnection :: !(Maybe VPCPeeringConnection)
-    , _avpcrsStatus               :: !Int
+    , _avpcrsResponseStatus       :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AcceptVPCPeeringConnectionResponse' with the minimum fields required to make a request.
@@ -119,14 +119,14 @@
 --
 -- * 'avpcrsVPCPeeringConnection'
 --
--- * 'avpcrsStatus'
+-- * 'avpcrsResponseStatus'
 acceptVPCPeeringConnectionResponse
-    :: Int -- ^ 'avpcrsStatus'
+    :: Int -- ^ 'avpcrsResponseStatus'
     -> AcceptVPCPeeringConnectionResponse
-acceptVPCPeeringConnectionResponse pStatus_ =
+acceptVPCPeeringConnectionResponse pResponseStatus_ =
     AcceptVPCPeeringConnectionResponse'
     { _avpcrsVPCPeeringConnection = Nothing
-    , _avpcrsStatus = pStatus_
+    , _avpcrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the VPC peering connection.
@@ -134,5 +134,5 @@
 avpcrsVPCPeeringConnection = lens _avpcrsVPCPeeringConnection (\ s a -> s{_avpcrsVPCPeeringConnection = a});
 
 -- | The response status code.
-avpcrsStatus :: Lens' AcceptVPCPeeringConnectionResponse Int
-avpcrsStatus = lens _avpcrsStatus (\ s a -> s{_avpcrsStatus = a});
+avpcrsResponseStatus :: Lens' AcceptVPCPeeringConnectionResponse Int
+avpcrsResponseStatus = lens _avpcrsResponseStatus (\ s a -> s{_avpcrsResponseStatus = a});
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
@@ -42,7 +42,7 @@
     , aarsAllocationId
     , aarsDomain
     , aarsPublicIP
-    , aarsStatus
+    , aarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -111,10 +111,10 @@
 
 -- | /See:/ 'allocateAddressResponse' smart constructor.
 data AllocateAddressResponse = AllocateAddressResponse'
-    { _aarsAllocationId :: !(Maybe Text)
-    , _aarsDomain       :: !(Maybe DomainType)
-    , _aarsPublicIP     :: !(Maybe Text)
-    , _aarsStatus       :: !Int
+    { _aarsAllocationId   :: !(Maybe Text)
+    , _aarsDomain         :: !(Maybe DomainType)
+    , _aarsPublicIP       :: !(Maybe Text)
+    , _aarsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AllocateAddressResponse' with the minimum fields required to make a request.
@@ -127,16 +127,16 @@
 --
 -- * 'aarsPublicIP'
 --
--- * 'aarsStatus'
+-- * 'aarsResponseStatus'
 allocateAddressResponse
-    :: Int -- ^ 'aarsStatus'
+    :: Int -- ^ 'aarsResponseStatus'
     -> AllocateAddressResponse
-allocateAddressResponse pStatus_ =
+allocateAddressResponse pResponseStatus_ =
     AllocateAddressResponse'
     { _aarsAllocationId = Nothing
     , _aarsDomain = Nothing
     , _aarsPublicIP = Nothing
-    , _aarsStatus = pStatus_
+    , _aarsResponseStatus = pResponseStatus_
     }
 
 -- | [EC2-VPC] The ID that AWS assigns to represent the allocation of the
@@ -154,5 +154,5 @@
 aarsPublicIP = lens _aarsPublicIP (\ s a -> s{_aarsPublicIP = a});
 
 -- | The response status code.
-aarsStatus :: Lens' AllocateAddressResponse Int
-aarsStatus = lens _aarsStatus (\ s a -> s{_aarsStatus = a});
+aarsResponseStatus :: Lens' AllocateAddressResponse Int
+aarsResponseStatus = lens _aarsResponseStatus (\ s a -> s{_aarsResponseStatus = a});
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
@@ -59,7 +59,7 @@
     , AssociateAddressResponse
     -- * Response Lenses
     , arsAssociationId
-    , arsStatus
+    , arsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -179,8 +179,8 @@
 
 -- | /See:/ 'associateAddressResponse' smart constructor.
 data AssociateAddressResponse = AssociateAddressResponse'
-    { _arsAssociationId :: !(Maybe Text)
-    , _arsStatus        :: !Int
+    { _arsAssociationId  :: !(Maybe Text)
+    , _arsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AssociateAddressResponse' with the minimum fields required to make a request.
@@ -189,14 +189,14 @@
 --
 -- * 'arsAssociationId'
 --
--- * 'arsStatus'
+-- * 'arsResponseStatus'
 associateAddressResponse
-    :: Int -- ^ 'arsStatus'
+    :: Int -- ^ 'arsResponseStatus'
     -> AssociateAddressResponse
-associateAddressResponse pStatus_ =
+associateAddressResponse pResponseStatus_ =
     AssociateAddressResponse'
     { _arsAssociationId = Nothing
-    , _arsStatus = pStatus_
+    , _arsResponseStatus = pResponseStatus_
     }
 
 -- | [EC2-VPC] The ID that represents the association of the Elastic IP
@@ -205,5 +205,5 @@
 arsAssociationId = lens _arsAssociationId (\ s a -> s{_arsAssociationId = a});
 
 -- | The response status code.
-arsStatus :: Lens' AssociateAddressResponse Int
-arsStatus = lens _arsStatus (\ s a -> s{_arsStatus = a});
+arsResponseStatus :: Lens' AssociateAddressResponse Int
+arsResponseStatus = lens _arsResponseStatus (\ s a -> s{_arsResponseStatus = a});
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
@@ -45,7 +45,7 @@
     , AssociateRouteTableResponse
     -- * Response Lenses
     , artrsAssociationId
-    , artrsStatus
+    , artrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -122,8 +122,8 @@
 
 -- | /See:/ 'associateRouteTableResponse' smart constructor.
 data AssociateRouteTableResponse = AssociateRouteTableResponse'
-    { _artrsAssociationId :: !(Maybe Text)
-    , _artrsStatus        :: !Int
+    { _artrsAssociationId  :: !(Maybe Text)
+    , _artrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AssociateRouteTableResponse' with the minimum fields required to make a request.
@@ -132,14 +132,14 @@
 --
 -- * 'artrsAssociationId'
 --
--- * 'artrsStatus'
+-- * 'artrsResponseStatus'
 associateRouteTableResponse
-    :: Int -- ^ 'artrsStatus'
+    :: Int -- ^ 'artrsResponseStatus'
     -> AssociateRouteTableResponse
-associateRouteTableResponse pStatus_ =
+associateRouteTableResponse pResponseStatus_ =
     AssociateRouteTableResponse'
     { _artrsAssociationId = Nothing
-    , _artrsStatus = pStatus_
+    , _artrsResponseStatus = pResponseStatus_
     }
 
 -- | The route table association ID (needed to disassociate the route table).
@@ -147,5 +147,5 @@
 artrsAssociationId = lens _artrsAssociationId (\ s a -> s{_artrsAssociationId = a});
 
 -- | The response status code.
-artrsStatus :: Lens' AssociateRouteTableResponse Int
-artrsStatus = lens _artrsStatus (\ s a -> s{_artrsStatus = a});
+artrsResponseStatus :: Lens' AssociateRouteTableResponse Int
+artrsResponseStatus = lens _artrsResponseStatus (\ s a -> s{_artrsResponseStatus = a});
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
@@ -49,7 +49,7 @@
     , AttachClassicLinkVPCResponse
     -- * Response Lenses
     , aclvrsReturn
-    , aclvrsStatus
+    , aclvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -138,8 +138,8 @@
 
 -- | /See:/ 'attachClassicLinkVPCResponse' smart constructor.
 data AttachClassicLinkVPCResponse = AttachClassicLinkVPCResponse'
-    { _aclvrsReturn :: !(Maybe Bool)
-    , _aclvrsStatus :: !Int
+    { _aclvrsReturn         :: !(Maybe Bool)
+    , _aclvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AttachClassicLinkVPCResponse' with the minimum fields required to make a request.
@@ -148,14 +148,14 @@
 --
 -- * 'aclvrsReturn'
 --
--- * 'aclvrsStatus'
+-- * 'aclvrsResponseStatus'
 attachClassicLinkVPCResponse
-    :: Int -- ^ 'aclvrsStatus'
+    :: Int -- ^ 'aclvrsResponseStatus'
     -> AttachClassicLinkVPCResponse
-attachClassicLinkVPCResponse pStatus_ =
+attachClassicLinkVPCResponse pResponseStatus_ =
     AttachClassicLinkVPCResponse'
     { _aclvrsReturn = Nothing
-    , _aclvrsStatus = pStatus_
+    , _aclvrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -163,5 +163,5 @@
 aclvrsReturn = lens _aclvrsReturn (\ s a -> s{_aclvrsReturn = a});
 
 -- | The response status code.
-aclvrsStatus :: Lens' AttachClassicLinkVPCResponse Int
-aclvrsStatus = lens _aclvrsStatus (\ s a -> s{_aclvrsStatus = a});
+aclvrsResponseStatus :: Lens' AttachClassicLinkVPCResponse Int
+aclvrsResponseStatus = lens _aclvrsResponseStatus (\ s a -> s{_aclvrsResponseStatus = a});
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
@@ -37,7 +37,7 @@
     , AttachNetworkInterfaceResponse
     -- * Response Lenses
     , anirsAttachmentId
-    , anirsStatus
+    , anirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -126,8 +126,8 @@
 
 -- | /See:/ 'attachNetworkInterfaceResponse' smart constructor.
 data AttachNetworkInterfaceResponse = AttachNetworkInterfaceResponse'
-    { _anirsAttachmentId :: !(Maybe Text)
-    , _anirsStatus       :: !Int
+    { _anirsAttachmentId   :: !(Maybe Text)
+    , _anirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AttachNetworkInterfaceResponse' with the minimum fields required to make a request.
@@ -136,14 +136,14 @@
 --
 -- * 'anirsAttachmentId'
 --
--- * 'anirsStatus'
+-- * 'anirsResponseStatus'
 attachNetworkInterfaceResponse
-    :: Int -- ^ 'anirsStatus'
+    :: Int -- ^ 'anirsResponseStatus'
     -> AttachNetworkInterfaceResponse
-attachNetworkInterfaceResponse pStatus_ =
+attachNetworkInterfaceResponse pResponseStatus_ =
     AttachNetworkInterfaceResponse'
     { _anirsAttachmentId = Nothing
-    , _anirsStatus = pStatus_
+    , _anirsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the network interface attachment.
@@ -151,5 +151,5 @@
 anirsAttachmentId = lens _anirsAttachmentId (\ s a -> s{_anirsAttachmentId = a});
 
 -- | The response status code.
-anirsStatus :: Lens' AttachNetworkInterfaceResponse Int
-anirsStatus = lens _anirsStatus (\ s a -> s{_anirsStatus = a});
+anirsResponseStatus :: Lens' AttachNetworkInterfaceResponse Int
+anirsResponseStatus = lens _anirsResponseStatus (\ s a -> s{_anirsResponseStatus = a});
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
@@ -38,7 +38,7 @@
     , AttachVPNGatewayResponse
     -- * Response Lenses
     , avgrsVPCAttachment
-    , avgrsStatus
+    , avgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -115,8 +115,8 @@
 
 -- | /See:/ 'attachVPNGatewayResponse' smart constructor.
 data AttachVPNGatewayResponse = AttachVPNGatewayResponse'
-    { _avgrsVPCAttachment :: !(Maybe VPCAttachment)
-    , _avgrsStatus        :: !Int
+    { _avgrsVPCAttachment  :: !(Maybe VPCAttachment)
+    , _avgrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AttachVPNGatewayResponse' with the minimum fields required to make a request.
@@ -125,14 +125,14 @@
 --
 -- * 'avgrsVPCAttachment'
 --
--- * 'avgrsStatus'
+-- * 'avgrsResponseStatus'
 attachVPNGatewayResponse
-    :: Int -- ^ 'avgrsStatus'
+    :: Int -- ^ 'avgrsResponseStatus'
     -> AttachVPNGatewayResponse
-attachVPNGatewayResponse pStatus_ =
+attachVPNGatewayResponse pResponseStatus_ =
     AttachVPNGatewayResponse'
     { _avgrsVPCAttachment = Nothing
-    , _avgrsStatus = pStatus_
+    , _avgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the attachment.
@@ -140,5 +140,5 @@
 avgrsVPCAttachment = lens _avgrsVPCAttachment (\ s a -> s{_avgrsVPCAttachment = a});
 
 -- | The response status code.
-avgrsStatus :: Lens' AttachVPNGatewayResponse Int
-avgrsStatus = lens _avgrsStatus (\ s a -> s{_avgrsStatus = a});
+avgrsResponseStatus :: Lens' AttachVPNGatewayResponse Int
+avgrsResponseStatus = lens _avgrsResponseStatus (\ s a -> s{_avgrsResponseStatus = 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
@@ -53,8 +53,8 @@
     , asgiGroupId
     , asgiToPort
     , asgiCIdRIP
-    , asgiGroupName
     , asgiSourceSecurityGroupOwnerId
+    , asgiGroupName
     , asgiSourceSecurityGroupName
     , asgiDryRun
 
@@ -77,8 +77,8 @@
     , _asgiGroupId                    :: !(Maybe Text)
     , _asgiToPort                     :: !(Maybe Int)
     , _asgiCIdRIP                     :: !(Maybe Text)
-    , _asgiGroupName                  :: !(Maybe Text)
     , _asgiSourceSecurityGroupOwnerId :: !(Maybe Text)
+    , _asgiGroupName                  :: !(Maybe Text)
     , _asgiSourceSecurityGroupName    :: !(Maybe Text)
     , _asgiDryRun                     :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -99,10 +99,10 @@
 --
 -- * 'asgiCIdRIP'
 --
--- * 'asgiGroupName'
---
 -- * 'asgiSourceSecurityGroupOwnerId'
 --
+-- * 'asgiGroupName'
+--
 -- * 'asgiSourceSecurityGroupName'
 --
 -- * 'asgiDryRun'
@@ -116,8 +116,8 @@
     , _asgiGroupId = Nothing
     , _asgiToPort = Nothing
     , _asgiCIdRIP = Nothing
-    , _asgiGroupName = Nothing
     , _asgiSourceSecurityGroupOwnerId = Nothing
+    , _asgiGroupName = Nothing
     , _asgiSourceSecurityGroupName = Nothing
     , _asgiDryRun = Nothing
     }
@@ -153,10 +153,6 @@
 asgiCIdRIP :: Lens' AuthorizeSecurityGroupIngress (Maybe Text)
 asgiCIdRIP = lens _asgiCIdRIP (\ s a -> s{_asgiCIdRIP = a});
 
--- | [EC2-Classic, default VPC] The name of the security group.
-asgiGroupName :: Lens' AuthorizeSecurityGroupIngress (Maybe Text)
-asgiGroupName = lens _asgiGroupName (\ s a -> s{_asgiGroupName = a});
-
 -- | [EC2-Classic, default VPC] The AWS account number for the source
 -- security group. For EC2-VPC, the source security group must be in the
 -- same VPC. You can\'t specify this parameter in combination with the
@@ -168,6 +164,10 @@
 asgiSourceSecurityGroupOwnerId :: Lens' AuthorizeSecurityGroupIngress (Maybe Text)
 asgiSourceSecurityGroupOwnerId = lens _asgiSourceSecurityGroupOwnerId (\ s a -> s{_asgiSourceSecurityGroupOwnerId = a});
 
+-- | [EC2-Classic, default VPC] The name of the security group.
+asgiGroupName :: Lens' AuthorizeSecurityGroupIngress (Maybe Text)
+asgiGroupName = lens _asgiGroupName (\ s a -> s{_asgiGroupName = a});
+
 -- | [EC2-Classic, default VPC] The name of the source security group. You
 -- can\'t specify this parameter in combination with the following
 -- parameters: the CIDR IP address range, the start of the port range, the
@@ -210,9 +210,9 @@
                "IpProtocol" =: _asgiIPProtocol,
                "GroupId" =: _asgiGroupId, "ToPort" =: _asgiToPort,
                "CidrIp" =: _asgiCIdRIP,
-               "GroupName" =: _asgiGroupName,
                "SourceSecurityGroupOwnerId" =:
                  _asgiSourceSecurityGroupOwnerId,
+               "GroupName" =: _asgiGroupName,
                "SourceSecurityGroupName" =:
                  _asgiSourceSecurityGroupName,
                "DryRun" =: _asgiDryRun]
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
@@ -45,7 +45,7 @@
     , BundleInstanceResponse
     -- * Response Lenses
     , birsBundleTask
-    , birsStatus
+    , birsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -130,8 +130,8 @@
 
 -- | /See:/ 'bundleInstanceResponse' smart constructor.
 data BundleInstanceResponse = BundleInstanceResponse'
-    { _birsBundleTask :: !(Maybe BundleTask)
-    , _birsStatus     :: !Int
+    { _birsBundleTask     :: !(Maybe BundleTask)
+    , _birsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'BundleInstanceResponse' with the minimum fields required to make a request.
@@ -140,14 +140,14 @@
 --
 -- * 'birsBundleTask'
 --
--- * 'birsStatus'
+-- * 'birsResponseStatus'
 bundleInstanceResponse
-    :: Int -- ^ 'birsStatus'
+    :: Int -- ^ 'birsResponseStatus'
     -> BundleInstanceResponse
-bundleInstanceResponse pStatus_ =
+bundleInstanceResponse pResponseStatus_ =
     BundleInstanceResponse'
     { _birsBundleTask = Nothing
-    , _birsStatus = pStatus_
+    , _birsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the bundle task.
@@ -155,5 +155,5 @@
 birsBundleTask = lens _birsBundleTask (\ s a -> s{_birsBundleTask = a});
 
 -- | The response status code.
-birsStatus :: Lens' BundleInstanceResponse Int
-birsStatus = lens _birsStatus (\ s a -> s{_birsStatus = a});
+birsResponseStatus :: Lens' BundleInstanceResponse Int
+birsResponseStatus = lens _birsResponseStatus (\ s a -> s{_birsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , CancelBundleTaskResponse
     -- * Response Lenses
     , cbtrsBundleTask
-    , cbtrsStatus
+    , cbtrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -102,8 +102,8 @@
 
 -- | /See:/ 'cancelBundleTaskResponse' smart constructor.
 data CancelBundleTaskResponse = CancelBundleTaskResponse'
-    { _cbtrsBundleTask :: !(Maybe BundleTask)
-    , _cbtrsStatus     :: !Int
+    { _cbtrsBundleTask     :: !(Maybe BundleTask)
+    , _cbtrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CancelBundleTaskResponse' with the minimum fields required to make a request.
@@ -112,14 +112,14 @@
 --
 -- * 'cbtrsBundleTask'
 --
--- * 'cbtrsStatus'
+-- * 'cbtrsResponseStatus'
 cancelBundleTaskResponse
-    :: Int -- ^ 'cbtrsStatus'
+    :: Int -- ^ 'cbtrsResponseStatus'
     -> CancelBundleTaskResponse
-cancelBundleTaskResponse pStatus_ =
+cancelBundleTaskResponse pResponseStatus_ =
     CancelBundleTaskResponse'
     { _cbtrsBundleTask = Nothing
-    , _cbtrsStatus = pStatus_
+    , _cbtrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the bundle task.
@@ -127,5 +127,5 @@
 cbtrsBundleTask = lens _cbtrsBundleTask (\ s a -> s{_cbtrsBundleTask = a});
 
 -- | The response status code.
-cbtrsStatus :: Lens' CancelBundleTaskResponse Int
-cbtrsStatus = lens _cbtrsStatus (\ s a -> s{_cbtrsStatus = a});
+cbtrsResponseStatus :: Lens' CancelBundleTaskResponse Int
+cbtrsResponseStatus = lens _cbtrsResponseStatus (\ s a -> s{_cbtrsResponseStatus = a});
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
@@ -38,7 +38,7 @@
     , citrsState
     , citrsImportTaskId
     , citrsPreviousState
-    , citrsStatus
+    , citrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -115,10 +115,10 @@
 
 -- | /See:/ 'cancelImportTaskResponse' smart constructor.
 data CancelImportTaskResponse = CancelImportTaskResponse'
-    { _citrsState         :: !(Maybe Text)
-    , _citrsImportTaskId  :: !(Maybe Text)
-    , _citrsPreviousState :: !(Maybe Text)
-    , _citrsStatus        :: !Int
+    { _citrsState          :: !(Maybe Text)
+    , _citrsImportTaskId   :: !(Maybe Text)
+    , _citrsPreviousState  :: !(Maybe Text)
+    , _citrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CancelImportTaskResponse' with the minimum fields required to make a request.
@@ -131,16 +131,16 @@
 --
 -- * 'citrsPreviousState'
 --
--- * 'citrsStatus'
+-- * 'citrsResponseStatus'
 cancelImportTaskResponse
-    :: Int -- ^ 'citrsStatus'
+    :: Int -- ^ 'citrsResponseStatus'
     -> CancelImportTaskResponse
-cancelImportTaskResponse pStatus_ =
+cancelImportTaskResponse pResponseStatus_ =
     CancelImportTaskResponse'
     { _citrsState = Nothing
     , _citrsImportTaskId = Nothing
     , _citrsPreviousState = Nothing
-    , _citrsStatus = pStatus_
+    , _citrsResponseStatus = pResponseStatus_
     }
 
 -- | The current state of the task being canceled.
@@ -156,5 +156,5 @@
 citrsPreviousState = lens _citrsPreviousState (\ s a -> s{_citrsPreviousState = a});
 
 -- | The response status code.
-citrsStatus :: Lens' CancelImportTaskResponse Int
-citrsStatus = lens _citrsStatus (\ s a -> s{_citrsStatus = a});
+citrsResponseStatus :: Lens' CancelImportTaskResponse Int
+citrsResponseStatus = lens _citrsResponseStatus (\ s a -> s{_citrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     , CancelReservedInstancesListingResponse
     -- * Response Lenses
     , crilrsReservedInstancesListings
-    , crilrsStatus
+    , crilrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -102,7 +102,7 @@
 -- | /See:/ 'cancelReservedInstancesListingResponse' smart constructor.
 data CancelReservedInstancesListingResponse = CancelReservedInstancesListingResponse'
     { _crilrsReservedInstancesListings :: !(Maybe [ReservedInstancesListing])
-    , _crilrsStatus                    :: !Int
+    , _crilrsResponseStatus            :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CancelReservedInstancesListingResponse' with the minimum fields required to make a request.
@@ -111,14 +111,14 @@
 --
 -- * 'crilrsReservedInstancesListings'
 --
--- * 'crilrsStatus'
+-- * 'crilrsResponseStatus'
 cancelReservedInstancesListingResponse
-    :: Int -- ^ 'crilrsStatus'
+    :: Int -- ^ 'crilrsResponseStatus'
     -> CancelReservedInstancesListingResponse
-cancelReservedInstancesListingResponse pStatus_ =
+cancelReservedInstancesListingResponse pResponseStatus_ =
     CancelReservedInstancesListingResponse'
     { _crilrsReservedInstancesListings = Nothing
-    , _crilrsStatus = pStatus_
+    , _crilrsResponseStatus = pResponseStatus_
     }
 
 -- | The Reserved Instance listing.
@@ -126,5 +126,5 @@
 crilrsReservedInstancesListings = lens _crilrsReservedInstancesListings (\ s a -> s{_crilrsReservedInstancesListings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-crilrsStatus :: Lens' CancelReservedInstancesListingResponse Int
-crilrsStatus = lens _crilrsStatus (\ s a -> s{_crilrsStatus = a});
+crilrsResponseStatus :: Lens' CancelReservedInstancesListingResponse Int
+crilrsResponseStatus = lens _crilrsResponseStatus (\ s a -> s{_crilrsResponseStatus = a});
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
@@ -37,7 +37,7 @@
     -- * Response Lenses
     , csfrrsSuccessfulFleetRequests
     , csfrrsUnsuccessfulFleetRequests
-    , csfrrsStatus
+    , csfrrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -128,7 +128,7 @@
 data CancelSpotFleetRequestsResponse = CancelSpotFleetRequestsResponse'
     { _csfrrsSuccessfulFleetRequests   :: !(Maybe [CancelSpotFleetRequestsSuccessItem])
     , _csfrrsUnsuccessfulFleetRequests :: !(Maybe [CancelSpotFleetRequestsErrorItem])
-    , _csfrrsStatus                    :: !Int
+    , _csfrrsResponseStatus            :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CancelSpotFleetRequestsResponse' with the minimum fields required to make a request.
@@ -139,15 +139,15 @@
 --
 -- * 'csfrrsUnsuccessfulFleetRequests'
 --
--- * 'csfrrsStatus'
+-- * 'csfrrsResponseStatus'
 cancelSpotFleetRequestsResponse
-    :: Int -- ^ 'csfrrsStatus'
+    :: Int -- ^ 'csfrrsResponseStatus'
     -> CancelSpotFleetRequestsResponse
-cancelSpotFleetRequestsResponse pStatus_ =
+cancelSpotFleetRequestsResponse pResponseStatus_ =
     CancelSpotFleetRequestsResponse'
     { _csfrrsSuccessfulFleetRequests = Nothing
     , _csfrrsUnsuccessfulFleetRequests = Nothing
-    , _csfrrsStatus = pStatus_
+    , _csfrrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the Spot fleet requests that are successfully
@@ -161,5 +161,5 @@
 csfrrsUnsuccessfulFleetRequests = lens _csfrrsUnsuccessfulFleetRequests (\ s a -> s{_csfrrsUnsuccessfulFleetRequests = a}) . _Default . _Coerce;
 
 -- | The response status code.
-csfrrsStatus :: Lens' CancelSpotFleetRequestsResponse Int
-csfrrsStatus = lens _csfrrsStatus (\ s a -> s{_csfrrsStatus = a});
+csfrrsResponseStatus :: Lens' CancelSpotFleetRequestsResponse Int
+csfrrsResponseStatus = lens _csfrrsResponseStatus (\ s a -> s{_csfrrsResponseStatus = a});
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
@@ -44,7 +44,7 @@
     , CancelSpotInstanceRequestsResponse
     -- * Response Lenses
     , csirrsCancelledSpotInstanceRequests
-    , csirrsStatus
+    , csirrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -120,7 +120,7 @@
 -- /See:/ 'cancelSpotInstanceRequestsResponse' smart constructor.
 data CancelSpotInstanceRequestsResponse = CancelSpotInstanceRequestsResponse'
     { _csirrsCancelledSpotInstanceRequests :: !(Maybe [CancelledSpotInstanceRequest])
-    , _csirrsStatus                        :: !Int
+    , _csirrsResponseStatus                :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CancelSpotInstanceRequestsResponse' with the minimum fields required to make a request.
@@ -129,14 +129,14 @@
 --
 -- * 'csirrsCancelledSpotInstanceRequests'
 --
--- * 'csirrsStatus'
+-- * 'csirrsResponseStatus'
 cancelSpotInstanceRequestsResponse
-    :: Int -- ^ 'csirrsStatus'
+    :: Int -- ^ 'csirrsResponseStatus'
     -> CancelSpotInstanceRequestsResponse
-cancelSpotInstanceRequestsResponse pStatus_ =
+cancelSpotInstanceRequestsResponse pResponseStatus_ =
     CancelSpotInstanceRequestsResponse'
     { _csirrsCancelledSpotInstanceRequests = Nothing
-    , _csirrsStatus = pStatus_
+    , _csirrsResponseStatus = pResponseStatus_
     }
 
 -- | One or more Spot Instance requests.
@@ -144,5 +144,5 @@
 csirrsCancelledSpotInstanceRequests = lens _csirrsCancelledSpotInstanceRequests (\ s a -> s{_csirrsCancelledSpotInstanceRequests = a}) . _Default . _Coerce;
 
 -- | The response status code.
-csirrsStatus :: Lens' CancelSpotInstanceRequestsResponse Int
-csirrsStatus = lens _csirrsStatus (\ s a -> s{_csirrsStatus = a});
+csirrsResponseStatus :: Lens' CancelSpotInstanceRequestsResponse Int
+csirrsResponseStatus = lens _csirrsResponseStatus (\ s a -> s{_csirrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     -- * Response Lenses
     , cpirsReturn
     , cpirsOwnerId
-    , cpirsStatus
+    , cpirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -120,9 +120,9 @@
 
 -- | /See:/ 'confirmProductInstanceResponse' smart constructor.
 data ConfirmProductInstanceResponse = ConfirmProductInstanceResponse'
-    { _cpirsReturn  :: !(Maybe Bool)
-    , _cpirsOwnerId :: !(Maybe Text)
-    , _cpirsStatus  :: !Int
+    { _cpirsReturn         :: !(Maybe Bool)
+    , _cpirsOwnerId        :: !(Maybe Text)
+    , _cpirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ConfirmProductInstanceResponse' with the minimum fields required to make a request.
@@ -133,15 +133,15 @@
 --
 -- * 'cpirsOwnerId'
 --
--- * 'cpirsStatus'
+-- * 'cpirsResponseStatus'
 confirmProductInstanceResponse
-    :: Int -- ^ 'cpirsStatus'
+    :: Int -- ^ 'cpirsResponseStatus'
     -> ConfirmProductInstanceResponse
-confirmProductInstanceResponse pStatus_ =
+confirmProductInstanceResponse pResponseStatus_ =
     ConfirmProductInstanceResponse'
     { _cpirsReturn = Nothing
     , _cpirsOwnerId = Nothing
-    , _cpirsStatus = pStatus_
+    , _cpirsResponseStatus = pResponseStatus_
     }
 
 -- | The return value of the request. Returns 'true' if the specified product
@@ -156,5 +156,5 @@
 cpirsOwnerId = lens _cpirsOwnerId (\ s a -> s{_cpirsOwnerId = a});
 
 -- | The response status code.
-cpirsStatus :: Lens' ConfirmProductInstanceResponse Int
-cpirsStatus = lens _cpirsStatus (\ s a -> s{_cpirsStatus = a});
+cpirsResponseStatus :: Lens' ConfirmProductInstanceResponse Int
+cpirsResponseStatus = lens _cpirsResponseStatus (\ s a -> s{_cpirsResponseStatus = a});
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
@@ -35,8 +35,8 @@
     , CopyImage
     -- * Request Lenses
     , ciClientToken
-    , ciDryRun
     , ciDescription
+    , ciDryRun
     , ciSourceRegion
     , ciSourceImageId
     , ciName
@@ -46,7 +46,7 @@
     , CopyImageResponse
     -- * Response Lenses
     , coprsImageId
-    , coprsStatus
+    , coprsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -58,8 +58,8 @@
 -- | /See:/ 'copyImage' smart constructor.
 data CopyImage = CopyImage'
     { _ciClientToken   :: !(Maybe Text)
-    , _ciDryRun        :: !(Maybe Bool)
     , _ciDescription   :: !(Maybe Text)
+    , _ciDryRun        :: !(Maybe Bool)
     , _ciSourceRegion  :: !Text
     , _ciSourceImageId :: !Text
     , _ciName          :: !Text
@@ -71,10 +71,10 @@
 --
 -- * 'ciClientToken'
 --
--- * 'ciDryRun'
---
 -- * 'ciDescription'
 --
+-- * 'ciDryRun'
+--
 -- * 'ciSourceRegion'
 --
 -- * 'ciSourceImageId'
@@ -88,8 +88,8 @@
 copyImage pSourceRegion_ pSourceImageId_ pName_ =
     CopyImage'
     { _ciClientToken = Nothing
-    , _ciDryRun = Nothing
     , _ciDescription = Nothing
+    , _ciDryRun = Nothing
     , _ciSourceRegion = pSourceRegion_
     , _ciSourceImageId = pSourceImageId_
     , _ciName = pName_
@@ -102,6 +102,10 @@
 ciClientToken :: Lens' CopyImage (Maybe Text)
 ciClientToken = lens _ciClientToken (\ s a -> s{_ciClientToken = a});
 
+-- | A description for the new AMI in the destination region.
+ciDescription :: Lens' CopyImage (Maybe Text)
+ciDescription = lens _ciDescription (\ s a -> s{_ciDescription = 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'.
@@ -109,10 +113,6 @@
 ciDryRun :: Lens' CopyImage (Maybe Bool)
 ciDryRun = lens _ciDryRun (\ s a -> s{_ciDryRun = a});
 
--- | A description for the new AMI in the destination region.
-ciDescription :: Lens' CopyImage (Maybe Text)
-ciDescription = lens _ciDescription (\ s a -> s{_ciDescription = a});
-
 -- | The name of the region that contains the AMI to copy.
 ciSourceRegion :: Lens' CopyImage Text
 ciSourceRegion = lens _ciSourceRegion (\ s a -> s{_ciSourceRegion = a});
@@ -146,16 +146,16 @@
               ["Action" =: ("CopyImage" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                "ClientToken" =: _ciClientToken,
-               "DryRun" =: _ciDryRun,
                "Description" =: _ciDescription,
+               "DryRun" =: _ciDryRun,
                "SourceRegion" =: _ciSourceRegion,
                "SourceImageId" =: _ciSourceImageId,
                "Name" =: _ciName]
 
 -- | /See:/ 'copyImageResponse' smart constructor.
 data CopyImageResponse = CopyImageResponse'
-    { _coprsImageId :: !(Maybe Text)
-    , _coprsStatus  :: !Int
+    { _coprsImageId        :: !(Maybe Text)
+    , _coprsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CopyImageResponse' with the minimum fields required to make a request.
@@ -164,14 +164,14 @@
 --
 -- * 'coprsImageId'
 --
--- * 'coprsStatus'
+-- * 'coprsResponseStatus'
 copyImageResponse
-    :: Int -- ^ 'coprsStatus'
+    :: Int -- ^ 'coprsResponseStatus'
     -> CopyImageResponse
-copyImageResponse pStatus_ =
+copyImageResponse pResponseStatus_ =
     CopyImageResponse'
     { _coprsImageId = Nothing
-    , _coprsStatus = pStatus_
+    , _coprsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the new AMI.
@@ -179,5 +179,5 @@
 coprsImageId = lens _coprsImageId (\ s a -> s{_coprsImageId = a});
 
 -- | The response status code.
-coprsStatus :: Lens' CopyImageResponse Int
-coprsStatus = lens _coprsStatus (\ s a -> s{_coprsStatus = a});
+coprsResponseStatus :: Lens' CopyImageResponse Int
+coprsResponseStatus = lens _coprsResponseStatus (\ s a -> s{_coprsResponseStatus = a});
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
@@ -42,12 +42,12 @@
       copySnapshot
     , CopySnapshot
     -- * Request Lenses
-    , csEncrypted
     , csPresignedURL
+    , csEncrypted
     , csDestinationRegion
     , csKMSKeyId
-    , csDryRun
     , csDescription
+    , csDryRun
     , csSourceRegion
     , csSourceSnapshotId
 
@@ -56,7 +56,7 @@
     , CopySnapshotResponse
     -- * Response Lenses
     , csrsSnapshotId
-    , csrsStatus
+    , csrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -67,12 +67,12 @@
 
 -- | /See:/ 'copySnapshot' smart constructor.
 data CopySnapshot = CopySnapshot'
-    { _csEncrypted         :: !(Maybe Bool)
-    , _csPresignedURL      :: !(Maybe Text)
+    { _csPresignedURL      :: !(Maybe Text)
+    , _csEncrypted         :: !(Maybe Bool)
     , _csDestinationRegion :: !(Maybe Text)
     , _csKMSKeyId          :: !(Maybe Text)
-    , _csDryRun            :: !(Maybe Bool)
     , _csDescription       :: !(Maybe Text)
+    , _csDryRun            :: !(Maybe Bool)
     , _csSourceRegion      :: !Text
     , _csSourceSnapshotId  :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -81,18 +81,18 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csEncrypted'
---
 -- * 'csPresignedURL'
 --
+-- * 'csEncrypted'
+--
 -- * 'csDestinationRegion'
 --
 -- * 'csKMSKeyId'
 --
--- * 'csDryRun'
---
 -- * 'csDescription'
 --
+-- * 'csDryRun'
+--
 -- * 'csSourceRegion'
 --
 -- * 'csSourceSnapshotId'
@@ -102,27 +102,16 @@
     -> CopySnapshot
 copySnapshot pSourceRegion_ pSourceSnapshotId_ =
     CopySnapshot'
-    { _csEncrypted = Nothing
-    , _csPresignedURL = Nothing
+    { _csPresignedURL = Nothing
+    , _csEncrypted = Nothing
     , _csDestinationRegion = Nothing
     , _csKMSKeyId = Nothing
-    , _csDryRun = Nothing
     , _csDescription = Nothing
+    , _csDryRun = Nothing
     , _csSourceRegion = pSourceRegion_
     , _csSourceSnapshotId = pSourceSnapshotId_
     }
 
--- | Specifies whether the destination snapshot should be encrypted. There is
--- no way to create an unencrypted snapshot copy from an encrypted
--- snapshot; however, you can encrypt a copy of an unencrypted snapshot
--- with this flag. 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/.
-csEncrypted :: Lens' CopySnapshot (Maybe Bool)
-csEncrypted = lens _csEncrypted (\ s a -> s{_csEncrypted = a});
-
 -- | The pre-signed URL that facilitates copying an encrypted snapshot. This
 -- parameter is only required when copying an encrypted snapshot with the
 -- Amazon EC2 Query API; it is available as an optional parameter in all
@@ -139,6 +128,17 @@
 csPresignedURL :: Lens' CopySnapshot (Maybe Text)
 csPresignedURL = lens _csPresignedURL (\ s a -> s{_csPresignedURL = a});
 
+-- | Specifies whether the destination snapshot should be encrypted. There is
+-- no way to create an unencrypted snapshot copy from an encrypted
+-- snapshot; however, you can encrypt a copy of an unencrypted snapshot
+-- with this flag. 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/.
+csEncrypted :: Lens' CopySnapshot (Maybe Bool)
+csEncrypted = lens _csEncrypted (\ s a -> s{_csEncrypted = a});
+
 -- | The destination region to use in the 'PresignedUrl' parameter of a
 -- snapshot copy operation. This parameter is only valid for specifying the
 -- destination region in a 'PresignedUrl' parameter, where it is required.
@@ -163,6 +163,10 @@
 csKMSKeyId :: Lens' CopySnapshot (Maybe Text)
 csKMSKeyId = lens _csKMSKeyId (\ s a -> s{_csKMSKeyId = a});
 
+-- | A description for the EBS snapshot.
+csDescription :: Lens' CopySnapshot (Maybe Text)
+csDescription = lens _csDescription (\ s a -> s{_csDescription = 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'.
@@ -170,10 +174,6 @@
 csDryRun :: Lens' CopySnapshot (Maybe Bool)
 csDryRun = lens _csDryRun (\ s a -> s{_csDryRun = a});
 
--- | A description for the EBS snapshot.
-csDescription :: Lens' CopySnapshot (Maybe Text)
-csDescription = lens _csDescription (\ s a -> s{_csDescription = a});
-
 -- | The ID of the region that contains the snapshot to be copied.
 csSourceRegion :: Lens' CopySnapshot Text
 csSourceRegion = lens _csSourceRegion (\ s a -> s{_csSourceRegion = a});
@@ -202,18 +202,19 @@
           = mconcat
               ["Action" =: ("CopySnapshot" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "Encrypted" =: _csEncrypted,
                "PresignedUrl" =: _csPresignedURL,
+               "Encrypted" =: _csEncrypted,
                "DestinationRegion" =: _csDestinationRegion,
-               "KmsKeyId" =: _csKMSKeyId, "DryRun" =: _csDryRun,
+               "KmsKeyId" =: _csKMSKeyId,
                "Description" =: _csDescription,
+               "DryRun" =: _csDryRun,
                "SourceRegion" =: _csSourceRegion,
                "SourceSnapshotId" =: _csSourceSnapshotId]
 
 -- | /See:/ 'copySnapshotResponse' smart constructor.
 data CopySnapshotResponse = CopySnapshotResponse'
-    { _csrsSnapshotId :: !(Maybe Text)
-    , _csrsStatus     :: !Int
+    { _csrsSnapshotId     :: !(Maybe Text)
+    , _csrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CopySnapshotResponse' with the minimum fields required to make a request.
@@ -222,14 +223,14 @@
 --
 -- * 'csrsSnapshotId'
 --
--- * 'csrsStatus'
+-- * 'csrsResponseStatus'
 copySnapshotResponse
-    :: Int -- ^ 'csrsStatus'
+    :: Int -- ^ 'csrsResponseStatus'
     -> CopySnapshotResponse
-copySnapshotResponse pStatus_ =
+copySnapshotResponse pResponseStatus_ =
     CopySnapshotResponse'
     { _csrsSnapshotId = Nothing
-    , _csrsStatus = pStatus_
+    , _csrsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the new snapshot.
@@ -237,5 +238,5 @@
 csrsSnapshotId = lens _csrsSnapshotId (\ s a -> s{_csrsSnapshotId = a});
 
 -- | The response status code.
-csrsStatus :: Lens' CopySnapshotResponse Int
-csrsStatus = lens _csrsStatus (\ s a -> s{_csrsStatus = a});
+csrsResponseStatus :: Lens' CopySnapshotResponse Int
+csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
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
@@ -63,7 +63,7 @@
     , CreateCustomerGatewayResponse
     -- * Response Lenses
     , ccgrsCustomerGateway
-    , ccgrsStatus
+    , ccgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -154,7 +154,7 @@
 -- | /See:/ 'createCustomerGatewayResponse' smart constructor.
 data CreateCustomerGatewayResponse = CreateCustomerGatewayResponse'
     { _ccgrsCustomerGateway :: !(Maybe CustomerGateway)
-    , _ccgrsStatus          :: !Int
+    , _ccgrsResponseStatus  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateCustomerGatewayResponse' with the minimum fields required to make a request.
@@ -163,14 +163,14 @@
 --
 -- * 'ccgrsCustomerGateway'
 --
--- * 'ccgrsStatus'
+-- * 'ccgrsResponseStatus'
 createCustomerGatewayResponse
-    :: Int -- ^ 'ccgrsStatus'
+    :: Int -- ^ 'ccgrsResponseStatus'
     -> CreateCustomerGatewayResponse
-createCustomerGatewayResponse pStatus_ =
+createCustomerGatewayResponse pResponseStatus_ =
     CreateCustomerGatewayResponse'
     { _ccgrsCustomerGateway = Nothing
-    , _ccgrsStatus = pStatus_
+    , _ccgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the customer gateway.
@@ -178,5 +178,5 @@
 ccgrsCustomerGateway = lens _ccgrsCustomerGateway (\ s a -> s{_ccgrsCustomerGateway = a});
 
 -- | The response status code.
-ccgrsStatus :: Lens' CreateCustomerGatewayResponse Int
-ccgrsStatus = lens _ccgrsStatus (\ s a -> s{_ccgrsStatus = a});
+ccgrsResponseStatus :: Lens' CreateCustomerGatewayResponse Int
+ccgrsResponseStatus = lens _ccgrsResponseStatus (\ s a -> s{_ccgrsResponseStatus = a});
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
@@ -73,7 +73,7 @@
     , CreateDHCPOptionsResponse
     -- * Response Lenses
     , cdorsDHCPOptions
-    , cdorsStatus
+    , cdorsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -140,8 +140,8 @@
 
 -- | /See:/ 'createDHCPOptionsResponse' smart constructor.
 data CreateDHCPOptionsResponse = CreateDHCPOptionsResponse'
-    { _cdorsDHCPOptions :: !(Maybe DHCPOptions)
-    , _cdorsStatus      :: !Int
+    { _cdorsDHCPOptions    :: !(Maybe DHCPOptions)
+    , _cdorsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateDHCPOptionsResponse' with the minimum fields required to make a request.
@@ -150,14 +150,14 @@
 --
 -- * 'cdorsDHCPOptions'
 --
--- * 'cdorsStatus'
+-- * 'cdorsResponseStatus'
 createDHCPOptionsResponse
-    :: Int -- ^ 'cdorsStatus'
+    :: Int -- ^ 'cdorsResponseStatus'
     -> CreateDHCPOptionsResponse
-createDHCPOptionsResponse pStatus_ =
+createDHCPOptionsResponse pResponseStatus_ =
     CreateDHCPOptionsResponse'
     { _cdorsDHCPOptions = Nothing
-    , _cdorsStatus = pStatus_
+    , _cdorsResponseStatus = pResponseStatus_
     }
 
 -- | A set of DHCP options.
@@ -165,5 +165,5 @@
 cdorsDHCPOptions = lens _cdorsDHCPOptions (\ s a -> s{_cdorsDHCPOptions = a});
 
 -- | The response status code.
-cdorsStatus :: Lens' CreateDHCPOptionsResponse Int
-cdorsStatus = lens _cdorsStatus (\ s a -> s{_cdorsStatus = a});
+cdorsResponseStatus :: Lens' CreateDHCPOptionsResponse Int
+cdorsResponseStatus = lens _cdorsResponseStatus (\ s a -> s{_cdorsResponseStatus = a});
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
@@ -50,7 +50,7 @@
     , cflrsUnsuccessful
     , cflrsClientToken
     , cflrsFlowLogIds
-    , cflrsStatus
+    , cflrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -163,10 +163,10 @@
 
 -- | /See:/ 'createFlowLogsResponse' smart constructor.
 data CreateFlowLogsResponse = CreateFlowLogsResponse'
-    { _cflrsUnsuccessful :: !(Maybe [UnsuccessfulItem])
-    , _cflrsClientToken  :: !(Maybe Text)
-    , _cflrsFlowLogIds   :: !(Maybe [Text])
-    , _cflrsStatus       :: !Int
+    { _cflrsUnsuccessful   :: !(Maybe [UnsuccessfulItem])
+    , _cflrsClientToken    :: !(Maybe Text)
+    , _cflrsFlowLogIds     :: !(Maybe [Text])
+    , _cflrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateFlowLogsResponse' with the minimum fields required to make a request.
@@ -179,16 +179,16 @@
 --
 -- * 'cflrsFlowLogIds'
 --
--- * 'cflrsStatus'
+-- * 'cflrsResponseStatus'
 createFlowLogsResponse
-    :: Int -- ^ 'cflrsStatus'
+    :: Int -- ^ 'cflrsResponseStatus'
     -> CreateFlowLogsResponse
-createFlowLogsResponse pStatus_ =
+createFlowLogsResponse pResponseStatus_ =
     CreateFlowLogsResponse'
     { _cflrsUnsuccessful = Nothing
     , _cflrsClientToken = Nothing
     , _cflrsFlowLogIds = Nothing
-    , _cflrsStatus = pStatus_
+    , _cflrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the flow logs that could not be created successfully.
@@ -205,5 +205,5 @@
 cflrsFlowLogIds = lens _cflrsFlowLogIds (\ s a -> s{_cflrsFlowLogIds = a}) . _Default . _Coerce;
 
 -- | The response status code.
-cflrsStatus :: Lens' CreateFlowLogsResponse Int
-cflrsStatus = lens _cflrsStatus (\ s a -> s{_cflrsStatus = a});
+cflrsResponseStatus :: Lens' CreateFlowLogsResponse Int
+cflrsResponseStatus = lens _cflrsResponseStatus (\ s a -> s{_cflrsResponseStatus = a});
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
@@ -39,9 +39,9 @@
     , CreateImage
     -- * Request Lenses
     , ciiNoReboot
+    , ciiDescription
     , ciiBlockDeviceMappings
     , ciiDryRun
-    , ciiDescription
     , ciiInstanceId
     , ciiName
 
@@ -50,7 +50,7 @@
     , CreateImageResponse
     -- * Response Lenses
     , cirsImageId
-    , cirsStatus
+    , cirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -62,9 +62,9 @@
 -- | /See:/ 'createImage' smart constructor.
 data CreateImage = CreateImage'
     { _ciiNoReboot            :: !(Maybe Bool)
+    , _ciiDescription         :: !(Maybe Text)
     , _ciiBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
     , _ciiDryRun              :: !(Maybe Bool)
-    , _ciiDescription         :: !(Maybe Text)
     , _ciiInstanceId          :: !Text
     , _ciiName                :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -75,12 +75,12 @@
 --
 -- * 'ciiNoReboot'
 --
+-- * 'ciiDescription'
+--
 -- * 'ciiBlockDeviceMappings'
 --
 -- * 'ciiDryRun'
 --
--- * 'ciiDescription'
---
 -- * 'ciiInstanceId'
 --
 -- * 'ciiName'
@@ -91,9 +91,9 @@
 createImage pInstanceId_ pName_ =
     CreateImage'
     { _ciiNoReboot = Nothing
+    , _ciiDescription = Nothing
     , _ciiBlockDeviceMappings = Nothing
     , _ciiDryRun = Nothing
-    , _ciiDescription = Nothing
     , _ciiInstanceId = pInstanceId_
     , _ciiName = pName_
     }
@@ -107,6 +107,10 @@
 ciiNoReboot :: Lens' CreateImage (Maybe Bool)
 ciiNoReboot = lens _ciiNoReboot (\ s a -> s{_ciiNoReboot = a});
 
+-- | A description for the new image.
+ciiDescription :: Lens' CreateImage (Maybe Text)
+ciiDescription = lens _ciiDescription (\ s a -> s{_ciiDescription = a});
+
 -- | Information about one or more block device mappings.
 ciiBlockDeviceMappings :: Lens' CreateImage [BlockDeviceMapping]
 ciiBlockDeviceMappings = lens _ciiBlockDeviceMappings (\ s a -> s{_ciiBlockDeviceMappings = a}) . _Default . _Coerce;
@@ -118,10 +122,6 @@
 ciiDryRun :: Lens' CreateImage (Maybe Bool)
 ciiDryRun = lens _ciiDryRun (\ s a -> s{_ciiDryRun = a});
 
--- | A description for the new image.
-ciiDescription :: Lens' CreateImage (Maybe Text)
-ciiDescription = lens _ciiDescription (\ s a -> s{_ciiDescription = a});
-
 -- | The ID of the instance.
 ciiInstanceId :: Lens' CreateImage Text
 ciiInstanceId = lens _ciiInstanceId (\ s a -> s{_ciiInstanceId = a});
@@ -155,17 +155,17 @@
               ["Action" =: ("CreateImage" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                "NoReboot" =: _ciiNoReboot,
+               "Description" =: _ciiDescription,
                toQuery
                  (toQueryList "BlockDeviceMapping" <$>
                     _ciiBlockDeviceMappings),
                "DryRun" =: _ciiDryRun,
-               "Description" =: _ciiDescription,
                "InstanceId" =: _ciiInstanceId, "Name" =: _ciiName]
 
 -- | /See:/ 'createImageResponse' smart constructor.
 data CreateImageResponse = CreateImageResponse'
-    { _cirsImageId :: !(Maybe Text)
-    , _cirsStatus  :: !Int
+    { _cirsImageId        :: !(Maybe Text)
+    , _cirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateImageResponse' with the minimum fields required to make a request.
@@ -174,14 +174,14 @@
 --
 -- * 'cirsImageId'
 --
--- * 'cirsStatus'
+-- * 'cirsResponseStatus'
 createImageResponse
-    :: Int -- ^ 'cirsStatus'
+    :: Int -- ^ 'cirsResponseStatus'
     -> CreateImageResponse
-createImageResponse pStatus_ =
+createImageResponse pResponseStatus_ =
     CreateImageResponse'
     { _cirsImageId = Nothing
-    , _cirsStatus = pStatus_
+    , _cirsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the new AMI.
@@ -189,5 +189,5 @@
 cirsImageId = lens _cirsImageId (\ s a -> s{_cirsImageId = a});
 
 -- | The response status code.
-cirsStatus :: Lens' CreateImageResponse Int
-cirsStatus = lens _cirsStatus (\ s a -> s{_cirsStatus = a});
+cirsResponseStatus :: Lens' CreateImageResponse Int
+cirsResponseStatus = lens _cirsResponseStatus (\ s a -> s{_cirsResponseStatus = a});
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
@@ -42,7 +42,7 @@
     , CreateInstanceExportTaskResponse
     -- * Response Lenses
     , cietrsExportTask
-    , cietrsStatus
+    , cietrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -127,8 +127,8 @@
 
 -- | /See:/ 'createInstanceExportTaskResponse' smart constructor.
 data CreateInstanceExportTaskResponse = CreateInstanceExportTaskResponse'
-    { _cietrsExportTask :: !(Maybe ExportTask)
-    , _cietrsStatus     :: !Int
+    { _cietrsExportTask     :: !(Maybe ExportTask)
+    , _cietrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateInstanceExportTaskResponse' with the minimum fields required to make a request.
@@ -137,14 +137,14 @@
 --
 -- * 'cietrsExportTask'
 --
--- * 'cietrsStatus'
+-- * 'cietrsResponseStatus'
 createInstanceExportTaskResponse
-    :: Int -- ^ 'cietrsStatus'
+    :: Int -- ^ 'cietrsResponseStatus'
     -> CreateInstanceExportTaskResponse
-createInstanceExportTaskResponse pStatus_ =
+createInstanceExportTaskResponse pResponseStatus_ =
     CreateInstanceExportTaskResponse'
     { _cietrsExportTask = Nothing
-    , _cietrsStatus = pStatus_
+    , _cietrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the instance export task.
@@ -152,5 +152,5 @@
 cietrsExportTask = lens _cietrsExportTask (\ s a -> s{_cietrsExportTask = a});
 
 -- | The response status code.
-cietrsStatus :: Lens' CreateInstanceExportTaskResponse Int
-cietrsStatus = lens _cietrsStatus (\ s a -> s{_cietrsStatus = a});
+cietrsResponseStatus :: Lens' CreateInstanceExportTaskResponse Int
+cietrsResponseStatus = lens _cietrsResponseStatus (\ s a -> s{_cietrsResponseStatus = a});
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
@@ -38,7 +38,7 @@
     , CreateInternetGatewayResponse
     -- * Response Lenses
     , cigrsInternetGateway
-    , cigrsStatus
+    , cigrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -97,7 +97,7 @@
 -- | /See:/ 'createInternetGatewayResponse' smart constructor.
 data CreateInternetGatewayResponse = CreateInternetGatewayResponse'
     { _cigrsInternetGateway :: !(Maybe InternetGateway)
-    , _cigrsStatus          :: !Int
+    , _cigrsResponseStatus  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateInternetGatewayResponse' with the minimum fields required to make a request.
@@ -106,14 +106,14 @@
 --
 -- * 'cigrsInternetGateway'
 --
--- * 'cigrsStatus'
+-- * 'cigrsResponseStatus'
 createInternetGatewayResponse
-    :: Int -- ^ 'cigrsStatus'
+    :: Int -- ^ 'cigrsResponseStatus'
     -> CreateInternetGatewayResponse
-createInternetGatewayResponse pStatus_ =
+createInternetGatewayResponse pResponseStatus_ =
     CreateInternetGatewayResponse'
     { _cigrsInternetGateway = Nothing
-    , _cigrsStatus = pStatus_
+    , _cigrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the Internet gateway.
@@ -121,5 +121,5 @@
 cigrsInternetGateway = lens _cigrsInternetGateway (\ s a -> s{_cigrsInternetGateway = a});
 
 -- | The response status code.
-cigrsStatus :: Lens' CreateInternetGatewayResponse Int
-cigrsStatus = lens _cigrsStatus (\ s a -> s{_cigrsStatus = a});
+cigrsResponseStatus :: Lens' CreateInternetGatewayResponse Int
+cigrsResponseStatus = lens _cigrsResponseStatus (\ s a -> s{_cigrsResponseStatus = a});
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
@@ -48,7 +48,7 @@
     , createKeyPairResponse
     , CreateKeyPairResponse
     -- * Response Lenses
-    , ckprsStatus
+    , ckprsResponseStatus
     , ckprsKeyName
     , ckprsKeyFingerprint
     , ckprsKeyMaterial
@@ -123,7 +123,7 @@
 --
 -- /See:/ 'createKeyPairResponse' smart constructor.
 data CreateKeyPairResponse = CreateKeyPairResponse'
-    { _ckprsStatus         :: !Int
+    { _ckprsResponseStatus :: !Int
     , _ckprsKeyName        :: !Text
     , _ckprsKeyFingerprint :: !Text
     , _ckprsKeyMaterial    :: !Text
@@ -133,7 +133,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ckprsStatus'
+-- * 'ckprsResponseStatus'
 --
 -- * 'ckprsKeyName'
 --
@@ -141,22 +141,22 @@
 --
 -- * 'ckprsKeyMaterial'
 createKeyPairResponse
-    :: Int -- ^ 'ckprsStatus'
+    :: Int -- ^ 'ckprsResponseStatus'
     -> Text -- ^ 'ckprsKeyName'
     -> Text -- ^ 'ckprsKeyFingerprint'
     -> Text -- ^ 'ckprsKeyMaterial'
     -> CreateKeyPairResponse
-createKeyPairResponse pStatus_ pKeyName_ pKeyFingerprint_ pKeyMaterial_ =
+createKeyPairResponse pResponseStatus_ pKeyName_ pKeyFingerprint_ pKeyMaterial_ =
     CreateKeyPairResponse'
-    { _ckprsStatus = pStatus_
+    { _ckprsResponseStatus = pResponseStatus_
     , _ckprsKeyName = pKeyName_
     , _ckprsKeyFingerprint = pKeyFingerprint_
     , _ckprsKeyMaterial = pKeyMaterial_
     }
 
 -- | The response status code.
-ckprsStatus :: Lens' CreateKeyPairResponse Int
-ckprsStatus = lens _ckprsStatus (\ s a -> s{_ckprsStatus = a});
+ckprsResponseStatus :: Lens' CreateKeyPairResponse Int
+ckprsResponseStatus = lens _ckprsResponseStatus (\ s a -> s{_ckprsResponseStatus = a});
 
 -- | The name of the key pair.
 ckprsKeyName :: Lens' CreateKeyPairResponse Text
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
@@ -41,7 +41,7 @@
     , CreateNetworkACLResponse
     -- * Response Lenses
     , cnarsNetworkACL
-    , cnarsStatus
+    , cnarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -107,8 +107,8 @@
 
 -- | /See:/ 'createNetworkACLResponse' smart constructor.
 data CreateNetworkACLResponse = CreateNetworkACLResponse'
-    { _cnarsNetworkACL :: !(Maybe NetworkACL)
-    , _cnarsStatus     :: !Int
+    { _cnarsNetworkACL     :: !(Maybe NetworkACL)
+    , _cnarsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateNetworkACLResponse' with the minimum fields required to make a request.
@@ -117,14 +117,14 @@
 --
 -- * 'cnarsNetworkACL'
 --
--- * 'cnarsStatus'
+-- * 'cnarsResponseStatus'
 createNetworkACLResponse
-    :: Int -- ^ 'cnarsStatus'
+    :: Int -- ^ 'cnarsResponseStatus'
     -> CreateNetworkACLResponse
-createNetworkACLResponse pStatus_ =
+createNetworkACLResponse pResponseStatus_ =
     CreateNetworkACLResponse'
     { _cnarsNetworkACL = Nothing
-    , _cnarsStatus = pStatus_
+    , _cnarsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the network ACL.
@@ -132,5 +132,5 @@
 cnarsNetworkACL = lens _cnarsNetworkACL (\ s a -> s{_cnarsNetworkACL = a});
 
 -- | The response status code.
-cnarsStatus :: Lens' CreateNetworkACLResponse Int
-cnarsStatus = lens _cnarsStatus (\ s a -> s{_cnarsStatus = a});
+cnarsResponseStatus :: Lens' CreateNetworkACLResponse Int
+cnarsResponseStatus = lens _cnarsResponseStatus (\ s a -> s{_cnarsResponseStatus = a});
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
@@ -31,12 +31,12 @@
       createNetworkInterface
     , CreateNetworkInterface
     -- * Request Lenses
-    , cniPrivateIPAddresses
     , cniGroups
+    , cniPrivateIPAddresses
     , cniPrivateIPAddress
     , cniSecondaryPrivateIPAddressCount
-    , cniDryRun
     , cniDescription
+    , cniDryRun
     , cniSubnetId
 
     -- * Destructuring the Response
@@ -44,7 +44,7 @@
     , CreateNetworkInterfaceResponse
     -- * Response Lenses
     , cnirsNetworkInterface
-    , cnirsStatus
+    , cnirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -55,12 +55,12 @@
 
 -- | /See:/ 'createNetworkInterface' smart constructor.
 data CreateNetworkInterface = CreateNetworkInterface'
-    { _cniPrivateIPAddresses             :: !(Maybe [PrivateIPAddressSpecification])
-    , _cniGroups                         :: !(Maybe [Text])
+    { _cniGroups                         :: !(Maybe [Text])
+    , _cniPrivateIPAddresses             :: !(Maybe [PrivateIPAddressSpecification])
     , _cniPrivateIPAddress               :: !(Maybe Text)
     , _cniSecondaryPrivateIPAddressCount :: !(Maybe Int)
-    , _cniDryRun                         :: !(Maybe Bool)
     , _cniDescription                    :: !(Maybe Text)
+    , _cniDryRun                         :: !(Maybe Bool)
     , _cniSubnetId                       :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -68,41 +68,41 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cniPrivateIPAddresses'
---
 -- * 'cniGroups'
 --
+-- * 'cniPrivateIPAddresses'
+--
 -- * 'cniPrivateIPAddress'
 --
 -- * 'cniSecondaryPrivateIPAddressCount'
 --
--- * 'cniDryRun'
---
 -- * 'cniDescription'
 --
+-- * 'cniDryRun'
+--
 -- * 'cniSubnetId'
 createNetworkInterface
     :: Text -- ^ 'cniSubnetId'
     -> CreateNetworkInterface
 createNetworkInterface pSubnetId_ =
     CreateNetworkInterface'
-    { _cniPrivateIPAddresses = Nothing
-    , _cniGroups = Nothing
+    { _cniGroups = Nothing
+    , _cniPrivateIPAddresses = Nothing
     , _cniPrivateIPAddress = Nothing
     , _cniSecondaryPrivateIPAddressCount = Nothing
-    , _cniDryRun = Nothing
     , _cniDescription = Nothing
+    , _cniDryRun = Nothing
     , _cniSubnetId = pSubnetId_
     }
 
--- | One or more private IP addresses.
-cniPrivateIPAddresses :: Lens' CreateNetworkInterface [PrivateIPAddressSpecification]
-cniPrivateIPAddresses = lens _cniPrivateIPAddresses (\ s a -> s{_cniPrivateIPAddresses = a}) . _Default . _Coerce;
-
 -- | The IDs of one or more security groups.
 cniGroups :: Lens' CreateNetworkInterface [Text]
 cniGroups = lens _cniGroups (\ s a -> s{_cniGroups = a}) . _Default . _Coerce;
 
+-- | One or more private IP addresses.
+cniPrivateIPAddresses :: Lens' CreateNetworkInterface [PrivateIPAddressSpecification]
+cniPrivateIPAddresses = lens _cniPrivateIPAddresses (\ s a -> s{_cniPrivateIPAddresses = a}) . _Default . _Coerce;
+
 -- | The primary private IP address of the network interface. If you don\'t
 -- specify an IP address, Amazon EC2 selects one for you from the subnet
 -- range. If you specify an IP address, you cannot indicate any IP
@@ -124,6 +124,10 @@
 cniSecondaryPrivateIPAddressCount :: Lens' CreateNetworkInterface (Maybe Int)
 cniSecondaryPrivateIPAddressCount = lens _cniSecondaryPrivateIPAddressCount (\ s a -> s{_cniSecondaryPrivateIPAddressCount = a});
 
+-- | A description for the network interface.
+cniDescription :: Lens' CreateNetworkInterface (Maybe Text)
+cniDescription = lens _cniDescription (\ s a -> s{_cniDescription = 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'.
@@ -131,10 +135,6 @@
 cniDryRun :: Lens' CreateNetworkInterface (Maybe Bool)
 cniDryRun = lens _cniDryRun (\ s a -> s{_cniDryRun = a});
 
--- | A description for the network interface.
-cniDescription :: Lens' CreateNetworkInterface (Maybe Text)
-cniDescription = lens _cniDescription (\ s a -> s{_cniDescription = a});
-
 -- | The ID of the subnet to associate with the network interface.
 cniSubnetId :: Lens' CreateNetworkInterface Text
 cniSubnetId = lens _cniSubnetId (\ s a -> s{_cniSubnetId = a});
@@ -162,21 +162,20 @@
                  ("CreateNetworkInterface" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                toQuery
+                 (toQueryList "SecurityGroupId" <$> _cniGroups),
+               toQuery
                  (toQueryList "PrivateIpAddresses" <$>
                     _cniPrivateIPAddresses),
-               toQuery
-                 (toQueryList "SecurityGroupId" <$> _cniGroups),
                "PrivateIpAddress" =: _cniPrivateIPAddress,
                "SecondaryPrivateIpAddressCount" =:
                  _cniSecondaryPrivateIPAddressCount,
-               "DryRun" =: _cniDryRun,
                "Description" =: _cniDescription,
-               "SubnetId" =: _cniSubnetId]
+               "DryRun" =: _cniDryRun, "SubnetId" =: _cniSubnetId]
 
 -- | /See:/ 'createNetworkInterfaceResponse' smart constructor.
 data CreateNetworkInterfaceResponse = CreateNetworkInterfaceResponse'
     { _cnirsNetworkInterface :: !(Maybe NetworkInterface)
-    , _cnirsStatus           :: !Int
+    , _cnirsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateNetworkInterfaceResponse' with the minimum fields required to make a request.
@@ -185,14 +184,14 @@
 --
 -- * 'cnirsNetworkInterface'
 --
--- * 'cnirsStatus'
+-- * 'cnirsResponseStatus'
 createNetworkInterfaceResponse
-    :: Int -- ^ 'cnirsStatus'
+    :: Int -- ^ 'cnirsResponseStatus'
     -> CreateNetworkInterfaceResponse
-createNetworkInterfaceResponse pStatus_ =
+createNetworkInterfaceResponse pResponseStatus_ =
     CreateNetworkInterfaceResponse'
     { _cnirsNetworkInterface = Nothing
-    , _cnirsStatus = pStatus_
+    , _cnirsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the network interface.
@@ -200,5 +199,5 @@
 cnirsNetworkInterface = lens _cnirsNetworkInterface (\ s a -> s{_cnirsNetworkInterface = a});
 
 -- | The response status code.
-cnirsStatus :: Lens' CreateNetworkInterfaceResponse Int
-cnirsStatus = lens _cnirsStatus (\ s a -> s{_cnirsStatus = a});
+cnirsResponseStatus :: Lens' CreateNetworkInterfaceResponse Int
+cnirsResponseStatus = lens _cnirsResponseStatus (\ s a -> s{_cnirsResponseStatus = a});
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
@@ -58,7 +58,7 @@
     , CreateReservedInstancesListingResponse
     -- * Response Lenses
     , crersReservedInstancesListings
-    , crersStatus
+    , crersResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -156,7 +156,7 @@
 -- | /See:/ 'createReservedInstancesListingResponse' smart constructor.
 data CreateReservedInstancesListingResponse = CreateReservedInstancesListingResponse'
     { _crersReservedInstancesListings :: !(Maybe [ReservedInstancesListing])
-    , _crersStatus                    :: !Int
+    , _crersResponseStatus            :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateReservedInstancesListingResponse' with the minimum fields required to make a request.
@@ -165,14 +165,14 @@
 --
 -- * 'crersReservedInstancesListings'
 --
--- * 'crersStatus'
+-- * 'crersResponseStatus'
 createReservedInstancesListingResponse
-    :: Int -- ^ 'crersStatus'
+    :: Int -- ^ 'crersResponseStatus'
     -> CreateReservedInstancesListingResponse
-createReservedInstancesListingResponse pStatus_ =
+createReservedInstancesListingResponse pResponseStatus_ =
     CreateReservedInstancesListingResponse'
     { _crersReservedInstancesListings = Nothing
-    , _crersStatus = pStatus_
+    , _crersResponseStatus = pResponseStatus_
     }
 
 -- | Information about the Reserved Instances listing.
@@ -180,5 +180,5 @@
 crersReservedInstancesListings = lens _crersReservedInstancesListings (\ s a -> s{_crersReservedInstancesListings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-crersStatus :: Lens' CreateReservedInstancesListingResponse Int
-crersStatus = lens _crersStatus (\ s a -> s{_crersStatus = a});
+crersResponseStatus :: Lens' CreateReservedInstancesListingResponse Int
+crersResponseStatus = lens _crersResponseStatus (\ s a -> s{_crersResponseStatus = a});
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
@@ -48,8 +48,8 @@
       createRoute
     , CreateRoute
     -- * Request Lenses
-    , crInstanceId
     , crVPCPeeringConnectionId
+    , crInstanceId
     , crNetworkInterfaceId
     , crGatewayId
     , crDryRun
@@ -61,7 +61,7 @@
     , CreateRouteResponse
     -- * Response Lenses
     , crrsReturn
-    , crrsStatus
+    , crrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -72,8 +72,8 @@
 
 -- | /See:/ 'createRoute' smart constructor.
 data CreateRoute = CreateRoute'
-    { _crInstanceId             :: !(Maybe Text)
-    , _crVPCPeeringConnectionId :: !(Maybe Text)
+    { _crVPCPeeringConnectionId :: !(Maybe Text)
+    , _crInstanceId             :: !(Maybe Text)
     , _crNetworkInterfaceId     :: !(Maybe Text)
     , _crGatewayId              :: !(Maybe Text)
     , _crDryRun                 :: !(Maybe Bool)
@@ -85,10 +85,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crInstanceId'
---
 -- * 'crVPCPeeringConnectionId'
 --
+-- * 'crInstanceId'
+--
 -- * 'crNetworkInterfaceId'
 --
 -- * 'crGatewayId'
@@ -104,8 +104,8 @@
     -> CreateRoute
 createRoute pRouteTableId_ pDestinationCIdRBlock_ =
     CreateRoute'
-    { _crInstanceId = Nothing
-    , _crVPCPeeringConnectionId = Nothing
+    { _crVPCPeeringConnectionId = Nothing
+    , _crInstanceId = Nothing
     , _crNetworkInterfaceId = Nothing
     , _crGatewayId = Nothing
     , _crDryRun = Nothing
@@ -113,15 +113,15 @@
     , _crDestinationCIdRBlock = pDestinationCIdRBlock_
     }
 
+-- | The ID of a VPC peering connection.
+crVPCPeeringConnectionId :: Lens' CreateRoute (Maybe Text)
+crVPCPeeringConnectionId = lens _crVPCPeeringConnectionId (\ s a -> s{_crVPCPeeringConnectionId = a});
+
 -- | The ID of a NAT instance in your VPC. The operation fails if you specify
 -- an instance ID unless exactly one network interface is attached.
 crInstanceId :: Lens' CreateRoute (Maybe Text)
 crInstanceId = lens _crInstanceId (\ s a -> s{_crInstanceId = a});
 
--- | The ID of a VPC peering connection.
-crVPCPeeringConnectionId :: Lens' CreateRoute (Maybe Text)
-crVPCPeeringConnectionId = lens _crVPCPeeringConnectionId (\ s a -> s{_crVPCPeeringConnectionId = a});
-
 -- | The ID of a network interface.
 crNetworkInterfaceId :: Lens' CreateRoute (Maybe Text)
 crNetworkInterfaceId = lens _crNetworkInterfaceId (\ s a -> s{_crNetworkInterfaceId = a});
@@ -167,9 +167,9 @@
           = mconcat
               ["Action" =: ("CreateRoute" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "InstanceId" =: _crInstanceId,
                "VpcPeeringConnectionId" =:
                  _crVPCPeeringConnectionId,
+               "InstanceId" =: _crInstanceId,
                "NetworkInterfaceId" =: _crNetworkInterfaceId,
                "GatewayId" =: _crGatewayId, "DryRun" =: _crDryRun,
                "RouteTableId" =: _crRouteTableId,
@@ -177,8 +177,8 @@
 
 -- | /See:/ 'createRouteResponse' smart constructor.
 data CreateRouteResponse = CreateRouteResponse'
-    { _crrsReturn :: !(Maybe Bool)
-    , _crrsStatus :: !Int
+    { _crrsReturn         :: !(Maybe Bool)
+    , _crrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateRouteResponse' with the minimum fields required to make a request.
@@ -187,14 +187,14 @@
 --
 -- * 'crrsReturn'
 --
--- * 'crrsStatus'
+-- * 'crrsResponseStatus'
 createRouteResponse
-    :: Int -- ^ 'crrsStatus'
+    :: Int -- ^ 'crrsResponseStatus'
     -> CreateRouteResponse
-createRouteResponse pStatus_ =
+createRouteResponse pResponseStatus_ =
     CreateRouteResponse'
     { _crrsReturn = Nothing
-    , _crrsStatus = pStatus_
+    , _crrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -202,5 +202,5 @@
 crrsReturn = lens _crrsReturn (\ s a -> s{_crrsReturn = a});
 
 -- | The response status code.
-crrsStatus :: Lens' CreateRouteResponse Int
-crrsStatus = lens _crrsStatus (\ s a -> s{_crrsStatus = a});
+crrsResponseStatus :: Lens' CreateRouteResponse Int
+crrsResponseStatus = lens _crrsResponseStatus (\ s a -> s{_crrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , CreateRouteTableResponse
     -- * Response Lenses
     , crtrsRouteTable
-    , crtrsStatus
+    , crtrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -106,8 +106,8 @@
 
 -- | /See:/ 'createRouteTableResponse' smart constructor.
 data CreateRouteTableResponse = CreateRouteTableResponse'
-    { _crtrsRouteTable :: !(Maybe RouteTable)
-    , _crtrsStatus     :: !Int
+    { _crtrsRouteTable     :: !(Maybe RouteTable)
+    , _crtrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateRouteTableResponse' with the minimum fields required to make a request.
@@ -116,14 +116,14 @@
 --
 -- * 'crtrsRouteTable'
 --
--- * 'crtrsStatus'
+-- * 'crtrsResponseStatus'
 createRouteTableResponse
-    :: Int -- ^ 'crtrsStatus'
+    :: Int -- ^ 'crtrsResponseStatus'
     -> CreateRouteTableResponse
-createRouteTableResponse pStatus_ =
+createRouteTableResponse pResponseStatus_ =
     CreateRouteTableResponse'
     { _crtrsRouteTable = Nothing
-    , _crtrsStatus = pStatus_
+    , _crtrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the route table.
@@ -131,5 +131,5 @@
 crtrsRouteTable = lens _crtrsRouteTable (\ s a -> s{_crtrsRouteTable = a});
 
 -- | The response status code.
-crtrsStatus :: Lens' CreateRouteTableResponse Int
-crtrsStatus = lens _crtrsStatus (\ s a -> s{_crtrsStatus = a});
+crtrsResponseStatus :: Lens' CreateRouteTableResponse Int
+crtrsResponseStatus = lens _crtrsResponseStatus (\ s a -> s{_crtrsResponseStatus = a});
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
@@ -64,7 +64,7 @@
     , createSecurityGroupResponse
     , CreateSecurityGroupResponse
     -- * Response Lenses
-    , csgrsStatus
+    , csgrsResponseStatus
     , csgrsGroupId
     ) where
 
@@ -165,30 +165,30 @@
 
 -- | /See:/ 'createSecurityGroupResponse' smart constructor.
 data CreateSecurityGroupResponse = CreateSecurityGroupResponse'
-    { _csgrsStatus  :: !Int
-    , _csgrsGroupId :: !Text
+    { _csgrsResponseStatus :: !Int
+    , _csgrsGroupId        :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateSecurityGroupResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csgrsStatus'
+-- * 'csgrsResponseStatus'
 --
 -- * 'csgrsGroupId'
 createSecurityGroupResponse
-    :: Int -- ^ 'csgrsStatus'
+    :: Int -- ^ 'csgrsResponseStatus'
     -> Text -- ^ 'csgrsGroupId'
     -> CreateSecurityGroupResponse
-createSecurityGroupResponse pStatus_ pGroupId_ =
+createSecurityGroupResponse pResponseStatus_ pGroupId_ =
     CreateSecurityGroupResponse'
-    { _csgrsStatus = pStatus_
+    { _csgrsResponseStatus = pResponseStatus_
     , _csgrsGroupId = pGroupId_
     }
 
 -- | The response status code.
-csgrsStatus :: Lens' CreateSecurityGroupResponse Int
-csgrsStatus = lens _csgrsStatus (\ s a -> s{_csgrsStatus = a});
+csgrsResponseStatus :: Lens' CreateSecurityGroupResponse Int
+csgrsResponseStatus = lens _csgrsResponseStatus (\ s a -> s{_csgrsResponseStatus = a});
 
 -- | The ID of the security group.
 csgrsGroupId :: Lens' CreateSecurityGroupResponse Text
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
@@ -57,8 +57,8 @@
       createSnapshot
     , CreateSnapshot
     -- * Request Lenses
-    , ccDryRun
     , ccDescription
+    , ccDryRun
     , ccVolumeId
 
     -- * Destructuring the Response
@@ -87,8 +87,8 @@
 
 -- | /See:/ 'createSnapshot' smart constructor.
 data CreateSnapshot = CreateSnapshot'
-    { _ccDryRun      :: !(Maybe Bool)
-    , _ccDescription :: !(Maybe Text)
+    { _ccDescription :: !(Maybe Text)
+    , _ccDryRun      :: !(Maybe Bool)
     , _ccVolumeId    :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -96,21 +96,25 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccDryRun'
---
 -- * 'ccDescription'
 --
+-- * 'ccDryRun'
+--
 -- * 'ccVolumeId'
 createSnapshot
     :: Text -- ^ 'ccVolumeId'
     -> CreateSnapshot
 createSnapshot pVolumeId_ =
     CreateSnapshot'
-    { _ccDryRun = Nothing
-    , _ccDescription = Nothing
+    { _ccDescription = Nothing
+    , _ccDryRun = Nothing
     , _ccVolumeId = pVolumeId_
     }
 
+-- | A description for the snapshot.
+ccDescription :: Lens' CreateSnapshot (Maybe Text)
+ccDescription = lens _ccDescription (\ s a -> s{_ccDescription = 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'.
@@ -118,10 +122,6 @@
 ccDryRun :: Lens' CreateSnapshot (Maybe Bool)
 ccDryRun = lens _ccDryRun (\ s a -> s{_ccDryRun = a});
 
--- | A description for the snapshot.
-ccDescription :: Lens' CreateSnapshot (Maybe Text)
-ccDescription = lens _ccDescription (\ s a -> s{_ccDescription = a});
-
 -- | The ID of the EBS volume.
 ccVolumeId :: Lens' CreateSnapshot Text
 ccVolumeId = lens _ccVolumeId (\ s a -> s{_ccVolumeId = a});
@@ -142,6 +142,5 @@
           = mconcat
               ["Action" =: ("CreateSnapshot" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "DryRun" =: _ccDryRun,
                "Description" =: _ccDescription,
-               "VolumeId" =: _ccVolumeId]
+               "DryRun" =: _ccDryRun, "VolumeId" =: _ccVolumeId]
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
@@ -40,7 +40,7 @@
     , CreateSpotDatafeedSubscriptionResponse
     -- * Response Lenses
     , csdsrsSpotDatafeedSubscription
-    , csdsrsStatus
+    , csdsrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -125,7 +125,7 @@
 -- /See:/ 'createSpotDatafeedSubscriptionResponse' smart constructor.
 data CreateSpotDatafeedSubscriptionResponse = CreateSpotDatafeedSubscriptionResponse'
     { _csdsrsSpotDatafeedSubscription :: !(Maybe SpotDatafeedSubscription)
-    , _csdsrsStatus                   :: !Int
+    , _csdsrsResponseStatus           :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateSpotDatafeedSubscriptionResponse' with the minimum fields required to make a request.
@@ -134,14 +134,14 @@
 --
 -- * 'csdsrsSpotDatafeedSubscription'
 --
--- * 'csdsrsStatus'
+-- * 'csdsrsResponseStatus'
 createSpotDatafeedSubscriptionResponse
-    :: Int -- ^ 'csdsrsStatus'
+    :: Int -- ^ 'csdsrsResponseStatus'
     -> CreateSpotDatafeedSubscriptionResponse
-createSpotDatafeedSubscriptionResponse pStatus_ =
+createSpotDatafeedSubscriptionResponse pResponseStatus_ =
     CreateSpotDatafeedSubscriptionResponse'
     { _csdsrsSpotDatafeedSubscription = Nothing
-    , _csdsrsStatus = pStatus_
+    , _csdsrsResponseStatus = pResponseStatus_
     }
 
 -- | The Spot Instance data feed subscription.
@@ -149,5 +149,5 @@
 csdsrsSpotDatafeedSubscription = lens _csdsrsSpotDatafeedSubscription (\ s a -> s{_csdsrsSpotDatafeedSubscription = a});
 
 -- | The response status code.
-csdsrsStatus :: Lens' CreateSpotDatafeedSubscriptionResponse Int
-csdsrsStatus = lens _csdsrsStatus (\ s a -> s{_csdsrsStatus = a});
+csdsrsResponseStatus :: Lens' CreateSpotDatafeedSubscriptionResponse Int
+csdsrsResponseStatus = lens _csdsrsResponseStatus (\ s a -> s{_csdsrsResponseStatus = a});
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
@@ -63,7 +63,7 @@
     , CreateSubnetResponse
     -- * Response Lenses
     , crsSubnet
-    , crsStatus
+    , crsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -151,8 +151,8 @@
 
 -- | /See:/ 'createSubnetResponse' smart constructor.
 data CreateSubnetResponse = CreateSubnetResponse'
-    { _crsSubnet :: !(Maybe Subnet)
-    , _crsStatus :: !Int
+    { _crsSubnet         :: !(Maybe Subnet)
+    , _crsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateSubnetResponse' with the minimum fields required to make a request.
@@ -161,14 +161,14 @@
 --
 -- * 'crsSubnet'
 --
--- * 'crsStatus'
+-- * 'crsResponseStatus'
 createSubnetResponse
-    :: Int -- ^ 'crsStatus'
+    :: Int -- ^ 'crsResponseStatus'
     -> CreateSubnetResponse
-createSubnetResponse pStatus_ =
+createSubnetResponse pResponseStatus_ =
     CreateSubnetResponse'
     { _crsSubnet = Nothing
-    , _crsStatus = pStatus_
+    , _crsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the subnet.
@@ -176,5 +176,5 @@
 crsSubnet = lens _crsSubnet (\ s a -> s{_crsSubnet = a});
 
 -- | The response status code.
-crsStatus :: Lens' CreateSubnetResponse Int
-crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});
+crsResponseStatus :: Lens' CreateSubnetResponse Int
+crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
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
@@ -48,7 +48,7 @@
     , CreateVPCResponse
     -- * Response Lenses
     , cvrsVPC
-    , cvrsStatus
+    , cvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -131,8 +131,8 @@
 
 -- | /See:/ 'createVPCResponse' smart constructor.
 data CreateVPCResponse = CreateVPCResponse'
-    { _cvrsVPC    :: !(Maybe VPC)
-    , _cvrsStatus :: !Int
+    { _cvrsVPC            :: !(Maybe VPC)
+    , _cvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateVPCResponse' with the minimum fields required to make a request.
@@ -141,14 +141,14 @@
 --
 -- * 'cvrsVPC'
 --
--- * 'cvrsStatus'
+-- * 'cvrsResponseStatus'
 createVPCResponse
-    :: Int -- ^ 'cvrsStatus'
+    :: Int -- ^ 'cvrsResponseStatus'
     -> CreateVPCResponse
-createVPCResponse pStatus_ =
+createVPCResponse pResponseStatus_ =
     CreateVPCResponse'
     { _cvrsVPC = Nothing
-    , _cvrsStatus = pStatus_
+    , _cvrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the VPC.
@@ -156,5 +156,5 @@
 cvrsVPC = lens _cvrsVPC (\ s a -> s{_cvrsVPC = a});
 
 -- | The response status code.
-cvrsStatus :: Lens' CreateVPCResponse Int
-cvrsStatus = lens _cvrsStatus (\ s a -> s{_cvrsStatus = a});
+cvrsResponseStatus :: Lens' CreateVPCResponse Int
+cvrsResponseStatus = lens _cvrsResponseStatus (\ s a -> s{_cvrsResponseStatus = a});
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
@@ -46,7 +46,7 @@
     -- * Response Lenses
     , cversClientToken
     , cversVPCEndpoint
-    , cversStatus
+    , cversResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -159,9 +159,9 @@
 
 -- | /See:/ 'createVPCEndpointResponse' smart constructor.
 data CreateVPCEndpointResponse = CreateVPCEndpointResponse'
-    { _cversClientToken :: !(Maybe Text)
-    , _cversVPCEndpoint :: !(Maybe VPCEndpoint)
-    , _cversStatus      :: !Int
+    { _cversClientToken    :: !(Maybe Text)
+    , _cversVPCEndpoint    :: !(Maybe VPCEndpoint)
+    , _cversResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateVPCEndpointResponse' with the minimum fields required to make a request.
@@ -172,15 +172,15 @@
 --
 -- * 'cversVPCEndpoint'
 --
--- * 'cversStatus'
+-- * 'cversResponseStatus'
 createVPCEndpointResponse
-    :: Int -- ^ 'cversStatus'
+    :: Int -- ^ 'cversResponseStatus'
     -> CreateVPCEndpointResponse
-createVPCEndpointResponse pStatus_ =
+createVPCEndpointResponse pResponseStatus_ =
     CreateVPCEndpointResponse'
     { _cversClientToken = Nothing
     , _cversVPCEndpoint = Nothing
-    , _cversStatus = pStatus_
+    , _cversResponseStatus = pResponseStatus_
     }
 
 -- | Unique, case-sensitive identifier you provide to ensure the idempotency
@@ -193,5 +193,5 @@
 cversVPCEndpoint = lens _cversVPCEndpoint (\ s a -> s{_cversVPCEndpoint = a});
 
 -- | The response status code.
-cversStatus :: Lens' CreateVPCEndpointResponse Int
-cversStatus = lens _cversStatus (\ s a -> s{_cversStatus = a});
+cversResponseStatus :: Lens' CreateVPCEndpointResponse Int
+cversResponseStatus = lens _cversResponseStatus (\ s a -> s{_cversResponseStatus = a});
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
@@ -48,7 +48,7 @@
     , CreateVPCPeeringConnectionResponse
     -- * Response Lenses
     , cvpcrsVPCPeeringConnection
-    , cvpcrsStatus
+    , cvpcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -138,7 +138,7 @@
 -- | /See:/ 'createVPCPeeringConnectionResponse' smart constructor.
 data CreateVPCPeeringConnectionResponse = CreateVPCPeeringConnectionResponse'
     { _cvpcrsVPCPeeringConnection :: !(Maybe VPCPeeringConnection)
-    , _cvpcrsStatus               :: !Int
+    , _cvpcrsResponseStatus       :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateVPCPeeringConnectionResponse' with the minimum fields required to make a request.
@@ -147,14 +147,14 @@
 --
 -- * 'cvpcrsVPCPeeringConnection'
 --
--- * 'cvpcrsStatus'
+-- * 'cvpcrsResponseStatus'
 createVPCPeeringConnectionResponse
-    :: Int -- ^ 'cvpcrsStatus'
+    :: Int -- ^ 'cvpcrsResponseStatus'
     -> CreateVPCPeeringConnectionResponse
-createVPCPeeringConnectionResponse pStatus_ =
+createVPCPeeringConnectionResponse pResponseStatus_ =
     CreateVPCPeeringConnectionResponse'
     { _cvpcrsVPCPeeringConnection = Nothing
-    , _cvpcrsStatus = pStatus_
+    , _cvpcrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the VPC peering connection.
@@ -162,5 +162,5 @@
 cvpcrsVPCPeeringConnection = lens _cvpcrsVPCPeeringConnection (\ s a -> s{_cvpcrsVPCPeeringConnection = a});
 
 -- | The response status code.
-cvpcrsStatus :: Lens' CreateVPCPeeringConnectionResponse Int
-cvpcrsStatus = lens _cvpcrsStatus (\ s a -> s{_cvpcrsStatus = a});
+cvpcrsResponseStatus :: Lens' CreateVPCPeeringConnectionResponse Int
+cvpcrsResponseStatus = lens _cvpcrsResponseStatus (\ s a -> s{_cvpcrsResponseStatus = a});
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
@@ -54,7 +54,7 @@
     , CreateVPNConnectionResponse
     -- * Response Lenses
     , cvcrsVPNConnection
-    , cvcrsStatus
+    , cvcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -154,8 +154,8 @@
 
 -- | /See:/ 'createVPNConnectionResponse' smart constructor.
 data CreateVPNConnectionResponse = CreateVPNConnectionResponse'
-    { _cvcrsVPNConnection :: !(Maybe VPNConnection)
-    , _cvcrsStatus        :: !Int
+    { _cvcrsVPNConnection  :: !(Maybe VPNConnection)
+    , _cvcrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateVPNConnectionResponse' with the minimum fields required to make a request.
@@ -164,14 +164,14 @@
 --
 -- * 'cvcrsVPNConnection'
 --
--- * 'cvcrsStatus'
+-- * 'cvcrsResponseStatus'
 createVPNConnectionResponse
-    :: Int -- ^ 'cvcrsStatus'
+    :: Int -- ^ 'cvcrsResponseStatus'
     -> CreateVPNConnectionResponse
-createVPNConnectionResponse pStatus_ =
+createVPNConnectionResponse pResponseStatus_ =
     CreateVPNConnectionResponse'
     { _cvcrsVPNConnection = Nothing
-    , _cvcrsStatus = pStatus_
+    , _cvcrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the VPN connection.
@@ -179,5 +179,5 @@
 cvcrsVPNConnection = lens _cvcrsVPNConnection (\ s a -> s{_cvcrsVPNConnection = a});
 
 -- | The response status code.
-cvcrsStatus :: Lens' CreateVPNConnectionResponse Int
-cvcrsStatus = lens _cvcrsStatus (\ s a -> s{_cvcrsStatus = a});
+cvcrsResponseStatus :: Lens' CreateVPNConnectionResponse Int
+cvcrsResponseStatus = lens _cvcrsResponseStatus (\ s a -> s{_cvcrsResponseStatus = a});
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
@@ -42,7 +42,7 @@
     , CreateVPNGatewayResponse
     -- * Response Lenses
     , cvgrsVPNGateway
-    , cvgrsStatus
+    , cvgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -117,8 +117,8 @@
 
 -- | /See:/ 'createVPNGatewayResponse' smart constructor.
 data CreateVPNGatewayResponse = CreateVPNGatewayResponse'
-    { _cvgrsVPNGateway :: !(Maybe VPNGateway)
-    , _cvgrsStatus     :: !Int
+    { _cvgrsVPNGateway     :: !(Maybe VPNGateway)
+    , _cvgrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateVPNGatewayResponse' with the minimum fields required to make a request.
@@ -127,14 +127,14 @@
 --
 -- * 'cvgrsVPNGateway'
 --
--- * 'cvgrsStatus'
+-- * 'cvgrsResponseStatus'
 createVPNGatewayResponse
-    :: Int -- ^ 'cvgrsStatus'
+    :: Int -- ^ 'cvgrsResponseStatus'
     -> CreateVPNGatewayResponse
-createVPNGatewayResponse pStatus_ =
+createVPNGatewayResponse pResponseStatus_ =
     CreateVPNGatewayResponse'
     { _cvgrsVPNGateway = Nothing
-    , _cvgrsStatus = pStatus_
+    , _cvgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the virtual private gateway.
@@ -142,5 +142,5 @@
 cvgrsVPNGateway = lens _cvgrsVPNGateway (\ s a -> s{_cvgrsVPNGateway = a});
 
 -- | The response status code.
-cvgrsStatus :: Lens' CreateVPNGatewayResponse Int
-cvgrsStatus = lens _cvgrsStatus (\ s a -> s{_cvgrsStatus = a});
+cvgrsResponseStatus :: Lens' CreateVPNGatewayResponse Int
+cvgrsResponseStatus = lens _cvgrsResponseStatus (\ s a -> s{_cvgrsResponseStatus = a});
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
@@ -34,7 +34,7 @@
     , DeleteFlowLogsResponse
     -- * Response Lenses
     , dflrsUnsuccessful
-    , dflrsStatus
+    , dflrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -90,8 +90,8 @@
 
 -- | /See:/ 'deleteFlowLogsResponse' smart constructor.
 data DeleteFlowLogsResponse = DeleteFlowLogsResponse'
-    { _dflrsUnsuccessful :: !(Maybe [UnsuccessfulItem])
-    , _dflrsStatus       :: !Int
+    { _dflrsUnsuccessful   :: !(Maybe [UnsuccessfulItem])
+    , _dflrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteFlowLogsResponse' with the minimum fields required to make a request.
@@ -100,14 +100,14 @@
 --
 -- * 'dflrsUnsuccessful'
 --
--- * 'dflrsStatus'
+-- * 'dflrsResponseStatus'
 deleteFlowLogsResponse
-    :: Int -- ^ 'dflrsStatus'
+    :: Int -- ^ 'dflrsResponseStatus'
     -> DeleteFlowLogsResponse
-deleteFlowLogsResponse pStatus_ =
+deleteFlowLogsResponse pResponseStatus_ =
     DeleteFlowLogsResponse'
     { _dflrsUnsuccessful = Nothing
-    , _dflrsStatus = pStatus_
+    , _dflrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the flow logs that could not be deleted successfully.
@@ -115,5 +115,5 @@
 dflrsUnsuccessful = lens _dflrsUnsuccessful (\ s a -> s{_dflrsUnsuccessful = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dflrsStatus :: Lens' DeleteFlowLogsResponse Int
-dflrsStatus = lens _dflrsStatus (\ s a -> s{_dflrsStatus = a});
+dflrsResponseStatus :: Lens' DeleteFlowLogsResponse Int
+dflrsResponseStatus = lens _dflrsResponseStatus (\ s a -> s{_dflrsResponseStatus = a});
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
@@ -37,7 +37,7 @@
     , DeleteVPCEndpointsResponse
     -- * Response Lenses
     , dversUnsuccessful
-    , dversStatus
+    , dversResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -106,8 +106,8 @@
 
 -- | /See:/ 'deleteVPCEndpointsResponse' smart constructor.
 data DeleteVPCEndpointsResponse = DeleteVPCEndpointsResponse'
-    { _dversUnsuccessful :: !(Maybe [UnsuccessfulItem])
-    , _dversStatus       :: !Int
+    { _dversUnsuccessful   :: !(Maybe [UnsuccessfulItem])
+    , _dversResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteVPCEndpointsResponse' with the minimum fields required to make a request.
@@ -116,14 +116,14 @@
 --
 -- * 'dversUnsuccessful'
 --
--- * 'dversStatus'
+-- * 'dversResponseStatus'
 deleteVPCEndpointsResponse
-    :: Int -- ^ 'dversStatus'
+    :: Int -- ^ 'dversResponseStatus'
     -> DeleteVPCEndpointsResponse
-deleteVPCEndpointsResponse pStatus_ =
+deleteVPCEndpointsResponse pResponseStatus_ =
     DeleteVPCEndpointsResponse'
     { _dversUnsuccessful = Nothing
-    , _dversStatus = pStatus_
+    , _dversResponseStatus = pResponseStatus_
     }
 
 -- | Information about the endpoints that were not successfully deleted.
@@ -131,5 +131,5 @@
 dversUnsuccessful = lens _dversUnsuccessful (\ s a -> s{_dversUnsuccessful = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dversStatus :: Lens' DeleteVPCEndpointsResponse Int
-dversStatus = lens _dversStatus (\ s a -> s{_dversStatus = a});
+dversResponseStatus :: Lens' DeleteVPCEndpointsResponse Int
+dversResponseStatus = lens _dversResponseStatus (\ s a -> s{_dversResponseStatus = a});
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
@@ -38,7 +38,7 @@
     , DeleteVPCPeeringConnectionResponse
     -- * Response Lenses
     , dvpcrsReturn
-    , dvpcrsStatus
+    , dvpcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -108,8 +108,8 @@
 
 -- | /See:/ 'deleteVPCPeeringConnectionResponse' smart constructor.
 data DeleteVPCPeeringConnectionResponse = DeleteVPCPeeringConnectionResponse'
-    { _dvpcrsReturn :: !(Maybe Bool)
-    , _dvpcrsStatus :: !Int
+    { _dvpcrsReturn         :: !(Maybe Bool)
+    , _dvpcrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteVPCPeeringConnectionResponse' with the minimum fields required to make a request.
@@ -118,14 +118,14 @@
 --
 -- * 'dvpcrsReturn'
 --
--- * 'dvpcrsStatus'
+-- * 'dvpcrsResponseStatus'
 deleteVPCPeeringConnectionResponse
-    :: Int -- ^ 'dvpcrsStatus'
+    :: Int -- ^ 'dvpcrsResponseStatus'
     -> DeleteVPCPeeringConnectionResponse
-deleteVPCPeeringConnectionResponse pStatus_ =
+deleteVPCPeeringConnectionResponse pResponseStatus_ =
     DeleteVPCPeeringConnectionResponse'
     { _dvpcrsReturn = Nothing
-    , _dvpcrsStatus = pStatus_
+    , _dvpcrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -133,5 +133,5 @@
 dvpcrsReturn = lens _dvpcrsReturn (\ s a -> s{_dvpcrsReturn = a});
 
 -- | The response status code.
-dvpcrsStatus :: Lens' DeleteVPCPeeringConnectionResponse Int
-dvpcrsStatus = lens _dvpcrsStatus (\ s a -> s{_dvpcrsStatus = a});
+dvpcrsResponseStatus :: Lens' DeleteVPCPeeringConnectionResponse Int
+dvpcrsResponseStatus = lens _dvpcrsResponseStatus (\ s a -> s{_dvpcrsResponseStatus = a});
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
@@ -55,7 +55,7 @@
     , DescribeAccountAttributesResponse
     -- * Response Lenses
     , daarsAccountAttributes
-    , daarsStatus
+    , daarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -127,7 +127,7 @@
 -- | /See:/ 'describeAccountAttributesResponse' smart constructor.
 data DescribeAccountAttributesResponse = DescribeAccountAttributesResponse'
     { _daarsAccountAttributes :: !(Maybe [AccountAttribute])
-    , _daarsStatus            :: !Int
+    , _daarsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeAccountAttributesResponse' with the minimum fields required to make a request.
@@ -136,14 +136,14 @@
 --
 -- * 'daarsAccountAttributes'
 --
--- * 'daarsStatus'
+-- * 'daarsResponseStatus'
 describeAccountAttributesResponse
-    :: Int -- ^ 'daarsStatus'
+    :: Int -- ^ 'daarsResponseStatus'
     -> DescribeAccountAttributesResponse
-describeAccountAttributesResponse pStatus_ =
+describeAccountAttributesResponse pResponseStatus_ =
     DescribeAccountAttributesResponse'
     { _daarsAccountAttributes = Nothing
-    , _daarsStatus = pStatus_
+    , _daarsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more account attributes.
@@ -151,5 +151,5 @@
 daarsAccountAttributes = lens _daarsAccountAttributes (\ s a -> s{_daarsAccountAttributes = a}) . _Default . _Coerce;
 
 -- | The response status code.
-daarsStatus :: Lens' DescribeAccountAttributesResponse Int
-daarsStatus = lens _daarsStatus (\ s a -> s{_daarsStatus = a});
+daarsResponseStatus :: Lens' DescribeAccountAttributesResponse Int
+daarsResponseStatus = lens _daarsResponseStatus (\ s a -> s{_daarsResponseStatus = a});
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
@@ -32,17 +32,17 @@
       describeAddresses
     , DescribeAddresses
     -- * Request Lenses
-    , daPublicIPs
     , daFilters
-    , daDryRun
+    , daPublicIPs
     , daAllocationIds
+    , daDryRun
 
     -- * Destructuring the Response
     , describeAddressesResponse
     , DescribeAddressesResponse
     -- * Response Lenses
     , darsAddresses
-    , darsStatus
+    , darsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -53,39 +53,33 @@
 
 -- | /See:/ 'describeAddresses' smart constructor.
 data DescribeAddresses = DescribeAddresses'
-    { _daPublicIPs     :: !(Maybe [Text])
-    , _daFilters       :: !(Maybe [Filter])
-    , _daDryRun        :: !(Maybe Bool)
+    { _daFilters       :: !(Maybe [Filter])
+    , _daPublicIPs     :: !(Maybe [Text])
     , _daAllocationIds :: !(Maybe [Text])
+    , _daDryRun        :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeAddresses' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'daPublicIPs'
---
 -- * 'daFilters'
 --
--- * 'daDryRun'
+-- * 'daPublicIPs'
 --
 -- * 'daAllocationIds'
+--
+-- * 'daDryRun'
 describeAddresses
     :: DescribeAddresses
 describeAddresses =
     DescribeAddresses'
-    { _daPublicIPs = Nothing
-    , _daFilters = Nothing
-    , _daDryRun = Nothing
+    { _daFilters = Nothing
+    , _daPublicIPs = Nothing
     , _daAllocationIds = Nothing
+    , _daDryRun = Nothing
     }
 
--- | [EC2-Classic] One or more Elastic IP addresses.
---
--- Default: Describes all your Elastic IP addresses.
-daPublicIPs :: Lens' DescribeAddresses [Text]
-daPublicIPs = lens _daPublicIPs (\ s a -> s{_daPublicIPs = a}) . _Default . _Coerce;
-
 -- | One or more filters. Filter names and values are case-sensitive.
 --
 -- -   'allocation-id' - [EC2-VPC] The allocation ID for the address.
@@ -111,12 +105,11 @@
 daFilters :: Lens' DescribeAddresses [Filter]
 daFilters = lens _daFilters (\ s a -> s{_daFilters = a}) . _Default . _Coerce;
 
--- | 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'.
--- Otherwise, it is 'UnauthorizedOperation'.
-daDryRun :: Lens' DescribeAddresses (Maybe Bool)
-daDryRun = lens _daDryRun (\ s a -> s{_daDryRun = a});
+-- | [EC2-Classic] One or more Elastic IP addresses.
+--
+-- Default: Describes all your Elastic IP addresses.
+daPublicIPs :: Lens' DescribeAddresses [Text]
+daPublicIPs = lens _daPublicIPs (\ s a -> s{_daPublicIPs = a}) . _Default . _Coerce;
 
 -- | [EC2-VPC] One or more allocation IDs.
 --
@@ -124,6 +117,13 @@
 daAllocationIds :: Lens' DescribeAddresses [Text]
 daAllocationIds = lens _daAllocationIds (\ s a -> s{_daAllocationIds = a}) . _Default . _Coerce;
 
+-- | 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'.
+-- Otherwise, it is 'UnauthorizedOperation'.
+daDryRun :: Lens' DescribeAddresses (Maybe Bool)
+daDryRun = lens _daDryRun (\ s a -> s{_daDryRun = a});
+
 instance AWSRequest DescribeAddresses where
         type Rs DescribeAddresses = DescribeAddressesResponse
         request = postQuery eC2
@@ -146,16 +146,16 @@
           = mconcat
               ["Action" =: ("DescribeAddresses" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               toQuery (toQueryList "PublicIp" <$> _daPublicIPs),
                toQuery (toQueryList "Filter" <$> _daFilters),
-               "DryRun" =: _daDryRun,
+               toQuery (toQueryList "PublicIp" <$> _daPublicIPs),
                toQuery
-                 (toQueryList "AllocationId" <$> _daAllocationIds)]
+                 (toQueryList "AllocationId" <$> _daAllocationIds),
+               "DryRun" =: _daDryRun]
 
 -- | /See:/ 'describeAddressesResponse' smart constructor.
 data DescribeAddressesResponse = DescribeAddressesResponse'
-    { _darsAddresses :: !(Maybe [Address])
-    , _darsStatus    :: !Int
+    { _darsAddresses      :: !(Maybe [Address])
+    , _darsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeAddressesResponse' with the minimum fields required to make a request.
@@ -164,14 +164,14 @@
 --
 -- * 'darsAddresses'
 --
--- * 'darsStatus'
+-- * 'darsResponseStatus'
 describeAddressesResponse
-    :: Int -- ^ 'darsStatus'
+    :: Int -- ^ 'darsResponseStatus'
     -> DescribeAddressesResponse
-describeAddressesResponse pStatus_ =
+describeAddressesResponse pResponseStatus_ =
     DescribeAddressesResponse'
     { _darsAddresses = Nothing
-    , _darsStatus = pStatus_
+    , _darsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more Elastic IP addresses.
@@ -179,5 +179,5 @@
 darsAddresses = lens _darsAddresses (\ s a -> s{_darsAddresses = a}) . _Default . _Coerce;
 
 -- | The response status code.
-darsStatus :: Lens' DescribeAddressesResponse Int
-darsStatus = lens _darsStatus (\ s a -> s{_darsStatus = a});
+darsResponseStatus :: Lens' DescribeAddressesResponse Int
+darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a});
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
@@ -44,7 +44,7 @@
     , DescribeAvailabilityZonesResponse
     -- * Response Lenses
     , dazrsAvailabilityZones
-    , dazrsStatus
+    , dazrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -136,7 +136,7 @@
 -- | /See:/ 'describeAvailabilityZonesResponse' smart constructor.
 data DescribeAvailabilityZonesResponse = DescribeAvailabilityZonesResponse'
     { _dazrsAvailabilityZones :: !(Maybe [AvailabilityZone])
-    , _dazrsStatus            :: !Int
+    , _dazrsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeAvailabilityZonesResponse' with the minimum fields required to make a request.
@@ -145,14 +145,14 @@
 --
 -- * 'dazrsAvailabilityZones'
 --
--- * 'dazrsStatus'
+-- * 'dazrsResponseStatus'
 describeAvailabilityZonesResponse
-    :: Int -- ^ 'dazrsStatus'
+    :: Int -- ^ 'dazrsResponseStatus'
     -> DescribeAvailabilityZonesResponse
-describeAvailabilityZonesResponse pStatus_ =
+describeAvailabilityZonesResponse pResponseStatus_ =
     DescribeAvailabilityZonesResponse'
     { _dazrsAvailabilityZones = Nothing
-    , _dazrsStatus = pStatus_
+    , _dazrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more Availability Zones.
@@ -160,5 +160,5 @@
 dazrsAvailabilityZones = lens _dazrsAvailabilityZones (\ s a -> s{_dazrsAvailabilityZones = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dazrsStatus :: Lens' DescribeAvailabilityZonesResponse Int
-dazrsStatus = lens _dazrsStatus (\ s a -> s{_dazrsStatus = a});
+dazrsResponseStatus :: Lens' DescribeAvailabilityZonesResponse Int
+dazrsResponseStatus = lens _dazrsResponseStatus (\ s a -> s{_dazrsResponseStatus = a});
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
@@ -41,7 +41,7 @@
     , DescribeBundleTasksResponse
     -- * Response Lenses
     , dbtrsBundleTasks
-    , dbtrsStatus
+    , dbtrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -145,8 +145,8 @@
 
 -- | /See:/ 'describeBundleTasksResponse' smart constructor.
 data DescribeBundleTasksResponse = DescribeBundleTasksResponse'
-    { _dbtrsBundleTasks :: !(Maybe [BundleTask])
-    , _dbtrsStatus      :: !Int
+    { _dbtrsBundleTasks    :: !(Maybe [BundleTask])
+    , _dbtrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeBundleTasksResponse' with the minimum fields required to make a request.
@@ -155,14 +155,14 @@
 --
 -- * 'dbtrsBundleTasks'
 --
--- * 'dbtrsStatus'
+-- * 'dbtrsResponseStatus'
 describeBundleTasksResponse
-    :: Int -- ^ 'dbtrsStatus'
+    :: Int -- ^ 'dbtrsResponseStatus'
     -> DescribeBundleTasksResponse
-describeBundleTasksResponse pStatus_ =
+describeBundleTasksResponse pResponseStatus_ =
     DescribeBundleTasksResponse'
     { _dbtrsBundleTasks = Nothing
-    , _dbtrsStatus = pStatus_
+    , _dbtrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more bundle tasks.
@@ -170,5 +170,5 @@
 dbtrsBundleTasks = lens _dbtrsBundleTasks (\ s a -> s{_dbtrsBundleTasks = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dbtrsStatus :: Lens' DescribeBundleTasksResponse Int
-dbtrsStatus = lens _dbtrsStatus (\ s a -> s{_dbtrsStatus = a});
+dbtrsResponseStatus :: Lens' DescribeBundleTasksResponse Int
+dbtrsResponseStatus = lens _dbtrsResponseStatus (\ s a -> s{_dbtrsResponseStatus = a});
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
@@ -42,7 +42,7 @@
     -- * Response Lenses
     , dclirsNextToken
     , dclirsInstances
-    , dclirsStatus
+    , dclirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -173,9 +173,9 @@
 
 -- | /See:/ 'describeClassicLinkInstancesResponse' smart constructor.
 data DescribeClassicLinkInstancesResponse = DescribeClassicLinkInstancesResponse'
-    { _dclirsNextToken :: !(Maybe Text)
-    , _dclirsInstances :: !(Maybe [ClassicLinkInstance])
-    , _dclirsStatus    :: !Int
+    { _dclirsNextToken      :: !(Maybe Text)
+    , _dclirsInstances      :: !(Maybe [ClassicLinkInstance])
+    , _dclirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeClassicLinkInstancesResponse' with the minimum fields required to make a request.
@@ -186,15 +186,15 @@
 --
 -- * 'dclirsInstances'
 --
--- * 'dclirsStatus'
+-- * 'dclirsResponseStatus'
 describeClassicLinkInstancesResponse
-    :: Int -- ^ 'dclirsStatus'
+    :: Int -- ^ 'dclirsResponseStatus'
     -> DescribeClassicLinkInstancesResponse
-describeClassicLinkInstancesResponse pStatus_ =
+describeClassicLinkInstancesResponse pResponseStatus_ =
     DescribeClassicLinkInstancesResponse'
     { _dclirsNextToken = Nothing
     , _dclirsInstances = Nothing
-    , _dclirsStatus = pStatus_
+    , _dclirsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -207,5 +207,5 @@
 dclirsInstances = lens _dclirsInstances (\ s a -> s{_dclirsInstances = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dclirsStatus :: Lens' DescribeClassicLinkInstancesResponse Int
-dclirsStatus = lens _dclirsStatus (\ s a -> s{_dclirsStatus = a});
+dclirsResponseStatus :: Lens' DescribeClassicLinkInstancesResponse Int
+dclirsResponseStatus = lens _dclirsResponseStatus (\ s a -> s{_dclirsResponseStatus = a});
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
@@ -30,8 +30,8 @@
       describeConversionTasks
     , DescribeConversionTasks
     -- * Request Lenses
-    , dctConversionTaskIds
     , dctFilters
+    , dctConversionTaskIds
     , dctDryRun
 
     -- * Destructuring the Response
@@ -39,7 +39,7 @@
     , DescribeConversionTasksResponse
     -- * Response Lenses
     , dctrsConversionTasks
-    , dctrsStatus
+    , dctrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -50,8 +50,8 @@
 
 -- | /See:/ 'describeConversionTasks' smart constructor.
 data DescribeConversionTasks = DescribeConversionTasks'
-    { _dctConversionTaskIds :: !(Maybe [Text])
-    , _dctFilters           :: !(Maybe [Filter])
+    { _dctFilters           :: !(Maybe [Filter])
+    , _dctConversionTaskIds :: !(Maybe [Text])
     , _dctDryRun            :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -59,28 +59,28 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dctConversionTaskIds'
---
 -- * 'dctFilters'
 --
+-- * 'dctConversionTaskIds'
+--
 -- * 'dctDryRun'
 describeConversionTasks
     :: DescribeConversionTasks
 describeConversionTasks =
     DescribeConversionTasks'
-    { _dctConversionTaskIds = Nothing
-    , _dctFilters = Nothing
+    { _dctFilters = Nothing
+    , _dctConversionTaskIds = Nothing
     , _dctDryRun = Nothing
     }
 
--- | One or more conversion task IDs.
-dctConversionTaskIds :: Lens' DescribeConversionTasks [Text]
-dctConversionTaskIds = lens _dctConversionTaskIds (\ s a -> s{_dctConversionTaskIds = a}) . _Default . _Coerce;
-
 -- | One or more filters.
 dctFilters :: Lens' DescribeConversionTasks [Filter]
 dctFilters = lens _dctFilters (\ s a -> s{_dctFilters = a}) . _Default . _Coerce;
 
+-- | One or more conversion task IDs.
+dctConversionTaskIds :: Lens' DescribeConversionTasks [Text]
+dctConversionTaskIds = lens _dctConversionTaskIds (\ s a -> s{_dctConversionTaskIds = a}) . _Default . _Coerce;
+
 -- | 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'.
@@ -112,16 +112,16 @@
               ["Action" =:
                  ("DescribeConversionTasks" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
+               toQuery (toQueryList "Filter" <$> _dctFilters),
                toQuery
                  (toQueryList "ConversionTaskId" <$>
                     _dctConversionTaskIds),
-               toQuery (toQueryList "Filter" <$> _dctFilters),
                "DryRun" =: _dctDryRun]
 
 -- | /See:/ 'describeConversionTasksResponse' smart constructor.
 data DescribeConversionTasksResponse = DescribeConversionTasksResponse'
     { _dctrsConversionTasks :: !(Maybe [ConversionTask])
-    , _dctrsStatus          :: !Int
+    , _dctrsResponseStatus  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeConversionTasksResponse' with the minimum fields required to make a request.
@@ -130,14 +130,14 @@
 --
 -- * 'dctrsConversionTasks'
 --
--- * 'dctrsStatus'
+-- * 'dctrsResponseStatus'
 describeConversionTasksResponse
-    :: Int -- ^ 'dctrsStatus'
+    :: Int -- ^ 'dctrsResponseStatus'
     -> DescribeConversionTasksResponse
-describeConversionTasksResponse pStatus_ =
+describeConversionTasksResponse pResponseStatus_ =
     DescribeConversionTasksResponse'
     { _dctrsConversionTasks = Nothing
-    , _dctrsStatus = pStatus_
+    , _dctrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the conversion tasks.
@@ -145,5 +145,5 @@
 dctrsConversionTasks = lens _dctrsConversionTasks (\ s a -> s{_dctrsConversionTasks = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dctrsStatus :: Lens' DescribeConversionTasksResponse Int
-dctrsStatus = lens _dctrsStatus (\ s a -> s{_dctrsStatus = a});
+dctrsResponseStatus :: Lens' DescribeConversionTasksResponse Int
+dctrsResponseStatus = lens _dctrsResponseStatus (\ s a -> s{_dctrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , DescribeCustomerGatewaysResponse
     -- * Response Lenses
     , dcgrsCustomerGateways
-    , dcgrsStatus
+    , dcgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -153,7 +153,7 @@
 -- | /See:/ 'describeCustomerGatewaysResponse' smart constructor.
 data DescribeCustomerGatewaysResponse = DescribeCustomerGatewaysResponse'
     { _dcgrsCustomerGateways :: !(Maybe [CustomerGateway])
-    , _dcgrsStatus           :: !Int
+    , _dcgrsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeCustomerGatewaysResponse' with the minimum fields required to make a request.
@@ -162,14 +162,14 @@
 --
 -- * 'dcgrsCustomerGateways'
 --
--- * 'dcgrsStatus'
+-- * 'dcgrsResponseStatus'
 describeCustomerGatewaysResponse
-    :: Int -- ^ 'dcgrsStatus'
+    :: Int -- ^ 'dcgrsResponseStatus'
     -> DescribeCustomerGatewaysResponse
-describeCustomerGatewaysResponse pStatus_ =
+describeCustomerGatewaysResponse pResponseStatus_ =
     DescribeCustomerGatewaysResponse'
     { _dcgrsCustomerGateways = Nothing
-    , _dcgrsStatus = pStatus_
+    , _dcgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more customer gateways.
@@ -177,5 +177,5 @@
 dcgrsCustomerGateways = lens _dcgrsCustomerGateways (\ s a -> s{_dcgrsCustomerGateways = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dcgrsStatus :: Lens' DescribeCustomerGatewaysResponse Int
-dcgrsStatus = lens _dcgrsStatus (\ s a -> s{_dcgrsStatus = a});
+dcgrsResponseStatus :: Lens' DescribeCustomerGatewaysResponse Int
+dcgrsResponseStatus = lens _dcgrsResponseStatus (\ s a -> s{_dcgrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , DescribeDHCPOptionsResponse
     -- * Response Lenses
     , ddorsDHCPOptions
-    , ddorsStatus
+    , ddorsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -142,8 +142,8 @@
 
 -- | /See:/ 'describeDHCPOptionsResponse' smart constructor.
 data DescribeDHCPOptionsResponse = DescribeDHCPOptionsResponse'
-    { _ddorsDHCPOptions :: !(Maybe [DHCPOptions])
-    , _ddorsStatus      :: !Int
+    { _ddorsDHCPOptions    :: !(Maybe [DHCPOptions])
+    , _ddorsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeDHCPOptionsResponse' with the minimum fields required to make a request.
@@ -152,14 +152,14 @@
 --
 -- * 'ddorsDHCPOptions'
 --
--- * 'ddorsStatus'
+-- * 'ddorsResponseStatus'
 describeDHCPOptionsResponse
-    :: Int -- ^ 'ddorsStatus'
+    :: Int -- ^ 'ddorsResponseStatus'
     -> DescribeDHCPOptionsResponse
-describeDHCPOptionsResponse pStatus_ =
+describeDHCPOptionsResponse pResponseStatus_ =
     DescribeDHCPOptionsResponse'
     { _ddorsDHCPOptions = Nothing
-    , _ddorsStatus = pStatus_
+    , _ddorsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more DHCP options sets.
@@ -167,5 +167,5 @@
 ddorsDHCPOptions = lens _ddorsDHCPOptions (\ s a -> s{_ddorsDHCPOptions = a}) . _Default . _Coerce;
 
 -- | The response status code.
-ddorsStatus :: Lens' DescribeDHCPOptionsResponse Int
-ddorsStatus = lens _ddorsStatus (\ s a -> s{_ddorsStatus = a});
+ddorsResponseStatus :: Lens' DescribeDHCPOptionsResponse Int
+ddorsResponseStatus = lens _ddorsResponseStatus (\ s a -> s{_ddorsResponseStatus = a});
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
@@ -34,7 +34,7 @@
     , DescribeExportTasksResponse
     -- * Response Lenses
     , detrsExportTasks
-    , detrsStatus
+    , detrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -92,8 +92,8 @@
 
 -- | /See:/ 'describeExportTasksResponse' smart constructor.
 data DescribeExportTasksResponse = DescribeExportTasksResponse'
-    { _detrsExportTasks :: !(Maybe [ExportTask])
-    , _detrsStatus      :: !Int
+    { _detrsExportTasks    :: !(Maybe [ExportTask])
+    , _detrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeExportTasksResponse' with the minimum fields required to make a request.
@@ -102,14 +102,14 @@
 --
 -- * 'detrsExportTasks'
 --
--- * 'detrsStatus'
+-- * 'detrsResponseStatus'
 describeExportTasksResponse
-    :: Int -- ^ 'detrsStatus'
+    :: Int -- ^ 'detrsResponseStatus'
     -> DescribeExportTasksResponse
-describeExportTasksResponse pStatus_ =
+describeExportTasksResponse pResponseStatus_ =
     DescribeExportTasksResponse'
     { _detrsExportTasks = Nothing
-    , _detrsStatus = pStatus_
+    , _detrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the export tasks.
@@ -117,5 +117,5 @@
 detrsExportTasks = lens _detrsExportTasks (\ s a -> s{_detrsExportTasks = a}) . _Default . _Coerce;
 
 -- | The response status code.
-detrsStatus :: Lens' DescribeExportTasksResponse Int
-detrsStatus = lens _detrsStatus (\ s a -> s{_detrsStatus = a});
+detrsResponseStatus :: Lens' DescribeExportTasksResponse Int
+detrsResponseStatus = lens _detrsResponseStatus (\ s a -> s{_detrsResponseStatus = a});
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
@@ -30,8 +30,8 @@
     , DescribeFlowLogs
     -- * Request Lenses
     , dNextToken
-    , dFilter
     , dFlowLogIds
+    , dFilter
     , dMaxResults
 
     -- * Destructuring the Response
@@ -40,7 +40,7 @@
     -- * Response Lenses
     , dflsrsNextToken
     , dflsrsFlowLogs
-    , dflsrsStatus
+    , dflsrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -52,8 +52,8 @@
 -- | /See:/ 'describeFlowLogs' smart constructor.
 data DescribeFlowLogs = DescribeFlowLogs'
     { _dNextToken  :: !(Maybe Text)
-    , _dFilter     :: !(Maybe [Filter])
     , _dFlowLogIds :: !(Maybe [Text])
+    , _dFilter     :: !(Maybe [Filter])
     , _dMaxResults :: !(Maybe Int)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -63,18 +63,18 @@
 --
 -- * 'dNextToken'
 --
--- * 'dFilter'
---
 -- * 'dFlowLogIds'
 --
+-- * 'dFilter'
+--
 -- * 'dMaxResults'
 describeFlowLogs
     :: DescribeFlowLogs
 describeFlowLogs =
     DescribeFlowLogs'
     { _dNextToken = Nothing
-    , _dFilter = Nothing
     , _dFlowLogIds = Nothing
+    , _dFilter = Nothing
     , _dMaxResults = Nothing
     }
 
@@ -82,6 +82,10 @@
 dNextToken :: Lens' DescribeFlowLogs (Maybe Text)
 dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a});
 
+-- | One or more flow log IDs.
+dFlowLogIds :: Lens' DescribeFlowLogs [Text]
+dFlowLogIds = lens _dFlowLogIds (\ s a -> s{_dFlowLogIds = a}) . _Default . _Coerce;
+
 -- | One or more filters.
 --
 -- -   'deliver-log-status' - The status of the logs delivery ('SUCCESS' |
@@ -98,10 +102,6 @@
 dFilter :: Lens' DescribeFlowLogs [Filter]
 dFilter = lens _dFilter (\ s a -> s{_dFilter = a}) . _Default . _Coerce;
 
--- | One or more flow log IDs.
-dFlowLogIds :: Lens' DescribeFlowLogs [Text]
-dFlowLogIds = lens _dFlowLogIds (\ s a -> s{_dFlowLogIds = 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 1000; if
@@ -135,15 +135,15 @@
               ["Action" =: ("DescribeFlowLogs" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                "NextToken" =: _dNextToken,
-               toQuery (toQueryList "Filter" <$> _dFilter),
                toQuery (toQueryList "FlowLogId" <$> _dFlowLogIds),
+               toQuery (toQueryList "Filter" <$> _dFilter),
                "MaxResults" =: _dMaxResults]
 
 -- | /See:/ 'describeFlowLogsResponse' smart constructor.
 data DescribeFlowLogsResponse = DescribeFlowLogsResponse'
-    { _dflsrsNextToken :: !(Maybe Text)
-    , _dflsrsFlowLogs  :: !(Maybe [FlowLog])
-    , _dflsrsStatus    :: !Int
+    { _dflsrsNextToken      :: !(Maybe Text)
+    , _dflsrsFlowLogs       :: !(Maybe [FlowLog])
+    , _dflsrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeFlowLogsResponse' with the minimum fields required to make a request.
@@ -154,15 +154,15 @@
 --
 -- * 'dflsrsFlowLogs'
 --
--- * 'dflsrsStatus'
+-- * 'dflsrsResponseStatus'
 describeFlowLogsResponse
-    :: Int -- ^ 'dflsrsStatus'
+    :: Int -- ^ 'dflsrsResponseStatus'
     -> DescribeFlowLogsResponse
-describeFlowLogsResponse pStatus_ =
+describeFlowLogsResponse pResponseStatus_ =
     DescribeFlowLogsResponse'
     { _dflsrsNextToken = Nothing
     , _dflsrsFlowLogs = Nothing
-    , _dflsrsStatus = pStatus_
+    , _dflsrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -175,5 +175,5 @@
 dflsrsFlowLogs = lens _dflsrsFlowLogs (\ s a -> s{_dflsrsFlowLogs = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dflsrsStatus :: Lens' DescribeFlowLogsResponse Int
-dflsrsStatus = lens _dflsrsStatus (\ s a -> s{_dflsrsStatus = a});
+dflsrsResponseStatus :: Lens' DescribeFlowLogsResponse Int
+dflsrsResponseStatus = lens _dflsrsResponseStatus (\ s a -> s{_dflsrsResponseStatus = 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
@@ -42,9 +42,9 @@
     , diarsSRIOVNetSupport
     , diarsImageId
     , diarsProductCodes
-    , diarsBlockDeviceMappings
     , diarsDescription
-    , diarsStatus
+    , diarsBlockDeviceMappings
+    , diarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -117,10 +117,10 @@
                      <*>
                      (x .@? "productCodes" .!@ mempty >>=
                         may (parseXMLList "item"))
+                     <*> (x .@? "description")
                      <*>
                      (x .@? "blockDeviceMapping" .!@ mempty >>=
                         may (parseXMLList "item"))
-                     <*> (x .@? "description")
                      <*> (pure (fromEnum s)))
 
 instance ToHeaders DescribeImageAttribute where
@@ -148,9 +148,9 @@
     , _diarsSRIOVNetSupport     :: !(Maybe AttributeValue)
     , _diarsImageId             :: !(Maybe Text)
     , _diarsProductCodes        :: !(Maybe [ProductCode])
-    , _diarsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
     , _diarsDescription         :: !(Maybe AttributeValue)
-    , _diarsStatus              :: !Int
+    , _diarsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
+    , _diarsResponseStatus      :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeImageAttributeResponse' with the minimum fields required to make a request.
@@ -169,15 +169,15 @@
 --
 -- * 'diarsProductCodes'
 --
--- * 'diarsBlockDeviceMappings'
---
 -- * 'diarsDescription'
 --
--- * 'diarsStatus'
+-- * 'diarsBlockDeviceMappings'
+--
+-- * 'diarsResponseStatus'
 describeImageAttributeResponse
-    :: Int -- ^ 'diarsStatus'
+    :: Int -- ^ 'diarsResponseStatus'
     -> DescribeImageAttributeResponse
-describeImageAttributeResponse pStatus_ =
+describeImageAttributeResponse pResponseStatus_ =
     DescribeImageAttributeResponse'
     { _diarsLaunchPermissions = Nothing
     , _diarsRAMDiskId = Nothing
@@ -185,9 +185,9 @@
     , _diarsSRIOVNetSupport = Nothing
     , _diarsImageId = Nothing
     , _diarsProductCodes = Nothing
-    , _diarsBlockDeviceMappings = Nothing
     , _diarsDescription = Nothing
-    , _diarsStatus = pStatus_
+    , _diarsBlockDeviceMappings = Nothing
+    , _diarsResponseStatus = pResponseStatus_
     }
 
 -- | One or more launch permissions.
@@ -214,14 +214,14 @@
 diarsProductCodes :: Lens' DescribeImageAttributeResponse [ProductCode]
 diarsProductCodes = lens _diarsProductCodes (\ s a -> s{_diarsProductCodes = a}) . _Default . _Coerce;
 
--- | One or more block device mapping entries.
-diarsBlockDeviceMappings :: Lens' DescribeImageAttributeResponse [BlockDeviceMapping]
-diarsBlockDeviceMappings = lens _diarsBlockDeviceMappings (\ s a -> s{_diarsBlockDeviceMappings = a}) . _Default . _Coerce;
-
 -- | A description for the AMI.
 diarsDescription :: Lens' DescribeImageAttributeResponse (Maybe AttributeValue)
 diarsDescription = lens _diarsDescription (\ s a -> s{_diarsDescription = a});
 
+-- | One or more block device mapping entries.
+diarsBlockDeviceMappings :: Lens' DescribeImageAttributeResponse [BlockDeviceMapping]
+diarsBlockDeviceMappings = lens _diarsBlockDeviceMappings (\ s a -> s{_diarsBlockDeviceMappings = a}) . _Default . _Coerce;
+
 -- | The response status code.
-diarsStatus :: Lens' DescribeImageAttributeResponse Int
-diarsStatus = lens _diarsStatus (\ s a -> s{_diarsStatus = a});
+diarsResponseStatus :: Lens' DescribeImageAttributeResponse Int
+diarsResponseStatus = lens _diarsResponseStatus (\ s a -> s{_diarsResponseStatus = a});
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
@@ -44,7 +44,7 @@
     , DescribeImagesResponse
     -- * Response Lenses
     , desrsImages
-    , desrsStatus
+    , desrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -228,8 +228,8 @@
 
 -- | /See:/ 'describeImagesResponse' smart constructor.
 data DescribeImagesResponse = DescribeImagesResponse'
-    { _desrsImages :: !(Maybe [Image])
-    , _desrsStatus :: !Int
+    { _desrsImages         :: !(Maybe [Image])
+    , _desrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeImagesResponse' with the minimum fields required to make a request.
@@ -238,14 +238,14 @@
 --
 -- * 'desrsImages'
 --
--- * 'desrsStatus'
+-- * 'desrsResponseStatus'
 describeImagesResponse
-    :: Int -- ^ 'desrsStatus'
+    :: Int -- ^ 'desrsResponseStatus'
     -> DescribeImagesResponse
-describeImagesResponse pStatus_ =
+describeImagesResponse pResponseStatus_ =
     DescribeImagesResponse'
     { _desrsImages = Nothing
-    , _desrsStatus = pStatus_
+    , _desrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more images.
@@ -253,5 +253,5 @@
 desrsImages = lens _desrsImages (\ s a -> s{_desrsImages = a}) . _Default . _Coerce;
 
 -- | The response status code.
-desrsStatus :: Lens' DescribeImagesResponse Int
-desrsStatus = lens _desrsStatus (\ s a -> s{_desrsStatus = a});
+desrsResponseStatus :: Lens' DescribeImagesResponse Int
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
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
@@ -38,9 +38,9 @@
     , describeImportImageTasksResponse
     , DescribeImportImageTasksResponse
     -- * Response Lenses
-    , diitrsImportImageTasks
     , diitrsNextToken
-    , diitrsStatus
+    , diitrsImportImageTasks
+    , diitrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -113,9 +113,9 @@
           = receiveXML
               (\ s h x ->
                  DescribeImportImageTasksResponse' <$>
-                   (x .@? "importImageTaskSet" .!@ mempty >>=
-                      may (parseXMLList "item"))
-                     <*> (x .@? "nextToken")
+                   (x .@? "nextToken") <*>
+                     (x .@? "importImageTaskSet" .!@ mempty >>=
+                        may (parseXMLList "item"))
                      <*> (pure (fromEnum s)))
 
 instance ToHeaders DescribeImportImageTasks where
@@ -139,40 +139,40 @@
 
 -- | /See:/ 'describeImportImageTasksResponse' smart constructor.
 data DescribeImportImageTasksResponse = DescribeImportImageTasksResponse'
-    { _diitrsImportImageTasks :: !(Maybe [ImportImageTask])
-    , _diitrsNextToken        :: !(Maybe Text)
-    , _diitrsStatus           :: !Int
+    { _diitrsNextToken        :: !(Maybe Text)
+    , _diitrsImportImageTasks :: !(Maybe [ImportImageTask])
+    , _diitrsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeImportImageTasksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diitrsImportImageTasks'
---
 -- * 'diitrsNextToken'
 --
--- * 'diitrsStatus'
+-- * 'diitrsImportImageTasks'
+--
+-- * 'diitrsResponseStatus'
 describeImportImageTasksResponse
-    :: Int -- ^ 'diitrsStatus'
+    :: Int -- ^ 'diitrsResponseStatus'
     -> DescribeImportImageTasksResponse
-describeImportImageTasksResponse pStatus_ =
+describeImportImageTasksResponse pResponseStatus_ =
     DescribeImportImageTasksResponse'
-    { _diitrsImportImageTasks = Nothing
-    , _diitrsNextToken = Nothing
-    , _diitrsStatus = pStatus_
+    { _diitrsNextToken = Nothing
+    , _diitrsImportImageTasks = Nothing
+    , _diitrsResponseStatus = pResponseStatus_
     }
 
--- | A list of zero or more import image tasks that are currently active or
--- were completed or canceled in the previous 7 days.
-diitrsImportImageTasks :: Lens' DescribeImportImageTasksResponse [ImportImageTask]
-diitrsImportImageTasks = lens _diitrsImportImageTasks (\ s a -> s{_diitrsImportImageTasks = a}) . _Default . _Coerce;
-
 -- | The token to use to get the next page of results. This value is 'null'
 -- when there are no more results to return.
 diitrsNextToken :: Lens' DescribeImportImageTasksResponse (Maybe Text)
 diitrsNextToken = lens _diitrsNextToken (\ s a -> s{_diitrsNextToken = a});
 
+-- | A list of zero or more import image tasks that are currently active or
+-- were completed or canceled in the previous 7 days.
+diitrsImportImageTasks :: Lens' DescribeImportImageTasksResponse [ImportImageTask]
+diitrsImportImageTasks = lens _diitrsImportImageTasks (\ s a -> s{_diitrsImportImageTasks = a}) . _Default . _Coerce;
+
 -- | The response status code.
-diitrsStatus :: Lens' DescribeImportImageTasksResponse Int
-diitrsStatus = lens _diitrsStatus (\ s a -> s{_diitrsStatus = a});
+diitrsResponseStatus :: Lens' DescribeImportImageTasksResponse Int
+diitrsResponseStatus = lens _diitrsResponseStatus (\ s a -> s{_diitrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     -- * Response Lenses
     , distrsNextToken
     , distrsImportSnapshotTasks
-    , distrsStatus
+    , distrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -140,7 +140,7 @@
 data DescribeImportSnapshotTasksResponse = DescribeImportSnapshotTasksResponse'
     { _distrsNextToken           :: !(Maybe Text)
     , _distrsImportSnapshotTasks :: !(Maybe [ImportSnapshotTask])
-    , _distrsStatus              :: !Int
+    , _distrsResponseStatus      :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeImportSnapshotTasksResponse' with the minimum fields required to make a request.
@@ -151,15 +151,15 @@
 --
 -- * 'distrsImportSnapshotTasks'
 --
--- * 'distrsStatus'
+-- * 'distrsResponseStatus'
 describeImportSnapshotTasksResponse
-    :: Int -- ^ 'distrsStatus'
+    :: Int -- ^ 'distrsResponseStatus'
     -> DescribeImportSnapshotTasksResponse
-describeImportSnapshotTasksResponse pStatus_ =
+describeImportSnapshotTasksResponse pResponseStatus_ =
     DescribeImportSnapshotTasksResponse'
     { _distrsNextToken = Nothing
     , _distrsImportSnapshotTasks = Nothing
-    , _distrsStatus = pStatus_
+    , _distrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to get the next page of results. This value is 'null'
@@ -173,5 +173,5 @@
 distrsImportSnapshotTasks = lens _distrsImportSnapshotTasks (\ s a -> s{_distrsImportSnapshotTasks = a}) . _Default . _Coerce;
 
 -- | The response status code.
-distrsStatus :: Lens' DescribeImportSnapshotTasksResponse Int
-distrsStatus = lens _distrsStatus (\ s a -> s{_distrsStatus = a});
+distrsResponseStatus :: Lens' DescribeImportSnapshotTasksResponse Int
+distrsResponseStatus = lens _distrsResponseStatus (\ s a -> s{_distrsResponseStatus = a});
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
@@ -46,15 +46,15 @@
     , drsDisableAPITermination
     , drsRAMDiskId
     , drsKernelId
-    , drsInstanceType
     , drsRootDeviceName
+    , drsInstanceType
+    , drsSRIOVNetSupport
     , drsEBSOptimized
     , drsUserData
-    , drsSRIOVNetSupport
     , drsInstanceInitiatedShutdownBehavior
     , drsProductCodes
     , drsBlockDeviceMappings
-    , drsStatus
+    , drsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -120,11 +120,11 @@
                      <*> (x .@? "disableApiTermination")
                      <*> (x .@? "ramdisk")
                      <*> (x .@? "kernel")
-                     <*> (x .@? "instanceType")
                      <*> (x .@? "rootDeviceName")
+                     <*> (x .@? "instanceType")
+                     <*> (x .@? "sriovNetSupport")
                      <*> (x .@? "ebsOptimized")
                      <*> (x .@? "userData")
-                     <*> (x .@? "sriovNetSupport")
                      <*> (x .@? "instanceInitiatedShutdownBehavior")
                      <*>
                      (x .@? "productCodes" .!@ mempty >>=
@@ -160,15 +160,15 @@
     , _drsDisableAPITermination             :: !(Maybe AttributeBooleanValue)
     , _drsRAMDiskId                         :: !(Maybe AttributeValue)
     , _drsKernelId                          :: !(Maybe AttributeValue)
-    , _drsInstanceType                      :: !(Maybe AttributeValue)
     , _drsRootDeviceName                    :: !(Maybe AttributeValue)
+    , _drsInstanceType                      :: !(Maybe AttributeValue)
+    , _drsSRIOVNetSupport                   :: !(Maybe AttributeValue)
     , _drsEBSOptimized                      :: !(Maybe AttributeBooleanValue)
     , _drsUserData                          :: !(Maybe AttributeValue)
-    , _drsSRIOVNetSupport                   :: !(Maybe AttributeValue)
     , _drsInstanceInitiatedShutdownBehavior :: !(Maybe AttributeValue)
     , _drsProductCodes                      :: !(Maybe [ProductCode])
     , _drsBlockDeviceMappings               :: !(Maybe [InstanceBlockDeviceMapping])
-    , _drsStatus                            :: !Int
+    , _drsResponseStatus                    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeInstanceAttributeResponse' with the minimum fields required to make a request.
@@ -187,27 +187,27 @@
 --
 -- * 'drsKernelId'
 --
+-- * 'drsRootDeviceName'
+--
 -- * 'drsInstanceType'
 --
--- * 'drsRootDeviceName'
+-- * 'drsSRIOVNetSupport'
 --
 -- * 'drsEBSOptimized'
 --
 -- * 'drsUserData'
 --
--- * 'drsSRIOVNetSupport'
---
 -- * 'drsInstanceInitiatedShutdownBehavior'
 --
 -- * 'drsProductCodes'
 --
 -- * 'drsBlockDeviceMappings'
 --
--- * 'drsStatus'
+-- * 'drsResponseStatus'
 describeInstanceAttributeResponse
-    :: Int -- ^ 'drsStatus'
+    :: Int -- ^ 'drsResponseStatus'
     -> DescribeInstanceAttributeResponse
-describeInstanceAttributeResponse pStatus_ =
+describeInstanceAttributeResponse pResponseStatus_ =
     DescribeInstanceAttributeResponse'
     { _drsInstanceId = Nothing
     , _drsGroups = Nothing
@@ -215,15 +215,15 @@
     , _drsDisableAPITermination = Nothing
     , _drsRAMDiskId = Nothing
     , _drsKernelId = Nothing
-    , _drsInstanceType = Nothing
     , _drsRootDeviceName = Nothing
+    , _drsInstanceType = Nothing
+    , _drsSRIOVNetSupport = Nothing
     , _drsEBSOptimized = Nothing
     , _drsUserData = Nothing
-    , _drsSRIOVNetSupport = Nothing
     , _drsInstanceInitiatedShutdownBehavior = Nothing
     , _drsProductCodes = Nothing
     , _drsBlockDeviceMappings = Nothing
-    , _drsStatus = pStatus_
+    , _drsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the instance.
@@ -253,15 +253,19 @@
 drsKernelId :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
 drsKernelId = lens _drsKernelId (\ s a -> s{_drsKernelId = a});
 
--- | The instance type.
-drsInstanceType :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
-drsInstanceType = lens _drsInstanceType (\ s a -> s{_drsInstanceType = a});
-
 -- | The name of the root device (for example, '\/dev\/sda1' or
 -- '\/dev\/xvda').
 drsRootDeviceName :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
 drsRootDeviceName = lens _drsRootDeviceName (\ s a -> s{_drsRootDeviceName = a});
 
+-- | The instance type.
+drsInstanceType :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
+drsInstanceType = lens _drsInstanceType (\ s a -> s{_drsInstanceType = a});
+
+-- | Undocumented member.
+drsSRIOVNetSupport :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
+drsSRIOVNetSupport = lens _drsSRIOVNetSupport (\ s a -> s{_drsSRIOVNetSupport = a});
+
 -- | Indicates whether the instance is optimized for EBS I\/O.
 drsEBSOptimized :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeBooleanValue)
 drsEBSOptimized = lens _drsEBSOptimized (\ s a -> s{_drsEBSOptimized = a});
@@ -270,10 +274,6 @@
 drsUserData :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
 drsUserData = lens _drsUserData (\ s a -> s{_drsUserData = a});
 
--- | Undocumented member.
-drsSRIOVNetSupport :: Lens' DescribeInstanceAttributeResponse (Maybe AttributeValue)
-drsSRIOVNetSupport = lens _drsSRIOVNetSupport (\ s a -> s{_drsSRIOVNetSupport = a});
-
 -- | Indicates whether an instance stops or terminates when you initiate
 -- shutdown from the instance (using the operating system command for
 -- system shutdown).
@@ -289,5 +289,5 @@
 drsBlockDeviceMappings = lens _drsBlockDeviceMappings (\ s a -> s{_drsBlockDeviceMappings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drsStatus :: Lens' DescribeInstanceAttributeResponse Int
-drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
+drsResponseStatus :: Lens' DescribeInstanceAttributeResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
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
@@ -65,7 +65,7 @@
     -- * Response Lenses
     , disrsInstanceStatuses
     , disrsNextToken
-    , disrsStatus
+    , disrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -236,7 +236,7 @@
 data DescribeInstanceStatusResponse = DescribeInstanceStatusResponse'
     { _disrsInstanceStatuses :: !(Maybe [InstanceStatus])
     , _disrsNextToken        :: !(Maybe Text)
-    , _disrsStatus           :: !Int
+    , _disrsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeInstanceStatusResponse' with the minimum fields required to make a request.
@@ -247,15 +247,15 @@
 --
 -- * 'disrsNextToken'
 --
--- * 'disrsStatus'
+-- * 'disrsResponseStatus'
 describeInstanceStatusResponse
-    :: Int -- ^ 'disrsStatus'
+    :: Int -- ^ 'disrsResponseStatus'
     -> DescribeInstanceStatusResponse
-describeInstanceStatusResponse pStatus_ =
+describeInstanceStatusResponse pResponseStatus_ =
     DescribeInstanceStatusResponse'
     { _disrsInstanceStatuses = Nothing
     , _disrsNextToken = Nothing
-    , _disrsStatus = pStatus_
+    , _disrsResponseStatus = pResponseStatus_
     }
 
 -- | One or more instance status descriptions.
@@ -268,5 +268,5 @@
 disrsNextToken = lens _disrsNextToken (\ s a -> s{_disrsNextToken = a});
 
 -- | The response status code.
-disrsStatus :: Lens' DescribeInstanceStatusResponse Int
-disrsStatus = lens _disrsStatus (\ s a -> s{_disrsStatus = a});
+disrsResponseStatus :: Lens' DescribeInstanceStatusResponse Int
+disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a});
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
@@ -51,7 +51,7 @@
     -- * Response Lenses
     , dirsNextToken
     , dirsReservations
-    , dirsStatus
+    , dirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -407,9 +407,9 @@
 
 -- | /See:/ 'describeInstancesResponse' smart constructor.
 data DescribeInstancesResponse = DescribeInstancesResponse'
-    { _dirsNextToken    :: !(Maybe Text)
-    , _dirsReservations :: !(Maybe [Reservation])
-    , _dirsStatus       :: !Int
+    { _dirsNextToken      :: !(Maybe Text)
+    , _dirsReservations   :: !(Maybe [Reservation])
+    , _dirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeInstancesResponse' with the minimum fields required to make a request.
@@ -420,15 +420,15 @@
 --
 -- * 'dirsReservations'
 --
--- * 'dirsStatus'
+-- * 'dirsResponseStatus'
 describeInstancesResponse
-    :: Int -- ^ 'dirsStatus'
+    :: Int -- ^ 'dirsResponseStatus'
     -> DescribeInstancesResponse
-describeInstancesResponse pStatus_ =
+describeInstancesResponse pResponseStatus_ =
     DescribeInstancesResponse'
     { _dirsNextToken = Nothing
     , _dirsReservations = Nothing
-    , _dirsStatus = pStatus_
+    , _dirsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -441,5 +441,5 @@
 dirsReservations = lens _dirsReservations (\ s a -> s{_dirsReservations = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dirsStatus :: Lens' DescribeInstancesResponse Int
-dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
+dirsResponseStatus :: Lens' DescribeInstancesResponse Int
+dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeInternetGatewaysResponse
     -- * Response Lenses
     , digrsInternetGateways
-    , digrsStatus
+    , digrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -143,7 +143,7 @@
 -- | /See:/ 'describeInternetGatewaysResponse' smart constructor.
 data DescribeInternetGatewaysResponse = DescribeInternetGatewaysResponse'
     { _digrsInternetGateways :: !(Maybe [InternetGateway])
-    , _digrsStatus           :: !Int
+    , _digrsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeInternetGatewaysResponse' with the minimum fields required to make a request.
@@ -152,14 +152,14 @@
 --
 -- * 'digrsInternetGateways'
 --
--- * 'digrsStatus'
+-- * 'digrsResponseStatus'
 describeInternetGatewaysResponse
-    :: Int -- ^ 'digrsStatus'
+    :: Int -- ^ 'digrsResponseStatus'
     -> DescribeInternetGatewaysResponse
-describeInternetGatewaysResponse pStatus_ =
+describeInternetGatewaysResponse pResponseStatus_ =
     DescribeInternetGatewaysResponse'
     { _digrsInternetGateways = Nothing
-    , _digrsStatus = pStatus_
+    , _digrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more Internet gateways.
@@ -167,5 +167,5 @@
 digrsInternetGateways = lens _digrsInternetGateways (\ s a -> s{_digrsInternetGateways = a}) . _Default . _Coerce;
 
 -- | The response status code.
-digrsStatus :: Lens' DescribeInternetGatewaysResponse Int
-digrsStatus = lens _digrsStatus (\ s a -> s{_digrsStatus = a});
+digrsResponseStatus :: Lens' DescribeInternetGatewaysResponse Int
+digrsResponseStatus = lens _digrsResponseStatus (\ s a -> s{_digrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , DescribeKeyPairsResponse
     -- * Response Lenses
     , dkprsKeyPairs
-    , dkprsStatus
+    , dkprsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -124,8 +124,8 @@
 
 -- | /See:/ 'describeKeyPairsResponse' smart constructor.
 data DescribeKeyPairsResponse = DescribeKeyPairsResponse'
-    { _dkprsKeyPairs :: !(Maybe [KeyPairInfo])
-    , _dkprsStatus   :: !Int
+    { _dkprsKeyPairs       :: !(Maybe [KeyPairInfo])
+    , _dkprsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeKeyPairsResponse' with the minimum fields required to make a request.
@@ -134,14 +134,14 @@
 --
 -- * 'dkprsKeyPairs'
 --
--- * 'dkprsStatus'
+-- * 'dkprsResponseStatus'
 describeKeyPairsResponse
-    :: Int -- ^ 'dkprsStatus'
+    :: Int -- ^ 'dkprsResponseStatus'
     -> DescribeKeyPairsResponse
-describeKeyPairsResponse pStatus_ =
+describeKeyPairsResponse pResponseStatus_ =
     DescribeKeyPairsResponse'
     { _dkprsKeyPairs = Nothing
-    , _dkprsStatus = pStatus_
+    , _dkprsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more key pairs.
@@ -149,5 +149,5 @@
 dkprsKeyPairs = lens _dkprsKeyPairs (\ s a -> s{_dkprsKeyPairs = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dkprsStatus :: Lens' DescribeKeyPairsResponse Int
-dkprsStatus = lens _dkprsStatus (\ s a -> s{_dkprsStatus = a});
+dkprsResponseStatus :: Lens' DescribeKeyPairsResponse Int
+dkprsResponseStatus = lens _dkprsResponseStatus (\ s a -> s{_dkprsResponseStatus = a});
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
@@ -30,8 +30,8 @@
       describeMovingAddresses
     , DescribeMovingAddresses
     -- * Request Lenses
-    , dmaPublicIPs
     , dmaFilters
+    , dmaPublicIPs
     , dmaNextToken
     , dmaDryRun
     , dmaMaxResults
@@ -42,7 +42,7 @@
     -- * Response Lenses
     , dmarsMovingAddressStatuses
     , dmarsNextToken
-    , dmarsStatus
+    , dmarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -53,8 +53,8 @@
 
 -- | /See:/ 'describeMovingAddresses' smart constructor.
 data DescribeMovingAddresses = DescribeMovingAddresses'
-    { _dmaPublicIPs  :: !(Maybe [Text])
-    , _dmaFilters    :: !(Maybe [Filter])
+    { _dmaFilters    :: !(Maybe [Filter])
+    , _dmaPublicIPs  :: !(Maybe [Text])
     , _dmaNextToken  :: !(Maybe Text)
     , _dmaDryRun     :: !(Maybe Bool)
     , _dmaMaxResults :: !(Maybe Int)
@@ -64,10 +64,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dmaPublicIPs'
---
 -- * 'dmaFilters'
 --
+-- * 'dmaPublicIPs'
+--
 -- * 'dmaNextToken'
 --
 -- * 'dmaDryRun'
@@ -77,17 +77,13 @@
     :: DescribeMovingAddresses
 describeMovingAddresses =
     DescribeMovingAddresses'
-    { _dmaPublicIPs = Nothing
-    , _dmaFilters = Nothing
+    { _dmaFilters = Nothing
+    , _dmaPublicIPs = Nothing
     , _dmaNextToken = Nothing
     , _dmaDryRun = Nothing
     , _dmaMaxResults = Nothing
     }
 
--- | One or more Elastic IP addresses.
-dmaPublicIPs :: Lens' DescribeMovingAddresses [Text]
-dmaPublicIPs = lens _dmaPublicIPs (\ s a -> s{_dmaPublicIPs = a}) . _Default . _Coerce;
-
 -- | One or more filters.
 --
 -- -   'moving-status' - The status of the Elastic IP address
@@ -96,6 +92,10 @@
 dmaFilters :: Lens' DescribeMovingAddresses [Filter]
 dmaFilters = lens _dmaFilters (\ s a -> s{_dmaFilters = a}) . _Default . _Coerce;
 
+-- | One or more Elastic IP addresses.
+dmaPublicIPs :: Lens' DescribeMovingAddresses [Text]
+dmaPublicIPs = lens _dmaPublicIPs (\ s a -> s{_dmaPublicIPs = a}) . _Default . _Coerce;
+
 -- | The token to use to retrieve the next page of results.
 dmaNextToken :: Lens' DescribeMovingAddresses (Maybe Text)
 dmaNextToken = lens _dmaNextToken (\ s a -> s{_dmaNextToken = a});
@@ -142,8 +142,8 @@
               ["Action" =:
                  ("DescribeMovingAddresses" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               toQuery (toQueryList "PublicIp" <$> _dmaPublicIPs),
                toQuery (toQueryList "Filter" <$> _dmaFilters),
+               toQuery (toQueryList "PublicIp" <$> _dmaPublicIPs),
                "NextToken" =: _dmaNextToken, "DryRun" =: _dmaDryRun,
                "MaxResults" =: _dmaMaxResults]
 
@@ -151,7 +151,7 @@
 data DescribeMovingAddressesResponse = DescribeMovingAddressesResponse'
     { _dmarsMovingAddressStatuses :: !(Maybe [MovingAddressStatus])
     , _dmarsNextToken             :: !(Maybe Text)
-    , _dmarsStatus                :: !Int
+    , _dmarsResponseStatus        :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeMovingAddressesResponse' with the minimum fields required to make a request.
@@ -162,15 +162,15 @@
 --
 -- * 'dmarsNextToken'
 --
--- * 'dmarsStatus'
+-- * 'dmarsResponseStatus'
 describeMovingAddressesResponse
-    :: Int -- ^ 'dmarsStatus'
+    :: Int -- ^ 'dmarsResponseStatus'
     -> DescribeMovingAddressesResponse
-describeMovingAddressesResponse pStatus_ =
+describeMovingAddressesResponse pResponseStatus_ =
     DescribeMovingAddressesResponse'
     { _dmarsMovingAddressStatuses = Nothing
     , _dmarsNextToken = Nothing
-    , _dmarsStatus = pStatus_
+    , _dmarsResponseStatus = pResponseStatus_
     }
 
 -- | The status for each Elastic IP address.
@@ -183,5 +183,5 @@
 dmarsNextToken = lens _dmarsNextToken (\ s a -> s{_dmarsNextToken = a});
 
 -- | The response status code.
-dmarsStatus :: Lens' DescribeMovingAddressesResponse Int
-dmarsStatus = lens _dmarsStatus (\ s a -> s{_dmarsStatus = a});
+dmarsResponseStatus :: Lens' DescribeMovingAddressesResponse Int
+dmarsResponseStatus = lens _dmarsResponseStatus (\ s a -> s{_dmarsResponseStatus = 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
@@ -32,15 +32,15 @@
     , DescribeNetworkACLs
     -- * Request Lenses
     , dnaclFilters
-    , dnaclDryRun
     , dnaclNetworkACLIds
+    , dnaclDryRun
 
     -- * Destructuring the Response
     , describeNetworkACLsResponse
     , DescribeNetworkACLsResponse
     -- * Response Lenses
     , dnarsNetworkACLs
-    , dnarsStatus
+    , dnarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -52,8 +52,8 @@
 -- | /See:/ 'describeNetworkACLs' smart constructor.
 data DescribeNetworkACLs = DescribeNetworkACLs'
     { _dnaclFilters       :: !(Maybe [Filter])
-    , _dnaclDryRun        :: !(Maybe Bool)
     , _dnaclNetworkACLIds :: !(Maybe [Text])
+    , _dnaclDryRun        :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeNetworkACLs' with the minimum fields required to make a request.
@@ -62,16 +62,16 @@
 --
 -- * 'dnaclFilters'
 --
--- * 'dnaclDryRun'
---
 -- * 'dnaclNetworkACLIds'
+--
+-- * 'dnaclDryRun'
 describeNetworkACLs
     :: DescribeNetworkACLs
 describeNetworkACLs =
     DescribeNetworkACLs'
     { _dnaclFilters = Nothing
-    , _dnaclDryRun = Nothing
     , _dnaclNetworkACLIds = Nothing
+    , _dnaclDryRun = Nothing
     }
 
 -- | One or more filters.
@@ -133,6 +133,12 @@
 dnaclFilters :: Lens' DescribeNetworkACLs [Filter]
 dnaclFilters = lens _dnaclFilters (\ s a -> s{_dnaclFilters = a}) . _Default . _Coerce;
 
+-- | One or more network ACL IDs.
+--
+-- Default: Describes all your network ACLs.
+dnaclNetworkACLIds :: Lens' DescribeNetworkACLs [Text]
+dnaclNetworkACLIds = lens _dnaclNetworkACLIds (\ s a -> s{_dnaclNetworkACLIds = a}) . _Default . _Coerce;
+
 -- | 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'.
@@ -140,12 +146,6 @@
 dnaclDryRun :: Lens' DescribeNetworkACLs (Maybe Bool)
 dnaclDryRun = lens _dnaclDryRun (\ s a -> s{_dnaclDryRun = a});
 
--- | One or more network ACL IDs.
---
--- Default: Describes all your network ACLs.
-dnaclNetworkACLIds :: Lens' DescribeNetworkACLs [Text]
-dnaclNetworkACLIds = lens _dnaclNetworkACLIds (\ s a -> s{_dnaclNetworkACLIds = a}) . _Default . _Coerce;
-
 instance AWSRequest DescribeNetworkACLs where
         type Rs DescribeNetworkACLs =
              DescribeNetworkACLsResponse
@@ -170,14 +170,14 @@
               ["Action" =: ("DescribeNetworkAcls" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                toQuery (toQueryList "Filter" <$> _dnaclFilters),
-               "DryRun" =: _dnaclDryRun,
                toQuery
-                 (toQueryList "NetworkAclId" <$> _dnaclNetworkACLIds)]
+                 (toQueryList "NetworkAclId" <$> _dnaclNetworkACLIds),
+               "DryRun" =: _dnaclDryRun]
 
 -- | /See:/ 'describeNetworkACLsResponse' smart constructor.
 data DescribeNetworkACLsResponse = DescribeNetworkACLsResponse'
-    { _dnarsNetworkACLs :: !(Maybe [NetworkACL])
-    , _dnarsStatus      :: !Int
+    { _dnarsNetworkACLs    :: !(Maybe [NetworkACL])
+    , _dnarsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeNetworkACLsResponse' with the minimum fields required to make a request.
@@ -186,14 +186,14 @@
 --
 -- * 'dnarsNetworkACLs'
 --
--- * 'dnarsStatus'
+-- * 'dnarsResponseStatus'
 describeNetworkACLsResponse
-    :: Int -- ^ 'dnarsStatus'
+    :: Int -- ^ 'dnarsResponseStatus'
     -> DescribeNetworkACLsResponse
-describeNetworkACLsResponse pStatus_ =
+describeNetworkACLsResponse pResponseStatus_ =
     DescribeNetworkACLsResponse'
     { _dnarsNetworkACLs = Nothing
-    , _dnarsStatus = pStatus_
+    , _dnarsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more network ACLs.
@@ -201,5 +201,5 @@
 dnarsNetworkACLs = lens _dnarsNetworkACLs (\ s a -> s{_dnarsNetworkACLs = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dnarsStatus :: Lens' DescribeNetworkACLsResponse Int
-dnarsStatus = lens _dnarsStatus (\ s a -> s{_dnarsStatus = a});
+dnarsResponseStatus :: Lens' DescribeNetworkACLsResponse Int
+dnarsResponseStatus = lens _dnarsResponseStatus (\ s a -> s{_dnarsResponseStatus = a});
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
@@ -41,7 +41,7 @@
     , dniarsNetworkInterfaceId
     , dniarsAttachment
     , dniarsDescription
-    , dniarsStatus
+    , dniarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -134,7 +134,7 @@
     , _dniarsNetworkInterfaceId :: !(Maybe Text)
     , _dniarsAttachment         :: !(Maybe NetworkInterfaceAttachment)
     , _dniarsDescription        :: !(Maybe AttributeValue)
-    , _dniarsStatus             :: !Int
+    , _dniarsResponseStatus     :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeNetworkInterfaceAttributeResponse' with the minimum fields required to make a request.
@@ -151,18 +151,18 @@
 --
 -- * 'dniarsDescription'
 --
--- * 'dniarsStatus'
+-- * 'dniarsResponseStatus'
 describeNetworkInterfaceAttributeResponse
-    :: Int -- ^ 'dniarsStatus'
+    :: Int -- ^ 'dniarsResponseStatus'
     -> DescribeNetworkInterfaceAttributeResponse
-describeNetworkInterfaceAttributeResponse pStatus_ =
+describeNetworkInterfaceAttributeResponse pResponseStatus_ =
     DescribeNetworkInterfaceAttributeResponse'
     { _dniarsGroups = Nothing
     , _dniarsSourceDestCheck = Nothing
     , _dniarsNetworkInterfaceId = Nothing
     , _dniarsAttachment = Nothing
     , _dniarsDescription = Nothing
-    , _dniarsStatus = pStatus_
+    , _dniarsResponseStatus = pResponseStatus_
     }
 
 -- | The security groups associated with the network interface.
@@ -186,5 +186,5 @@
 dniarsDescription = lens _dniarsDescription (\ s a -> s{_dniarsDescription = a});
 
 -- | The response status code.
-dniarsStatus :: Lens' DescribeNetworkInterfaceAttributeResponse Int
-dniarsStatus = lens _dniarsStatus (\ s a -> s{_dniarsStatus = a});
+dniarsResponseStatus :: Lens' DescribeNetworkInterfaceAttributeResponse Int
+dniarsResponseStatus = lens _dniarsResponseStatus (\ s a -> s{_dniarsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeNetworkInterfacesResponse
     -- * Response Lenses
     , dnirsNetworkInterfaces
-    , dnirsStatus
+    , dnirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -227,7 +227,7 @@
 -- | /See:/ 'describeNetworkInterfacesResponse' smart constructor.
 data DescribeNetworkInterfacesResponse = DescribeNetworkInterfacesResponse'
     { _dnirsNetworkInterfaces :: !(Maybe [NetworkInterface])
-    , _dnirsStatus            :: !Int
+    , _dnirsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeNetworkInterfacesResponse' with the minimum fields required to make a request.
@@ -236,14 +236,14 @@
 --
 -- * 'dnirsNetworkInterfaces'
 --
--- * 'dnirsStatus'
+-- * 'dnirsResponseStatus'
 describeNetworkInterfacesResponse
-    :: Int -- ^ 'dnirsStatus'
+    :: Int -- ^ 'dnirsResponseStatus'
     -> DescribeNetworkInterfacesResponse
-describeNetworkInterfacesResponse pStatus_ =
+describeNetworkInterfacesResponse pResponseStatus_ =
     DescribeNetworkInterfacesResponse'
     { _dnirsNetworkInterfaces = Nothing
-    , _dnirsStatus = pStatus_
+    , _dnirsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more network interfaces.
@@ -251,5 +251,5 @@
 dnirsNetworkInterfaces = lens _dnirsNetworkInterfaces (\ s a -> s{_dnirsNetworkInterfaces = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dnirsStatus :: Lens' DescribeNetworkInterfacesResponse Int
-dnirsStatus = lens _dnirsStatus (\ s a -> s{_dnirsStatus = a});
+dnirsResponseStatus :: Lens' DescribeNetworkInterfacesResponse Int
+dnirsResponseStatus = lens _dnirsResponseStatus (\ s a -> s{_dnirsResponseStatus = a});
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
@@ -30,8 +30,8 @@
       describePlacementGroups
     , DescribePlacementGroups
     -- * Request Lenses
-    , dpgsGroupNames
     , dpgsFilters
+    , dpgsGroupNames
     , dpgsDryRun
 
     -- * Destructuring the Response
@@ -39,7 +39,7 @@
     , DescribePlacementGroupsResponse
     -- * Response Lenses
     , dpgrsPlacementGroups
-    , dpgrsStatus
+    , dpgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -50,8 +50,8 @@
 
 -- | /See:/ 'describePlacementGroups' smart constructor.
 data DescribePlacementGroups = DescribePlacementGroups'
-    { _dpgsGroupNames :: !(Maybe [Text])
-    , _dpgsFilters    :: !(Maybe [Filter])
+    { _dpgsFilters    :: !(Maybe [Filter])
+    , _dpgsGroupNames :: !(Maybe [Text])
     , _dpgsDryRun     :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -59,27 +59,20 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpgsGroupNames'
---
 -- * 'dpgsFilters'
 --
+-- * 'dpgsGroupNames'
+--
 -- * 'dpgsDryRun'
 describePlacementGroups
     :: DescribePlacementGroups
 describePlacementGroups =
     DescribePlacementGroups'
-    { _dpgsGroupNames = Nothing
-    , _dpgsFilters = Nothing
+    { _dpgsFilters = Nothing
+    , _dpgsGroupNames = Nothing
     , _dpgsDryRun = Nothing
     }
 
--- | One or more placement group names.
---
--- Default: Describes all your placement groups, or only those otherwise
--- specified.
-dpgsGroupNames :: Lens' DescribePlacementGroups [Text]
-dpgsGroupNames = lens _dpgsGroupNames (\ s a -> s{_dpgsGroupNames = a}) . _Default . _Coerce;
-
 -- | One or more filters.
 --
 -- -   'group-name' - The name of the placement group.
@@ -92,6 +85,13 @@
 dpgsFilters :: Lens' DescribePlacementGroups [Filter]
 dpgsFilters = lens _dpgsFilters (\ s a -> s{_dpgsFilters = a}) . _Default . _Coerce;
 
+-- | One or more placement group names.
+--
+-- Default: Describes all your placement groups, or only those otherwise
+-- specified.
+dpgsGroupNames :: Lens' DescribePlacementGroups [Text]
+dpgsGroupNames = lens _dpgsGroupNames (\ s a -> s{_dpgsGroupNames = a}) . _Default . _Coerce;
+
 -- | 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'.
@@ -123,15 +123,15 @@
               ["Action" =:
                  ("DescribePlacementGroups" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
+               toQuery (toQueryList "Filter" <$> _dpgsFilters),
                toQuery
                  (toQueryList "GroupName" <$> _dpgsGroupNames),
-               toQuery (toQueryList "Filter" <$> _dpgsFilters),
                "DryRun" =: _dpgsDryRun]
 
 -- | /See:/ 'describePlacementGroupsResponse' smart constructor.
 data DescribePlacementGroupsResponse = DescribePlacementGroupsResponse'
     { _dpgrsPlacementGroups :: !(Maybe [PlacementGroup])
-    , _dpgrsStatus          :: !Int
+    , _dpgrsResponseStatus  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribePlacementGroupsResponse' with the minimum fields required to make a request.
@@ -140,14 +140,14 @@
 --
 -- * 'dpgrsPlacementGroups'
 --
--- * 'dpgrsStatus'
+-- * 'dpgrsResponseStatus'
 describePlacementGroupsResponse
-    :: Int -- ^ 'dpgrsStatus'
+    :: Int -- ^ 'dpgrsResponseStatus'
     -> DescribePlacementGroupsResponse
-describePlacementGroupsResponse pStatus_ =
+describePlacementGroupsResponse pResponseStatus_ =
     DescribePlacementGroupsResponse'
     { _dpgrsPlacementGroups = Nothing
-    , _dpgrsStatus = pStatus_
+    , _dpgrsResponseStatus = pResponseStatus_
     }
 
 -- | One or more placement groups.
@@ -155,5 +155,5 @@
 dpgrsPlacementGroups = lens _dpgrsPlacementGroups (\ s a -> s{_dpgrsPlacementGroups = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dpgrsStatus :: Lens' DescribePlacementGroupsResponse Int
-dpgrsStatus = lens _dpgrsStatus (\ s a -> s{_dpgrsStatus = a});
+dpgrsResponseStatus :: Lens' DescribePlacementGroupsResponse Int
+dpgrsResponseStatus = lens _dpgrsResponseStatus (\ s a -> s{_dpgrsResponseStatus = a});
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
@@ -32,8 +32,8 @@
     , DescribePrefixLists
     -- * Request Lenses
     , dplFilters
-    , dplNextToken
     , dplPrefixListIds
+    , dplNextToken
     , dplDryRun
     , dplMaxResults
 
@@ -43,7 +43,7 @@
     -- * Response Lenses
     , dplrsNextToken
     , dplrsPrefixLists
-    , dplrsStatus
+    , dplrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -55,8 +55,8 @@
 -- | /See:/ 'describePrefixLists' smart constructor.
 data DescribePrefixLists = DescribePrefixLists'
     { _dplFilters       :: !(Maybe [Filter])
-    , _dplNextToken     :: !(Maybe Text)
     , _dplPrefixListIds :: !(Maybe [Text])
+    , _dplNextToken     :: !(Maybe Text)
     , _dplDryRun        :: !(Maybe Bool)
     , _dplMaxResults    :: !(Maybe Int)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -67,10 +67,10 @@
 --
 -- * 'dplFilters'
 --
--- * 'dplNextToken'
---
 -- * 'dplPrefixListIds'
 --
+-- * 'dplNextToken'
+--
 -- * 'dplDryRun'
 --
 -- * 'dplMaxResults'
@@ -79,8 +79,8 @@
 describePrefixLists =
     DescribePrefixLists'
     { _dplFilters = Nothing
-    , _dplNextToken = Nothing
     , _dplPrefixListIds = Nothing
+    , _dplNextToken = Nothing
     , _dplDryRun = Nothing
     , _dplMaxResults = Nothing
     }
@@ -94,15 +94,15 @@
 dplFilters :: Lens' DescribePrefixLists [Filter]
 dplFilters = lens _dplFilters (\ s a -> s{_dplFilters = a}) . _Default . _Coerce;
 
+-- | One or more prefix list IDs.
+dplPrefixListIds :: Lens' DescribePrefixLists [Text]
+dplPrefixListIds = lens _dplPrefixListIds (\ s a -> s{_dplPrefixListIds = a}) . _Default . _Coerce;
+
 -- | The token for the next set of items to return. (You received this token
 -- from a prior call.)
 dplNextToken :: Lens' DescribePrefixLists (Maybe Text)
 dplNextToken = lens _dplNextToken (\ s a -> s{_dplNextToken = a});
 
--- | One or more prefix list IDs.
-dplPrefixListIds :: Lens' DescribePrefixLists [Text]
-dplPrefixListIds = lens _dplPrefixListIds (\ s a -> s{_dplPrefixListIds = a}) . _Default . _Coerce;
-
 -- | 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'.
@@ -144,17 +144,16 @@
               ["Action" =: ("DescribePrefixLists" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                toQuery (toQueryList "Filter" <$> _dplFilters),
-               "NextToken" =: _dplNextToken,
                toQuery
                  (toQueryList "PrefixListId" <$> _dplPrefixListIds),
-               "DryRun" =: _dplDryRun,
+               "NextToken" =: _dplNextToken, "DryRun" =: _dplDryRun,
                "MaxResults" =: _dplMaxResults]
 
 -- | /See:/ 'describePrefixListsResponse' smart constructor.
 data DescribePrefixListsResponse = DescribePrefixListsResponse'
-    { _dplrsNextToken   :: !(Maybe Text)
-    , _dplrsPrefixLists :: !(Maybe [PrefixList])
-    , _dplrsStatus      :: !Int
+    { _dplrsNextToken      :: !(Maybe Text)
+    , _dplrsPrefixLists    :: !(Maybe [PrefixList])
+    , _dplrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribePrefixListsResponse' with the minimum fields required to make a request.
@@ -165,15 +164,15 @@
 --
 -- * 'dplrsPrefixLists'
 --
--- * 'dplrsStatus'
+-- * 'dplrsResponseStatus'
 describePrefixListsResponse
-    :: Int -- ^ 'dplrsStatus'
+    :: Int -- ^ 'dplrsResponseStatus'
     -> DescribePrefixListsResponse
-describePrefixListsResponse pStatus_ =
+describePrefixListsResponse pResponseStatus_ =
     DescribePrefixListsResponse'
     { _dplrsNextToken = Nothing
     , _dplrsPrefixLists = Nothing
-    , _dplrsStatus = pStatus_
+    , _dplrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use when requesting the next set of items. If there are no
@@ -186,5 +185,5 @@
 dplrsPrefixLists = lens _dplrsPrefixLists (\ s a -> s{_dplrsPrefixLists = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dplrsStatus :: Lens' DescribePrefixListsResponse Int
-dplrsStatus = lens _dplrsStatus (\ s a -> s{_dplrsStatus = a});
+dplrsResponseStatus :: Lens' DescribePrefixListsResponse Int
+dplrsResponseStatus = lens _dplrsResponseStatus (\ s a -> s{_dplrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     , DescribeRegionsResponse
     -- * Response Lenses
     , drrsRegions
-    , drrsStatus
+    , drrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -123,8 +123,8 @@
 
 -- | /See:/ 'describeRegionsResponse' smart constructor.
 data DescribeRegionsResponse = DescribeRegionsResponse'
-    { _drrsRegions :: !(Maybe [RegionInfo])
-    , _drrsStatus  :: !Int
+    { _drrsRegions        :: !(Maybe [RegionInfo])
+    , _drrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeRegionsResponse' with the minimum fields required to make a request.
@@ -133,14 +133,14 @@
 --
 -- * 'drrsRegions'
 --
--- * 'drrsStatus'
+-- * 'drrsResponseStatus'
 describeRegionsResponse
-    :: Int -- ^ 'drrsStatus'
+    :: Int -- ^ 'drrsResponseStatus'
     -> DescribeRegionsResponse
-describeRegionsResponse pStatus_ =
+describeRegionsResponse pResponseStatus_ =
     DescribeRegionsResponse'
     { _drrsRegions = Nothing
-    , _drrsStatus = pStatus_
+    , _drrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more regions.
@@ -148,5 +148,5 @@
 drrsRegions = lens _drrsRegions (\ s a -> s{_drrsRegions = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drrsStatus :: Lens' DescribeRegionsResponse Int
-drrsStatus = lens _drrsStatus (\ s a -> s{_drrsStatus = a});
+drrsResponseStatus :: Lens' DescribeRegionsResponse Int
+drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});
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
@@ -32,8 +32,8 @@
     , DescribeReservedInstances
     -- * Request Lenses
     , driFilters
-    , driOfferingType
     , driReservedInstancesIds
+    , driOfferingType
     , driDryRun
 
     -- * Destructuring the Response
@@ -41,7 +41,7 @@
     , DescribeReservedInstancesResponse
     -- * Response Lenses
     , drirsReservedInstances
-    , drirsStatus
+    , drirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -53,8 +53,8 @@
 -- | /See:/ 'describeReservedInstances' smart constructor.
 data DescribeReservedInstances = DescribeReservedInstances'
     { _driFilters              :: !(Maybe [Filter])
-    , _driOfferingType         :: !(Maybe OfferingTypeValues)
     , _driReservedInstancesIds :: !(Maybe [Text])
+    , _driOfferingType         :: !(Maybe OfferingTypeValues)
     , _driDryRun               :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -64,18 +64,18 @@
 --
 -- * 'driFilters'
 --
--- * 'driOfferingType'
---
 -- * 'driReservedInstancesIds'
 --
+-- * 'driOfferingType'
+--
 -- * 'driDryRun'
 describeReservedInstances
     :: DescribeReservedInstances
 describeReservedInstances =
     DescribeReservedInstances'
     { _driFilters = Nothing
-    , _driOfferingType = Nothing
     , _driReservedInstancesIds = Nothing
+    , _driOfferingType = Nothing
     , _driDryRun = Nothing
     }
 
@@ -138,12 +138,6 @@
 driFilters :: Lens' DescribeReservedInstances [Filter]
 driFilters = lens _driFilters (\ s a -> s{_driFilters = a}) . _Default . _Coerce;
 
--- | 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.
-driOfferingType :: Lens' DescribeReservedInstances (Maybe OfferingTypeValues)
-driOfferingType = lens _driOfferingType (\ s a -> s{_driOfferingType = a});
-
 -- | One or more Reserved Instance IDs.
 --
 -- Default: Describes all your Reserved Instances, or only those otherwise
@@ -151,6 +145,12 @@
 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 2011-11-01 API version, you only have access to the
+-- 'Medium Utilization' Reserved Instance offering type.
+driOfferingType :: Lens' DescribeReservedInstances (Maybe OfferingTypeValues)
+driOfferingType = lens _driOfferingType (\ s a -> s{_driOfferingType = 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'.
@@ -183,16 +183,16 @@
                  ("DescribeReservedInstances" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                toQuery (toQueryList "Filter" <$> _driFilters),
-               "OfferingType" =: _driOfferingType,
                toQuery
                  (toQueryList "ReservedInstancesId" <$>
                     _driReservedInstancesIds),
+               "OfferingType" =: _driOfferingType,
                "DryRun" =: _driDryRun]
 
 -- | /See:/ 'describeReservedInstancesResponse' smart constructor.
 data DescribeReservedInstancesResponse = DescribeReservedInstancesResponse'
     { _drirsReservedInstances :: !(Maybe [ReservedInstances])
-    , _drirsStatus            :: !Int
+    , _drirsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeReservedInstancesResponse' with the minimum fields required to make a request.
@@ -201,14 +201,14 @@
 --
 -- * 'drirsReservedInstances'
 --
--- * 'drirsStatus'
+-- * 'drirsResponseStatus'
 describeReservedInstancesResponse
-    :: Int -- ^ 'drirsStatus'
+    :: Int -- ^ 'drirsResponseStatus'
     -> DescribeReservedInstancesResponse
-describeReservedInstancesResponse pStatus_ =
+describeReservedInstancesResponse pResponseStatus_ =
     DescribeReservedInstancesResponse'
     { _drirsReservedInstances = Nothing
-    , _drirsStatus = pStatus_
+    , _drirsResponseStatus = pResponseStatus_
     }
 
 -- | A list of Reserved Instances.
@@ -216,5 +216,5 @@
 drirsReservedInstances = lens _drirsReservedInstances (\ s a -> s{_drirsReservedInstances = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drirsStatus :: Lens' DescribeReservedInstancesResponse Int
-drirsStatus = lens _drirsStatus (\ s a -> s{_drirsStatus = a});
+drirsResponseStatus :: Lens' DescribeReservedInstancesResponse Int
+drirsResponseStatus = lens _drirsResponseStatus (\ s a -> s{_drirsResponseStatus = a});
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
@@ -59,7 +59,7 @@
     , DescribeReservedInstancesListingsResponse
     -- * Response Lenses
     , drilrsReservedInstancesListings
-    , drilrsStatus
+    , drilrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -152,7 +152,7 @@
 -- | /See:/ 'describeReservedInstancesListingsResponse' smart constructor.
 data DescribeReservedInstancesListingsResponse = DescribeReservedInstancesListingsResponse'
     { _drilrsReservedInstancesListings :: !(Maybe [ReservedInstancesListing])
-    , _drilrsStatus                    :: !Int
+    , _drilrsResponseStatus            :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeReservedInstancesListingsResponse' with the minimum fields required to make a request.
@@ -161,14 +161,14 @@
 --
 -- * 'drilrsReservedInstancesListings'
 --
--- * 'drilrsStatus'
+-- * 'drilrsResponseStatus'
 describeReservedInstancesListingsResponse
-    :: Int -- ^ 'drilrsStatus'
+    :: Int -- ^ 'drilrsResponseStatus'
     -> DescribeReservedInstancesListingsResponse
-describeReservedInstancesListingsResponse pStatus_ =
+describeReservedInstancesListingsResponse pResponseStatus_ =
     DescribeReservedInstancesListingsResponse'
     { _drilrsReservedInstancesListings = Nothing
-    , _drilrsStatus = pStatus_
+    , _drilrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the Reserved Instance listing.
@@ -176,5 +176,5 @@
 drilrsReservedInstancesListings = lens _drilrsReservedInstancesListings (\ s a -> s{_drilrsReservedInstancesListings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drilrsStatus :: Lens' DescribeReservedInstancesListingsResponse Int
-drilrsStatus = lens _drilrsStatus (\ s a -> s{_drilrsStatus = a});
+drilrsResponseStatus :: Lens' DescribeReservedInstancesListingsResponse Int
+drilrsResponseStatus = lens _drilrsResponseStatus (\ s a -> s{_drilrsResponseStatus = a});
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
@@ -46,7 +46,7 @@
     -- * Response Lenses
     , drimrsNextToken
     , drimrsReservedInstancesModifications
-    , drimrsStatus
+    , drimrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -179,7 +179,7 @@
 data DescribeReservedInstancesModificationsResponse = DescribeReservedInstancesModificationsResponse'
     { _drimrsNextToken                      :: !(Maybe Text)
     , _drimrsReservedInstancesModifications :: !(Maybe [ReservedInstancesModification])
-    , _drimrsStatus                         :: !Int
+    , _drimrsResponseStatus                 :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeReservedInstancesModificationsResponse' with the minimum fields required to make a request.
@@ -190,15 +190,15 @@
 --
 -- * 'drimrsReservedInstancesModifications'
 --
--- * 'drimrsStatus'
+-- * 'drimrsResponseStatus'
 describeReservedInstancesModificationsResponse
-    :: Int -- ^ 'drimrsStatus'
+    :: Int -- ^ 'drimrsResponseStatus'
     -> DescribeReservedInstancesModificationsResponse
-describeReservedInstancesModificationsResponse pStatus_ =
+describeReservedInstancesModificationsResponse pResponseStatus_ =
     DescribeReservedInstancesModificationsResponse'
     { _drimrsNextToken = Nothing
     , _drimrsReservedInstancesModifications = Nothing
-    , _drimrsStatus = pStatus_
+    , _drimrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -211,5 +211,5 @@
 drimrsReservedInstancesModifications = lens _drimrsReservedInstancesModifications (\ s a -> s{_drimrsReservedInstancesModifications = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drimrsStatus :: Lens' DescribeReservedInstancesModificationsResponse Int
-drimrsStatus = lens _drimrsStatus (\ s a -> s{_drimrsStatus = a});
+drimrsResponseStatus :: Lens' DescribeReservedInstancesModificationsResponse Int
+drimrsResponseStatus = lens _drimrsResponseStatus (\ s a -> s{_drimrsResponseStatus = a});
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
@@ -39,8 +39,8 @@
     -- * Request Lenses
     , drioMaxDuration
     , drioProductDescription
-    , drioIncludeMarketplace
     , drioFilters
+    , drioIncludeMarketplace
     , drioInstanceType
     , drioNextToken
     , drioMinDuration
@@ -48,9 +48,9 @@
     , drioOfferingType
     , drioReservedInstancesOfferingIds
     , drioInstanceTenancy
+    , drioMaxInstanceCount
     , drioDryRun
     , drioMaxResults
-    , drioMaxInstanceCount
 
     -- * Destructuring the Response
     , describeReservedInstancesOfferingsResponse
@@ -58,7 +58,7 @@
     -- * Response Lenses
     , driorsNextToken
     , driorsReservedInstancesOfferings
-    , driorsStatus
+    , driorsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -72,8 +72,8 @@
 data DescribeReservedInstancesOfferings = DescribeReservedInstancesOfferings'
     { _drioMaxDuration                  :: !(Maybe Integer)
     , _drioProductDescription           :: !(Maybe RIProductDescription)
-    , _drioIncludeMarketplace           :: !(Maybe Bool)
     , _drioFilters                      :: !(Maybe [Filter])
+    , _drioIncludeMarketplace           :: !(Maybe Bool)
     , _drioInstanceType                 :: !(Maybe InstanceType)
     , _drioNextToken                    :: !(Maybe Text)
     , _drioMinDuration                  :: !(Maybe Integer)
@@ -81,9 +81,9 @@
     , _drioOfferingType                 :: !(Maybe OfferingTypeValues)
     , _drioReservedInstancesOfferingIds :: !(Maybe [Text])
     , _drioInstanceTenancy              :: !(Maybe Tenancy)
+    , _drioMaxInstanceCount             :: !(Maybe Int)
     , _drioDryRun                       :: !(Maybe Bool)
     , _drioMaxResults                   :: !(Maybe Int)
-    , _drioMaxInstanceCount             :: !(Maybe Int)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeReservedInstancesOfferings' with the minimum fields required to make a request.
@@ -94,10 +94,10 @@
 --
 -- * 'drioProductDescription'
 --
--- * 'drioIncludeMarketplace'
---
 -- * 'drioFilters'
 --
+-- * 'drioIncludeMarketplace'
+--
 -- * 'drioInstanceType'
 --
 -- * 'drioNextToken'
@@ -112,19 +112,19 @@
 --
 -- * 'drioInstanceTenancy'
 --
+-- * 'drioMaxInstanceCount'
+--
 -- * 'drioDryRun'
 --
 -- * 'drioMaxResults'
---
--- * 'drioMaxInstanceCount'
 describeReservedInstancesOfferings
     :: DescribeReservedInstancesOfferings
 describeReservedInstancesOfferings =
     DescribeReservedInstancesOfferings'
     { _drioMaxDuration = Nothing
     , _drioProductDescription = Nothing
-    , _drioIncludeMarketplace = Nothing
     , _drioFilters = Nothing
+    , _drioIncludeMarketplace = Nothing
     , _drioInstanceType = Nothing
     , _drioNextToken = Nothing
     , _drioMinDuration = Nothing
@@ -132,9 +132,9 @@
     , _drioOfferingType = Nothing
     , _drioReservedInstancesOfferingIds = Nothing
     , _drioInstanceTenancy = Nothing
+    , _drioMaxInstanceCount = Nothing
     , _drioDryRun = Nothing
     , _drioMaxResults = Nothing
-    , _drioMaxInstanceCount = Nothing
     }
 
 -- | The maximum duration (in seconds) to filter when searching for
@@ -149,10 +149,6 @@
 drioProductDescription :: Lens' DescribeReservedInstancesOfferings (Maybe RIProductDescription)
 drioProductDescription = lens _drioProductDescription (\ s a -> s{_drioProductDescription = a});
 
--- | Include Marketplace offerings in the response.
-drioIncludeMarketplace :: Lens' DescribeReservedInstancesOfferings (Maybe Bool)
-drioIncludeMarketplace = lens _drioIncludeMarketplace (\ s a -> s{_drioIncludeMarketplace = a});
-
 -- | One or more filters.
 --
 -- -   'availability-zone' - The Availability Zone where the Reserved
@@ -195,6 +191,10 @@
 drioFilters :: Lens' DescribeReservedInstancesOfferings [Filter]
 drioFilters = lens _drioFilters (\ s a -> s{_drioFilters = a}) . _Default . _Coerce;
 
+-- | Include 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
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types>
@@ -235,6 +235,12 @@
 drioInstanceTenancy :: Lens' DescribeReservedInstancesOfferings (Maybe Tenancy)
 drioInstanceTenancy = lens _drioInstanceTenancy (\ s a -> s{_drioInstanceTenancy = a});
 
+-- | The maximum number of instances to filter when searching for offerings.
+--
+-- Default: 20
+drioMaxInstanceCount :: Lens' DescribeReservedInstancesOfferings (Maybe Int)
+drioMaxInstanceCount = lens _drioMaxInstanceCount (\ s a -> s{_drioMaxInstanceCount = 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'.
@@ -251,12 +257,6 @@
 drioMaxResults :: Lens' DescribeReservedInstancesOfferings (Maybe Int)
 drioMaxResults = lens _drioMaxResults (\ s a -> s{_drioMaxResults = a});
 
--- | The maximum number of instances to filter when searching for offerings.
---
--- Default: 20
-drioMaxInstanceCount :: Lens' DescribeReservedInstancesOfferings (Maybe Int)
-drioMaxInstanceCount = lens _drioMaxInstanceCount (\ s a -> s{_drioMaxInstanceCount = a});
-
 instance AWSPager DescribeReservedInstancesOfferings
          where
         page rq rs
@@ -297,8 +297,8 @@
                "Version" =: ("2015-04-15" :: ByteString),
                "MaxDuration" =: _drioMaxDuration,
                "ProductDescription" =: _drioProductDescription,
-               "IncludeMarketplace" =: _drioIncludeMarketplace,
                toQuery (toQueryList "Filter" <$> _drioFilters),
+               "IncludeMarketplace" =: _drioIncludeMarketplace,
                "InstanceType" =: _drioInstanceType,
                "NextToken" =: _drioNextToken,
                "MinDuration" =: _drioMinDuration,
@@ -308,15 +308,15 @@
                  (toQueryList "ReservedInstancesOfferingId" <$>
                     _drioReservedInstancesOfferingIds),
                "InstanceTenancy" =: _drioInstanceTenancy,
+               "MaxInstanceCount" =: _drioMaxInstanceCount,
                "DryRun" =: _drioDryRun,
-               "MaxResults" =: _drioMaxResults,
-               "MaxInstanceCount" =: _drioMaxInstanceCount]
+               "MaxResults" =: _drioMaxResults]
 
 -- | /See:/ 'describeReservedInstancesOfferingsResponse' smart constructor.
 data DescribeReservedInstancesOfferingsResponse = DescribeReservedInstancesOfferingsResponse'
     { _driorsNextToken                  :: !(Maybe Text)
     , _driorsReservedInstancesOfferings :: !(Maybe [ReservedInstancesOffering])
-    , _driorsStatus                     :: !Int
+    , _driorsResponseStatus             :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeReservedInstancesOfferingsResponse' with the minimum fields required to make a request.
@@ -327,15 +327,15 @@
 --
 -- * 'driorsReservedInstancesOfferings'
 --
--- * 'driorsStatus'
+-- * 'driorsResponseStatus'
 describeReservedInstancesOfferingsResponse
-    :: Int -- ^ 'driorsStatus'
+    :: Int -- ^ 'driorsResponseStatus'
     -> DescribeReservedInstancesOfferingsResponse
-describeReservedInstancesOfferingsResponse pStatus_ =
+describeReservedInstancesOfferingsResponse pResponseStatus_ =
     DescribeReservedInstancesOfferingsResponse'
     { _driorsNextToken = Nothing
     , _driorsReservedInstancesOfferings = Nothing
-    , _driorsStatus = pStatus_
+    , _driorsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -348,5 +348,5 @@
 driorsReservedInstancesOfferings = lens _driorsReservedInstancesOfferings (\ s a -> s{_driorsReservedInstancesOfferings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-driorsStatus :: Lens' DescribeReservedInstancesOfferingsResponse Int
-driorsStatus = lens _driorsStatus (\ s a -> s{_driorsStatus = a});
+driorsResponseStatus :: Lens' DescribeReservedInstancesOfferingsResponse Int
+driorsResponseStatus = lens _driorsResponseStatus (\ s a -> s{_driorsResponseStatus = a});
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
@@ -45,7 +45,7 @@
     , DescribeRouteTablesResponse
     -- * Response Lenses
     , drtrsRouteTables
-    , drtrsStatus
+    , drtrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -185,8 +185,8 @@
 
 -- | /See:/ 'describeRouteTablesResponse' smart constructor.
 data DescribeRouteTablesResponse = DescribeRouteTablesResponse'
-    { _drtrsRouteTables :: !(Maybe [RouteTable])
-    , _drtrsStatus      :: !Int
+    { _drtrsRouteTables    :: !(Maybe [RouteTable])
+    , _drtrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeRouteTablesResponse' with the minimum fields required to make a request.
@@ -195,14 +195,14 @@
 --
 -- * 'drtrsRouteTables'
 --
--- * 'drtrsStatus'
+-- * 'drtrsResponseStatus'
 describeRouteTablesResponse
-    :: Int -- ^ 'drtrsStatus'
+    :: Int -- ^ 'drtrsResponseStatus'
     -> DescribeRouteTablesResponse
-describeRouteTablesResponse pStatus_ =
+describeRouteTablesResponse pResponseStatus_ =
     DescribeRouteTablesResponse'
     { _drtrsRouteTables = Nothing
-    , _drtrsStatus = pStatus_
+    , _drtrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more route tables.
@@ -210,5 +210,5 @@
 drtrsRouteTables = lens _drtrsRouteTables (\ s a -> s{_drtrsRouteTables = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drtrsStatus :: Lens' DescribeRouteTablesResponse Int
-drtrsStatus = lens _drtrsStatus (\ s a -> s{_drtrsStatus = a});
+drtrsResponseStatus :: Lens' DescribeRouteTablesResponse Int
+drtrsResponseStatus = lens _drtrsResponseStatus (\ s a -> s{_drtrsResponseStatus = a});
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
@@ -34,8 +34,8 @@
       describeSecurityGroups
     , DescribeSecurityGroups
     -- * Request Lenses
-    , dsgsGroupNames
     , dsgsFilters
+    , dsgsGroupNames
     , dsgsGroupIds
     , dsgsDryRun
 
@@ -44,7 +44,7 @@
     , DescribeSecurityGroupsResponse
     -- * Response Lenses
     , dsgrsSecurityGroups
-    , dsgrsStatus
+    , dsgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -55,8 +55,8 @@
 
 -- | /See:/ 'describeSecurityGroups' smart constructor.
 data DescribeSecurityGroups = DescribeSecurityGroups'
-    { _dsgsGroupNames :: !(Maybe [Text])
-    , _dsgsFilters    :: !(Maybe [Filter])
+    { _dsgsFilters    :: !(Maybe [Filter])
+    , _dsgsGroupNames :: !(Maybe [Text])
     , _dsgsGroupIds   :: !(Maybe [Text])
     , _dsgsDryRun     :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -65,10 +65,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsgsGroupNames'
---
 -- * 'dsgsFilters'
 --
+-- * 'dsgsGroupNames'
+--
 -- * 'dsgsGroupIds'
 --
 -- * 'dsgsDryRun'
@@ -76,21 +76,12 @@
     :: DescribeSecurityGroups
 describeSecurityGroups =
     DescribeSecurityGroups'
-    { _dsgsGroupNames = Nothing
-    , _dsgsFilters = Nothing
+    { _dsgsFilters = Nothing
+    , _dsgsGroupNames = Nothing
     , _dsgsGroupIds = Nothing
     , _dsgsDryRun = Nothing
     }
 
--- | [EC2-Classic and default VPC only] One or more security group names. You
--- can specify either the security group name or the security group ID. For
--- security groups in a nondefault VPC, use the 'group-name' filter to
--- describe security groups by name.
---
--- Default: Describes all your security groups.
-dsgsGroupNames :: Lens' DescribeSecurityGroups [Text]
-dsgsGroupNames = lens _dsgsGroupNames (\ s a -> s{_dsgsGroupNames = a}) . _Default . _Coerce;
-
 -- | One or more filters.
 --
 -- -   'description' - The description of the security group.
@@ -135,6 +126,15 @@
 dsgsFilters :: Lens' DescribeSecurityGroups [Filter]
 dsgsFilters = lens _dsgsFilters (\ s a -> s{_dsgsFilters = a}) . _Default . _Coerce;
 
+-- | [EC2-Classic and default VPC only] One or more security group names. You
+-- can specify either the security group name or the security group ID. For
+-- security groups in a nondefault VPC, use the 'group-name' filter to
+-- describe security groups by name.
+--
+-- Default: Describes all your security groups.
+dsgsGroupNames :: Lens' DescribeSecurityGroups [Text]
+dsgsGroupNames = lens _dsgsGroupNames (\ s a -> s{_dsgsGroupNames = a}) . _Default . _Coerce;
+
 -- | One or more security group IDs. Required for security groups in a
 -- nondefault VPC.
 --
@@ -173,16 +173,16 @@
               ["Action" =:
                  ("DescribeSecurityGroups" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
+               toQuery (toQueryList "Filter" <$> _dsgsFilters),
                toQuery
                  (toQueryList "GroupName" <$> _dsgsGroupNames),
-               toQuery (toQueryList "Filter" <$> _dsgsFilters),
                toQuery (toQueryList "GroupId" <$> _dsgsGroupIds),
                "DryRun" =: _dsgsDryRun]
 
 -- | /See:/ 'describeSecurityGroupsResponse' smart constructor.
 data DescribeSecurityGroupsResponse = DescribeSecurityGroupsResponse'
     { _dsgrsSecurityGroups :: !(Maybe [SecurityGroup])
-    , _dsgrsStatus         :: !Int
+    , _dsgrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSecurityGroupsResponse' with the minimum fields required to make a request.
@@ -191,14 +191,14 @@
 --
 -- * 'dsgrsSecurityGroups'
 --
--- * 'dsgrsStatus'
+-- * 'dsgrsResponseStatus'
 describeSecurityGroupsResponse
-    :: Int -- ^ 'dsgrsStatus'
+    :: Int -- ^ 'dsgrsResponseStatus'
     -> DescribeSecurityGroupsResponse
-describeSecurityGroupsResponse pStatus_ =
+describeSecurityGroupsResponse pResponseStatus_ =
     DescribeSecurityGroupsResponse'
     { _dsgrsSecurityGroups = Nothing
-    , _dsgrsStatus = pStatus_
+    , _dsgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more security groups.
@@ -206,5 +206,5 @@
 dsgrsSecurityGroups = lens _dsgrsSecurityGroups (\ s a -> s{_dsgrsSecurityGroups = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dsgrsStatus :: Lens' DescribeSecurityGroupsResponse Int
-dsgrsStatus = lens _dsgrsStatus (\ s a -> s{_dsgrsStatus = a});
+dsgrsResponseStatus :: Lens' DescribeSecurityGroupsResponse Int
+dsgrsResponseStatus = lens _dsgrsResponseStatus (\ s a -> s{_dsgrsResponseStatus = a});
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
@@ -43,7 +43,7 @@
     , dsarsCreateVolumePermissions
     , dsarsProductCodes
     , dsarsSnapshotId
-    , dsarsStatus
+    , dsarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -131,7 +131,7 @@
     { _dsarsCreateVolumePermissions :: !(Maybe [CreateVolumePermission])
     , _dsarsProductCodes            :: !(Maybe [ProductCode])
     , _dsarsSnapshotId              :: !(Maybe Text)
-    , _dsarsStatus                  :: !Int
+    , _dsarsResponseStatus          :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSnapshotAttributeResponse' with the minimum fields required to make a request.
@@ -144,16 +144,16 @@
 --
 -- * 'dsarsSnapshotId'
 --
--- * 'dsarsStatus'
+-- * 'dsarsResponseStatus'
 describeSnapshotAttributeResponse
-    :: Int -- ^ 'dsarsStatus'
+    :: Int -- ^ 'dsarsResponseStatus'
     -> DescribeSnapshotAttributeResponse
-describeSnapshotAttributeResponse pStatus_ =
+describeSnapshotAttributeResponse pResponseStatus_ =
     DescribeSnapshotAttributeResponse'
     { _dsarsCreateVolumePermissions = Nothing
     , _dsarsProductCodes = Nothing
     , _dsarsSnapshotId = Nothing
-    , _dsarsStatus = pStatus_
+    , _dsarsResponseStatus = pResponseStatus_
     }
 
 -- | A list of permissions for creating volumes from the snapshot.
@@ -169,5 +169,5 @@
 dsarsSnapshotId = lens _dsarsSnapshotId (\ s a -> s{_dsarsSnapshotId = a});
 
 -- | The response status code.
-dsarsStatus :: Lens' DescribeSnapshotAttributeResponse Int
-dsarsStatus = lens _dsarsStatus (\ s a -> s{_dsarsStatus = a});
+dsarsResponseStatus :: Lens' DescribeSnapshotAttributeResponse Int
+dsarsResponseStatus = lens _dsarsResponseStatus (\ s a -> s{_dsarsResponseStatus = a});
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
@@ -89,7 +89,7 @@
     -- * Response Lenses
     , dssrsNextToken
     , dssrsSnapshots
-    , dssrsStatus
+    , dssrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -266,9 +266,9 @@
 
 -- | /See:/ 'describeSnapshotsResponse' smart constructor.
 data DescribeSnapshotsResponse = DescribeSnapshotsResponse'
-    { _dssrsNextToken :: !(Maybe Text)
-    , _dssrsSnapshots :: !(Maybe [Snapshot])
-    , _dssrsStatus    :: !Int
+    { _dssrsNextToken      :: !(Maybe Text)
+    , _dssrsSnapshots      :: !(Maybe [Snapshot])
+    , _dssrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSnapshotsResponse' with the minimum fields required to make a request.
@@ -279,15 +279,15 @@
 --
 -- * 'dssrsSnapshots'
 --
--- * 'dssrsStatus'
+-- * 'dssrsResponseStatus'
 describeSnapshotsResponse
-    :: Int -- ^ 'dssrsStatus'
+    :: Int -- ^ 'dssrsResponseStatus'
     -> DescribeSnapshotsResponse
-describeSnapshotsResponse pStatus_ =
+describeSnapshotsResponse pResponseStatus_ =
     DescribeSnapshotsResponse'
     { _dssrsNextToken = Nothing
     , _dssrsSnapshots = Nothing
-    , _dssrsStatus = pStatus_
+    , _dssrsResponseStatus = pResponseStatus_
     }
 
 -- | The 'NextToken' value to include in a future 'DescribeSnapshots'
@@ -302,5 +302,5 @@
 dssrsSnapshots = lens _dssrsSnapshots (\ s a -> s{_dssrsSnapshots = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dssrsStatus :: Lens' DescribeSnapshotsResponse Int
-dssrsStatus = lens _dssrsStatus (\ s a -> s{_dssrsStatus = a});
+dssrsResponseStatus :: Lens' DescribeSnapshotsResponse Int
+dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeSpotDatafeedSubscriptionResponse
     -- * Response Lenses
     , dsdsrsSpotDatafeedSubscription
-    , dsdsrsStatus
+    , dsdsrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -105,7 +105,7 @@
 -- /See:/ 'describeSpotDatafeedSubscriptionResponse' smart constructor.
 data DescribeSpotDatafeedSubscriptionResponse = DescribeSpotDatafeedSubscriptionResponse'
     { _dsdsrsSpotDatafeedSubscription :: !(Maybe SpotDatafeedSubscription)
-    , _dsdsrsStatus                   :: !Int
+    , _dsdsrsResponseStatus           :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSpotDatafeedSubscriptionResponse' with the minimum fields required to make a request.
@@ -114,14 +114,14 @@
 --
 -- * 'dsdsrsSpotDatafeedSubscription'
 --
--- * 'dsdsrsStatus'
+-- * 'dsdsrsResponseStatus'
 describeSpotDatafeedSubscriptionResponse
-    :: Int -- ^ 'dsdsrsStatus'
+    :: Int -- ^ 'dsdsrsResponseStatus'
     -> DescribeSpotDatafeedSubscriptionResponse
-describeSpotDatafeedSubscriptionResponse pStatus_ =
+describeSpotDatafeedSubscriptionResponse pResponseStatus_ =
     DescribeSpotDatafeedSubscriptionResponse'
     { _dsdsrsSpotDatafeedSubscription = Nothing
-    , _dsdsrsStatus = pStatus_
+    , _dsdsrsResponseStatus = pResponseStatus_
     }
 
 -- | The Spot Instance data feed subscription.
@@ -129,5 +129,5 @@
 dsdsrsSpotDatafeedSubscription = lens _dsdsrsSpotDatafeedSubscription (\ s a -> s{_dsdsrsSpotDatafeedSubscription = a});
 
 -- | The response status code.
-dsdsrsStatus :: Lens' DescribeSpotDatafeedSubscriptionResponse Int
-dsdsrsStatus = lens _dsdsrsStatus (\ s a -> s{_dsdsrsStatus = a});
+dsdsrsResponseStatus :: Lens' DescribeSpotDatafeedSubscriptionResponse Int
+dsdsrsResponseStatus = lens _dsdsrsResponseStatus (\ s a -> s{_dsdsrsResponseStatus = a});
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
@@ -37,7 +37,7 @@
     , DescribeSpotFleetInstancesResponse
     -- * Response Lenses
     , dsfirsNextToken
-    , dsfirsStatus
+    , dsfirsResponseStatus
     , dsfirsSpotFleetRequestId
     , dsfirsActiveInstances
     ) where
@@ -138,7 +138,7 @@
 -- /See:/ 'describeSpotFleetInstancesResponse' smart constructor.
 data DescribeSpotFleetInstancesResponse = DescribeSpotFleetInstancesResponse'
     { _dsfirsNextToken          :: !(Maybe Text)
-    , _dsfirsStatus             :: !Int
+    , _dsfirsResponseStatus     :: !Int
     , _dsfirsSpotFleetRequestId :: !Text
     , _dsfirsActiveInstances    :: ![ActiveInstance]
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -149,19 +149,19 @@
 --
 -- * 'dsfirsNextToken'
 --
--- * 'dsfirsStatus'
+-- * 'dsfirsResponseStatus'
 --
 -- * 'dsfirsSpotFleetRequestId'
 --
 -- * 'dsfirsActiveInstances'
 describeSpotFleetInstancesResponse
-    :: Int -- ^ 'dsfirsStatus'
+    :: Int -- ^ 'dsfirsResponseStatus'
     -> Text -- ^ 'dsfirsSpotFleetRequestId'
     -> DescribeSpotFleetInstancesResponse
-describeSpotFleetInstancesResponse pStatus_ pSpotFleetRequestId_ =
+describeSpotFleetInstancesResponse pResponseStatus_ pSpotFleetRequestId_ =
     DescribeSpotFleetInstancesResponse'
     { _dsfirsNextToken = Nothing
-    , _dsfirsStatus = pStatus_
+    , _dsfirsResponseStatus = pResponseStatus_
     , _dsfirsSpotFleetRequestId = pSpotFleetRequestId_
     , _dsfirsActiveInstances = mempty
     }
@@ -172,8 +172,8 @@
 dsfirsNextToken = lens _dsfirsNextToken (\ s a -> s{_dsfirsNextToken = a});
 
 -- | The response status code.
-dsfirsStatus :: Lens' DescribeSpotFleetInstancesResponse Int
-dsfirsStatus = lens _dsfirsStatus (\ s a -> s{_dsfirsStatus = a});
+dsfirsResponseStatus :: Lens' DescribeSpotFleetInstancesResponse Int
+dsfirsResponseStatus = lens _dsfirsResponseStatus (\ s a -> s{_dsfirsResponseStatus = a});
 
 -- | The ID of the Spot fleet request.
 dsfirsSpotFleetRequestId :: Lens' DescribeSpotFleetInstancesResponse Text
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
@@ -44,7 +44,7 @@
     , DescribeSpotFleetRequestHistoryResponse
     -- * Response Lenses
     , dsfrhrsNextToken
-    , dsfrhrsStatus
+    , dsfrhrsResponseStatus
     , dsfrhrsSpotFleetRequestId
     , dsfrhrsStartTime
     , dsfrhrsLastEvaluatedTime
@@ -172,7 +172,7 @@
 -- /See:/ 'describeSpotFleetRequestHistoryResponse' smart constructor.
 data DescribeSpotFleetRequestHistoryResponse = DescribeSpotFleetRequestHistoryResponse'
     { _dsfrhrsNextToken          :: !(Maybe Text)
-    , _dsfrhrsStatus             :: !Int
+    , _dsfrhrsResponseStatus     :: !Int
     , _dsfrhrsSpotFleetRequestId :: !Text
     , _dsfrhrsStartTime          :: !ISO8601
     , _dsfrhrsLastEvaluatedTime  :: !ISO8601
@@ -185,7 +185,7 @@
 --
 -- * 'dsfrhrsNextToken'
 --
--- * 'dsfrhrsStatus'
+-- * 'dsfrhrsResponseStatus'
 --
 -- * 'dsfrhrsSpotFleetRequestId'
 --
@@ -195,15 +195,15 @@
 --
 -- * 'dsfrhrsHistoryRecords'
 describeSpotFleetRequestHistoryResponse
-    :: Int -- ^ 'dsfrhrsStatus'
+    :: Int -- ^ 'dsfrhrsResponseStatus'
     -> Text -- ^ 'dsfrhrsSpotFleetRequestId'
     -> UTCTime -- ^ 'dsfrhrsStartTime'
     -> UTCTime -- ^ 'dsfrhrsLastEvaluatedTime'
     -> DescribeSpotFleetRequestHistoryResponse
-describeSpotFleetRequestHistoryResponse pStatus_ pSpotFleetRequestId_ pStartTime_ pLastEvaluatedTime_ =
+describeSpotFleetRequestHistoryResponse pResponseStatus_ pSpotFleetRequestId_ pStartTime_ pLastEvaluatedTime_ =
     DescribeSpotFleetRequestHistoryResponse'
     { _dsfrhrsNextToken = Nothing
-    , _dsfrhrsStatus = pStatus_
+    , _dsfrhrsResponseStatus = pResponseStatus_
     , _dsfrhrsSpotFleetRequestId = pSpotFleetRequestId_
     , _dsfrhrsStartTime = _Time # pStartTime_
     , _dsfrhrsLastEvaluatedTime = _Time # pLastEvaluatedTime_
@@ -216,8 +216,8 @@
 dsfrhrsNextToken = lens _dsfrhrsNextToken (\ s a -> s{_dsfrhrsNextToken = a});
 
 -- | The response status code.
-dsfrhrsStatus :: Lens' DescribeSpotFleetRequestHistoryResponse Int
-dsfrhrsStatus = lens _dsfrhrsStatus (\ s a -> s{_dsfrhrsStatus = a});
+dsfrhrsResponseStatus :: Lens' DescribeSpotFleetRequestHistoryResponse Int
+dsfrhrsResponseStatus = lens _dsfrhrsResponseStatus (\ s a -> s{_dsfrhrsResponseStatus = a});
 
 -- | The ID of the Spot fleet request.
 dsfrhrsSpotFleetRequestId :: Lens' DescribeSpotFleetRequestHistoryResponse Text
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
@@ -37,7 +37,7 @@
     , DescribeSpotFleetRequestsResponse
     -- * Response Lenses
     , dsfrrsNextToken
-    , dsfrrsStatus
+    , dsfrrsResponseStatus
     , dsfrrsSpotFleetRequestConfigs
     ) where
 
@@ -136,7 +136,7 @@
 -- /See:/ 'describeSpotFleetRequestsResponse' smart constructor.
 data DescribeSpotFleetRequestsResponse = DescribeSpotFleetRequestsResponse'
     { _dsfrrsNextToken               :: !(Maybe Text)
-    , _dsfrrsStatus                  :: !Int
+    , _dsfrrsResponseStatus          :: !Int
     , _dsfrrsSpotFleetRequestConfigs :: ![SpotFleetRequestConfig]
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -146,16 +146,16 @@
 --
 -- * 'dsfrrsNextToken'
 --
--- * 'dsfrrsStatus'
+-- * 'dsfrrsResponseStatus'
 --
 -- * 'dsfrrsSpotFleetRequestConfigs'
 describeSpotFleetRequestsResponse
-    :: Int -- ^ 'dsfrrsStatus'
+    :: Int -- ^ 'dsfrrsResponseStatus'
     -> DescribeSpotFleetRequestsResponse
-describeSpotFleetRequestsResponse pStatus_ =
+describeSpotFleetRequestsResponse pResponseStatus_ =
     DescribeSpotFleetRequestsResponse'
     { _dsfrrsNextToken = Nothing
-    , _dsfrrsStatus = pStatus_
+    , _dsfrrsResponseStatus = pResponseStatus_
     , _dsfrrsSpotFleetRequestConfigs = mempty
     }
 
@@ -165,8 +165,8 @@
 dsfrrsNextToken = lens _dsfrrsNextToken (\ s a -> s{_dsfrrsNextToken = a});
 
 -- | The response status code.
-dsfrrsStatus :: Lens' DescribeSpotFleetRequestsResponse Int
-dsfrrsStatus = lens _dsfrrsStatus (\ s a -> s{_dsfrrsStatus = a});
+dsfrrsResponseStatus :: Lens' DescribeSpotFleetRequestsResponse Int
+dsfrrsResponseStatus = lens _dsfrrsResponseStatus (\ s a -> s{_dsfrrsResponseStatus = a});
 
 -- | Information about the configuration of your Spot fleet.
 dsfrrsSpotFleetRequestConfigs :: Lens' DescribeSpotFleetRequestsResponse [SpotFleetRequestConfig]
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
@@ -49,7 +49,7 @@
     , DescribeSpotInstanceRequestsResponse
     -- * Response Lenses
     , dsirrsSpotInstanceRequests
-    , dsirrsStatus
+    , dsirrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -254,7 +254,7 @@
 -- /See:/ 'describeSpotInstanceRequestsResponse' smart constructor.
 data DescribeSpotInstanceRequestsResponse = DescribeSpotInstanceRequestsResponse'
     { _dsirrsSpotInstanceRequests :: !(Maybe [SpotInstanceRequest])
-    , _dsirrsStatus               :: !Int
+    , _dsirrsResponseStatus       :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSpotInstanceRequestsResponse' with the minimum fields required to make a request.
@@ -263,14 +263,14 @@
 --
 -- * 'dsirrsSpotInstanceRequests'
 --
--- * 'dsirrsStatus'
+-- * 'dsirrsResponseStatus'
 describeSpotInstanceRequestsResponse
-    :: Int -- ^ 'dsirrsStatus'
+    :: Int -- ^ 'dsirrsResponseStatus'
     -> DescribeSpotInstanceRequestsResponse
-describeSpotInstanceRequestsResponse pStatus_ =
+describeSpotInstanceRequestsResponse pResponseStatus_ =
     DescribeSpotInstanceRequestsResponse'
     { _dsirrsSpotInstanceRequests = Nothing
-    , _dsirrsStatus = pStatus_
+    , _dsirrsResponseStatus = pResponseStatus_
     }
 
 -- | One or more Spot Instance requests.
@@ -278,5 +278,5 @@
 dsirrsSpotInstanceRequests = lens _dsirrsSpotInstanceRequests (\ s a -> s{_dsirrsSpotInstanceRequests = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dsirrsStatus :: Lens' DescribeSpotInstanceRequestsResponse Int
-dsirrsStatus = lens _dsirrsStatus (\ s a -> s{_dsirrsStatus = a});
+dsirrsResponseStatus :: Lens' DescribeSpotInstanceRequestsResponse Int
+dsirrsResponseStatus = lens _dsirrsResponseStatus (\ s a -> s{_dsirrsResponseStatus = a});
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
@@ -55,7 +55,7 @@
     -- * Response Lenses
     , dsphrsNextToken
     , dsphrsSpotPriceHistory
-    , dsphrsStatus
+    , dsphrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -232,7 +232,7 @@
 data DescribeSpotPriceHistoryResponse = DescribeSpotPriceHistoryResponse'
     { _dsphrsNextToken        :: !(Maybe Text)
     , _dsphrsSpotPriceHistory :: !(Maybe [SpotPrice])
-    , _dsphrsStatus           :: !Int
+    , _dsphrsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSpotPriceHistoryResponse' with the minimum fields required to make a request.
@@ -243,15 +243,15 @@
 --
 -- * 'dsphrsSpotPriceHistory'
 --
--- * 'dsphrsStatus'
+-- * 'dsphrsResponseStatus'
 describeSpotPriceHistoryResponse
-    :: Int -- ^ 'dsphrsStatus'
+    :: Int -- ^ 'dsphrsResponseStatus'
     -> DescribeSpotPriceHistoryResponse
-describeSpotPriceHistoryResponse pStatus_ =
+describeSpotPriceHistoryResponse pResponseStatus_ =
     DescribeSpotPriceHistoryResponse'
     { _dsphrsNextToken = Nothing
     , _dsphrsSpotPriceHistory = Nothing
-    , _dsphrsStatus = pStatus_
+    , _dsphrsResponseStatus = pResponseStatus_
     }
 
 -- | The token required to retrieve the next set of results. This value is
@@ -264,5 +264,5 @@
 dsphrsSpotPriceHistory = lens _dsphrsSpotPriceHistory (\ s a -> s{_dsphrsSpotPriceHistory = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dsphrsStatus :: Lens' DescribeSpotPriceHistoryResponse Int
-dsphrsStatus = lens _dsphrsStatus (\ s a -> s{_dsphrsStatus = a});
+dsphrsResponseStatus :: Lens' DescribeSpotPriceHistoryResponse Int
+dsphrsResponseStatus = lens _dsphrsResponseStatus (\ s a -> s{_dsphrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , DescribeSubnetsResponse
     -- * Response Lenses
     , dsrsSubnets
-    , dsrsStatus
+    , dsrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -155,8 +155,8 @@
 
 -- | /See:/ 'describeSubnetsResponse' smart constructor.
 data DescribeSubnetsResponse = DescribeSubnetsResponse'
-    { _dsrsSubnets :: !(Maybe [Subnet])
-    , _dsrsStatus  :: !Int
+    { _dsrsSubnets        :: !(Maybe [Subnet])
+    , _dsrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSubnetsResponse' with the minimum fields required to make a request.
@@ -165,14 +165,14 @@
 --
 -- * 'dsrsSubnets'
 --
--- * 'dsrsStatus'
+-- * 'dsrsResponseStatus'
 describeSubnetsResponse
-    :: Int -- ^ 'dsrsStatus'
+    :: Int -- ^ 'dsrsResponseStatus'
     -> DescribeSubnetsResponse
-describeSubnetsResponse pStatus_ =
+describeSubnetsResponse pResponseStatus_ =
     DescribeSubnetsResponse'
     { _dsrsSubnets = Nothing
-    , _dsrsStatus = pStatus_
+    , _dsrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more subnets.
@@ -180,5 +180,5 @@
 dsrsSubnets = lens _dsrsSubnets (\ s a -> s{_dsrsSubnets = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dsrsStatus :: Lens' DescribeSubnetsResponse Int
-dsrsStatus = lens _dsrsStatus (\ s a -> s{_dsrsStatus = a});
+dsrsResponseStatus :: Lens' DescribeSubnetsResponse Int
+dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
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
@@ -44,7 +44,7 @@
     -- * Response Lenses
     , dtrsNextToken
     , dtrsTags
-    , dtrsStatus
+    , dtrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -156,9 +156,9 @@
 
 -- | /See:/ 'describeTagsResponse' smart constructor.
 data DescribeTagsResponse = DescribeTagsResponse'
-    { _dtrsNextToken :: !(Maybe Text)
-    , _dtrsTags      :: !(Maybe [TagDescription])
-    , _dtrsStatus    :: !Int
+    { _dtrsNextToken      :: !(Maybe Text)
+    , _dtrsTags           :: !(Maybe [TagDescription])
+    , _dtrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeTagsResponse' with the minimum fields required to make a request.
@@ -169,15 +169,15 @@
 --
 -- * 'dtrsTags'
 --
--- * 'dtrsStatus'
+-- * 'dtrsResponseStatus'
 describeTagsResponse
-    :: Int -- ^ 'dtrsStatus'
+    :: Int -- ^ 'dtrsResponseStatus'
     -> DescribeTagsResponse
-describeTagsResponse pStatus_ =
+describeTagsResponse pResponseStatus_ =
     DescribeTagsResponse'
     { _dtrsNextToken = Nothing
     , _dtrsTags = Nothing
-    , _dtrsStatus = pStatus_
+    , _dtrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -190,5 +190,5 @@
 dtrsTags = lens _dtrsTags (\ s a -> s{_dtrsTags = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dtrsStatus :: Lens' DescribeTagsResponse Int
-dtrsStatus = lens _dtrsStatus (\ s a -> s{_dtrsStatus = a});
+dtrsResponseStatus :: Lens' DescribeTagsResponse Int
+dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     , dvpcarsEnableDNSHostnames
     , dvpcarsEnableDNSSupport
     , dvpcarsVPCId
-    , dvpcarsStatus
+    , dvpcarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -121,7 +121,7 @@
     { _dvpcarsEnableDNSHostnames :: !(Maybe AttributeBooleanValue)
     , _dvpcarsEnableDNSSupport   :: !(Maybe AttributeBooleanValue)
     , _dvpcarsVPCId              :: !(Maybe Text)
-    , _dvpcarsStatus             :: !Int
+    , _dvpcarsResponseStatus     :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCAttributeResponse' with the minimum fields required to make a request.
@@ -134,16 +134,16 @@
 --
 -- * 'dvpcarsVPCId'
 --
--- * 'dvpcarsStatus'
+-- * 'dvpcarsResponseStatus'
 describeVPCAttributeResponse
-    :: Int -- ^ 'dvpcarsStatus'
+    :: Int -- ^ 'dvpcarsResponseStatus'
     -> DescribeVPCAttributeResponse
-describeVPCAttributeResponse pStatus_ =
+describeVPCAttributeResponse pResponseStatus_ =
     DescribeVPCAttributeResponse'
     { _dvpcarsEnableDNSHostnames = Nothing
     , _dvpcarsEnableDNSSupport = Nothing
     , _dvpcarsVPCId = Nothing
-    , _dvpcarsStatus = pStatus_
+    , _dvpcarsResponseStatus = pResponseStatus_
     }
 
 -- | Indicates whether the instances launched in the VPC get DNS hostnames.
@@ -164,5 +164,5 @@
 dvpcarsVPCId = lens _dvpcarsVPCId (\ s a -> s{_dvpcarsVPCId = a});
 
 -- | The response status code.
-dvpcarsStatus :: Lens' DescribeVPCAttributeResponse Int
-dvpcarsStatus = lens _dvpcarsStatus (\ s a -> s{_dvpcarsStatus = a});
+dvpcarsResponseStatus :: Lens' DescribeVPCAttributeResponse Int
+dvpcarsResponseStatus = lens _dvpcarsResponseStatus (\ s a -> s{_dvpcarsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeVPCClassicLinkResponse
     -- * Response Lenses
     , dvclrsVPCs
-    , dvclrsStatus
+    , dvclrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -133,8 +133,8 @@
 
 -- | /See:/ 'describeVPCClassicLinkResponse' smart constructor.
 data DescribeVPCClassicLinkResponse = DescribeVPCClassicLinkResponse'
-    { _dvclrsVPCs   :: !(Maybe [VPCClassicLink])
-    , _dvclrsStatus :: !Int
+    { _dvclrsVPCs           :: !(Maybe [VPCClassicLink])
+    , _dvclrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCClassicLinkResponse' with the minimum fields required to make a request.
@@ -143,14 +143,14 @@
 --
 -- * 'dvclrsVPCs'
 --
--- * 'dvclrsStatus'
+-- * 'dvclrsResponseStatus'
 describeVPCClassicLinkResponse
-    :: Int -- ^ 'dvclrsStatus'
+    :: Int -- ^ 'dvclrsResponseStatus'
     -> DescribeVPCClassicLinkResponse
-describeVPCClassicLinkResponse pStatus_ =
+describeVPCClassicLinkResponse pResponseStatus_ =
     DescribeVPCClassicLinkResponse'
     { _dvclrsVPCs = Nothing
-    , _dvclrsStatus = pStatus_
+    , _dvclrsResponseStatus = pResponseStatus_
     }
 
 -- | The ClassicLink status of one or more VPCs.
@@ -158,5 +158,5 @@
 dvclrsVPCs = lens _dvclrsVPCs (\ s a -> s{_dvclrsVPCs = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvclrsStatus :: Lens' DescribeVPCClassicLinkResponse Int
-dvclrsStatus = lens _dvclrsStatus (\ s a -> s{_dvclrsStatus = a});
+dvclrsResponseStatus :: Lens' DescribeVPCClassicLinkResponse Int
+dvclrsResponseStatus = lens _dvclrsResponseStatus (\ s a -> s{_dvclrsResponseStatus = a});
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
@@ -38,7 +38,7 @@
     -- * Response Lenses
     , dvesrsServiceNames
     , dvesrsNextToken
-    , dvesrsStatus
+    , dvesrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -124,9 +124,9 @@
 
 -- | /See:/ 'describeVPCEndpointServicesResponse' smart constructor.
 data DescribeVPCEndpointServicesResponse = DescribeVPCEndpointServicesResponse'
-    { _dvesrsServiceNames :: !(Maybe [Text])
-    , _dvesrsNextToken    :: !(Maybe Text)
-    , _dvesrsStatus       :: !Int
+    { _dvesrsServiceNames   :: !(Maybe [Text])
+    , _dvesrsNextToken      :: !(Maybe Text)
+    , _dvesrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCEndpointServicesResponse' with the minimum fields required to make a request.
@@ -137,15 +137,15 @@
 --
 -- * 'dvesrsNextToken'
 --
--- * 'dvesrsStatus'
+-- * 'dvesrsResponseStatus'
 describeVPCEndpointServicesResponse
-    :: Int -- ^ 'dvesrsStatus'
+    :: Int -- ^ 'dvesrsResponseStatus'
     -> DescribeVPCEndpointServicesResponse
-describeVPCEndpointServicesResponse pStatus_ =
+describeVPCEndpointServicesResponse pResponseStatus_ =
     DescribeVPCEndpointServicesResponse'
     { _dvesrsServiceNames = Nothing
     , _dvesrsNextToken = Nothing
-    , _dvesrsStatus = pStatus_
+    , _dvesrsResponseStatus = pResponseStatus_
     }
 
 -- | A list of supported AWS services.
@@ -158,5 +158,5 @@
 dvesrsNextToken = lens _dvesrsNextToken (\ s a -> s{_dvesrsNextToken = a});
 
 -- | The response status code.
-dvesrsStatus :: Lens' DescribeVPCEndpointServicesResponse Int
-dvesrsStatus = lens _dvesrsStatus (\ s a -> s{_dvesrsStatus = a});
+dvesrsResponseStatus :: Lens' DescribeVPCEndpointServicesResponse Int
+dvesrsResponseStatus = lens _dvesrsResponseStatus (\ s a -> s{_dvesrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     -- * Response Lenses
     , dvpcersNextToken
     , dvpcersVPCEndpoints
-    , dvpcersStatus
+    , dvpcersResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -154,9 +154,9 @@
 
 -- | /See:/ 'describeVPCEndpointsResponse' smart constructor.
 data DescribeVPCEndpointsResponse = DescribeVPCEndpointsResponse'
-    { _dvpcersNextToken    :: !(Maybe Text)
-    , _dvpcersVPCEndpoints :: !(Maybe [VPCEndpoint])
-    , _dvpcersStatus       :: !Int
+    { _dvpcersNextToken      :: !(Maybe Text)
+    , _dvpcersVPCEndpoints   :: !(Maybe [VPCEndpoint])
+    , _dvpcersResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCEndpointsResponse' with the minimum fields required to make a request.
@@ -167,15 +167,15 @@
 --
 -- * 'dvpcersVPCEndpoints'
 --
--- * 'dvpcersStatus'
+-- * 'dvpcersResponseStatus'
 describeVPCEndpointsResponse
-    :: Int -- ^ 'dvpcersStatus'
+    :: Int -- ^ 'dvpcersResponseStatus'
     -> DescribeVPCEndpointsResponse
-describeVPCEndpointsResponse pStatus_ =
+describeVPCEndpointsResponse pResponseStatus_ =
     DescribeVPCEndpointsResponse'
     { _dvpcersNextToken = Nothing
     , _dvpcersVPCEndpoints = Nothing
-    , _dvpcersStatus = pStatus_
+    , _dvpcersResponseStatus = pResponseStatus_
     }
 
 -- | The token to use when requesting the next set of items. If there are no
@@ -188,5 +188,5 @@
 dvpcersVPCEndpoints = lens _dvpcersVPCEndpoints (\ s a -> s{_dvpcersVPCEndpoints = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvpcersStatus :: Lens' DescribeVPCEndpointsResponse Int
-dvpcersStatus = lens _dvpcersStatus (\ s a -> s{_dvpcersStatus = a});
+dvpcersResponseStatus :: Lens' DescribeVPCEndpointsResponse Int
+dvpcersResponseStatus = lens _dvpcersResponseStatus (\ s a -> s{_dvpcersResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeVPCPeeringConnectionsResponse
     -- * Response Lenses
     , dvpcpcrsVPCPeeringConnections
-    , dvpcpcrsStatus
+    , dvpcpcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -164,7 +164,7 @@
 -- | /See:/ 'describeVPCPeeringConnectionsResponse' smart constructor.
 data DescribeVPCPeeringConnectionsResponse = DescribeVPCPeeringConnectionsResponse'
     { _dvpcpcrsVPCPeeringConnections :: !(Maybe [VPCPeeringConnection])
-    , _dvpcpcrsStatus                :: !Int
+    , _dvpcpcrsResponseStatus        :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCPeeringConnectionsResponse' with the minimum fields required to make a request.
@@ -173,14 +173,14 @@
 --
 -- * 'dvpcpcrsVPCPeeringConnections'
 --
--- * 'dvpcpcrsStatus'
+-- * 'dvpcpcrsResponseStatus'
 describeVPCPeeringConnectionsResponse
-    :: Int -- ^ 'dvpcpcrsStatus'
+    :: Int -- ^ 'dvpcpcrsResponseStatus'
     -> DescribeVPCPeeringConnectionsResponse
-describeVPCPeeringConnectionsResponse pStatus_ =
+describeVPCPeeringConnectionsResponse pResponseStatus_ =
     DescribeVPCPeeringConnectionsResponse'
     { _dvpcpcrsVPCPeeringConnections = Nothing
-    , _dvpcpcrsStatus = pStatus_
+    , _dvpcpcrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the VPC peering connections.
@@ -188,5 +188,5 @@
 dvpcpcrsVPCPeeringConnections = lens _dvpcpcrsVPCPeeringConnections (\ s a -> s{_dvpcpcrsVPCPeeringConnections = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvpcpcrsStatus :: Lens' DescribeVPCPeeringConnectionsResponse Int
-dvpcpcrsStatus = lens _dvpcpcrsStatus (\ s a -> s{_dvpcpcrsStatus = a});
+dvpcpcrsResponseStatus :: Lens' DescribeVPCPeeringConnectionsResponse Int
+dvpcpcrsResponseStatus = lens _dvpcpcrsResponseStatus (\ s a -> s{_dvpcpcrsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DescribeVPCsResponse
     -- * Response Lenses
     , dvrsVPCs
-    , dvrsStatus
+    , dvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -143,8 +143,8 @@
 
 -- | /See:/ 'describeVPCsResponse' smart constructor.
 data DescribeVPCsResponse = DescribeVPCsResponse'
-    { _dvrsVPCs   :: !(Maybe [VPC])
-    , _dvrsStatus :: !Int
+    { _dvrsVPCs           :: !(Maybe [VPC])
+    , _dvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPCsResponse' with the minimum fields required to make a request.
@@ -153,14 +153,14 @@
 --
 -- * 'dvrsVPCs'
 --
--- * 'dvrsStatus'
+-- * 'dvrsResponseStatus'
 describeVPCsResponse
-    :: Int -- ^ 'dvrsStatus'
+    :: Int -- ^ 'dvrsResponseStatus'
     -> DescribeVPCsResponse
-describeVPCsResponse pStatus_ =
+describeVPCsResponse pResponseStatus_ =
     DescribeVPCsResponse'
     { _dvrsVPCs = Nothing
-    , _dvrsStatus = pStatus_
+    , _dvrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more VPCs.
@@ -168,5 +168,5 @@
 dvrsVPCs = lens _dvrsVPCs (\ s a -> s{_dvrsVPCs = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvrsStatus :: Lens' DescribeVPCsResponse Int
-dvrsStatus = lens _dvrsStatus (\ s a -> s{_dvrsStatus = a});
+dvrsResponseStatus :: Lens' DescribeVPCsResponse Int
+dvrsResponseStatus = lens _dvrsResponseStatus (\ s a -> s{_dvrsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , DescribeVPNConnectionsResponse
     -- * Response Lenses
     , dvcrsVPNConnections
-    , dvcrsStatus
+    , dvcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -166,7 +166,7 @@
 -- | /See:/ 'describeVPNConnectionsResponse' smart constructor.
 data DescribeVPNConnectionsResponse = DescribeVPNConnectionsResponse'
     { _dvcrsVPNConnections :: !(Maybe [VPNConnection])
-    , _dvcrsStatus         :: !Int
+    , _dvcrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPNConnectionsResponse' with the minimum fields required to make a request.
@@ -175,14 +175,14 @@
 --
 -- * 'dvcrsVPNConnections'
 --
--- * 'dvcrsStatus'
+-- * 'dvcrsResponseStatus'
 describeVPNConnectionsResponse
-    :: Int -- ^ 'dvcrsStatus'
+    :: Int -- ^ 'dvcrsResponseStatus'
     -> DescribeVPNConnectionsResponse
-describeVPNConnectionsResponse pStatus_ =
+describeVPNConnectionsResponse pResponseStatus_ =
     DescribeVPNConnectionsResponse'
     { _dvcrsVPNConnections = Nothing
-    , _dvcrsStatus = pStatus_
+    , _dvcrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more VPN connections.
@@ -190,5 +190,5 @@
 dvcrsVPNConnections = lens _dvcrsVPNConnections (\ s a -> s{_dvcrsVPNConnections = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvcrsStatus :: Lens' DescribeVPNConnectionsResponse Int
-dvcrsStatus = lens _dvcrsStatus (\ s a -> s{_dvcrsStatus = a});
+dvcrsResponseStatus :: Lens' DescribeVPNConnectionsResponse Int
+dvcrsResponseStatus = lens _dvcrsResponseStatus (\ s a -> s{_dvcrsResponseStatus = a});
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
@@ -32,15 +32,15 @@
     , DescribeVPNGateways
     -- * Request Lenses
     , dvgsFilters
-    , dvgsDryRun
     , dvgsVPNGatewayIds
+    , dvgsDryRun
 
     -- * Destructuring the Response
     , describeVPNGatewaysResponse
     , DescribeVPNGatewaysResponse
     -- * Response Lenses
     , dvgrsVPNGateways
-    , dvgrsStatus
+    , dvgrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -52,8 +52,8 @@
 -- | /See:/ 'describeVPNGateways' smart constructor.
 data DescribeVPNGateways = DescribeVPNGateways'
     { _dvgsFilters       :: !(Maybe [Filter])
-    , _dvgsDryRun        :: !(Maybe Bool)
     , _dvgsVPNGatewayIds :: !(Maybe [Text])
+    , _dvgsDryRun        :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPNGateways' with the minimum fields required to make a request.
@@ -62,16 +62,16 @@
 --
 -- * 'dvgsFilters'
 --
--- * 'dvgsDryRun'
---
 -- * 'dvgsVPNGatewayIds'
+--
+-- * 'dvgsDryRun'
 describeVPNGateways
     :: DescribeVPNGateways
 describeVPNGateways =
     DescribeVPNGateways'
     { _dvgsFilters = Nothing
-    , _dvgsDryRun = Nothing
     , _dvgsVPNGatewayIds = Nothing
+    , _dvgsDryRun = Nothing
     }
 
 -- | One or more filters.
@@ -110,6 +110,12 @@
 dvgsFilters :: Lens' DescribeVPNGateways [Filter]
 dvgsFilters = lens _dvgsFilters (\ s a -> s{_dvgsFilters = a}) . _Default . _Coerce;
 
+-- | One or more virtual private gateway IDs.
+--
+-- Default: Describes all your virtual private gateways.
+dvgsVPNGatewayIds :: Lens' DescribeVPNGateways [Text]
+dvgsVPNGatewayIds = lens _dvgsVPNGatewayIds (\ s a -> s{_dvgsVPNGatewayIds = a}) . _Default . _Coerce;
+
 -- | 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'.
@@ -117,12 +123,6 @@
 dvgsDryRun :: Lens' DescribeVPNGateways (Maybe Bool)
 dvgsDryRun = lens _dvgsDryRun (\ s a -> s{_dvgsDryRun = a});
 
--- | One or more virtual private gateway IDs.
---
--- Default: Describes all your virtual private gateways.
-dvgsVPNGatewayIds :: Lens' DescribeVPNGateways [Text]
-dvgsVPNGatewayIds = lens _dvgsVPNGatewayIds (\ s a -> s{_dvgsVPNGatewayIds = a}) . _Default . _Coerce;
-
 instance AWSRequest DescribeVPNGateways where
         type Rs DescribeVPNGateways =
              DescribeVPNGatewaysResponse
@@ -147,14 +147,14 @@
               ["Action" =: ("DescribeVpnGateways" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                toQuery (toQueryList "Filter" <$> _dvgsFilters),
-               "DryRun" =: _dvgsDryRun,
                toQuery
-                 (toQueryList "VpnGatewayId" <$> _dvgsVPNGatewayIds)]
+                 (toQueryList "VpnGatewayId" <$> _dvgsVPNGatewayIds),
+               "DryRun" =: _dvgsDryRun]
 
 -- | /See:/ 'describeVPNGatewaysResponse' smart constructor.
 data DescribeVPNGatewaysResponse = DescribeVPNGatewaysResponse'
-    { _dvgrsVPNGateways :: !(Maybe [VPNGateway])
-    , _dvgrsStatus      :: !Int
+    { _dvgrsVPNGateways    :: !(Maybe [VPNGateway])
+    , _dvgrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVPNGatewaysResponse' with the minimum fields required to make a request.
@@ -163,14 +163,14 @@
 --
 -- * 'dvgrsVPNGateways'
 --
--- * 'dvgrsStatus'
+-- * 'dvgrsResponseStatus'
 describeVPNGatewaysResponse
-    :: Int -- ^ 'dvgrsStatus'
+    :: Int -- ^ 'dvgrsResponseStatus'
     -> DescribeVPNGatewaysResponse
-describeVPNGatewaysResponse pStatus_ =
+describeVPNGatewaysResponse pResponseStatus_ =
     DescribeVPNGatewaysResponse'
     { _dvgrsVPNGateways = Nothing
-    , _dvgrsStatus = pStatus_
+    , _dvgrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more virtual private gateways.
@@ -178,5 +178,5 @@
 dvgrsVPNGateways = lens _dvgrsVPNGateways (\ s a -> s{_dvgrsVPNGateways = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvgrsStatus :: Lens' DescribeVPNGatewaysResponse Int
-dvgrsStatus = lens _dvgrsStatus (\ s a -> s{_dvgrsStatus = a});
+dvgrsResponseStatus :: Lens' DescribeVPNGatewaysResponse Int
+dvgrsResponseStatus = lens _dvgrsResponseStatus (\ s a -> s{_dvgrsResponseStatus = a});
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
@@ -40,10 +40,10 @@
     , describeVolumeAttributeResponse
     , DescribeVolumeAttributeResponse
     -- * Response Lenses
-    , dvarsProductCodes
     , dvarsVolumeId
+    , dvarsProductCodes
     , dvarsAutoEnableIO
-    , dvarsStatus
+    , dvarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -101,9 +101,9 @@
           = receiveXML
               (\ s h x ->
                  DescribeVolumeAttributeResponse' <$>
-                   (x .@? "productCodes" .!@ mempty >>=
-                      may (parseXMLList "item"))
-                     <*> (x .@? "volumeId")
+                   (x .@? "volumeId") <*>
+                     (x .@? "productCodes" .!@ mempty >>=
+                        may (parseXMLList "item"))
                      <*> (x .@? "autoEnableIO")
                      <*> (pure (fromEnum s)))
 
@@ -124,46 +124,46 @@
 
 -- | /See:/ 'describeVolumeAttributeResponse' smart constructor.
 data DescribeVolumeAttributeResponse = DescribeVolumeAttributeResponse'
-    { _dvarsProductCodes :: !(Maybe [ProductCode])
-    , _dvarsVolumeId     :: !(Maybe Text)
-    , _dvarsAutoEnableIO :: !(Maybe AttributeBooleanValue)
-    , _dvarsStatus       :: !Int
+    { _dvarsVolumeId       :: !(Maybe Text)
+    , _dvarsProductCodes   :: !(Maybe [ProductCode])
+    , _dvarsAutoEnableIO   :: !(Maybe AttributeBooleanValue)
+    , _dvarsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVolumeAttributeResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dvarsProductCodes'
---
 -- * 'dvarsVolumeId'
 --
+-- * 'dvarsProductCodes'
+--
 -- * 'dvarsAutoEnableIO'
 --
--- * 'dvarsStatus'
+-- * 'dvarsResponseStatus'
 describeVolumeAttributeResponse
-    :: Int -- ^ 'dvarsStatus'
+    :: Int -- ^ 'dvarsResponseStatus'
     -> DescribeVolumeAttributeResponse
-describeVolumeAttributeResponse pStatus_ =
+describeVolumeAttributeResponse pResponseStatus_ =
     DescribeVolumeAttributeResponse'
-    { _dvarsProductCodes = Nothing
-    , _dvarsVolumeId = Nothing
+    { _dvarsVolumeId = Nothing
+    , _dvarsProductCodes = Nothing
     , _dvarsAutoEnableIO = Nothing
-    , _dvarsStatus = pStatus_
+    , _dvarsResponseStatus = pResponseStatus_
     }
 
--- | A list of product codes.
-dvarsProductCodes :: Lens' DescribeVolumeAttributeResponse [ProductCode]
-dvarsProductCodes = lens _dvarsProductCodes (\ s a -> s{_dvarsProductCodes = a}) . _Default . _Coerce;
-
 -- | The ID of the volume.
 dvarsVolumeId :: Lens' DescribeVolumeAttributeResponse (Maybe Text)
 dvarsVolumeId = lens _dvarsVolumeId (\ s a -> s{_dvarsVolumeId = a});
 
+-- | A list of product codes.
+dvarsProductCodes :: Lens' DescribeVolumeAttributeResponse [ProductCode]
+dvarsProductCodes = lens _dvarsProductCodes (\ s a -> s{_dvarsProductCodes = a}) . _Default . _Coerce;
+
 -- | The state of 'autoEnableIO' attribute.
 dvarsAutoEnableIO :: Lens' DescribeVolumeAttributeResponse (Maybe AttributeBooleanValue)
 dvarsAutoEnableIO = lens _dvarsAutoEnableIO (\ s a -> s{_dvarsAutoEnableIO = a});
 
 -- | The response status code.
-dvarsStatus :: Lens' DescribeVolumeAttributeResponse Int
-dvarsStatus = lens _dvarsStatus (\ s a -> s{_dvarsStatus = a});
+dvarsResponseStatus :: Lens' DescribeVolumeAttributeResponse Int
+dvarsResponseStatus = lens _dvarsResponseStatus (\ s a -> s{_dvarsResponseStatus = a});
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
@@ -79,7 +79,7 @@
     -- * Response Lenses
     , dvsrsNextToken
     , dvsrsVolumeStatuses
-    , dvsrsStatus
+    , dvsrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -232,7 +232,7 @@
 data DescribeVolumeStatusResponse = DescribeVolumeStatusResponse'
     { _dvsrsNextToken      :: !(Maybe Text)
     , _dvsrsVolumeStatuses :: !(Maybe [VolumeStatusItem])
-    , _dvsrsStatus         :: !Int
+    , _dvsrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVolumeStatusResponse' with the minimum fields required to make a request.
@@ -243,15 +243,15 @@
 --
 -- * 'dvsrsVolumeStatuses'
 --
--- * 'dvsrsStatus'
+-- * 'dvsrsResponseStatus'
 describeVolumeStatusResponse
-    :: Int -- ^ 'dvsrsStatus'
+    :: Int -- ^ 'dvsrsResponseStatus'
     -> DescribeVolumeStatusResponse
-describeVolumeStatusResponse pStatus_ =
+describeVolumeStatusResponse pResponseStatus_ =
     DescribeVolumeStatusResponse'
     { _dvsrsNextToken = Nothing
     , _dvsrsVolumeStatuses = Nothing
-    , _dvsrsStatus = pStatus_
+    , _dvsrsResponseStatus = pResponseStatus_
     }
 
 -- | The token to use to retrieve the next page of results. This value is
@@ -264,5 +264,5 @@
 dvsrsVolumeStatuses = lens _dvsrsVolumeStatuses (\ s a -> s{_dvsrsVolumeStatuses = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvsrsStatus :: Lens' DescribeVolumeStatusResponse Int
-dvsrsStatus = lens _dvsrsStatus (\ s a -> s{_dvsrsStatus = a});
+dvsrsResponseStatus :: Lens' DescribeVolumeStatusResponse Int
+dvsrsResponseStatus = lens _dvsrsResponseStatus (\ s a -> s{_dvsrsResponseStatus = a});
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
@@ -50,7 +50,7 @@
     -- * Response Lenses
     , dvvrsNextToken
     , dvvrsVolumes
-    , dvvrsStatus
+    , dvvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -208,9 +208,9 @@
 
 -- | /See:/ 'describeVolumesResponse' smart constructor.
 data DescribeVolumesResponse = DescribeVolumesResponse'
-    { _dvvrsNextToken :: !(Maybe Text)
-    , _dvvrsVolumes   :: !(Maybe [Volume])
-    , _dvvrsStatus    :: !Int
+    { _dvvrsNextToken      :: !(Maybe Text)
+    , _dvvrsVolumes        :: !(Maybe [Volume])
+    , _dvvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeVolumesResponse' with the minimum fields required to make a request.
@@ -221,15 +221,15 @@
 --
 -- * 'dvvrsVolumes'
 --
--- * 'dvvrsStatus'
+-- * 'dvvrsResponseStatus'
 describeVolumesResponse
-    :: Int -- ^ 'dvvrsStatus'
+    :: Int -- ^ 'dvvrsResponseStatus'
     -> DescribeVolumesResponse
-describeVolumesResponse pStatus_ =
+describeVolumesResponse pResponseStatus_ =
     DescribeVolumesResponse'
     { _dvvrsNextToken = Nothing
     , _dvvrsVolumes = Nothing
-    , _dvvrsStatus = pStatus_
+    , _dvvrsResponseStatus = pResponseStatus_
     }
 
 -- | The 'NextToken' value to include in a future 'DescribeVolumes' request.
@@ -244,5 +244,5 @@
 dvvrsVolumes = lens _dvvrsVolumes (\ s a -> s{_dvvrsVolumes = a}) . _Default . _Coerce;
 
 -- | The response status code.
-dvvrsStatus :: Lens' DescribeVolumesResponse Int
-dvvrsStatus = lens _dvvrsStatus (\ s a -> s{_dvvrsStatus = a});
+dvvrsResponseStatus :: Lens' DescribeVolumesResponse Int
+dvvrsResponseStatus = lens _dvvrsResponseStatus (\ s a -> s{_dvvrsResponseStatus = a});
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
@@ -39,7 +39,7 @@
     , DetachClassicLinkVPCResponse
     -- * Response Lenses
     , dclvrsReturn
-    , dclvrsStatus
+    , dclvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -117,8 +117,8 @@
 
 -- | /See:/ 'detachClassicLinkVPCResponse' smart constructor.
 data DetachClassicLinkVPCResponse = DetachClassicLinkVPCResponse'
-    { _dclvrsReturn :: !(Maybe Bool)
-    , _dclvrsStatus :: !Int
+    { _dclvrsReturn         :: !(Maybe Bool)
+    , _dclvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DetachClassicLinkVPCResponse' with the minimum fields required to make a request.
@@ -127,14 +127,14 @@
 --
 -- * 'dclvrsReturn'
 --
--- * 'dclvrsStatus'
+-- * 'dclvrsResponseStatus'
 detachClassicLinkVPCResponse
-    :: Int -- ^ 'dclvrsStatus'
+    :: Int -- ^ 'dclvrsResponseStatus'
     -> DetachClassicLinkVPCResponse
-detachClassicLinkVPCResponse pStatus_ =
+detachClassicLinkVPCResponse pResponseStatus_ =
     DetachClassicLinkVPCResponse'
     { _dclvrsReturn = Nothing
-    , _dclvrsStatus = pStatus_
+    , _dclvrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -142,5 +142,5 @@
 dclvrsReturn = lens _dclvrsReturn (\ s a -> s{_dclvrsReturn = a});
 
 -- | The response status code.
-dclvrsStatus :: Lens' DetachClassicLinkVPCResponse Int
-dclvrsStatus = lens _dclvrsStatus (\ s a -> s{_dclvrsStatus = a});
+dclvrsResponseStatus :: Lens' DetachClassicLinkVPCResponse Int
+dclvrsResponseStatus = lens _dclvrsResponseStatus (\ s a -> s{_dclvrsResponseStatus = a});
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
@@ -36,7 +36,7 @@
     , DisableVPCClassicLinkResponse
     -- * Response Lenses
     , dvpcclrsReturn
-    , dvpcclrsStatus
+    , dvpcclrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -103,8 +103,8 @@
 
 -- | /See:/ 'disableVPCClassicLinkResponse' smart constructor.
 data DisableVPCClassicLinkResponse = DisableVPCClassicLinkResponse'
-    { _dvpcclrsReturn :: !(Maybe Bool)
-    , _dvpcclrsStatus :: !Int
+    { _dvpcclrsReturn         :: !(Maybe Bool)
+    , _dvpcclrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DisableVPCClassicLinkResponse' with the minimum fields required to make a request.
@@ -113,14 +113,14 @@
 --
 -- * 'dvpcclrsReturn'
 --
--- * 'dvpcclrsStatus'
+-- * 'dvpcclrsResponseStatus'
 disableVPCClassicLinkResponse
-    :: Int -- ^ 'dvpcclrsStatus'
+    :: Int -- ^ 'dvpcclrsResponseStatus'
     -> DisableVPCClassicLinkResponse
-disableVPCClassicLinkResponse pStatus_ =
+disableVPCClassicLinkResponse pResponseStatus_ =
     DisableVPCClassicLinkResponse'
     { _dvpcclrsReturn = Nothing
-    , _dvpcclrsStatus = pStatus_
+    , _dvpcclrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -128,5 +128,5 @@
 dvpcclrsReturn = lens _dvpcclrsReturn (\ s a -> s{_dvpcclrsReturn = a});
 
 -- | The response status code.
-dvpcclrsStatus :: Lens' DisableVPCClassicLinkResponse Int
-dvpcclrsStatus = lens _dvpcclrsStatus (\ s a -> s{_dvpcclrsStatus = a});
+dvpcclrsResponseStatus :: Lens' DisableVPCClassicLinkResponse Int
+dvpcclrsResponseStatus = lens _dvpcclrsResponseStatus (\ s a -> s{_dvpcclrsResponseStatus = a});
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
@@ -43,7 +43,7 @@
     , EnableVPCClassicLinkResponse
     -- * Response Lenses
     , evclrsReturn
-    , evclrsStatus
+    , evclrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -110,8 +110,8 @@
 
 -- | /See:/ 'enableVPCClassicLinkResponse' smart constructor.
 data EnableVPCClassicLinkResponse = EnableVPCClassicLinkResponse'
-    { _evclrsReturn :: !(Maybe Bool)
-    , _evclrsStatus :: !Int
+    { _evclrsReturn         :: !(Maybe Bool)
+    , _evclrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'EnableVPCClassicLinkResponse' with the minimum fields required to make a request.
@@ -120,14 +120,14 @@
 --
 -- * 'evclrsReturn'
 --
--- * 'evclrsStatus'
+-- * 'evclrsResponseStatus'
 enableVPCClassicLinkResponse
-    :: Int -- ^ 'evclrsStatus'
+    :: Int -- ^ 'evclrsResponseStatus'
     -> EnableVPCClassicLinkResponse
-enableVPCClassicLinkResponse pStatus_ =
+enableVPCClassicLinkResponse pResponseStatus_ =
     EnableVPCClassicLinkResponse'
     { _evclrsReturn = Nothing
-    , _evclrsStatus = pStatus_
+    , _evclrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -135,5 +135,5 @@
 evclrsReturn = lens _evclrsReturn (\ s a -> s{_evclrsReturn = a});
 
 -- | The response status code.
-evclrsStatus :: Lens' EnableVPCClassicLinkResponse Int
-evclrsStatus = lens _evclrsStatus (\ s a -> s{_evclrsStatus = a});
+evclrsResponseStatus :: Lens' EnableVPCClassicLinkResponse Int
+evclrsResponseStatus = lens _evclrsResponseStatus (\ s a -> s{_evclrsResponseStatus = a});
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
@@ -56,7 +56,7 @@
     , gcorsInstanceId
     , gcorsOutput
     , gcorsTimestamp
-    , gcorsStatus
+    , gcorsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -125,10 +125,10 @@
 
 -- | /See:/ 'getConsoleOutputResponse' smart constructor.
 data GetConsoleOutputResponse = GetConsoleOutputResponse'
-    { _gcorsInstanceId :: !(Maybe Text)
-    , _gcorsOutput     :: !(Maybe Text)
-    , _gcorsTimestamp  :: !(Maybe ISO8601)
-    , _gcorsStatus     :: !Int
+    { _gcorsInstanceId     :: !(Maybe Text)
+    , _gcorsOutput         :: !(Maybe Text)
+    , _gcorsTimestamp      :: !(Maybe ISO8601)
+    , _gcorsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'GetConsoleOutputResponse' with the minimum fields required to make a request.
@@ -141,16 +141,16 @@
 --
 -- * 'gcorsTimestamp'
 --
--- * 'gcorsStatus'
+-- * 'gcorsResponseStatus'
 getConsoleOutputResponse
-    :: Int -- ^ 'gcorsStatus'
+    :: Int -- ^ 'gcorsResponseStatus'
     -> GetConsoleOutputResponse
-getConsoleOutputResponse pStatus_ =
+getConsoleOutputResponse pResponseStatus_ =
     GetConsoleOutputResponse'
     { _gcorsInstanceId = Nothing
     , _gcorsOutput = Nothing
     , _gcorsTimestamp = Nothing
-    , _gcorsStatus = pStatus_
+    , _gcorsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the instance.
@@ -166,5 +166,5 @@
 gcorsTimestamp = lens _gcorsTimestamp (\ s a -> s{_gcorsTimestamp = a}) . mapping _Time;
 
 -- | The response status code.
-gcorsStatus :: Lens' GetConsoleOutputResponse Int
-gcorsStatus = lens _gcorsStatus (\ s a -> s{_gcorsStatus = a});
+gcorsResponseStatus :: Lens' GetConsoleOutputResponse Int
+gcorsResponseStatus = lens _gcorsResponseStatus (\ s a -> s{_gcorsResponseStatus = a});
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
@@ -48,7 +48,7 @@
     , getPasswordDataResponse
     , GetPasswordDataResponse
     -- * Response Lenses
-    , gpdrsStatus
+    , gpdrsResponseStatus
     , gpdrsInstanceId
     , gpdrsPasswordData
     , gpdrsTimestamp
@@ -120,17 +120,17 @@
 
 -- | /See:/ 'getPasswordDataResponse' smart constructor.
 data GetPasswordDataResponse = GetPasswordDataResponse'
-    { _gpdrsStatus       :: !Int
-    , _gpdrsInstanceId   :: !Text
-    , _gpdrsPasswordData :: !Text
-    , _gpdrsTimestamp    :: !ISO8601
+    { _gpdrsResponseStatus :: !Int
+    , _gpdrsInstanceId     :: !Text
+    , _gpdrsPasswordData   :: !Text
+    , _gpdrsTimestamp      :: !ISO8601
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'GetPasswordDataResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gpdrsStatus'
+-- * 'gpdrsResponseStatus'
 --
 -- * 'gpdrsInstanceId'
 --
@@ -138,22 +138,22 @@
 --
 -- * 'gpdrsTimestamp'
 getPasswordDataResponse
-    :: Int -- ^ 'gpdrsStatus'
+    :: Int -- ^ 'gpdrsResponseStatus'
     -> Text -- ^ 'gpdrsInstanceId'
     -> Text -- ^ 'gpdrsPasswordData'
     -> UTCTime -- ^ 'gpdrsTimestamp'
     -> GetPasswordDataResponse
-getPasswordDataResponse pStatus_ pInstanceId_ pPasswordData_ pTimestamp_ =
+getPasswordDataResponse pResponseStatus_ pInstanceId_ pPasswordData_ pTimestamp_ =
     GetPasswordDataResponse'
-    { _gpdrsStatus = pStatus_
+    { _gpdrsResponseStatus = pResponseStatus_
     , _gpdrsInstanceId = pInstanceId_
     , _gpdrsPasswordData = pPasswordData_
     , _gpdrsTimestamp = _Time # pTimestamp_
     }
 
 -- | The response status code.
-gpdrsStatus :: Lens' GetPasswordDataResponse Int
-gpdrsStatus = lens _gpdrsStatus (\ s a -> s{_gpdrsStatus = a});
+gpdrsResponseStatus :: Lens' GetPasswordDataResponse Int
+gpdrsResponseStatus = lens _gpdrsResponseStatus (\ s a -> s{_gpdrsResponseStatus = a});
 
 -- | The ID of the Windows instance.
 gpdrsInstanceId :: Lens' GetPasswordDataResponse Text
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
@@ -34,8 +34,8 @@
     , impLicenseType
     , impRoleName
     , impArchitecture
-    , impDryRun
     , impDescription
+    , impDryRun
     , impClientData
     , impDiskContainers
 
@@ -43,6 +43,7 @@
     , importImageResponse
     , ImportImageResponse
     -- * Response Lenses
+    , irsStatus
     , irsHypervisor
     , irsPlatform
     , irsProgress
@@ -53,7 +54,7 @@
     , irsImportTaskId
     , irsArchitecture
     , irsDescription
-    , irsStatus
+    , irsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -70,8 +71,8 @@
     , _impLicenseType    :: !(Maybe Text)
     , _impRoleName       :: !(Maybe Text)
     , _impArchitecture   :: !(Maybe Text)
-    , _impDryRun         :: !(Maybe Bool)
     , _impDescription    :: !(Maybe Text)
+    , _impDryRun         :: !(Maybe Bool)
     , _impClientData     :: !(Maybe ClientData)
     , _impDiskContainers :: !(Maybe [ImageDiskContainer])
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -92,10 +93,10 @@
 --
 -- * 'impArchitecture'
 --
--- * 'impDryRun'
---
 -- * 'impDescription'
 --
+-- * 'impDryRun'
+--
 -- * 'impClientData'
 --
 -- * 'impDiskContainers'
@@ -109,8 +110,8 @@
     , _impLicenseType = Nothing
     , _impRoleName = Nothing
     , _impArchitecture = Nothing
-    , _impDryRun = Nothing
     , _impDescription = Nothing
+    , _impDryRun = Nothing
     , _impClientData = Nothing
     , _impDiskContainers = Nothing
     }
@@ -155,6 +156,10 @@
 impArchitecture :: Lens' ImportImage (Maybe Text)
 impArchitecture = lens _impArchitecture (\ s a -> s{_impArchitecture = a});
 
+-- | A description string for the import image task.
+impDescription :: Lens' ImportImage (Maybe Text)
+impDescription = lens _impDescription (\ s a -> s{_impDescription = 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'.
@@ -162,10 +167,6 @@
 impDryRun :: Lens' ImportImage (Maybe Bool)
 impDryRun = lens _impDryRun (\ s a -> s{_impDryRun = a});
 
--- | A description string for the import image task.
-impDescription :: Lens' ImportImage (Maybe Text)
-impDescription = lens _impDescription (\ s a -> s{_impDescription = a});
-
 -- | The client-specific data.
 impClientData :: Lens' ImportImage (Maybe ClientData)
 impClientData = lens _impClientData (\ s a -> s{_impClientData = a});
@@ -181,8 +182,9 @@
           = receiveXML
               (\ s h x ->
                  ImportImageResponse' <$>
-                   (x .@? "hypervisor") <*> (x .@? "platform") <*>
-                     (x .@? "progress")
+                   (x .@? "status") <*> (x .@? "hypervisor") <*>
+                     (x .@? "platform")
+                     <*> (x .@? "progress")
                      <*> (x .@? "licenseType")
                      <*>
                      (x .@? "snapshotDetailSet" .!@ mempty >>=
@@ -211,15 +213,16 @@
                "LicenseType" =: _impLicenseType,
                "RoleName" =: _impRoleName,
                "Architecture" =: _impArchitecture,
-               "DryRun" =: _impDryRun,
                "Description" =: _impDescription,
+               "DryRun" =: _impDryRun,
                "ClientData" =: _impClientData,
                toQuery
                  (toQueryList "DiskContainer" <$> _impDiskContainers)]
 
 -- | /See:/ 'importImageResponse' smart constructor.
 data ImportImageResponse = ImportImageResponse'
-    { _irsHypervisor      :: !(Maybe Text)
+    { _irsStatus          :: !(Maybe Text)
+    , _irsHypervisor      :: !(Maybe Text)
     , _irsPlatform        :: !(Maybe Text)
     , _irsProgress        :: !(Maybe Text)
     , _irsLicenseType     :: !(Maybe Text)
@@ -229,13 +232,15 @@
     , _irsImportTaskId    :: !(Maybe Text)
     , _irsArchitecture    :: !(Maybe Text)
     , _irsDescription     :: !(Maybe Text)
-    , _irsStatus          :: !Int
+    , _irsResponseStatus  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImportImageResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'irsStatus'
+--
 -- * 'irsHypervisor'
 --
 -- * 'irsPlatform'
@@ -256,13 +261,14 @@
 --
 -- * 'irsDescription'
 --
--- * 'irsStatus'
+-- * 'irsResponseStatus'
 importImageResponse
-    :: Int -- ^ 'irsStatus'
+    :: Int -- ^ 'irsResponseStatus'
     -> ImportImageResponse
-importImageResponse pStatus_ =
+importImageResponse pResponseStatus_ =
     ImportImageResponse'
-    { _irsHypervisor = Nothing
+    { _irsStatus = Nothing
+    , _irsHypervisor = Nothing
     , _irsPlatform = Nothing
     , _irsProgress = Nothing
     , _irsLicenseType = Nothing
@@ -272,9 +278,13 @@
     , _irsImportTaskId = Nothing
     , _irsArchitecture = Nothing
     , _irsDescription = Nothing
-    , _irsStatus = pStatus_
+    , _irsResponseStatus = pResponseStatus_
     }
 
+-- | A brief status of the task.
+irsStatus :: Lens' ImportImageResponse (Maybe Text)
+irsStatus = lens _irsStatus (\ s a -> s{_irsStatus = a});
+
 -- | The target hypervisor of the import task.
 irsHypervisor :: Lens' ImportImageResponse (Maybe Text)
 irsHypervisor = lens _irsHypervisor (\ s a -> s{_irsHypervisor = a});
@@ -316,5 +326,5 @@
 irsDescription = lens _irsDescription (\ s a -> s{_irsDescription = a});
 
 -- | The response status code.
-irsStatus :: Lens' ImportImageResponse Int
-irsStatus = lens _irsStatus (\ s a -> s{_irsStatus = a});
+irsResponseStatus :: Lens' ImportImageResponse Int
+irsResponseStatus = lens _irsResponseStatus (\ s a -> s{_irsResponseStatus = a});
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
@@ -35,8 +35,8 @@
     -- * Request Lenses
     , iiLaunchSpecification
     , iiDiskImages
-    , iiDryRun
     , iiDescription
+    , iiDryRun
     , iiPlatform
 
     -- * Destructuring the Response
@@ -44,7 +44,7 @@
     , ImportInstanceResponse
     -- * Response Lenses
     , iirsConversionTask
-    , iirsStatus
+    , iirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -57,8 +57,8 @@
 data ImportInstance = ImportInstance'
     { _iiLaunchSpecification :: !(Maybe ImportInstanceLaunchSpecification)
     , _iiDiskImages          :: !(Maybe [DiskImage])
-    , _iiDryRun              :: !(Maybe Bool)
     , _iiDescription         :: !(Maybe Text)
+    , _iiDryRun              :: !(Maybe Bool)
     , _iiPlatform            :: !PlatformValues
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -70,10 +70,10 @@
 --
 -- * 'iiDiskImages'
 --
--- * 'iiDryRun'
---
 -- * 'iiDescription'
 --
+-- * 'iiDryRun'
+--
 -- * 'iiPlatform'
 importInstance
     :: PlatformValues -- ^ 'iiPlatform'
@@ -82,8 +82,8 @@
     ImportInstance'
     { _iiLaunchSpecification = Nothing
     , _iiDiskImages = Nothing
-    , _iiDryRun = Nothing
     , _iiDescription = Nothing
+    , _iiDryRun = Nothing
     , _iiPlatform = pPlatform_
     }
 
@@ -95,6 +95,10 @@
 iiDiskImages :: Lens' ImportInstance [DiskImage]
 iiDiskImages = lens _iiDiskImages (\ s a -> s{_iiDiskImages = a}) . _Default . _Coerce;
 
+-- | A description for the instance being imported.
+iiDescription :: Lens' ImportInstance (Maybe Text)
+iiDescription = lens _iiDescription (\ s a -> s{_iiDescription = 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'.
@@ -102,10 +106,6 @@
 iiDryRun :: Lens' ImportInstance (Maybe Bool)
 iiDryRun = lens _iiDryRun (\ s a -> s{_iiDryRun = a});
 
--- | A description for the instance being imported.
-iiDescription :: Lens' ImportInstance (Maybe Text)
-iiDescription = lens _iiDescription (\ s a -> s{_iiDescription = a});
-
 -- | The instance operating system.
 iiPlatform :: Lens' ImportInstance PlatformValues
 iiPlatform = lens _iiPlatform (\ s a -> s{_iiPlatform = a});
@@ -132,14 +132,13 @@
                "Version" =: ("2015-04-15" :: ByteString),
                "LaunchSpecification" =: _iiLaunchSpecification,
                toQuery (toQueryList "DiskImage" <$> _iiDiskImages),
-               "DryRun" =: _iiDryRun,
                "Description" =: _iiDescription,
-               "Platform" =: _iiPlatform]
+               "DryRun" =: _iiDryRun, "Platform" =: _iiPlatform]
 
 -- | /See:/ 'importInstanceResponse' smart constructor.
 data ImportInstanceResponse = ImportInstanceResponse'
     { _iirsConversionTask :: !(Maybe ConversionTask)
-    , _iirsStatus         :: !Int
+    , _iirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImportInstanceResponse' with the minimum fields required to make a request.
@@ -148,14 +147,14 @@
 --
 -- * 'iirsConversionTask'
 --
--- * 'iirsStatus'
+-- * 'iirsResponseStatus'
 importInstanceResponse
-    :: Int -- ^ 'iirsStatus'
+    :: Int -- ^ 'iirsResponseStatus'
     -> ImportInstanceResponse
-importInstanceResponse pStatus_ =
+importInstanceResponse pResponseStatus_ =
     ImportInstanceResponse'
     { _iirsConversionTask = Nothing
-    , _iirsStatus = pStatus_
+    , _iirsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the conversion task.
@@ -163,5 +162,5 @@
 iirsConversionTask = lens _iirsConversionTask (\ s a -> s{_iirsConversionTask = a});
 
 -- | The response status code.
-iirsStatus :: Lens' ImportInstanceResponse Int
-iirsStatus = lens _iirsStatus (\ s a -> s{_iirsStatus = a});
+iirsResponseStatus :: Lens' ImportInstanceResponse Int
+iirsResponseStatus = lens _iirsResponseStatus (\ s a -> s{_iirsResponseStatus = a});
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
@@ -45,7 +45,7 @@
     -- * Response Lenses
     , ikprsKeyFingerprint
     , ikprsKeyName
-    , ikprsStatus
+    , ikprsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -131,7 +131,7 @@
 data ImportKeyPairResponse = ImportKeyPairResponse'
     { _ikprsKeyFingerprint :: !(Maybe Text)
     , _ikprsKeyName        :: !(Maybe Text)
-    , _ikprsStatus         :: !Int
+    , _ikprsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImportKeyPairResponse' with the minimum fields required to make a request.
@@ -142,15 +142,15 @@
 --
 -- * 'ikprsKeyName'
 --
--- * 'ikprsStatus'
+-- * 'ikprsResponseStatus'
 importKeyPairResponse
-    :: Int -- ^ 'ikprsStatus'
+    :: Int -- ^ 'ikprsResponseStatus'
     -> ImportKeyPairResponse
-importKeyPairResponse pStatus_ =
+importKeyPairResponse pResponseStatus_ =
     ImportKeyPairResponse'
     { _ikprsKeyFingerprint = Nothing
     , _ikprsKeyName = Nothing
-    , _ikprsStatus = pStatus_
+    , _ikprsResponseStatus = pResponseStatus_
     }
 
 -- | The MD5 public key fingerprint as specified in section 4 of RFC 4716.
@@ -162,5 +162,5 @@
 ikprsKeyName = lens _ikprsKeyName (\ s a -> s{_ikprsKeyName = a});
 
 -- | The response status code.
-ikprsStatus :: Lens' ImportKeyPairResponse Int
-ikprsStatus = lens _ikprsStatus (\ s a -> s{_ikprsStatus = a});
+ikprsResponseStatus :: Lens' ImportKeyPairResponse Int
+ikprsResponseStatus = lens _ikprsResponseStatus (\ s a -> s{_ikprsResponseStatus = a});
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
@@ -30,8 +30,8 @@
     , isDiskContainer
     , isClientToken
     , isRoleName
-    , isDryRun
     , isDescription
+    , isDryRun
     , isClientData
 
     -- * Destructuring the Response
@@ -41,7 +41,7 @@
     , isrsSnapshotTaskDetail
     , isrsImportTaskId
     , isrsDescription
-    , isrsStatus
+    , isrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -55,8 +55,8 @@
     { _isDiskContainer :: !(Maybe SnapshotDiskContainer)
     , _isClientToken   :: !(Maybe Text)
     , _isRoleName      :: !(Maybe Text)
-    , _isDryRun        :: !(Maybe Bool)
     , _isDescription   :: !(Maybe Text)
+    , _isDryRun        :: !(Maybe Bool)
     , _isClientData    :: !(Maybe ClientData)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -70,10 +70,10 @@
 --
 -- * 'isRoleName'
 --
--- * 'isDryRun'
---
 -- * 'isDescription'
 --
+-- * 'isDryRun'
+--
 -- * 'isClientData'
 importSnapshot
     :: ImportSnapshot
@@ -82,8 +82,8 @@
     { _isDiskContainer = Nothing
     , _isClientToken = Nothing
     , _isRoleName = Nothing
-    , _isDryRun = Nothing
     , _isDescription = Nothing
+    , _isDryRun = Nothing
     , _isClientData = Nothing
     }
 
@@ -100,6 +100,10 @@
 isRoleName :: Lens' ImportSnapshot (Maybe Text)
 isRoleName = lens _isRoleName (\ s a -> s{_isRoleName = a});
 
+-- | The description string for the import snapshot task.
+isDescription :: Lens' ImportSnapshot (Maybe Text)
+isDescription = lens _isDescription (\ s a -> s{_isDescription = 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'.
@@ -107,10 +111,6 @@
 isDryRun :: Lens' ImportSnapshot (Maybe Bool)
 isDryRun = lens _isDryRun (\ s a -> s{_isDryRun = a});
 
--- | The description string for the import snapshot task.
-isDescription :: Lens' ImportSnapshot (Maybe Text)
-isDescription = lens _isDescription (\ s a -> s{_isDescription = a});
-
 -- | The client-specific data.
 isClientData :: Lens' ImportSnapshot (Maybe ClientData)
 isClientData = lens _isClientData (\ s a -> s{_isClientData = a});
@@ -140,16 +140,16 @@
                "Version" =: ("2015-04-15" :: ByteString),
                "DiskContainer" =: _isDiskContainer,
                "ClientToken" =: _isClientToken,
-               "RoleName" =: _isRoleName, "DryRun" =: _isDryRun,
+               "RoleName" =: _isRoleName,
                "Description" =: _isDescription,
-               "ClientData" =: _isClientData]
+               "DryRun" =: _isDryRun, "ClientData" =: _isClientData]
 
 -- | /See:/ 'importSnapshotResponse' smart constructor.
 data ImportSnapshotResponse = ImportSnapshotResponse'
     { _isrsSnapshotTaskDetail :: !(Maybe SnapshotTaskDetail)
     , _isrsImportTaskId       :: !(Maybe Text)
     , _isrsDescription        :: !(Maybe Text)
-    , _isrsStatus             :: !Int
+    , _isrsResponseStatus     :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImportSnapshotResponse' with the minimum fields required to make a request.
@@ -162,16 +162,16 @@
 --
 -- * 'isrsDescription'
 --
--- * 'isrsStatus'
+-- * 'isrsResponseStatus'
 importSnapshotResponse
-    :: Int -- ^ 'isrsStatus'
+    :: Int -- ^ 'isrsResponseStatus'
     -> ImportSnapshotResponse
-importSnapshotResponse pStatus_ =
+importSnapshotResponse pResponseStatus_ =
     ImportSnapshotResponse'
     { _isrsSnapshotTaskDetail = Nothing
     , _isrsImportTaskId = Nothing
     , _isrsDescription = Nothing
-    , _isrsStatus = pStatus_
+    , _isrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the import snapshot task.
@@ -187,5 +187,5 @@
 isrsDescription = lens _isrsDescription (\ s a -> s{_isrsDescription = a});
 
 -- | The response status code.
-isrsStatus :: Lens' ImportSnapshotResponse Int
-isrsStatus = lens _isrsStatus (\ s a -> s{_isrsStatus = a});
+isrsResponseStatus :: Lens' ImportSnapshotResponse Int
+isrsResponseStatus = lens _isrsResponseStatus (\ s a -> s{_isrsResponseStatus = a});
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
@@ -32,8 +32,8 @@
       importVolume
     , ImportVolume
     -- * Request Lenses
-    , ivDryRun
     , ivDescription
+    , ivDryRun
     , ivAvailabilityZone
     , ivImage
     , ivVolume
@@ -43,7 +43,7 @@
     , ImportVolumeResponse
     -- * Response Lenses
     , ivrsConversionTask
-    , ivrsStatus
+    , ivrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -54,8 +54,8 @@
 
 -- | /See:/ 'importVolume' smart constructor.
 data ImportVolume = ImportVolume'
-    { _ivDryRun           :: !(Maybe Bool)
-    , _ivDescription      :: !(Maybe Text)
+    { _ivDescription      :: !(Maybe Text)
+    , _ivDryRun           :: !(Maybe Bool)
     , _ivAvailabilityZone :: !Text
     , _ivImage            :: !DiskImageDetail
     , _ivVolume           :: !VolumeDetail
@@ -65,10 +65,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ivDryRun'
---
 -- * 'ivDescription'
 --
+-- * 'ivDryRun'
+--
 -- * 'ivAvailabilityZone'
 --
 -- * 'ivImage'
@@ -81,13 +81,17 @@
     -> ImportVolume
 importVolume pAvailabilityZone_ pImage_ pVolume_ =
     ImportVolume'
-    { _ivDryRun = Nothing
-    , _ivDescription = Nothing
+    { _ivDescription = Nothing
+    , _ivDryRun = Nothing
     , _ivAvailabilityZone = pAvailabilityZone_
     , _ivImage = pImage_
     , _ivVolume = pVolume_
     }
 
+-- | A description of the volume.
+ivDescription :: Lens' ImportVolume (Maybe Text)
+ivDescription = lens _ivDescription (\ s a -> s{_ivDescription = 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'.
@@ -95,10 +99,6 @@
 ivDryRun :: Lens' ImportVolume (Maybe Bool)
 ivDryRun = lens _ivDryRun (\ s a -> s{_ivDryRun = a});
 
--- | A description of the volume.
-ivDescription :: Lens' ImportVolume (Maybe Text)
-ivDescription = lens _ivDescription (\ s a -> s{_ivDescription = a});
-
 -- | The Availability Zone for the resulting EBS volume.
 ivAvailabilityZone :: Lens' ImportVolume Text
 ivAvailabilityZone = lens _ivAvailabilityZone (\ s a -> s{_ivAvailabilityZone = a});
@@ -131,15 +131,15 @@
           = mconcat
               ["Action" =: ("ImportVolume" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "DryRun" =: _ivDryRun,
                "Description" =: _ivDescription,
+               "DryRun" =: _ivDryRun,
                "AvailabilityZone" =: _ivAvailabilityZone,
                "Image" =: _ivImage, "Volume" =: _ivVolume]
 
 -- | /See:/ 'importVolumeResponse' smart constructor.
 data ImportVolumeResponse = ImportVolumeResponse'
     { _ivrsConversionTask :: !(Maybe ConversionTask)
-    , _ivrsStatus         :: !Int
+    , _ivrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImportVolumeResponse' with the minimum fields required to make a request.
@@ -148,14 +148,14 @@
 --
 -- * 'ivrsConversionTask'
 --
--- * 'ivrsStatus'
+-- * 'ivrsResponseStatus'
 importVolumeResponse
-    :: Int -- ^ 'ivrsStatus'
+    :: Int -- ^ 'ivrsResponseStatus'
     -> ImportVolumeResponse
-importVolumeResponse pStatus_ =
+importVolumeResponse pResponseStatus_ =
     ImportVolumeResponse'
     { _ivrsConversionTask = Nothing
-    , _ivrsStatus = pStatus_
+    , _ivrsResponseStatus = pResponseStatus_
     }
 
 -- | Information about the conversion task.
@@ -163,5 +163,5 @@
 ivrsConversionTask = lens _ivrsConversionTask (\ s a -> s{_ivrsConversionTask = a});
 
 -- | The response status code.
-ivrsStatus :: Lens' ImportVolumeResponse Int
-ivrsStatus = lens _ivrsStatus (\ s a -> s{_ivrsStatus = a});
+ivrsResponseStatus :: Lens' ImportVolumeResponse Int
+ivrsResponseStatus = lens _ivrsResponseStatus (\ s a -> s{_ivrsResponseStatus = a});
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
@@ -38,8 +38,8 @@
     , miaLaunchPermission
     , miaOperationType
     , miaProductCodes
-    , miaDryRun
     , miaDescription
+    , miaDryRun
     , miaImageId
 
     -- * Destructuring the Response
@@ -60,10 +60,10 @@
     , _miaUserGroups       :: !(Maybe [Text])
     , _miaValue            :: !(Maybe Text)
     , _miaLaunchPermission :: !(Maybe LaunchPermissionModifications)
-    , _miaOperationType    :: !(Maybe Text)
+    , _miaOperationType    :: !(Maybe OperationType)
     , _miaProductCodes     :: !(Maybe [Text])
-    , _miaDryRun           :: !(Maybe Bool)
     , _miaDescription      :: !(Maybe AttributeValue)
+    , _miaDryRun           :: !(Maybe Bool)
     , _miaImageId          :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -85,10 +85,10 @@
 --
 -- * 'miaProductCodes'
 --
--- * 'miaDryRun'
---
 -- * 'miaDescription'
 --
+-- * 'miaDryRun'
+--
 -- * 'miaImageId'
 modifyImageAttribute
     :: Text -- ^ 'miaImageId'
@@ -102,8 +102,8 @@
     , _miaLaunchPermission = Nothing
     , _miaOperationType = Nothing
     , _miaProductCodes = Nothing
-    , _miaDryRun = Nothing
     , _miaDescription = Nothing
+    , _miaDryRun = Nothing
     , _miaImageId = pImageId_
     }
 
@@ -131,7 +131,7 @@
 miaLaunchPermission = lens _miaLaunchPermission (\ s a -> s{_miaLaunchPermission = a});
 
 -- | The operation type.
-miaOperationType :: Lens' ModifyImageAttribute (Maybe Text)
+miaOperationType :: Lens' ModifyImageAttribute (Maybe OperationType)
 miaOperationType = lens _miaOperationType (\ s a -> s{_miaOperationType = a});
 
 -- | One or more product codes. After you add a product code to an AMI, it
@@ -140,6 +140,10 @@
 miaProductCodes :: Lens' ModifyImageAttribute [Text]
 miaProductCodes = lens _miaProductCodes (\ s a -> s{_miaProductCodes = a}) . _Default . _Coerce;
 
+-- | A description for the AMI.
+miaDescription :: Lens' ModifyImageAttribute (Maybe AttributeValue)
+miaDescription = lens _miaDescription (\ s a -> s{_miaDescription = 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'.
@@ -147,10 +151,6 @@
 miaDryRun :: Lens' ModifyImageAttribute (Maybe Bool)
 miaDryRun = lens _miaDryRun (\ s a -> s{_miaDryRun = a});
 
--- | A description for the AMI.
-miaDescription :: Lens' ModifyImageAttribute (Maybe AttributeValue)
-miaDescription = lens _miaDescription (\ s a -> s{_miaDescription = a});
-
 -- | The ID of the AMI.
 miaImageId :: Lens' ModifyImageAttribute Text
 miaImageId = lens _miaImageId (\ s a -> s{_miaImageId = a});
@@ -180,9 +180,8 @@
                "OperationType" =: _miaOperationType,
                toQuery
                  (toQueryList "ProductCode" <$> _miaProductCodes),
-               "DryRun" =: _miaDryRun,
                "Description" =: _miaDescription,
-               "ImageId" =: _miaImageId]
+               "DryRun" =: _miaDryRun, "ImageId" =: _miaImageId]
 
 -- | /See:/ 'modifyImageAttributeResponse' smart constructor.
 data ModifyImageAttributeResponse =
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
@@ -33,17 +33,17 @@
       modifyInstanceAttribute
     , ModifyInstanceAttribute
     -- * Request Lenses
-    , mAttribute
     , mGroups
+    , mAttribute
     , mSourceDestCheck
     , mDisableAPITermination
+    , mKernel
     , mRAMDisk
     , mValue
-    , mKernel
     , mInstanceType
+    , mSRIOVNetSupport
     , mEBSOptimized
     , mUserData
-    , mSRIOVNetSupport
     , mInstanceInitiatedShutdownBehavior
     , mBlockDeviceMappings
     , mDryRun
@@ -62,17 +62,17 @@
 
 -- | /See:/ 'modifyInstanceAttribute' smart constructor.
 data ModifyInstanceAttribute = ModifyInstanceAttribute'
-    { _mAttribute                         :: !(Maybe InstanceAttributeName)
-    , _mGroups                            :: !(Maybe [Text])
+    { _mGroups                            :: !(Maybe [Text])
+    , _mAttribute                         :: !(Maybe InstanceAttributeName)
     , _mSourceDestCheck                   :: !(Maybe AttributeBooleanValue)
     , _mDisableAPITermination             :: !(Maybe AttributeBooleanValue)
+    , _mKernel                            :: !(Maybe AttributeValue)
     , _mRAMDisk                           :: !(Maybe AttributeValue)
     , _mValue                             :: !(Maybe Text)
-    , _mKernel                            :: !(Maybe AttributeValue)
     , _mInstanceType                      :: !(Maybe AttributeValue)
+    , _mSRIOVNetSupport                   :: !(Maybe AttributeValue)
     , _mEBSOptimized                      :: !(Maybe AttributeBooleanValue)
     , _mUserData                          :: !(Maybe BlobAttributeValue)
-    , _mSRIOVNetSupport                   :: !(Maybe AttributeValue)
     , _mInstanceInitiatedShutdownBehavior :: !(Maybe AttributeValue)
     , _mBlockDeviceMappings               :: !(Maybe [InstanceBlockDeviceMappingSpecification])
     , _mDryRun                            :: !(Maybe Bool)
@@ -83,28 +83,28 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mAttribute'
---
 -- * 'mGroups'
 --
+-- * 'mAttribute'
+--
 -- * 'mSourceDestCheck'
 --
 -- * 'mDisableAPITermination'
 --
+-- * 'mKernel'
+--
 -- * 'mRAMDisk'
 --
 -- * 'mValue'
 --
--- * 'mKernel'
---
 -- * 'mInstanceType'
 --
+-- * 'mSRIOVNetSupport'
+--
 -- * 'mEBSOptimized'
 --
 -- * 'mUserData'
 --
--- * 'mSRIOVNetSupport'
---
 -- * 'mInstanceInitiatedShutdownBehavior'
 --
 -- * 'mBlockDeviceMappings'
@@ -117,27 +117,23 @@
     -> ModifyInstanceAttribute
 modifyInstanceAttribute pInstanceId_ =
     ModifyInstanceAttribute'
-    { _mAttribute = Nothing
-    , _mGroups = Nothing
+    { _mGroups = Nothing
+    , _mAttribute = Nothing
     , _mSourceDestCheck = Nothing
     , _mDisableAPITermination = Nothing
+    , _mKernel = Nothing
     , _mRAMDisk = Nothing
     , _mValue = Nothing
-    , _mKernel = Nothing
     , _mInstanceType = Nothing
+    , _mSRIOVNetSupport = Nothing
     , _mEBSOptimized = Nothing
     , _mUserData = Nothing
-    , _mSRIOVNetSupport = Nothing
     , _mInstanceInitiatedShutdownBehavior = Nothing
     , _mBlockDeviceMappings = Nothing
     , _mDryRun = Nothing
     , _mInstanceId = pInstanceId_
     }
 
--- | The name of the attribute.
-mAttribute :: Lens' ModifyInstanceAttribute (Maybe InstanceAttributeName)
-mAttribute = lens _mAttribute (\ s a -> s{_mAttribute = a});
-
 -- | [EC2-VPC] Changes the security groups of the instance. You must specify
 -- at least one security group, even if it\'s just the default security
 -- group for the VPC. You must specify the security group ID, not the
@@ -145,6 +141,10 @@
 mGroups :: Lens' ModifyInstanceAttribute [Text]
 mGroups = lens _mGroups (\ s a -> s{_mGroups = a}) . _Default . _Coerce;
 
+-- | The name of the attribute.
+mAttribute :: Lens' ModifyInstanceAttribute (Maybe InstanceAttributeName)
+mAttribute = lens _mAttribute (\ s a -> s{_mAttribute = a});
+
 -- | Specifies whether source\/destination checking is enabled. A value of
 -- 'true' means that checking is enabled, and 'false' means checking is
 -- disabled. This value must be 'false' for a NAT instance to perform NAT.
@@ -152,10 +152,18 @@
 mSourceDestCheck = lens _mSourceDestCheck (\ s a -> s{_mSourceDestCheck = a});
 
 -- | If the value is 'true', you can\'t terminate the instance using the
--- Amazon EC2 console, CLI, or API; otherwise, you can.
+-- Amazon EC2 console, CLI, or API; otherwise, you can. You cannot use this
+-- paramater for Spot Instances.
 mDisableAPITermination :: Lens' ModifyInstanceAttribute (Maybe AttributeBooleanValue)
 mDisableAPITermination = lens _mDisableAPITermination (\ s a -> s{_mDisableAPITermination = a});
 
+-- | Changes the instance\'s kernel to the specified value. We recommend that
+-- you use PV-GRUB instead of kernels and RAM disks. For more information,
+-- see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html PV-GRUB>.
+mKernel :: Lens' ModifyInstanceAttribute (Maybe AttributeValue)
+mKernel = lens _mKernel (\ s a -> s{_mKernel = a});
+
 -- | Changes the instance\'s RAM disk to the specified value. We recommend
 -- that you use PV-GRUB instead of kernels and RAM disks. For more
 -- information, see
@@ -165,17 +173,10 @@
 
 -- | A new value for the attribute. Use only with the 'kernel', 'ramdisk',
 -- 'userData', 'disableApiTermination', or
--- 'intanceInitiateShutdownBehavior' attribute.
+-- 'instanceInitiatedShutdownBehavior' attribute.
 mValue :: Lens' ModifyInstanceAttribute (Maybe Text)
 mValue = lens _mValue (\ s a -> s{_mValue = a});
 
--- | Changes the instance\'s kernel to the specified value. We recommend that
--- you use PV-GRUB instead of kernels and RAM disks. For more information,
--- see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html PV-GRUB>.
-mKernel :: Lens' ModifyInstanceAttribute (Maybe AttributeValue)
-mKernel = lens _mKernel (\ s a -> s{_mKernel = a});
-
 -- | Changes the instance type to the specified value. For more information,
 -- see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types>.
@@ -184,6 +185,15 @@
 mInstanceType :: Lens' ModifyInstanceAttribute (Maybe AttributeValue)
 mInstanceType = lens _mInstanceType (\ s a -> s{_mInstanceType = a});
 
+-- | Set to 'simple' to enable enhanced networking for the instance.
+--
+-- There is no way to disable enhanced networking at this time.
+--
+-- This option is supported only for HVM instances. Specifying this option
+-- with a PV instance can make it unreachable.
+mSRIOVNetSupport :: Lens' ModifyInstanceAttribute (Maybe AttributeValue)
+mSRIOVNetSupport = lens _mSRIOVNetSupport (\ s a -> s{_mSRIOVNetSupport = a});
+
 -- | Specifies whether the instance is optimized for EBS I\/O. This
 -- optimization provides dedicated throughput to Amazon EBS and an
 -- optimized configuration stack to provide optimal EBS I\/O performance.
@@ -196,15 +206,6 @@
 mUserData :: Lens' ModifyInstanceAttribute (Maybe BlobAttributeValue)
 mUserData = lens _mUserData (\ s a -> s{_mUserData = a});
 
--- | Set to 'simple' to enable enhanced networking for the instance.
---
--- There is no way to disable enhanced networking at this time.
---
--- This option is supported only for HVM instances. Specifying this option
--- with a PV instance can make it unreachable.
-mSRIOVNetSupport :: Lens' ModifyInstanceAttribute (Maybe AttributeValue)
-mSRIOVNetSupport = lens _mSRIOVNetSupport (\ s a -> s{_mSRIOVNetSupport = a});
-
 -- | Specifies whether an instance stops or terminates when you initiate
 -- shutdown from the instance (using the operating system command for
 -- system shutdown).
@@ -253,16 +254,15 @@
               ["Action" =:
                  ("ModifyInstanceAttribute" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "Attribute" =: _mAttribute,
                toQuery (toQueryList "GroupId" <$> _mGroups),
+               "Attribute" =: _mAttribute,
                "SourceDestCheck" =: _mSourceDestCheck,
                "DisableApiTermination" =: _mDisableAPITermination,
-               "Ramdisk" =: _mRAMDisk, "Value" =: _mValue,
-               "Kernel" =: _mKernel,
-               "InstanceType" =: _mInstanceType,
+               "Kernel" =: _mKernel, "Ramdisk" =: _mRAMDisk,
+               "Value" =: _mValue, "InstanceType" =: _mInstanceType,
+               "SriovNetSupport" =: _mSRIOVNetSupport,
                "EbsOptimized" =: _mEBSOptimized,
                "UserData" =: _mUserData,
-               "SriovNetSupport" =: _mSRIOVNetSupport,
                "InstanceInitiatedShutdownBehavior" =:
                  _mInstanceInitiatedShutdownBehavior,
                toQuery
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
@@ -31,8 +31,8 @@
     , mniaGroups
     , mniaSourceDestCheck
     , mniaAttachment
-    , mniaDryRun
     , mniaDescription
+    , mniaDryRun
     , mniaNetworkInterfaceId
 
     -- * Destructuring the Response
@@ -51,8 +51,8 @@
     { _mniaGroups             :: !(Maybe [Text])
     , _mniaSourceDestCheck    :: !(Maybe AttributeBooleanValue)
     , _mniaAttachment         :: !(Maybe NetworkInterfaceAttachmentChanges)
-    , _mniaDryRun             :: !(Maybe Bool)
     , _mniaDescription        :: !(Maybe AttributeValue)
+    , _mniaDryRun             :: !(Maybe Bool)
     , _mniaNetworkInterfaceId :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -66,10 +66,10 @@
 --
 -- * 'mniaAttachment'
 --
--- * 'mniaDryRun'
---
 -- * 'mniaDescription'
 --
+-- * 'mniaDryRun'
+--
 -- * 'mniaNetworkInterfaceId'
 modifyNetworkInterfaceAttribute
     :: Text -- ^ 'mniaNetworkInterfaceId'
@@ -79,8 +79,8 @@
     { _mniaGroups = Nothing
     , _mniaSourceDestCheck = Nothing
     , _mniaAttachment = Nothing
-    , _mniaDryRun = Nothing
     , _mniaDescription = Nothing
+    , _mniaDryRun = Nothing
     , _mniaNetworkInterfaceId = pNetworkInterfaceId_
     }
 
@@ -106,6 +106,10 @@
 mniaAttachment :: Lens' ModifyNetworkInterfaceAttribute (Maybe NetworkInterfaceAttachmentChanges)
 mniaAttachment = lens _mniaAttachment (\ s a -> s{_mniaAttachment = a});
 
+-- | A description for the network interface.
+mniaDescription :: Lens' ModifyNetworkInterfaceAttribute (Maybe AttributeValue)
+mniaDescription = lens _mniaDescription (\ s a -> s{_mniaDescription = 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'.
@@ -113,10 +117,6 @@
 mniaDryRun :: Lens' ModifyNetworkInterfaceAttribute (Maybe Bool)
 mniaDryRun = lens _mniaDryRun (\ s a -> s{_mniaDryRun = a});
 
--- | A description for the network interface.
-mniaDescription :: Lens' ModifyNetworkInterfaceAttribute (Maybe AttributeValue)
-mniaDescription = lens _mniaDescription (\ s a -> s{_mniaDescription = a});
-
 -- | The ID of the network interface.
 mniaNetworkInterfaceId :: Lens' ModifyNetworkInterfaceAttribute Text
 mniaNetworkInterfaceId = lens _mniaNetworkInterfaceId (\ s a -> s{_mniaNetworkInterfaceId = a});
@@ -148,8 +148,8 @@
                  (toQueryList "SecurityGroupId" <$> _mniaGroups),
                "SourceDestCheck" =: _mniaSourceDestCheck,
                "Attachment" =: _mniaAttachment,
-               "DryRun" =: _mniaDryRun,
                "Description" =: _mniaDescription,
+               "DryRun" =: _mniaDryRun,
                "NetworkInterfaceId" =: _mniaNetworkInterfaceId]
 
 -- | /See:/ 'modifyNetworkInterfaceAttributeResponse' smart constructor.
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
@@ -43,7 +43,7 @@
     , ModifyReservedInstancesResponse
     -- * Response Lenses
     , mrirsReservedInstancesModificationId
-    , mrirsStatus
+    , mrirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -124,7 +124,7 @@
 -- | /See:/ 'modifyReservedInstancesResponse' smart constructor.
 data ModifyReservedInstancesResponse = ModifyReservedInstancesResponse'
     { _mrirsReservedInstancesModificationId :: !(Maybe Text)
-    , _mrirsStatus                          :: !Int
+    , _mrirsResponseStatus                  :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ModifyReservedInstancesResponse' with the minimum fields required to make a request.
@@ -133,14 +133,14 @@
 --
 -- * 'mrirsReservedInstancesModificationId'
 --
--- * 'mrirsStatus'
+-- * 'mrirsResponseStatus'
 modifyReservedInstancesResponse
-    :: Int -- ^ 'mrirsStatus'
+    :: Int -- ^ 'mrirsResponseStatus'
     -> ModifyReservedInstancesResponse
-modifyReservedInstancesResponse pStatus_ =
+modifyReservedInstancesResponse pResponseStatus_ =
     ModifyReservedInstancesResponse'
     { _mrirsReservedInstancesModificationId = Nothing
-    , _mrirsStatus = pStatus_
+    , _mrirsResponseStatus = pResponseStatus_
     }
 
 -- | The ID for the modification.
@@ -148,5 +148,5 @@
 mrirsReservedInstancesModificationId = lens _mrirsReservedInstancesModificationId (\ s a -> s{_mrirsReservedInstancesModificationId = a});
 
 -- | The response status code.
-mrirsStatus :: Lens' ModifyReservedInstancesResponse Int
-mrirsStatus = lens _mrirsStatus (\ s a -> s{_mrirsStatus = a});
+mrirsResponseStatus :: Lens' ModifyReservedInstancesResponse Int
+mrirsResponseStatus = lens _mrirsResponseStatus (\ s a -> s{_mrirsResponseStatus = a});
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
@@ -38,8 +38,8 @@
     , ModifySnapshotAttribute
     -- * Request Lenses
     , msaAttribute
-    , msaUserIds
     , msaCreateVolumePermission
+    , msaUserIds
     , msaGroupNames
     , msaOperationType
     , msaDryRun
@@ -59,10 +59,10 @@
 -- | /See:/ 'modifySnapshotAttribute' smart constructor.
 data ModifySnapshotAttribute = ModifySnapshotAttribute'
     { _msaAttribute              :: !(Maybe SnapshotAttributeName)
-    , _msaUserIds                :: !(Maybe [Text])
     , _msaCreateVolumePermission :: !(Maybe CreateVolumePermissionModifications)
+    , _msaUserIds                :: !(Maybe [Text])
     , _msaGroupNames             :: !(Maybe [Text])
-    , _msaOperationType          :: !(Maybe Text)
+    , _msaOperationType          :: !(Maybe OperationType)
     , _msaDryRun                 :: !(Maybe Bool)
     , _msaSnapshotId             :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -73,10 +73,10 @@
 --
 -- * 'msaAttribute'
 --
--- * 'msaUserIds'
---
 -- * 'msaCreateVolumePermission'
 --
+-- * 'msaUserIds'
+--
 -- * 'msaGroupNames'
 --
 -- * 'msaOperationType'
@@ -90,8 +90,8 @@
 modifySnapshotAttribute pSnapshotId_ =
     ModifySnapshotAttribute'
     { _msaAttribute = Nothing
-    , _msaUserIds = Nothing
     , _msaCreateVolumePermission = Nothing
+    , _msaUserIds = Nothing
     , _msaGroupNames = Nothing
     , _msaOperationType = Nothing
     , _msaDryRun = Nothing
@@ -104,20 +104,20 @@
 msaAttribute :: Lens' ModifySnapshotAttribute (Maybe SnapshotAttributeName)
 msaAttribute = lens _msaAttribute (\ s a -> s{_msaAttribute = a});
 
--- | The account ID to modify for the snapshot.
-msaUserIds :: Lens' ModifySnapshotAttribute [Text]
-msaUserIds = lens _msaUserIds (\ s a -> s{_msaUserIds = a}) . _Default . _Coerce;
-
 -- | A JSON representation of the snapshot attribute modification.
 msaCreateVolumePermission :: Lens' ModifySnapshotAttribute (Maybe CreateVolumePermissionModifications)
 msaCreateVolumePermission = lens _msaCreateVolumePermission (\ s a -> s{_msaCreateVolumePermission = a});
 
+-- | The account ID to modify for the snapshot.
+msaUserIds :: Lens' ModifySnapshotAttribute [Text]
+msaUserIds = lens _msaUserIds (\ s a -> s{_msaUserIds = a}) . _Default . _Coerce;
+
 -- | The group to modify for the snapshot.
 msaGroupNames :: Lens' ModifySnapshotAttribute [Text]
 msaGroupNames = lens _msaGroupNames (\ s a -> s{_msaGroupNames = a}) . _Default . _Coerce;
 
 -- | The type of operation to perform to the attribute.
-msaOperationType :: Lens' ModifySnapshotAttribute (Maybe Text)
+msaOperationType :: Lens' ModifySnapshotAttribute (Maybe OperationType)
 msaOperationType = lens _msaOperationType (\ s a -> s{_msaOperationType = a});
 
 -- | Checks whether you have the required permissions for the action, without
@@ -151,9 +151,9 @@
                  ("ModifySnapshotAttribute" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                "Attribute" =: _msaAttribute,
-               toQuery (toQueryList "UserId" <$> _msaUserIds),
                "CreateVolumePermission" =:
                  _msaCreateVolumePermission,
+               toQuery (toQueryList "UserId" <$> _msaUserIds),
                toQuery (toQueryList "UserGroup" <$> _msaGroupNames),
                "OperationType" =: _msaOperationType,
                "DryRun" =: _msaDryRun,
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
@@ -41,7 +41,7 @@
     , ModifyVPCEndpointResponse
     -- * Response Lenses
     , mversReturn
-    , mversStatus
+    , mversResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -150,8 +150,8 @@
 
 -- | /See:/ 'modifyVPCEndpointResponse' smart constructor.
 data ModifyVPCEndpointResponse = ModifyVPCEndpointResponse'
-    { _mversReturn :: !(Maybe Bool)
-    , _mversStatus :: !Int
+    { _mversReturn         :: !(Maybe Bool)
+    , _mversResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ModifyVPCEndpointResponse' with the minimum fields required to make a request.
@@ -160,14 +160,14 @@
 --
 -- * 'mversReturn'
 --
--- * 'mversStatus'
+-- * 'mversResponseStatus'
 modifyVPCEndpointResponse
-    :: Int -- ^ 'mversStatus'
+    :: Int -- ^ 'mversResponseStatus'
     -> ModifyVPCEndpointResponse
-modifyVPCEndpointResponse pStatus_ =
+modifyVPCEndpointResponse pResponseStatus_ =
     ModifyVPCEndpointResponse'
     { _mversReturn = Nothing
-    , _mversStatus = pStatus_
+    , _mversResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -175,5 +175,5 @@
 mversReturn = lens _mversReturn (\ s a -> s{_mversReturn = a});
 
 -- | The response status code.
-mversStatus :: Lens' ModifyVPCEndpointResponse Int
-mversStatus = lens _mversStatus (\ s a -> s{_mversStatus = a});
+mversResponseStatus :: Lens' ModifyVPCEndpointResponse Int
+mversResponseStatus = lens _mversResponseStatus (\ s a -> s{_mversResponseStatus = a});
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
@@ -38,7 +38,7 @@
     , MonitorInstancesResponse
     -- * Response Lenses
     , mirsInstanceMonitorings
-    , mirsStatus
+    , mirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -107,7 +107,7 @@
 -- | /See:/ 'monitorInstancesResponse' smart constructor.
 data MonitorInstancesResponse = MonitorInstancesResponse'
     { _mirsInstanceMonitorings :: !(Maybe [InstanceMonitoring])
-    , _mirsStatus              :: !Int
+    , _mirsResponseStatus      :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'MonitorInstancesResponse' with the minimum fields required to make a request.
@@ -116,14 +116,14 @@
 --
 -- * 'mirsInstanceMonitorings'
 --
--- * 'mirsStatus'
+-- * 'mirsResponseStatus'
 monitorInstancesResponse
-    :: Int -- ^ 'mirsStatus'
+    :: Int -- ^ 'mirsResponseStatus'
     -> MonitorInstancesResponse
-monitorInstancesResponse pStatus_ =
+monitorInstancesResponse pResponseStatus_ =
     MonitorInstancesResponse'
     { _mirsInstanceMonitorings = Nothing
-    , _mirsStatus = pStatus_
+    , _mirsResponseStatus = pResponseStatus_
     }
 
 -- | Monitoring information for one or more instances.
@@ -131,5 +131,5 @@
 mirsInstanceMonitorings = lens _mirsInstanceMonitorings (\ s a -> s{_mirsInstanceMonitorings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-mirsStatus :: Lens' MonitorInstancesResponse Int
-mirsStatus = lens _mirsStatus (\ s a -> s{_mirsStatus = a});
+mirsResponseStatus :: Lens' MonitorInstancesResponse Int
+mirsResponseStatus = lens _mirsResponseStatus (\ s a -> s{_mirsResponseStatus = a});
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
@@ -40,8 +40,9 @@
     , moveAddressToVPCResponse
     , MoveAddressToVPCResponse
     -- * Response Lenses
-    , matvrsAllocationId
     , matvrsStatus
+    , matvrsAllocationId
+    , matvrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -90,7 +91,8 @@
           = receiveXML
               (\ s h x ->
                  MoveAddressToVPCResponse' <$>
-                   (x .@? "allocationId") <*> (pure (fromEnum s)))
+                   (x .@? "status") <*> (x .@? "allocationId") <*>
+                     (pure (fromEnum s)))
 
 instance ToHeaders MoveAddressToVPC where
         toHeaders = const mempty
@@ -107,30 +109,38 @@
 
 -- | /See:/ 'moveAddressToVPCResponse' smart constructor.
 data MoveAddressToVPCResponse = MoveAddressToVPCResponse'
-    { _matvrsAllocationId :: !(Maybe Text)
-    , _matvrsStatus       :: !Int
+    { _matvrsStatus         :: !(Maybe AddressStatus)
+    , _matvrsAllocationId   :: !(Maybe Text)
+    , _matvrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'MoveAddressToVPCResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'matvrsStatus'
+--
 -- * 'matvrsAllocationId'
 --
--- * 'matvrsStatus'
+-- * 'matvrsResponseStatus'
 moveAddressToVPCResponse
-    :: Int -- ^ 'matvrsStatus'
+    :: Int -- ^ 'matvrsResponseStatus'
     -> MoveAddressToVPCResponse
-moveAddressToVPCResponse pStatus_ =
+moveAddressToVPCResponse pResponseStatus_ =
     MoveAddressToVPCResponse'
-    { _matvrsAllocationId = Nothing
-    , _matvrsStatus = pStatus_
+    { _matvrsStatus = Nothing
+    , _matvrsAllocationId = Nothing
+    , _matvrsResponseStatus = pResponseStatus_
     }
 
+-- | The status of the move of the IP address.
+matvrsStatus :: Lens' MoveAddressToVPCResponse (Maybe AddressStatus)
+matvrsStatus = lens _matvrsStatus (\ s a -> s{_matvrsStatus = a});
+
 -- | The allocation ID for the Elastic IP address.
 matvrsAllocationId :: Lens' MoveAddressToVPCResponse (Maybe Text)
 matvrsAllocationId = lens _matvrsAllocationId (\ s a -> s{_matvrsAllocationId = a});
 
 -- | The response status code.
-matvrsStatus :: Lens' MoveAddressToVPCResponse Int
-matvrsStatus = lens _matvrsStatus (\ s a -> s{_matvrsStatus = a});
+matvrsResponseStatus :: Lens' MoveAddressToVPCResponse Int
+matvrsResponseStatus = lens _matvrsResponseStatus (\ s a -> s{_matvrsResponseStatus = a});
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
@@ -51,7 +51,7 @@
     , PurchaseReservedInstancesOfferingResponse
     -- * Response Lenses
     , priorsReservedInstancesId
-    , priorsStatus
+    , priorsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -148,7 +148,7 @@
 -- | /See:/ 'purchaseReservedInstancesOfferingResponse' smart constructor.
 data PurchaseReservedInstancesOfferingResponse = PurchaseReservedInstancesOfferingResponse'
     { _priorsReservedInstancesId :: !(Maybe Text)
-    , _priorsStatus              :: !Int
+    , _priorsResponseStatus      :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'PurchaseReservedInstancesOfferingResponse' with the minimum fields required to make a request.
@@ -157,14 +157,14 @@
 --
 -- * 'priorsReservedInstancesId'
 --
--- * 'priorsStatus'
+-- * 'priorsResponseStatus'
 purchaseReservedInstancesOfferingResponse
-    :: Int -- ^ 'priorsStatus'
+    :: Int -- ^ 'priorsResponseStatus'
     -> PurchaseReservedInstancesOfferingResponse
-purchaseReservedInstancesOfferingResponse pStatus_ =
+purchaseReservedInstancesOfferingResponse pResponseStatus_ =
     PurchaseReservedInstancesOfferingResponse'
     { _priorsReservedInstancesId = Nothing
-    , _priorsStatus = pStatus_
+    , _priorsResponseStatus = pResponseStatus_
     }
 
 -- | The IDs of the purchased Reserved Instances.
@@ -172,5 +172,5 @@
 priorsReservedInstancesId = lens _priorsReservedInstancesId (\ s a -> s{_priorsReservedInstancesId = a});
 
 -- | The response status code.
-priorsStatus :: Lens' PurchaseReservedInstancesOfferingResponse Int
-priorsStatus = lens _priorsStatus (\ s a -> s{_priorsStatus = a});
+priorsResponseStatus :: Lens' PurchaseReservedInstancesOfferingResponse Int
+priorsResponseStatus = lens _priorsResponseStatus (\ s a -> s{_priorsResponseStatus = a});
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
@@ -19,25 +19,33 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Registers an AMI. When you\'re creating an AMI, this is the final step
--- you must complete before you can launch an instance from the AMI. This
--- step is required if you\'re creating an instance store-backed Linux or
--- Windows AMI. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-instance-store.html Creating an Instance Store-Backed Linux AMI>
--- and
--- <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_InstanceStoreBacked_WinAMI.html Creating an Instance Store-Backed Windows AMI>
+-- you must complete before you can launch an instance from the AMI. For
+-- more information about creating AMIs, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html Creating Your Own AMIs>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
 -- For Amazon EBS-backed instances, CreateImage creates and registers the
 -- AMI in a single request, so you don\'t have to register the AMI
 -- yourself.
 --
--- You can also use 'RegisterImage' to create an Amazon EBS-backed AMI from
--- a snapshot of a root device volume. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html Launching an Instance from a Backup>
--- in the /Amazon Elastic Compute Cloud User Guide/. Note that although you
--- can create a Windows AMI from a snapshot, you can\'t launch an instance
--- from the AMI - use the CreateImage command instead.
+-- You can also use 'RegisterImage' to create an Amazon EBS-backed Linux
+-- AMI from a snapshot of a root device volume. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_LaunchingInstanceFromSnapshot.html Launching an Instance from a Snapshot>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
 --
+-- Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and
+-- SUSE Linux Enterprise Server (SLES), use the EC2 'billingProduct' code
+-- associated with an AMI to verify subscription status for package
+-- updates. Creating an AMI from an EBS snapshot does not maintain this
+-- billing code, and subsequent instances launched from such an AMI will
+-- not be able to connect to package update infrastructure.
+--
+-- Similarly, although you can create a Windows AMI from a snapshot, you
+-- can\'t successfully launch an instance from the AMI.
+--
+-- To create Windows AMIs or to create AMIs for Linux operating systems
+-- that must retain AMI billing codes to work properly, see CreateImage.
+--
 -- If needed, you can deregister an AMI at any time. Any modifications you
 -- make to an AMI backed by an instance store volume invalidates its
 -- registration. If you make changes to an image, deregister the previous
@@ -60,9 +68,9 @@
     , riRootDeviceName
     , riSRIOVNetSupport
     , riArchitecture
+    , riDescription
     , riBlockDeviceMappings
     , riDryRun
-    , riDescription
     , riName
 
     -- * Destructuring the Response
@@ -70,7 +78,7 @@
     , RegisterImageResponse
     -- * Response Lenses
     , rirsImageId
-    , rirsStatus
+    , rirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -88,9 +96,9 @@
     , _riRootDeviceName      :: !(Maybe Text)
     , _riSRIOVNetSupport     :: !(Maybe Text)
     , _riArchitecture        :: !(Maybe ArchitectureValues)
+    , _riDescription         :: !(Maybe Text)
     , _riBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
     , _riDryRun              :: !(Maybe Bool)
-    , _riDescription         :: !(Maybe Text)
     , _riName                :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -112,12 +120,12 @@
 --
 -- * 'riArchitecture'
 --
+-- * 'riDescription'
+--
 -- * 'riBlockDeviceMappings'
 --
 -- * 'riDryRun'
 --
--- * 'riDescription'
---
 -- * 'riName'
 registerImage
     :: Text -- ^ 'riName'
@@ -131,9 +139,9 @@
     , _riRootDeviceName = Nothing
     , _riSRIOVNetSupport = Nothing
     , _riArchitecture = Nothing
+    , _riDescription = Nothing
     , _riBlockDeviceMappings = Nothing
     , _riDryRun = Nothing
-    , _riDescription = Nothing
     , _riName = pName_
     }
 
@@ -177,6 +185,10 @@
 riArchitecture :: Lens' RegisterImage (Maybe ArchitectureValues)
 riArchitecture = lens _riArchitecture (\ s a -> s{_riArchitecture = a});
 
+-- | A description for your AMI.
+riDescription :: Lens' RegisterImage (Maybe Text)
+riDescription = lens _riDescription (\ s a -> s{_riDescription = a});
+
 -- | One or more block device mapping entries.
 riBlockDeviceMappings :: Lens' RegisterImage [BlockDeviceMapping]
 riBlockDeviceMappings = lens _riBlockDeviceMappings (\ s a -> s{_riBlockDeviceMappings = a}) . _Default . _Coerce;
@@ -188,10 +200,6 @@
 riDryRun :: Lens' RegisterImage (Maybe Bool)
 riDryRun = lens _riDryRun (\ s a -> s{_riDryRun = a});
 
--- | A description for your AMI.
-riDescription :: Lens' RegisterImage (Maybe Text)
-riDescription = lens _riDescription (\ s a -> s{_riDescription = a});
-
 -- | A name for your AMI.
 --
 -- Constraints: 3-128 alphanumeric characters, parentheses (()), square
@@ -227,16 +235,16 @@
                "RootDeviceName" =: _riRootDeviceName,
                "SriovNetSupport" =: _riSRIOVNetSupport,
                "Architecture" =: _riArchitecture,
+               "Description" =: _riDescription,
                toQuery
                  (toQueryList "BlockDeviceMapping" <$>
                     _riBlockDeviceMappings),
-               "DryRun" =: _riDryRun,
-               "Description" =: _riDescription, "Name" =: _riName]
+               "DryRun" =: _riDryRun, "Name" =: _riName]
 
 -- | /See:/ 'registerImageResponse' smart constructor.
 data RegisterImageResponse = RegisterImageResponse'
-    { _rirsImageId :: !(Maybe Text)
-    , _rirsStatus  :: !Int
+    { _rirsImageId        :: !(Maybe Text)
+    , _rirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RegisterImageResponse' with the minimum fields required to make a request.
@@ -245,14 +253,14 @@
 --
 -- * 'rirsImageId'
 --
--- * 'rirsStatus'
+-- * 'rirsResponseStatus'
 registerImageResponse
-    :: Int -- ^ 'rirsStatus'
+    :: Int -- ^ 'rirsResponseStatus'
     -> RegisterImageResponse
-registerImageResponse pStatus_ =
+registerImageResponse pResponseStatus_ =
     RegisterImageResponse'
     { _rirsImageId = Nothing
-    , _rirsStatus = pStatus_
+    , _rirsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the newly registered AMI.
@@ -260,5 +268,5 @@
 rirsImageId = lens _rirsImageId (\ s a -> s{_rirsImageId = a});
 
 -- | The response status code.
-rirsStatus :: Lens' RegisterImageResponse Int
-rirsStatus = lens _rirsStatus (\ s a -> s{_rirsStatus = a});
+rirsResponseStatus :: Lens' RegisterImageResponse Int
+rirsResponseStatus = lens _rirsResponseStatus (\ s a -> s{_rirsResponseStatus = a});
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
@@ -40,7 +40,7 @@
     , RejectVPCPeeringConnectionResponse
     -- * Response Lenses
     , rvpcrsReturn
-    , rvpcrsStatus
+    , rvpcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -110,8 +110,8 @@
 
 -- | /See:/ 'rejectVPCPeeringConnectionResponse' smart constructor.
 data RejectVPCPeeringConnectionResponse = RejectVPCPeeringConnectionResponse'
-    { _rvpcrsReturn :: !(Maybe Bool)
-    , _rvpcrsStatus :: !Int
+    { _rvpcrsReturn         :: !(Maybe Bool)
+    , _rvpcrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RejectVPCPeeringConnectionResponse' with the minimum fields required to make a request.
@@ -120,14 +120,14 @@
 --
 -- * 'rvpcrsReturn'
 --
--- * 'rvpcrsStatus'
+-- * 'rvpcrsResponseStatus'
 rejectVPCPeeringConnectionResponse
-    :: Int -- ^ 'rvpcrsStatus'
+    :: Int -- ^ 'rvpcrsResponseStatus'
     -> RejectVPCPeeringConnectionResponse
-rejectVPCPeeringConnectionResponse pStatus_ =
+rejectVPCPeeringConnectionResponse pResponseStatus_ =
     RejectVPCPeeringConnectionResponse'
     { _rvpcrsReturn = Nothing
-    , _rvpcrsStatus = pStatus_
+    , _rvpcrsResponseStatus = pResponseStatus_
     }
 
 -- | Returns 'true' if the request succeeds; otherwise, it returns an error.
@@ -135,5 +135,5 @@
 rvpcrsReturn = lens _rvpcrsReturn (\ s a -> s{_rvpcrsReturn = a});
 
 -- | The response status code.
-rvpcrsStatus :: Lens' RejectVPCPeeringConnectionResponse Int
-rvpcrsStatus = lens _rvpcrsStatus (\ s a -> s{_rvpcrsStatus = a});
+rvpcrsResponseStatus :: Lens' RejectVPCPeeringConnectionResponse Int
+rvpcrsResponseStatus = lens _rvpcrsResponseStatus (\ s a -> s{_rvpcrsResponseStatus = 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
@@ -40,7 +40,7 @@
     , ReplaceNetworkACLAssociationResponse
     -- * Response Lenses
     , rnaarsNewAssociationId
-    , rnaarsStatus
+    , rnaarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -122,7 +122,7 @@
 -- | /See:/ 'replaceNetworkACLAssociationResponse' smart constructor.
 data ReplaceNetworkACLAssociationResponse = ReplaceNetworkACLAssociationResponse'
     { _rnaarsNewAssociationId :: !(Maybe Text)
-    , _rnaarsStatus           :: !Int
+    , _rnaarsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ReplaceNetworkACLAssociationResponse' with the minimum fields required to make a request.
@@ -131,14 +131,14 @@
 --
 -- * 'rnaarsNewAssociationId'
 --
--- * 'rnaarsStatus'
+-- * 'rnaarsResponseStatus'
 replaceNetworkACLAssociationResponse
-    :: Int -- ^ 'rnaarsStatus'
+    :: Int -- ^ 'rnaarsResponseStatus'
     -> ReplaceNetworkACLAssociationResponse
-replaceNetworkACLAssociationResponse pStatus_ =
+replaceNetworkACLAssociationResponse pResponseStatus_ =
     ReplaceNetworkACLAssociationResponse'
     { _rnaarsNewAssociationId = Nothing
-    , _rnaarsStatus = pStatus_
+    , _rnaarsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the new association.
@@ -146,5 +146,5 @@
 rnaarsNewAssociationId = lens _rnaarsNewAssociationId (\ s a -> s{_rnaarsNewAssociationId = a});
 
 -- | The response status code.
-rnaarsStatus :: Lens' ReplaceNetworkACLAssociationResponse Int
-rnaarsStatus = lens _rnaarsStatus (\ s a -> s{_rnaarsStatus = a});
+rnaarsResponseStatus :: Lens' ReplaceNetworkACLAssociationResponse Int
+rnaarsResponseStatus = lens _rnaarsResponseStatus (\ s a -> s{_rnaarsResponseStatus = a});
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
@@ -33,8 +33,8 @@
       replaceRoute
     , ReplaceRoute
     -- * Request Lenses
-    , rrInstanceId
     , rrVPCPeeringConnectionId
+    , rrInstanceId
     , rrNetworkInterfaceId
     , rrGatewayId
     , rrDryRun
@@ -54,8 +54,8 @@
 
 -- | /See:/ 'replaceRoute' smart constructor.
 data ReplaceRoute = ReplaceRoute'
-    { _rrInstanceId             :: !(Maybe Text)
-    , _rrVPCPeeringConnectionId :: !(Maybe Text)
+    { _rrVPCPeeringConnectionId :: !(Maybe Text)
+    , _rrInstanceId             :: !(Maybe Text)
     , _rrNetworkInterfaceId     :: !(Maybe Text)
     , _rrGatewayId              :: !(Maybe Text)
     , _rrDryRun                 :: !(Maybe Bool)
@@ -67,10 +67,10 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rrInstanceId'
---
 -- * 'rrVPCPeeringConnectionId'
 --
+-- * 'rrInstanceId'
+--
 -- * 'rrNetworkInterfaceId'
 --
 -- * 'rrGatewayId'
@@ -86,8 +86,8 @@
     -> ReplaceRoute
 replaceRoute pRouteTableId_ pDestinationCIdRBlock_ =
     ReplaceRoute'
-    { _rrInstanceId = Nothing
-    , _rrVPCPeeringConnectionId = Nothing
+    { _rrVPCPeeringConnectionId = Nothing
+    , _rrInstanceId = Nothing
     , _rrNetworkInterfaceId = Nothing
     , _rrGatewayId = Nothing
     , _rrDryRun = Nothing
@@ -95,14 +95,14 @@
     , _rrDestinationCIdRBlock = pDestinationCIdRBlock_
     }
 
--- | The ID of a NAT instance in your VPC.
-rrInstanceId :: Lens' ReplaceRoute (Maybe Text)
-rrInstanceId = lens _rrInstanceId (\ s a -> s{_rrInstanceId = a});
-
 -- | The ID of a VPC peering connection.
 rrVPCPeeringConnectionId :: Lens' ReplaceRoute (Maybe Text)
 rrVPCPeeringConnectionId = lens _rrVPCPeeringConnectionId (\ s a -> s{_rrVPCPeeringConnectionId = a});
 
+-- | The ID of a NAT instance in your VPC.
+rrInstanceId :: Lens' ReplaceRoute (Maybe Text)
+rrInstanceId = lens _rrInstanceId (\ s a -> s{_rrInstanceId = a});
+
 -- | The ID of a network interface.
 rrNetworkInterfaceId :: Lens' ReplaceRoute (Maybe Text)
 rrNetworkInterfaceId = lens _rrNetworkInterfaceId (\ s a -> s{_rrNetworkInterfaceId = a});
@@ -143,9 +143,9 @@
           = mconcat
               ["Action" =: ("ReplaceRoute" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "InstanceId" =: _rrInstanceId,
                "VpcPeeringConnectionId" =:
                  _rrVPCPeeringConnectionId,
+               "InstanceId" =: _rrInstanceId,
                "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
@@ -46,7 +46,7 @@
     , ReplaceRouteTableAssociationResponse
     -- * Response Lenses
     , rrtarsNewAssociationId
-    , rrtarsStatus
+    , rrtarsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -127,7 +127,7 @@
 -- | /See:/ 'replaceRouteTableAssociationResponse' smart constructor.
 data ReplaceRouteTableAssociationResponse = ReplaceRouteTableAssociationResponse'
     { _rrtarsNewAssociationId :: !(Maybe Text)
-    , _rrtarsStatus           :: !Int
+    , _rrtarsResponseStatus   :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ReplaceRouteTableAssociationResponse' with the minimum fields required to make a request.
@@ -136,14 +136,14 @@
 --
 -- * 'rrtarsNewAssociationId'
 --
--- * 'rrtarsStatus'
+-- * 'rrtarsResponseStatus'
 replaceRouteTableAssociationResponse
-    :: Int -- ^ 'rrtarsStatus'
+    :: Int -- ^ 'rrtarsResponseStatus'
     -> ReplaceRouteTableAssociationResponse
-replaceRouteTableAssociationResponse pStatus_ =
+replaceRouteTableAssociationResponse pResponseStatus_ =
     ReplaceRouteTableAssociationResponse'
     { _rrtarsNewAssociationId = Nothing
-    , _rrtarsStatus = pStatus_
+    , _rrtarsResponseStatus = pResponseStatus_
     }
 
 -- | The ID of the new association.
@@ -151,5 +151,5 @@
 rrtarsNewAssociationId = lens _rrtarsNewAssociationId (\ s a -> s{_rrtarsNewAssociationId = a});
 
 -- | The response status code.
-rrtarsStatus :: Lens' ReplaceRouteTableAssociationResponse Int
-rrtarsStatus = lens _rrtarsStatus (\ s a -> s{_rrtarsStatus = a});
+rrtarsResponseStatus :: Lens' ReplaceRouteTableAssociationResponse Int
+rrtarsResponseStatus = lens _rrtarsResponseStatus (\ s a -> s{_rrtarsResponseStatus = a});
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
@@ -36,8 +36,8 @@
     -- * Request Lenses
     , risStartTime
     , risEndTime
-    , risDryRun
     , risDescription
+    , risDryRun
     , risInstances
     , risStatus
     , risReasonCodes
@@ -57,8 +57,8 @@
 data ReportInstanceStatus = ReportInstanceStatus'
     { _risStartTime   :: !(Maybe ISO8601)
     , _risEndTime     :: !(Maybe ISO8601)
-    , _risDryRun      :: !(Maybe Bool)
     , _risDescription :: !(Maybe Text)
+    , _risDryRun      :: !(Maybe Bool)
     , _risInstances   :: ![Text]
     , _risStatus      :: !ReportStatusType
     , _risReasonCodes :: ![ReportInstanceReasonCodes]
@@ -72,10 +72,10 @@
 --
 -- * 'risEndTime'
 --
--- * 'risDryRun'
---
 -- * 'risDescription'
 --
+-- * 'risDryRun'
+--
 -- * 'risInstances'
 --
 -- * 'risStatus'
@@ -88,8 +88,8 @@
     ReportInstanceStatus'
     { _risStartTime = Nothing
     , _risEndTime = Nothing
-    , _risDryRun = Nothing
     , _risDescription = Nothing
+    , _risDryRun = Nothing
     , _risInstances = mempty
     , _risStatus = pStatus_
     , _risReasonCodes = mempty
@@ -103,6 +103,10 @@
 risEndTime :: Lens' ReportInstanceStatus (Maybe UTCTime)
 risEndTime = lens _risEndTime (\ s a -> s{_risEndTime = a}) . mapping _Time;
 
+-- | Descriptive text about the health state of your instance.
+risDescription :: Lens' ReportInstanceStatus (Maybe Text)
+risDescription = lens _risDescription (\ s a -> s{_risDescription = 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'.
@@ -110,10 +114,6 @@
 risDryRun :: Lens' ReportInstanceStatus (Maybe Bool)
 risDryRun = lens _risDryRun (\ s a -> s{_risDryRun = a});
 
--- | Descriptive text about the health state of your instance.
-risDescription :: Lens' ReportInstanceStatus (Maybe Text)
-risDescription = lens _risDescription (\ s a -> s{_risDescription = a});
-
 -- | One or more instances.
 risInstances :: Lens' ReportInstanceStatus [Text]
 risInstances = lens _risInstances (\ s a -> s{_risInstances = a}) . _Coerce;
@@ -171,8 +171,9 @@
               ["Action" =: ("ReportInstanceStatus" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
                "StartTime" =: _risStartTime,
-               "EndTime" =: _risEndTime, "DryRun" =: _risDryRun,
+               "EndTime" =: _risEndTime,
                "Description" =: _risDescription,
+               "DryRun" =: _risDryRun,
                toQueryList "InstanceId" _risInstances,
                "Status" =: _risStatus,
                toQueryList "ReasonCode" _risReasonCodes]
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,7 +20,11 @@
 --
 -- Creates a Spot fleet request.
 --
--- For more information, see
+-- 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>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
@@ -38,7 +42,7 @@
     , requestSpotFleetResponse
     , RequestSpotFleetResponse
     -- * Response Lenses
-    , rsfrsStatus
+    , rsfrsResponseStatus
     , rsfrsSpotFleetRequestId
     ) where
 
@@ -111,7 +115,7 @@
 --
 -- /See:/ 'requestSpotFleetResponse' smart constructor.
 data RequestSpotFleetResponse = RequestSpotFleetResponse'
-    { _rsfrsStatus             :: !Int
+    { _rsfrsResponseStatus     :: !Int
     , _rsfrsSpotFleetRequestId :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -119,22 +123,22 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rsfrsStatus'
+-- * 'rsfrsResponseStatus'
 --
 -- * 'rsfrsSpotFleetRequestId'
 requestSpotFleetResponse
-    :: Int -- ^ 'rsfrsStatus'
+    :: Int -- ^ 'rsfrsResponseStatus'
     -> Text -- ^ 'rsfrsSpotFleetRequestId'
     -> RequestSpotFleetResponse
-requestSpotFleetResponse pStatus_ pSpotFleetRequestId_ =
+requestSpotFleetResponse pResponseStatus_ pSpotFleetRequestId_ =
     RequestSpotFleetResponse'
-    { _rsfrsStatus = pStatus_
+    { _rsfrsResponseStatus = pResponseStatus_
     , _rsfrsSpotFleetRequestId = pSpotFleetRequestId_
     }
 
 -- | The response status code.
-rsfrsStatus :: Lens' RequestSpotFleetResponse Int
-rsfrsStatus = lens _rsfrsStatus (\ s a -> s{_rsfrsStatus = a});
+rsfrsResponseStatus :: Lens' RequestSpotFleetResponse Int
+rsfrsResponseStatus = lens _rsfrsResponseStatus (\ s a -> s{_rsfrsResponseStatus = a});
 
 -- | The ID of the Spot fleet request.
 rsfrsSpotFleetRequestId :: Lens' RequestSpotFleetResponse Text
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
@@ -33,10 +33,10 @@
       requestSpotInstances
     , RequestSpotInstances
     -- * Request Lenses
-    , rsiInstanceCount
     , rsiClientToken
-    , rsiAvailabilityZoneGroup
+    , rsiInstanceCount
     , rsiLaunchSpecification
+    , rsiAvailabilityZoneGroup
     , rsiValidUntil
     , rsiLaunchGroup
     , rsiType
@@ -49,7 +49,7 @@
     , RequestSpotInstancesResponse
     -- * Response Lenses
     , rsirsSpotInstanceRequests
-    , rsirsStatus
+    , rsirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -62,10 +62,10 @@
 --
 -- /See:/ 'requestSpotInstances' smart constructor.
 data RequestSpotInstances = RequestSpotInstances'
-    { _rsiInstanceCount         :: !(Maybe Int)
-    , _rsiClientToken           :: !(Maybe Text)
-    , _rsiAvailabilityZoneGroup :: !(Maybe Text)
+    { _rsiClientToken           :: !(Maybe Text)
+    , _rsiInstanceCount         :: !(Maybe Int)
     , _rsiLaunchSpecification   :: !(Maybe RequestSpotLaunchSpecification)
+    , _rsiAvailabilityZoneGroup :: !(Maybe Text)
     , _rsiValidUntil            :: !(Maybe ISO8601)
     , _rsiLaunchGroup           :: !(Maybe Text)
     , _rsiType                  :: !(Maybe SpotInstanceType)
@@ -78,14 +78,14 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rsiInstanceCount'
---
 -- * 'rsiClientToken'
 --
--- * 'rsiAvailabilityZoneGroup'
+-- * 'rsiInstanceCount'
 --
 -- * 'rsiLaunchSpecification'
 --
+-- * 'rsiAvailabilityZoneGroup'
+--
 -- * 'rsiValidUntil'
 --
 -- * 'rsiLaunchGroup'
@@ -102,10 +102,10 @@
     -> RequestSpotInstances
 requestSpotInstances pSpotPrice_ =
     RequestSpotInstances'
-    { _rsiInstanceCount = Nothing
-    , _rsiClientToken = Nothing
-    , _rsiAvailabilityZoneGroup = Nothing
+    { _rsiClientToken = Nothing
+    , _rsiInstanceCount = Nothing
     , _rsiLaunchSpecification = Nothing
+    , _rsiAvailabilityZoneGroup = Nothing
     , _rsiValidUntil = Nothing
     , _rsiLaunchGroup = Nothing
     , _rsiType = Nothing
@@ -114,12 +114,6 @@
     , _rsiSpotPrice = pSpotPrice_
     }
 
--- | The maximum number of Spot Instances to launch.
---
--- Default: 1
-rsiInstanceCount :: Lens' RequestSpotInstances (Maybe Int)
-rsiInstanceCount = lens _rsiInstanceCount (\ s a -> s{_rsiInstanceCount = a});
-
 -- | Unique, case-sensitive identifier that you provide to ensure the
 -- idempotency of the request. For more information, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency>
@@ -127,6 +121,16 @@
 rsiClientToken :: Lens' RequestSpotInstances (Maybe Text)
 rsiClientToken = lens _rsiClientToken (\ s a -> s{_rsiClientToken = a});
 
+-- | The maximum number of Spot Instances to launch.
+--
+-- Default: 1
+rsiInstanceCount :: Lens' RequestSpotInstances (Maybe Int)
+rsiInstanceCount = lens _rsiInstanceCount (\ s a -> s{_rsiInstanceCount = a});
+
+-- | Undocumented member.
+rsiLaunchSpecification :: Lens' RequestSpotInstances (Maybe RequestSpotLaunchSpecification)
+rsiLaunchSpecification = lens _rsiLaunchSpecification (\ s a -> s{_rsiLaunchSpecification = a});
+
 -- | The user-specified name for a logical grouping of bids.
 --
 -- When you specify an Availability Zone group in a Spot Instance request,
@@ -150,10 +154,6 @@
 rsiAvailabilityZoneGroup :: Lens' RequestSpotInstances (Maybe Text)
 rsiAvailabilityZoneGroup = lens _rsiAvailabilityZoneGroup (\ s a -> s{_rsiAvailabilityZoneGroup = a});
 
--- | Undocumented member.
-rsiLaunchSpecification :: Lens' RequestSpotInstances (Maybe RequestSpotLaunchSpecification)
-rsiLaunchSpecification = lens _rsiLaunchSpecification (\ s a -> s{_rsiLaunchSpecification = a});
-
 -- | The end date of the request. If this is a one-time request, the request
 -- remains active until all instances launch, the request is canceled, or
 -- this date is reached. If the request is persistent, it remains active
@@ -221,10 +221,10 @@
           = mconcat
               ["Action" =: ("RequestSpotInstances" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
-               "InstanceCount" =: _rsiInstanceCount,
                "ClientToken" =: _rsiClientToken,
-               "AvailabilityZoneGroup" =: _rsiAvailabilityZoneGroup,
+               "InstanceCount" =: _rsiInstanceCount,
                "LaunchSpecification" =: _rsiLaunchSpecification,
+               "AvailabilityZoneGroup" =: _rsiAvailabilityZoneGroup,
                "ValidUntil" =: _rsiValidUntil,
                "LaunchGroup" =: _rsiLaunchGroup, "Type" =: _rsiType,
                "ValidFrom" =: _rsiValidFrom, "DryRun" =: _rsiDryRun,
@@ -235,7 +235,7 @@
 -- /See:/ 'requestSpotInstancesResponse' smart constructor.
 data RequestSpotInstancesResponse = RequestSpotInstancesResponse'
     { _rsirsSpotInstanceRequests :: !(Maybe [SpotInstanceRequest])
-    , _rsirsStatus               :: !Int
+    , _rsirsResponseStatus       :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RequestSpotInstancesResponse' with the minimum fields required to make a request.
@@ -244,14 +244,14 @@
 --
 -- * 'rsirsSpotInstanceRequests'
 --
--- * 'rsirsStatus'
+-- * 'rsirsResponseStatus'
 requestSpotInstancesResponse
-    :: Int -- ^ 'rsirsStatus'
+    :: Int -- ^ 'rsirsResponseStatus'
     -> RequestSpotInstancesResponse
-requestSpotInstancesResponse pStatus_ =
+requestSpotInstancesResponse pResponseStatus_ =
     RequestSpotInstancesResponse'
     { _rsirsSpotInstanceRequests = Nothing
-    , _rsirsStatus = pStatus_
+    , _rsirsResponseStatus = pResponseStatus_
     }
 
 -- | One or more Spot Instance requests.
@@ -259,5 +259,5 @@
 rsirsSpotInstanceRequests = lens _rsirsSpotInstanceRequests (\ s a -> s{_rsirsSpotInstanceRequests = a}) . _Default . _Coerce;
 
 -- | The response status code.
-rsirsStatus :: Lens' RequestSpotInstancesResponse Int
-rsirsStatus = lens _rsirsStatus (\ s a -> s{_rsirsStatus = a});
+rsirsResponseStatus :: Lens' RequestSpotInstancesResponse Int
+rsirsResponseStatus = lens _rsirsResponseStatus (\ s a -> s{_rsirsResponseStatus = a});
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
@@ -37,8 +37,9 @@
     , restoreAddressToClassicResponse
     , RestoreAddressToClassicResponse
     -- * Response Lenses
-    , ratcrsPublicIP
     , ratcrsStatus
+    , ratcrsPublicIP
+    , ratcrsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -88,7 +89,8 @@
           = receiveXML
               (\ s h x ->
                  RestoreAddressToClassicResponse' <$>
-                   (x .@? "publicIp") <*> (pure (fromEnum s)))
+                   (x .@? "status") <*> (x .@? "publicIp") <*>
+                     (pure (fromEnum s)))
 
 instance ToHeaders RestoreAddressToClassic where
         toHeaders = const mempty
@@ -106,30 +108,38 @@
 
 -- | /See:/ 'restoreAddressToClassicResponse' smart constructor.
 data RestoreAddressToClassicResponse = RestoreAddressToClassicResponse'
-    { _ratcrsPublicIP :: !(Maybe Text)
-    , _ratcrsStatus   :: !Int
+    { _ratcrsStatus         :: !(Maybe AddressStatus)
+    , _ratcrsPublicIP       :: !(Maybe Text)
+    , _ratcrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RestoreAddressToClassicResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ratcrsStatus'
+--
 -- * 'ratcrsPublicIP'
 --
--- * 'ratcrsStatus'
+-- * 'ratcrsResponseStatus'
 restoreAddressToClassicResponse
-    :: Int -- ^ 'ratcrsStatus'
+    :: Int -- ^ 'ratcrsResponseStatus'
     -> RestoreAddressToClassicResponse
-restoreAddressToClassicResponse pStatus_ =
+restoreAddressToClassicResponse pResponseStatus_ =
     RestoreAddressToClassicResponse'
-    { _ratcrsPublicIP = Nothing
-    , _ratcrsStatus = pStatus_
+    { _ratcrsStatus = Nothing
+    , _ratcrsPublicIP = Nothing
+    , _ratcrsResponseStatus = pResponseStatus_
     }
 
+-- | The move status for the IP address.
+ratcrsStatus :: Lens' RestoreAddressToClassicResponse (Maybe AddressStatus)
+ratcrsStatus = lens _ratcrsStatus (\ s a -> s{_ratcrsStatus = a});
+
 -- | The Elastic IP address.
 ratcrsPublicIP :: Lens' RestoreAddressToClassicResponse (Maybe Text)
 ratcrsPublicIP = lens _ratcrsPublicIP (\ s a -> s{_ratcrsPublicIP = a});
 
 -- | The response status code.
-ratcrsStatus :: Lens' RestoreAddressToClassicResponse Int
-ratcrsStatus = lens _ratcrsStatus (\ s a -> s{_ratcrsStatus = a});
+ratcrsResponseStatus :: Lens' RestoreAddressToClassicResponse Int
+ratcrsResponseStatus = lens _ratcrsResponseStatus (\ s a -> s{_ratcrsResponseStatus = 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
@@ -43,8 +43,8 @@
     , rsgiGroupId
     , rsgiToPort
     , rsgiCIdRIP
-    , rsgiGroupName
     , rsgiSourceSecurityGroupOwnerId
+    , rsgiGroupName
     , rsgiSourceSecurityGroupName
     , rsgiDryRun
 
@@ -67,8 +67,8 @@
     , _rsgiGroupId                    :: !(Maybe Text)
     , _rsgiToPort                     :: !(Maybe Int)
     , _rsgiCIdRIP                     :: !(Maybe Text)
-    , _rsgiGroupName                  :: !(Maybe Text)
     , _rsgiSourceSecurityGroupOwnerId :: !(Maybe Text)
+    , _rsgiGroupName                  :: !(Maybe Text)
     , _rsgiSourceSecurityGroupName    :: !(Maybe Text)
     , _rsgiDryRun                     :: !(Maybe Bool)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -89,10 +89,10 @@
 --
 -- * 'rsgiCIdRIP'
 --
--- * 'rsgiGroupName'
---
 -- * 'rsgiSourceSecurityGroupOwnerId'
 --
+-- * 'rsgiGroupName'
+--
 -- * 'rsgiSourceSecurityGroupName'
 --
 -- * 'rsgiDryRun'
@@ -106,8 +106,8 @@
     , _rsgiGroupId = Nothing
     , _rsgiToPort = Nothing
     , _rsgiCIdRIP = Nothing
-    , _rsgiGroupName = Nothing
     , _rsgiSourceSecurityGroupOwnerId = Nothing
+    , _rsgiGroupName = Nothing
     , _rsgiSourceSecurityGroupName = Nothing
     , _rsgiDryRun = Nothing
     }
@@ -144,10 +144,6 @@
 rsgiCIdRIP :: Lens' RevokeSecurityGroupIngress (Maybe Text)
 rsgiCIdRIP = lens _rsgiCIdRIP (\ s a -> s{_rsgiCIdRIP = a});
 
--- | [EC2-Classic, default VPC] The name of the security group.
-rsgiGroupName :: Lens' RevokeSecurityGroupIngress (Maybe Text)
-rsgiGroupName = lens _rsgiGroupName (\ s a -> s{_rsgiGroupName = a});
-
 -- | [EC2-Classic, default VPC] The AWS account ID of the source security
 -- group. For EC2-VPC, the source security group must be in the same VPC.
 -- You can\'t specify this parameter in combination with the following
@@ -157,6 +153,10 @@
 rsgiSourceSecurityGroupOwnerId :: Lens' RevokeSecurityGroupIngress (Maybe Text)
 rsgiSourceSecurityGroupOwnerId = lens _rsgiSourceSecurityGroupOwnerId (\ s a -> s{_rsgiSourceSecurityGroupOwnerId = a});
 
+-- | [EC2-Classic, default VPC] The name of the security group.
+rsgiGroupName :: Lens' RevokeSecurityGroupIngress (Maybe Text)
+rsgiGroupName = lens _rsgiGroupName (\ s a -> s{_rsgiGroupName = a});
+
 -- | [EC2-Classic, default VPC] The name of the source security group. You
 -- can\'t specify this parameter in combination with the following
 -- parameters: the CIDR IP address range, the start of the port range, the
@@ -197,9 +197,9 @@
                "IpProtocol" =: _rsgiIPProtocol,
                "GroupId" =: _rsgiGroupId, "ToPort" =: _rsgiToPort,
                "CidrIp" =: _rsgiCIdRIP,
-               "GroupName" =: _rsgiGroupName,
                "SourceSecurityGroupOwnerId" =:
                  _rsgiSourceSecurityGroupOwnerId,
+               "GroupName" =: _rsgiGroupName,
                "SourceSecurityGroupName" =:
                  _rsgiSourceSecurityGroupName,
                "DryRun" =: _rsgiDryRun]
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
@@ -30,6 +30,12 @@
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Security Groups>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
+-- [EC2-VPC only accounts] If you don\'t specify a subnet in the request,
+-- we choose a default subnet from your default VPC for you.
+--
+-- [EC2-Classic accounts] If you\'re launching into EC2-Classic and you
+-- don\'t specify an Availability Zone, we choose one for you.
+--
 -- Linux instances have access to the public key of the key pair at boot.
 -- You can use this key to provide secure access to the instance. Amazon
 -- EC2 public images use this feature to provide secure access without
@@ -62,23 +68,23 @@
       runInstances
     , RunInstances
     -- * Request Lenses
-    , rSecurityGroupIds
     , rAdditionalInfo
+    , rSecurityGroupIds
     , rSecurityGroups
     , rClientToken
     , rDisableAPITermination
-    , rNetworkInterfaces
     , rKeyName
+    , rNetworkInterfaces
     , rRAMDiskId
-    , rKernelId
     , rSubnetId
+    , rKernelId
     , rInstanceType
     , rEBSOptimized
     , rUserData
     , rMonitoring
     , rIAMInstanceProfile
-    , rInstanceInitiatedShutdownBehavior
     , rPrivateIPAddress
+    , rInstanceInitiatedShutdownBehavior
     , rBlockDeviceMappings
     , rDryRun
     , rPlacement
@@ -105,23 +111,23 @@
 
 -- | /See:/ 'runInstances' smart constructor.
 data RunInstances = RunInstances'
-    { _rSecurityGroupIds                  :: !(Maybe [Text])
-    , _rAdditionalInfo                    :: !(Maybe Text)
+    { _rAdditionalInfo                    :: !(Maybe Text)
+    , _rSecurityGroupIds                  :: !(Maybe [Text])
     , _rSecurityGroups                    :: !(Maybe [Text])
     , _rClientToken                       :: !(Maybe Text)
     , _rDisableAPITermination             :: !(Maybe Bool)
-    , _rNetworkInterfaces                 :: !(Maybe [InstanceNetworkInterfaceSpecification])
     , _rKeyName                           :: !(Maybe Text)
+    , _rNetworkInterfaces                 :: !(Maybe [InstanceNetworkInterfaceSpecification])
     , _rRAMDiskId                         :: !(Maybe Text)
-    , _rKernelId                          :: !(Maybe Text)
     , _rSubnetId                          :: !(Maybe Text)
+    , _rKernelId                          :: !(Maybe Text)
     , _rInstanceType                      :: !(Maybe InstanceType)
     , _rEBSOptimized                      :: !(Maybe Bool)
     , _rUserData                          :: !(Maybe Text)
     , _rMonitoring                        :: !(Maybe RunInstancesMonitoringEnabled)
     , _rIAMInstanceProfile                :: !(Maybe IAMInstanceProfileSpecification)
-    , _rInstanceInitiatedShutdownBehavior :: !(Maybe ShutdownBehavior)
     , _rPrivateIPAddress                  :: !(Maybe Text)
+    , _rInstanceInitiatedShutdownBehavior :: !(Maybe ShutdownBehavior)
     , _rBlockDeviceMappings               :: !(Maybe [BlockDeviceMapping])
     , _rDryRun                            :: !(Maybe Bool)
     , _rPlacement                         :: !(Maybe Placement)
@@ -134,26 +140,26 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rSecurityGroupIds'
---
 -- * 'rAdditionalInfo'
 --
+-- * 'rSecurityGroupIds'
+--
 -- * 'rSecurityGroups'
 --
 -- * 'rClientToken'
 --
 -- * 'rDisableAPITermination'
 --
--- * 'rNetworkInterfaces'
---
 -- * 'rKeyName'
 --
--- * 'rRAMDiskId'
+-- * 'rNetworkInterfaces'
 --
--- * 'rKernelId'
+-- * 'rRAMDiskId'
 --
 -- * 'rSubnetId'
 --
+-- * 'rKernelId'
+--
 -- * 'rInstanceType'
 --
 -- * 'rEBSOptimized'
@@ -164,10 +170,10 @@
 --
 -- * 'rIAMInstanceProfile'
 --
--- * 'rInstanceInitiatedShutdownBehavior'
---
 -- * 'rPrivateIPAddress'
 --
+-- * 'rInstanceInitiatedShutdownBehavior'
+--
 -- * 'rBlockDeviceMappings'
 --
 -- * 'rDryRun'
@@ -186,23 +192,23 @@
     -> RunInstances
 runInstances pImageId_ pMinCount_ pMaxCount_ =
     RunInstances'
-    { _rSecurityGroupIds = Nothing
-    , _rAdditionalInfo = Nothing
+    { _rAdditionalInfo = Nothing
+    , _rSecurityGroupIds = Nothing
     , _rSecurityGroups = Nothing
     , _rClientToken = Nothing
     , _rDisableAPITermination = Nothing
-    , _rNetworkInterfaces = Nothing
     , _rKeyName = Nothing
+    , _rNetworkInterfaces = Nothing
     , _rRAMDiskId = Nothing
-    , _rKernelId = Nothing
     , _rSubnetId = Nothing
+    , _rKernelId = Nothing
     , _rInstanceType = Nothing
     , _rEBSOptimized = Nothing
     , _rUserData = Nothing
     , _rMonitoring = Nothing
     , _rIAMInstanceProfile = Nothing
-    , _rInstanceInitiatedShutdownBehavior = Nothing
     , _rPrivateIPAddress = Nothing
+    , _rInstanceInitiatedShutdownBehavior = Nothing
     , _rBlockDeviceMappings = Nothing
     , _rDryRun = Nothing
     , _rPlacement = Nothing
@@ -211,6 +217,10 @@
     , _rMaxCount = pMaxCount_
     }
 
+-- | Reserved.
+rAdditionalInfo :: Lens' RunInstances (Maybe Text)
+rAdditionalInfo = lens _rAdditionalInfo (\ s a -> s{_rAdditionalInfo = a});
+
 -- | One or more security group IDs. You can create a security group using
 -- CreateSecurityGroup.
 --
@@ -218,10 +228,6 @@
 rSecurityGroupIds :: Lens' RunInstances [Text]
 rSecurityGroupIds = lens _rSecurityGroupIds (\ s a -> s{_rSecurityGroupIds = a}) . _Default . _Coerce;
 
--- | Reserved.
-rAdditionalInfo :: Lens' RunInstances (Maybe Text)
-rAdditionalInfo = lens _rAdditionalInfo (\ s a -> s{_rAdditionalInfo = a});
-
 -- | [EC2-Classic, default VPC] One or more security group names. For a
 -- nondefault VPC, you must use security group IDs instead.
 --
@@ -250,10 +256,6 @@
 rDisableAPITermination :: Lens' RunInstances (Maybe Bool)
 rDisableAPITermination = lens _rDisableAPITermination (\ s a -> s{_rDisableAPITermination = a});
 
--- | One or more network interfaces.
-rNetworkInterfaces :: Lens' RunInstances [InstanceNetworkInterfaceSpecification]
-rNetworkInterfaces = lens _rNetworkInterfaces (\ s a -> s{_rNetworkInterfaces = a}) . _Default . _Coerce;
-
 -- | The name of the key pair. You can create a key pair using CreateKeyPair
 -- or ImportKeyPair.
 --
@@ -263,6 +265,10 @@
 rKeyName :: Lens' RunInstances (Maybe Text)
 rKeyName = lens _rKeyName (\ s a -> s{_rKeyName = a});
 
+-- | One or more network interfaces.
+rNetworkInterfaces :: Lens' RunInstances [InstanceNetworkInterfaceSpecification]
+rNetworkInterfaces = lens _rNetworkInterfaces (\ s a -> s{_rNetworkInterfaces = a}) . _Default . _Coerce;
+
 -- | The ID of the RAM disk.
 --
 -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
@@ -272,6 +278,10 @@
 rRAMDiskId :: Lens' RunInstances (Maybe Text)
 rRAMDiskId = lens _rRAMDiskId (\ s a -> s{_rRAMDiskId = a});
 
+-- | [EC2-VPC] The ID of the subnet to launch the instance into.
+rSubnetId :: Lens' RunInstances (Maybe Text)
+rSubnetId = lens _rSubnetId (\ s a -> s{_rSubnetId = a});
+
 -- | The ID of the kernel.
 --
 -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
@@ -281,10 +291,6 @@
 rKernelId :: Lens' RunInstances (Maybe Text)
 rKernelId = lens _rKernelId (\ s a -> s{_rKernelId = a});
 
--- | [EC2-VPC] The ID of the subnet to launch the instance into.
-rSubnetId :: Lens' RunInstances (Maybe Text)
-rSubnetId = lens _rSubnetId (\ s a -> s{_rSubnetId = a});
-
 -- | The instance type. 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/.
@@ -315,14 +321,6 @@
 rIAMInstanceProfile :: Lens' RunInstances (Maybe IAMInstanceProfileSpecification)
 rIAMInstanceProfile = lens _rIAMInstanceProfile (\ s a -> s{_rIAMInstanceProfile = a});
 
--- | Indicates whether an instance stops or terminates when you initiate
--- shutdown from the instance (using the operating system command for
--- system shutdown).
---
--- Default: 'stop'
-rInstanceInitiatedShutdownBehavior :: Lens' RunInstances (Maybe ShutdownBehavior)
-rInstanceInitiatedShutdownBehavior = lens _rInstanceInitiatedShutdownBehavior (\ s a -> s{_rInstanceInitiatedShutdownBehavior = a});
-
 -- | [EC2-VPC] The primary IP address. You must specify a value from the IP
 -- address range of the subnet.
 --
@@ -336,6 +334,14 @@
 rPrivateIPAddress :: Lens' RunInstances (Maybe Text)
 rPrivateIPAddress = lens _rPrivateIPAddress (\ s a -> s{_rPrivateIPAddress = a});
 
+-- | Indicates whether an instance stops or terminates when you initiate
+-- shutdown from the instance (using the operating system command for
+-- system shutdown).
+--
+-- Default: 'stop'
+rInstanceInitiatedShutdownBehavior :: Lens' RunInstances (Maybe ShutdownBehavior)
+rInstanceInitiatedShutdownBehavior = lens _rInstanceInitiatedShutdownBehavior (\ s a -> s{_rInstanceInitiatedShutdownBehavior = a});
+
 -- | The block device mapping.
 rBlockDeviceMappings :: Lens' RunInstances [BlockDeviceMapping]
 rBlockDeviceMappings = lens _rBlockDeviceMappings (\ s a -> s{_rBlockDeviceMappings = a}) . _Default . _Coerce;
@@ -395,27 +401,28 @@
           = mconcat
               ["Action" =: ("RunInstances" :: ByteString),
                "Version" =: ("2015-04-15" :: ByteString),
+               "AdditionalInfo" =: _rAdditionalInfo,
                toQuery
                  (toQueryList "SecurityGroupId" <$>
                     _rSecurityGroupIds),
-               "AdditionalInfo" =: _rAdditionalInfo,
                toQuery
                  (toQueryList "SecurityGroup" <$> _rSecurityGroups),
                "ClientToken" =: _rClientToken,
                "DisableApiTermination" =: _rDisableAPITermination,
+               "KeyName" =: _rKeyName,
                toQuery
                  (toQueryList "NetworkInterface" <$>
                     _rNetworkInterfaces),
-               "KeyName" =: _rKeyName, "RamdiskId" =: _rRAMDiskId,
-               "KernelId" =: _rKernelId, "SubnetId" =: _rSubnetId,
+               "RamdiskId" =: _rRAMDiskId, "SubnetId" =: _rSubnetId,
+               "KernelId" =: _rKernelId,
                "InstanceType" =: _rInstanceType,
                "EbsOptimized" =: _rEBSOptimized,
                "UserData" =: _rUserData,
                "Monitoring" =: _rMonitoring,
                "IamInstanceProfile" =: _rIAMInstanceProfile,
+               "PrivateIpAddress" =: _rPrivateIPAddress,
                "InstanceInitiatedShutdownBehavior" =:
                  _rInstanceInitiatedShutdownBehavior,
-               "PrivateIpAddress" =: _rPrivateIPAddress,
                toQuery
                  (toQueryList "BlockDeviceMapping" <$>
                     _rBlockDeviceMappings),
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
@@ -56,7 +56,7 @@
     , StartInstancesResponse
     -- * Response Lenses
     , srsStartingInstances
-    , srsStatus
+    , srsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -134,7 +134,7 @@
 -- | /See:/ 'startInstancesResponse' smart constructor.
 data StartInstancesResponse = StartInstancesResponse'
     { _srsStartingInstances :: !(Maybe [InstanceStateChange])
-    , _srsStatus            :: !Int
+    , _srsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'StartInstancesResponse' with the minimum fields required to make a request.
@@ -143,14 +143,14 @@
 --
 -- * 'srsStartingInstances'
 --
--- * 'srsStatus'
+-- * 'srsResponseStatus'
 startInstancesResponse
-    :: Int -- ^ 'srsStatus'
+    :: Int -- ^ 'srsResponseStatus'
     -> StartInstancesResponse
-startInstancesResponse pStatus_ =
+startInstancesResponse pResponseStatus_ =
     StartInstancesResponse'
     { _srsStartingInstances = Nothing
-    , _srsStatus = pStatus_
+    , _srsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more started instances.
@@ -158,5 +158,5 @@
 srsStartingInstances = lens _srsStartingInstances (\ s a -> s{_srsStartingInstances = a}) . _Default . _Coerce;
 
 -- | The response status code.
-srsStatus :: Lens' StartInstancesResponse Int
-srsStatus = lens _srsStatus (\ s a -> s{_srsStatus = a});
+srsResponseStatus :: Lens' StartInstancesResponse Int
+srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
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
@@ -69,7 +69,7 @@
     , StopInstancesResponse
     -- * Response Lenses
     , sirsStoppingInstances
-    , sirsStatus
+    , sirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -151,7 +151,7 @@
 -- | /See:/ 'stopInstancesResponse' smart constructor.
 data StopInstancesResponse = StopInstancesResponse'
     { _sirsStoppingInstances :: !(Maybe [InstanceStateChange])
-    , _sirsStatus            :: !Int
+    , _sirsResponseStatus    :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'StopInstancesResponse' with the minimum fields required to make a request.
@@ -160,14 +160,14 @@
 --
 -- * 'sirsStoppingInstances'
 --
--- * 'sirsStatus'
+-- * 'sirsResponseStatus'
 stopInstancesResponse
-    :: Int -- ^ 'sirsStatus'
+    :: Int -- ^ 'sirsResponseStatus'
     -> StopInstancesResponse
-stopInstancesResponse pStatus_ =
+stopInstancesResponse pResponseStatus_ =
     StopInstancesResponse'
     { _sirsStoppingInstances = Nothing
-    , _sirsStatus = pStatus_
+    , _sirsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more stopped instances.
@@ -175,5 +175,5 @@
 sirsStoppingInstances = lens _sirsStoppingInstances (\ s a -> s{_sirsStoppingInstances = a}) . _Default . _Coerce;
 
 -- | The response status code.
-sirsStatus :: Lens' StopInstancesResponse Int
-sirsStatus = lens _sirsStatus (\ s a -> s{_sirsStatus = a});
+sirsResponseStatus :: Lens' StopInstancesResponse Int
+sirsResponseStatus = lens _sirsResponseStatus (\ s a -> s{_sirsResponseStatus = a});
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
@@ -32,10 +32,10 @@
 -- terminate instance store-backed instances. What happens to an instance
 -- differs if you stop it or terminate it. For example, when you stop an
 -- instance, the root device and any other devices attached to the instance
--- persist. When you terminate an instance, the root device and any other
--- devices attached during the instance launch are automatically deleted.
--- For more information about the differences between stopping and
--- terminating instances, see
+-- persist. When you terminate an instance, any attached EBS volumes with
+-- the 'DeleteOnTermination' block device mapping parameter set to 'true'
+-- are automatically deleted. For more information about the differences
+-- between stopping and terminating instances, see
 -- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle>
 -- in the /Amazon Elastic Compute Cloud User Guide/.
 --
@@ -58,7 +58,7 @@
     , TerminateInstancesResponse
     -- * Response Lenses
     , tirsTerminatingInstances
-    , tirsStatus
+    , tirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -128,7 +128,7 @@
 -- | /See:/ 'terminateInstancesResponse' smart constructor.
 data TerminateInstancesResponse = TerminateInstancesResponse'
     { _tirsTerminatingInstances :: !(Maybe [InstanceStateChange])
-    , _tirsStatus               :: !Int
+    , _tirsResponseStatus       :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TerminateInstancesResponse' with the minimum fields required to make a request.
@@ -137,14 +137,14 @@
 --
 -- * 'tirsTerminatingInstances'
 --
--- * 'tirsStatus'
+-- * 'tirsResponseStatus'
 terminateInstancesResponse
-    :: Int -- ^ 'tirsStatus'
+    :: Int -- ^ 'tirsResponseStatus'
     -> TerminateInstancesResponse
-terminateInstancesResponse pStatus_ =
+terminateInstancesResponse pResponseStatus_ =
     TerminateInstancesResponse'
     { _tirsTerminatingInstances = Nothing
-    , _tirsStatus = pStatus_
+    , _tirsResponseStatus = pResponseStatus_
     }
 
 -- | Information about one or more terminated instances.
@@ -152,5 +152,5 @@
 tirsTerminatingInstances = lens _tirsTerminatingInstances (\ s a -> s{_tirsTerminatingInstances = a}) . _Default . _Coerce;
 
 -- | The response status code.
-tirsStatus :: Lens' TerminateInstancesResponse Int
-tirsStatus = lens _tirsStatus (\ s a -> s{_tirsStatus = a});
+tirsResponseStatus :: Lens' TerminateInstancesResponse Int
+tirsResponseStatus = lens _tirsResponseStatus (\ s a -> s{_tirsResponseStatus = a});
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
@@ -128,6 +128,9 @@
     -- * OfferingTypeValues
     , OfferingTypeValues (..)
 
+    -- * OperationType
+    , OperationType (..)
+
     -- * PermissionGroup
     , PermissionGroup (..)
 
@@ -269,8 +272,8 @@
     -- * Address
     , Address
     , address
-    , aInstanceId
     , aAssociationId
+    , aInstanceId
     , aNetworkInterfaceOwnerId
     , aAllocationId
     , aDomain
@@ -291,8 +294,8 @@
     -- * AvailabilityZone
     , AvailabilityZone
     , availabilityZone
-    , azRegionName
     , azState
+    , azRegionName
     , azZoneName
     , azMessages
 
@@ -460,8 +463,8 @@
     -- * EBSInstanceBlockDevice
     , EBSInstanceBlockDevice
     , ebsInstanceBlockDevice
-    , eibdDeleteOnTermination
     , eibdStatus
+    , eibdDeleteOnTermination
     , eibdVolumeId
     , eibdAttachTime
 
@@ -519,8 +522,8 @@
     , flTrafficType
     , flDeliverLogsStatus
     , flDeliverLogsErrorMessage
-    , flDeliverLogsPermissionARN
     , flLogGroupName
+    , flDeliverLogsPermissionARN
     , flFlowLogId
 
     -- * GroupIdentifier
@@ -582,8 +585,8 @@
     , iCreationDate
     , iProductCodes
     , iStateReason
-    , iBlockDeviceMappings
     , iDescription
+    , iBlockDeviceMappings
     , iTags
     , iImageId
     , iImageLocation
@@ -599,8 +602,8 @@
     -- * ImageDiskContainer
     , ImageDiskContainer
     , imageDiskContainer
-    , idcURL
     , idcFormat
+    , idcURL
     , idcDeviceName
     , idcUserBucket
     , idcDescription
@@ -627,12 +630,12 @@
     , iilsAdditionalInfo
     , iilsGroupNames
     , iilsSubnetId
-    , iilsGroupIds
     , iilsInstanceType
+    , iilsGroupIds
     , iilsUserData
     , iilsMonitoring
-    , iilsInstanceInitiatedShutdownBehavior
     , iilsPrivateIPAddress
+    , iilsInstanceInitiatedShutdownBehavior
     , iilsArchitecture
     , iilsPlacement
 
@@ -680,17 +683,17 @@
     , insClientToken
     , insSourceDestCheck
     , insVPCId
-    , insNetworkInterfaces
     , insKeyName
+    , insNetworkInterfaces
     , insRAMDiskId
-    , insKernelId
     , insSubnetId
+    , insKernelId
     , insRootDeviceName
-    , insEBSOptimized
     , insSRIOVNetSupport
+    , insEBSOptimized
     , insStateTransitionReason
-    , insIAMInstanceProfile
     , insInstanceLifecycle
+    , insIAMInstanceProfile
     , insPrivateIPAddress
     , insProductCodes
     , insSpotInstanceRequestId
@@ -735,8 +738,8 @@
     -- * InstanceExportDetails
     , InstanceExportDetails
     , instanceExportDetails
-    , iedInstanceId
     , iedTargetEnvironment
+    , iedInstanceId
 
     -- * InstanceMonitoring
     , InstanceMonitoring
@@ -747,15 +750,15 @@
     -- * InstanceNetworkInterface
     , InstanceNetworkInterface
     , instanceNetworkInterface
-    , iniPrivateIPAddresses
-    , iniStatus
     , iniGroups
+    , iniStatus
+    , iniPrivateIPAddresses
     , iniSourceDestCheck
     , iniVPCId
     , iniNetworkInterfaceId
     , iniSubnetId
-    , iniAttachment
     , iniMACAddress
+    , iniAttachment
     , iniOwnerId
     , iniPrivateIPAddress
     , iniPrivateDNSName
@@ -772,8 +775,8 @@
     -- * InstanceNetworkInterfaceAttachment
     , InstanceNetworkInterfaceAttachment
     , instanceNetworkInterfaceAttachment
-    , iniaDeleteOnTermination
     , iniaStatus
+    , iniaDeleteOnTermination
     , iniaAttachmentId
     , iniaAttachTime
     , iniaDeviceIndex
@@ -781,16 +784,16 @@
     -- * InstanceNetworkInterfaceSpecification
     , InstanceNetworkInterfaceSpecification
     , instanceNetworkInterfaceSpecification
+    , inisGroups
     , inisPrivateIPAddresses
     , inisDeleteOnTermination
-    , inisGroups
     , inisAssociatePublicIPAddress
     , inisNetworkInterfaceId
     , inisSubnetId
     , inisPrivateIPAddress
     , inisSecondaryPrivateIPAddressCount
-    , inisDeviceIndex
     , inisDescription
+    , inisDeviceIndex
 
     -- * InstancePrivateIPAddress
     , InstancePrivateIPAddress
@@ -818,8 +821,8 @@
     , instanceStatus
     , isInstanceId
     , isSystemStatus
-    , isAvailabilityZone
     , isEvents
+    , isAvailabilityZone
     , isInstanceStatus
     , isInstanceState
 
@@ -879,19 +882,19 @@
     , LaunchSpecification
     , launchSpecification
     , lsSecurityGroups
-    , lsNetworkInterfaces
     , lsKeyName
+    , lsNetworkInterfaces
     , lsRAMDiskId
-    , lsKernelId
     , lsSubnetId
+    , lsKernelId
     , lsInstanceType
     , lsEBSOptimized
     , lsUserData
     , lsMonitoring
     , lsIAMInstanceProfile
     , lsImageId
-    , lsBlockDeviceMappings
     , lsAddressingType
+    , lsBlockDeviceMappings
     , lsPlacement
 
     -- * Monitoring
@@ -912,8 +915,8 @@
     , naNetworkACLId
     , naVPCId
     , naAssociations
-    , naIsDefault
     , naTags
+    , naIsDefault
 
     -- * NetworkACLAssociation
     , NetworkACLAssociation
@@ -936,17 +939,17 @@
     -- * NetworkInterface
     , NetworkInterface
     , networkInterface
-    , niPrivateIPAddresses
-    , niStatus
     , niGroups
+    , niStatus
+    , niPrivateIPAddresses
     , niSourceDestCheck
-    , niTagSet
     , niVPCId
+    , niTagSet
     , niRequesterManaged
     , niNetworkInterfaceId
     , niSubnetId
-    , niAttachment
     , niMACAddress
+    , niAttachment
     , niOwnerId
     , niAvailabilityZone
     , niPrivateIPAddress
@@ -968,8 +971,8 @@
     , NetworkInterfaceAttachment
     , networkInterfaceAttachment
     , niaInstanceId
-    , niaDeleteOnTermination
     , niaStatus
+    , niaDeleteOnTermination
     , niaAttachmentId
     , niaInstanceOwnerId
     , niaAttachTime
@@ -1068,8 +1071,8 @@
     -- * RecurringCharge
     , RecurringCharge
     , recurringCharge
-    , rcFrequency
     , rcAmount
+    , rcFrequency
 
     -- * RegionInfo
     , RegionInfo
@@ -1082,19 +1085,19 @@
     , requestSpotLaunchSpecification
     , rslsSecurityGroupIds
     , rslsSecurityGroups
-    , rslsNetworkInterfaces
     , rslsKeyName
+    , rslsNetworkInterfaces
     , rslsRAMDiskId
-    , rslsKernelId
     , rslsSubnetId
+    , rslsKernelId
     , rslsInstanceType
     , rslsEBSOptimized
     , rslsUserData
     , rslsMonitoring
     , rslsIAMInstanceProfile
     , rslsImageId
-    , rslsBlockDeviceMappings
     , rslsAddressingType
+    , rslsBlockDeviceMappings
     , rslsPlacement
 
     -- * Reservation
@@ -1121,14 +1124,14 @@
     , riProductDescription
     , riStart
     , riInstanceType
-    , riAvailabilityZone
     , riEnd
+    , riAvailabilityZone
+    , riRecurringCharges
     , riOfferingType
     , riUsagePrice
-    , riRecurringCharges
-    , riInstanceTenancy
     , riFixedPrice
     , riReservedInstancesId
+    , riInstanceTenancy
     , riDuration
     , riTags
 
@@ -1155,9 +1158,9 @@
     , rilPriceSchedules
     , rilStatusMessage
     , rilReservedInstancesId
+    , rilTags
     , rilInstanceCounts
     , rilReservedInstancesListingId
-    , rilTags
 
     -- * ReservedInstancesModification
     , ReservedInstancesModification
@@ -1187,20 +1190,20 @@
     , rioInstanceType
     , rioAvailabilityZone
     , rioPricingDetails
+    , rioRecurringCharges
     , rioOfferingType
     , rioUsagePrice
-    , rioRecurringCharges
-    , rioReservedInstancesOfferingId
-    , rioInstanceTenancy
     , rioFixedPrice
+    , rioInstanceTenancy
+    , rioReservedInstancesOfferingId
     , rioDuration
 
     -- * Route
     , Route
     , route
+    , rVPCPeeringConnectionId
     , rInstanceId
     , rOrigin
-    , rVPCPeeringConnectionId
     , rState
     , rNetworkInterfaceId
     , rGatewayId
@@ -1211,8 +1214,8 @@
     -- * RouteTable
     , RouteTable
     , routeTable
-    , rtRoutes
     , rtRouteTableId
+    , rtRoutes
     , rtVPCId
     , rtPropagatingVGWs
     , rtAssociations
@@ -1273,20 +1276,20 @@
     , snapshotDetail
     , sdStatus
     , sdProgress
-    , sdURL
     , sdFormat
+    , sdURL
     , sdDeviceName
+    , sdStatusMessage
     , sdUserBucket
     , sdDiskImageSize
-    , sdStatusMessage
     , sdDescription
     , sdSnapshotId
 
     -- * SnapshotDiskContainer
     , SnapshotDiskContainer
     , snapshotDiskContainer
-    , sdcURL
     , sdcFormat
+    , sdcURL
     , sdcUserBucket
     , sdcDescription
 
@@ -1295,11 +1298,11 @@
     , snapshotTaskDetail
     , stdStatus
     , stdProgress
-    , stdURL
     , stdFormat
+    , stdURL
+    , stdStatusMessage
     , stdUserBucket
     , stdDiskImageSize
-    , stdStatusMessage
     , stdDescription
     , stdSnapshotId
 
@@ -1316,19 +1319,21 @@
     , SpotFleetLaunchSpecification
     , spotFleetLaunchSpecification
     , sflsSecurityGroups
-    , sflsNetworkInterfaces
+    , sflsSpotPrice
+    , sflsWeightedCapacity
     , sflsKeyName
+    , sflsNetworkInterfaces
     , sflsRAMDiskId
-    , sflsKernelId
     , sflsSubnetId
+    , sflsKernelId
     , sflsInstanceType
     , sflsEBSOptimized
     , sflsUserData
     , sflsMonitoring
     , sflsIAMInstanceProfile
     , sflsImageId
-    , sflsBlockDeviceMappings
     , sflsAddressingType
+    , sflsBlockDeviceMappings
     , sflsPlacement
 
     -- * SpotFleetMonitoring
@@ -1363,17 +1368,17 @@
     , sirState
     , sirProductDescription
     , sirSpotPrice
-    , sirAvailabilityZoneGroup
     , sirLaunchSpecification
+    , sirAvailabilityZoneGroup
     , sirLaunchedAvailabilityZone
     , sirValidUntil
-    , sirFault
     , sirLaunchGroup
+    , sirFault
     , sirSpotInstanceRequestId
     , sirType
     , sirValidFrom
-    , sirTags
     , sirCreateTime
+    , sirTags
 
     -- * SpotInstanceStateFault
     , SpotInstanceStateFault
@@ -1513,8 +1518,8 @@
     -- * VPCEndpoint
     , VPCEndpoint
     , vpcEndpoint
-    , vePolicyDocument
     , veState
+    , vePolicyDocument
     , veVPCId
     , veCreationTimestamp
     , veServiceName
@@ -1524,8 +1529,8 @@
     -- * VPCPeeringConnection
     , VPCPeeringConnection
     , vpcPeeringConnection
-    , vpcpcStatus
     , vpcpcVPCPeeringConnectionId
+    , vpcpcStatus
     , vpcpcAccepterVPCInfo
     , vpcpcRequesterVPCInfo
     , vpcpcExpirationTime
@@ -1547,14 +1552,14 @@
     -- * VPNConnection
     , VPNConnection
     , vpnConnection
+    , vcCustomerGatewayConfiguration
     , vcRoutes
     , vcVPNGatewayId
     , vcOptions
-    , vcVGWTelemetry
     , vcTags
+    , vcVGWTelemetry
     , vcVPNConnectionId
     , vcCustomerGatewayId
-    , vcCustomerGatewayConfiguration
     , vcState
     , vcType
 
@@ -1571,8 +1576,8 @@
     -- * VPNGateway
     , VPNGateway
     , vpnGateway
-    , vgVPCAttachments
     , vgState
+    , vgVPCAttachments
     , vgVPNGatewayId
     , vgAvailabilityZone
     , vgType
@@ -1650,8 +1655,8 @@
     , volumeStatusItem
     , vsiVolumeStatus
     , vsiActions
-    , vsiAvailabilityZone
     , vsiEvents
+    , vsiAvailabilityZone
     , vsiVolumeId
     ) where
 
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
@@ -134,10599 +134,10628 @@
 --
 -- /See:/ 'address' smart constructor.
 data Address = Address'
-    { _aInstanceId              :: !(Maybe Text)
-    , _aAssociationId           :: !(Maybe Text)
-    , _aNetworkInterfaceOwnerId :: !(Maybe Text)
-    , _aAllocationId            :: !(Maybe Text)
-    , _aDomain                  :: !(Maybe DomainType)
-    , _aNetworkInterfaceId      :: !(Maybe Text)
-    , _aPrivateIPAddress        :: !(Maybe Text)
-    , _aPublicIP                :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Address' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aInstanceId'
---
--- * 'aAssociationId'
---
--- * 'aNetworkInterfaceOwnerId'
---
--- * 'aAllocationId'
---
--- * 'aDomain'
---
--- * 'aNetworkInterfaceId'
---
--- * 'aPrivateIPAddress'
---
--- * 'aPublicIP'
-address
-    :: Address
-address =
-    Address'
-    { _aInstanceId = Nothing
-    , _aAssociationId = Nothing
-    , _aNetworkInterfaceOwnerId = Nothing
-    , _aAllocationId = Nothing
-    , _aDomain = Nothing
-    , _aNetworkInterfaceId = Nothing
-    , _aPrivateIPAddress = Nothing
-    , _aPublicIP = Nothing
-    }
-
--- | The ID of the instance that the address is associated with (if any).
-aInstanceId :: Lens' Address (Maybe Text)
-aInstanceId = lens _aInstanceId (\ s a -> s{_aInstanceId = a});
-
--- | The ID representing the association of the address with an instance in a
--- VPC.
-aAssociationId :: Lens' Address (Maybe Text)
-aAssociationId = lens _aAssociationId (\ s a -> s{_aAssociationId = a});
-
--- | The ID of the AWS account that owns the network interface.
-aNetworkInterfaceOwnerId :: Lens' Address (Maybe Text)
-aNetworkInterfaceOwnerId = lens _aNetworkInterfaceOwnerId (\ s a -> s{_aNetworkInterfaceOwnerId = a});
-
--- | The ID representing the allocation of the address for use with EC2-VPC.
-aAllocationId :: Lens' Address (Maybe Text)
-aAllocationId = lens _aAllocationId (\ s a -> s{_aAllocationId = a});
-
--- | Indicates whether this Elastic IP address is for use with instances in
--- EC2-Classic ('standard') or instances in a VPC ('vpc').
-aDomain :: Lens' Address (Maybe DomainType)
-aDomain = lens _aDomain (\ s a -> s{_aDomain = a});
-
--- | The ID of the network interface.
-aNetworkInterfaceId :: Lens' Address (Maybe Text)
-aNetworkInterfaceId = lens _aNetworkInterfaceId (\ s a -> s{_aNetworkInterfaceId = a});
-
--- | The private IP address associated with the Elastic IP address.
-aPrivateIPAddress :: Lens' Address (Maybe Text)
-aPrivateIPAddress = lens _aPrivateIPAddress (\ s a -> s{_aPrivateIPAddress = a});
-
--- | The Elastic IP address.
-aPublicIP :: Lens' Address (Maybe Text)
-aPublicIP = lens _aPublicIP (\ s a -> s{_aPublicIP = a});
-
-instance FromXML Address where
-        parseXML x
-          = Address' <$>
-              (x .@? "instanceId") <*> (x .@? "associationId") <*>
-                (x .@? "networkInterfaceOwnerId")
-                <*> (x .@? "allocationId")
-                <*> (x .@? "domain")
-                <*> (x .@? "networkInterfaceId")
-                <*> (x .@? "privateIpAddress")
-                <*> (x .@? "publicIp")
-
--- | The value to use when a resource attribute accepts a Boolean value.
---
--- /See:/ 'attributeBooleanValue' smart constructor.
-newtype AttributeBooleanValue = AttributeBooleanValue'
-    { _abvValue :: Maybe Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AttributeBooleanValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'abvValue'
-attributeBooleanValue
-    :: AttributeBooleanValue
-attributeBooleanValue =
-    AttributeBooleanValue'
-    { _abvValue = Nothing
-    }
-
--- | Valid values are 'true' or 'false'.
-abvValue :: Lens' AttributeBooleanValue (Maybe Bool)
-abvValue = lens _abvValue (\ s a -> s{_abvValue = a});
-
-instance FromXML AttributeBooleanValue where
-        parseXML x
-          = AttributeBooleanValue' <$> (x .@? "value")
-
-instance ToQuery AttributeBooleanValue where
-        toQuery AttributeBooleanValue'{..}
-          = mconcat ["Value" =: _abvValue]
-
--- | The value to use for a resource attribute.
---
--- /See:/ 'attributeValue' smart constructor.
-newtype AttributeValue = AttributeValue'
-    { _avValue :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AttributeValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'avValue'
-attributeValue
-    :: AttributeValue
-attributeValue =
-    AttributeValue'
-    { _avValue = Nothing
-    }
-
--- | Valid values are case-sensitive and vary by action.
-avValue :: Lens' AttributeValue (Maybe Text)
-avValue = lens _avValue (\ s a -> s{_avValue = a});
-
-instance FromXML AttributeValue where
-        parseXML x = AttributeValue' <$> (x .@? "value")
-
-instance ToQuery AttributeValue where
-        toQuery AttributeValue'{..}
-          = mconcat ["Value" =: _avValue]
-
--- | Describes an Availability Zone.
---
--- /See:/ 'availabilityZone' smart constructor.
-data AvailabilityZone = AvailabilityZone'
-    { _azRegionName :: !(Maybe Text)
-    , _azState      :: !(Maybe AvailabilityZoneState)
-    , _azZoneName   :: !(Maybe Text)
-    , _azMessages   :: !(Maybe [AvailabilityZoneMessage])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AvailabilityZone' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'azRegionName'
---
--- * 'azState'
---
--- * 'azZoneName'
---
--- * 'azMessages'
-availabilityZone
-    :: AvailabilityZone
-availabilityZone =
-    AvailabilityZone'
-    { _azRegionName = Nothing
-    , _azState = Nothing
-    , _azZoneName = Nothing
-    , _azMessages = Nothing
-    }
-
--- | The name of the region.
-azRegionName :: Lens' AvailabilityZone (Maybe Text)
-azRegionName = lens _azRegionName (\ s a -> s{_azRegionName = a});
-
--- | The state of the Availability Zone ('available' | 'impaired' |
--- 'unavailable').
-azState :: Lens' AvailabilityZone (Maybe AvailabilityZoneState)
-azState = lens _azState (\ s a -> s{_azState = a});
-
--- | The name of the Availability Zone.
-azZoneName :: Lens' AvailabilityZone (Maybe Text)
-azZoneName = lens _azZoneName (\ s a -> s{_azZoneName = a});
-
--- | Any messages about the Availability Zone.
-azMessages :: Lens' AvailabilityZone [AvailabilityZoneMessage]
-azMessages = lens _azMessages (\ s a -> s{_azMessages = a}) . _Default . _Coerce;
-
-instance FromXML AvailabilityZone where
-        parseXML x
-          = AvailabilityZone' <$>
-              (x .@? "regionName") <*> (x .@? "zoneState") <*>
-                (x .@? "zoneName")
-                <*>
-                (x .@? "messageSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes a message about an Availability Zone.
---
--- /See:/ 'availabilityZoneMessage' smart constructor.
-newtype AvailabilityZoneMessage = AvailabilityZoneMessage'
-    { _azmMessage :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AvailabilityZoneMessage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'azmMessage'
-availabilityZoneMessage
-    :: AvailabilityZoneMessage
-availabilityZoneMessage =
-    AvailabilityZoneMessage'
-    { _azmMessage = Nothing
-    }
-
--- | The message about the Availability Zone.
-azmMessage :: Lens' AvailabilityZoneMessage (Maybe Text)
-azmMessage = lens _azmMessage (\ s a -> s{_azmMessage = a});
-
-instance FromXML AvailabilityZoneMessage where
-        parseXML x
-          = AvailabilityZoneMessage' <$> (x .@? "message")
-
--- | /See:/ 'blobAttributeValue' smart constructor.
-newtype BlobAttributeValue = BlobAttributeValue'
-    { _bavValue :: Maybe Base64
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BlobAttributeValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bavValue'
-blobAttributeValue
-    :: BlobAttributeValue
-blobAttributeValue =
-    BlobAttributeValue'
-    { _bavValue = Nothing
-    }
-
--- | Undocumented member.
---
--- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
--- despite what the AWS documentation might say.
--- The underlying isomorphism will encode to Base64 representation during
--- serialisation, and decode from Base64 representation during deserialisation.
--- This 'Lens' accepts and returns only raw unencoded data.
-bavValue :: Lens' BlobAttributeValue (Maybe ByteString)
-bavValue = lens _bavValue (\ s a -> s{_bavValue = a}) . mapping _Base64;
-
-instance ToQuery BlobAttributeValue where
-        toQuery BlobAttributeValue'{..}
-          = mconcat ["Value" =: _bavValue]
-
--- | Describes a block device mapping.
---
--- /See:/ 'blockDeviceMapping' smart constructor.
-data BlockDeviceMapping = BlockDeviceMapping'
-    { _bdmVirtualName :: !(Maybe Text)
-    , _bdmNoDevice    :: !(Maybe Text)
-    , _bdmEBS         :: !(Maybe EBSBlockDevice)
-    , _bdmDeviceName  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bdmVirtualName'
---
--- * 'bdmNoDevice'
---
--- * 'bdmEBS'
---
--- * 'bdmDeviceName'
-blockDeviceMapping
-    :: Text -- ^ 'bdmDeviceName'
-    -> BlockDeviceMapping
-blockDeviceMapping pDeviceName_ =
-    BlockDeviceMapping'
-    { _bdmVirtualName = Nothing
-    , _bdmNoDevice = Nothing
-    , _bdmEBS = Nothing
-    , _bdmDeviceName = pDeviceName_
-    }
-
--- | The virtual device name ('ephemeral'N). Instance store volumes are
--- numbered starting from 0. An instance type with 2 available instance
--- store volumes can specify mappings for 'ephemeral0' and 'ephemeral1'.The
--- number of available instance store volumes depends on the instance type.
--- After you connect to the instance, you must mount the volume.
---
--- Constraints: For M3 instances, you must specify instance store volumes
--- in the block device mapping for the instance. When you launch an M3
--- instance, we ignore any instance store volumes specified in the block
--- device mapping for the AMI.
-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
-
--- | Suppresses the specified device included in the block device mapping of
--- the AMI.
-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
-bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
-
--- | Parameters used to automatically set up EBS volumes when the instance is
--- launched.
-bdmEBS :: Lens' BlockDeviceMapping (Maybe EBSBlockDevice)
-bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
-
--- | The device name exposed to the instance (for example, '\/dev\/sdh' or
--- 'xvdh').
-bdmDeviceName :: Lens' BlockDeviceMapping Text
-bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
-
-instance FromXML BlockDeviceMapping where
-        parseXML x
-          = BlockDeviceMapping' <$>
-              (x .@? "virtualName") <*> (x .@? "noDevice") <*>
-                (x .@? "ebs")
-                <*> (x .@ "deviceName")
-
-instance ToQuery BlockDeviceMapping where
-        toQuery BlockDeviceMapping'{..}
-          = mconcat
-              ["VirtualName" =: _bdmVirtualName,
-               "NoDevice" =: _bdmNoDevice, "Ebs" =: _bdmEBS,
-               "DeviceName" =: _bdmDeviceName]
-
--- | Describes a bundle task.
---
--- /See:/ 'bundleTask' smart constructor.
-data BundleTask = BundleTask'
-    { _btBundleTaskError :: !(Maybe BundleTaskError)
-    , _btBundleId        :: !Text
-    , _btInstanceId      :: !Text
-    , _btProgress        :: !Text
-    , _btStartTime       :: !ISO8601
-    , _btState           :: !BundleTaskState
-    , _btStorage         :: !Storage
-    , _btUpdateTime      :: !ISO8601
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BundleTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'btBundleTaskError'
---
--- * 'btBundleId'
---
--- * 'btInstanceId'
---
--- * 'btProgress'
---
--- * 'btStartTime'
---
--- * 'btState'
---
--- * 'btStorage'
---
--- * 'btUpdateTime'
-bundleTask
-    :: Text -- ^ 'btBundleId'
-    -> Text -- ^ 'btInstanceId'
-    -> Text -- ^ 'btProgress'
-    -> UTCTime -- ^ 'btStartTime'
-    -> BundleTaskState -- ^ 'btState'
-    -> Storage -- ^ 'btStorage'
-    -> UTCTime -- ^ 'btUpdateTime'
-    -> BundleTask
-bundleTask pBundleId_ pInstanceId_ pProgress_ pStartTime_ pState_ pStorage_ pUpdateTime_ =
-    BundleTask'
-    { _btBundleTaskError = Nothing
-    , _btBundleId = pBundleId_
-    , _btInstanceId = pInstanceId_
-    , _btProgress = pProgress_
-    , _btStartTime = _Time # pStartTime_
-    , _btState = pState_
-    , _btStorage = pStorage_
-    , _btUpdateTime = _Time # pUpdateTime_
-    }
-
--- | If the task fails, a description of the error.
-btBundleTaskError :: Lens' BundleTask (Maybe BundleTaskError)
-btBundleTaskError = lens _btBundleTaskError (\ s a -> s{_btBundleTaskError = a});
-
--- | The ID of the bundle task.
-btBundleId :: Lens' BundleTask Text
-btBundleId = lens _btBundleId (\ s a -> s{_btBundleId = a});
-
--- | The ID of the instance associated with this bundle task.
-btInstanceId :: Lens' BundleTask Text
-btInstanceId = lens _btInstanceId (\ s a -> s{_btInstanceId = a});
-
--- | The level of task completion, as a percent (for example, 20%).
-btProgress :: Lens' BundleTask Text
-btProgress = lens _btProgress (\ s a -> s{_btProgress = a});
-
--- | The time this task started.
-btStartTime :: Lens' BundleTask UTCTime
-btStartTime = lens _btStartTime (\ s a -> s{_btStartTime = a}) . _Time;
-
--- | The state of the task.
-btState :: Lens' BundleTask BundleTaskState
-btState = lens _btState (\ s a -> s{_btState = a});
-
--- | The Amazon S3 storage locations.
-btStorage :: Lens' BundleTask Storage
-btStorage = lens _btStorage (\ s a -> s{_btStorage = a});
-
--- | The time of the most recent update for the task.
-btUpdateTime :: Lens' BundleTask UTCTime
-btUpdateTime = lens _btUpdateTime (\ s a -> s{_btUpdateTime = a}) . _Time;
-
-instance FromXML BundleTask where
-        parseXML x
-          = BundleTask' <$>
-              (x .@? "error") <*> (x .@ "bundleId") <*>
-                (x .@ "instanceId")
-                <*> (x .@ "progress")
-                <*> (x .@ "startTime")
-                <*> (x .@ "state")
-                <*> (x .@ "storage")
-                <*> (x .@ "updateTime")
-
--- | Describes an error for BundleInstance.
---
--- /See:/ 'bundleTaskError' smart constructor.
-data BundleTaskError = BundleTaskError'
-    { _bteCode    :: !(Maybe Text)
-    , _bteMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BundleTaskError' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bteCode'
---
--- * 'bteMessage'
-bundleTaskError
-    :: BundleTaskError
-bundleTaskError =
-    BundleTaskError'
-    { _bteCode = Nothing
-    , _bteMessage = Nothing
-    }
-
--- | The error code.
-bteCode :: Lens' BundleTaskError (Maybe Text)
-bteCode = lens _bteCode (\ s a -> s{_bteCode = a});
-
--- | The error message.
-bteMessage :: Lens' BundleTaskError (Maybe Text)
-bteMessage = lens _bteMessage (\ s a -> s{_bteMessage = a});
-
-instance FromXML BundleTaskError where
-        parseXML x
-          = BundleTaskError' <$>
-              (x .@? "code") <*> (x .@? "message")
-
--- | Describes a Spot fleet error.
---
--- /See:/ 'cancelSpotFleetRequestsError' smart constructor.
-data CancelSpotFleetRequestsError = CancelSpotFleetRequestsError'
-    { _csfreCode    :: !CancelBatchErrorCode
-    , _csfreMessage :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelSpotFleetRequestsError' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csfreCode'
---
--- * 'csfreMessage'
-cancelSpotFleetRequestsError
-    :: CancelBatchErrorCode -- ^ 'csfreCode'
-    -> Text -- ^ 'csfreMessage'
-    -> CancelSpotFleetRequestsError
-cancelSpotFleetRequestsError pCode_ pMessage_ =
-    CancelSpotFleetRequestsError'
-    { _csfreCode = pCode_
-    , _csfreMessage = pMessage_
-    }
-
--- | The error code.
-csfreCode :: Lens' CancelSpotFleetRequestsError CancelBatchErrorCode
-csfreCode = lens _csfreCode (\ s a -> s{_csfreCode = a});
-
--- | The description for the error code.
-csfreMessage :: Lens' CancelSpotFleetRequestsError Text
-csfreMessage = lens _csfreMessage (\ s a -> s{_csfreMessage = a});
-
-instance FromXML CancelSpotFleetRequestsError where
-        parseXML x
-          = CancelSpotFleetRequestsError' <$>
-              (x .@ "code") <*> (x .@ "message")
-
--- | Describes a Spot fleet request that was not successfully canceled.
---
--- /See:/ 'cancelSpotFleetRequestsErrorItem' smart constructor.
-data CancelSpotFleetRequestsErrorItem = CancelSpotFleetRequestsErrorItem'
-    { _csfreiSpotFleetRequestId :: !Text
-    , _csfreiError              :: !CancelSpotFleetRequestsError
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelSpotFleetRequestsErrorItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csfreiSpotFleetRequestId'
---
--- * 'csfreiError'
-cancelSpotFleetRequestsErrorItem
-    :: Text -- ^ 'csfreiSpotFleetRequestId'
-    -> CancelSpotFleetRequestsError -- ^ 'csfreiError'
-    -> CancelSpotFleetRequestsErrorItem
-cancelSpotFleetRequestsErrorItem pSpotFleetRequestId_ pError_ =
-    CancelSpotFleetRequestsErrorItem'
-    { _csfreiSpotFleetRequestId = pSpotFleetRequestId_
-    , _csfreiError = pError_
-    }
-
--- | The ID of the Spot fleet request.
-csfreiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsErrorItem Text
-csfreiSpotFleetRequestId = lens _csfreiSpotFleetRequestId (\ s a -> s{_csfreiSpotFleetRequestId = a});
-
--- | The error.
-csfreiError :: Lens' CancelSpotFleetRequestsErrorItem CancelSpotFleetRequestsError
-csfreiError = lens _csfreiError (\ s a -> s{_csfreiError = a});
-
-instance FromXML CancelSpotFleetRequestsErrorItem
-         where
-        parseXML x
-          = CancelSpotFleetRequestsErrorItem' <$>
-              (x .@ "spotFleetRequestId") <*> (x .@ "error")
-
--- | Describes a Spot fleet request that was successfully canceled.
---
--- /See:/ 'cancelSpotFleetRequestsSuccessItem' smart constructor.
-data CancelSpotFleetRequestsSuccessItem = CancelSpotFleetRequestsSuccessItem'
-    { _csfrsiSpotFleetRequestId            :: !Text
-    , _csfrsiCurrentSpotFleetRequestState  :: !BatchState
-    , _csfrsiPreviousSpotFleetRequestState :: !BatchState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelSpotFleetRequestsSuccessItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csfrsiSpotFleetRequestId'
---
--- * 'csfrsiCurrentSpotFleetRequestState'
---
--- * 'csfrsiPreviousSpotFleetRequestState'
-cancelSpotFleetRequestsSuccessItem
-    :: Text -- ^ 'csfrsiSpotFleetRequestId'
-    -> BatchState -- ^ 'csfrsiCurrentSpotFleetRequestState'
-    -> BatchState -- ^ 'csfrsiPreviousSpotFleetRequestState'
-    -> CancelSpotFleetRequestsSuccessItem
-cancelSpotFleetRequestsSuccessItem pSpotFleetRequestId_ pCurrentSpotFleetRequestState_ pPreviousSpotFleetRequestState_ =
-    CancelSpotFleetRequestsSuccessItem'
-    { _csfrsiSpotFleetRequestId = pSpotFleetRequestId_
-    , _csfrsiCurrentSpotFleetRequestState = pCurrentSpotFleetRequestState_
-    , _csfrsiPreviousSpotFleetRequestState = pPreviousSpotFleetRequestState_
-    }
-
--- | The ID of the Spot fleet request.
-csfrsiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsSuccessItem Text
-csfrsiSpotFleetRequestId = lens _csfrsiSpotFleetRequestId (\ s a -> s{_csfrsiSpotFleetRequestId = a});
-
--- | The current state of the Spot fleet request.
-csfrsiCurrentSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
-csfrsiCurrentSpotFleetRequestState = lens _csfrsiCurrentSpotFleetRequestState (\ s a -> s{_csfrsiCurrentSpotFleetRequestState = a});
-
--- | The previous state of the Spot fleet request.
-csfrsiPreviousSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
-csfrsiPreviousSpotFleetRequestState = lens _csfrsiPreviousSpotFleetRequestState (\ s a -> s{_csfrsiPreviousSpotFleetRequestState = a});
-
-instance FromXML CancelSpotFleetRequestsSuccessItem
-         where
-        parseXML x
-          = CancelSpotFleetRequestsSuccessItem' <$>
-              (x .@ "spotFleetRequestId") <*>
-                (x .@ "currentSpotFleetRequestState")
-                <*> (x .@ "previousSpotFleetRequestState")
-
--- | Describes a request to cancel a Spot Instance.
---
--- /See:/ 'cancelledSpotInstanceRequest' smart constructor.
-data CancelledSpotInstanceRequest = CancelledSpotInstanceRequest'
-    { _csirState                 :: !(Maybe CancelSpotInstanceRequestState)
-    , _csirSpotInstanceRequestId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelledSpotInstanceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csirState'
---
--- * 'csirSpotInstanceRequestId'
-cancelledSpotInstanceRequest
-    :: CancelledSpotInstanceRequest
-cancelledSpotInstanceRequest =
-    CancelledSpotInstanceRequest'
-    { _csirState = Nothing
-    , _csirSpotInstanceRequestId = Nothing
-    }
-
--- | 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.
-csirSpotInstanceRequestId :: Lens' CancelledSpotInstanceRequest (Maybe Text)
-csirSpotInstanceRequestId = lens _csirSpotInstanceRequestId (\ s a -> s{_csirSpotInstanceRequestId = a});
-
-instance FromXML CancelledSpotInstanceRequest where
-        parseXML x
-          = CancelledSpotInstanceRequest' <$>
-              (x .@? "state") <*> (x .@? "spotInstanceRequestId")
-
--- | Describes a linked EC2-Classic instance.
---
--- /See:/ 'classicLinkInstance' smart constructor.
-data ClassicLinkInstance = ClassicLinkInstance'
-    { _cliInstanceId :: !(Maybe Text)
-    , _cliGroups     :: !(Maybe [GroupIdentifier])
-    , _cliVPCId      :: !(Maybe Text)
-    , _cliTags       :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClassicLinkInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cliInstanceId'
---
--- * 'cliGroups'
---
--- * 'cliVPCId'
---
--- * 'cliTags'
-classicLinkInstance
-    :: ClassicLinkInstance
-classicLinkInstance =
-    ClassicLinkInstance'
-    { _cliInstanceId = Nothing
-    , _cliGroups = Nothing
-    , _cliVPCId = Nothing
-    , _cliTags = Nothing
-    }
-
--- | The ID of the instance.
-cliInstanceId :: Lens' ClassicLinkInstance (Maybe Text)
-cliInstanceId = lens _cliInstanceId (\ s a -> s{_cliInstanceId = a});
-
--- | A list of security groups.
-cliGroups :: Lens' ClassicLinkInstance [GroupIdentifier]
-cliGroups = lens _cliGroups (\ s a -> s{_cliGroups = a}) . _Default . _Coerce;
-
--- | The ID of the VPC.
-cliVPCId :: Lens' ClassicLinkInstance (Maybe Text)
-cliVPCId = lens _cliVPCId (\ s a -> s{_cliVPCId = a});
-
--- | Any tags assigned to the instance.
-cliTags :: Lens' ClassicLinkInstance [Tag]
-cliTags = lens _cliTags (\ s a -> s{_cliTags = a}) . _Default . _Coerce;
-
-instance FromXML ClassicLinkInstance where
-        parseXML x
-          = ClassicLinkInstance' <$>
-              (x .@? "instanceId") <*>
-                (x .@? "groupSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "vpcId")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes the client-specific data.
---
--- /See:/ 'clientData' smart constructor.
-data ClientData = ClientData'
-    { _cdUploadStart :: !(Maybe ISO8601)
-    , _cdUploadSize  :: !(Maybe Double)
-    , _cdUploadEnd   :: !(Maybe ISO8601)
-    , _cdComment     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClientData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdUploadStart'
---
--- * 'cdUploadSize'
---
--- * 'cdUploadEnd'
---
--- * 'cdComment'
-clientData
-    :: ClientData
-clientData =
-    ClientData'
-    { _cdUploadStart = Nothing
-    , _cdUploadSize = Nothing
-    , _cdUploadEnd = Nothing
-    , _cdComment = Nothing
-    }
-
--- | The time that the disk upload starts.
-cdUploadStart :: Lens' ClientData (Maybe UTCTime)
-cdUploadStart = lens _cdUploadStart (\ s a -> s{_cdUploadStart = a}) . mapping _Time;
-
--- | The size of the uploaded disk image, in GiB.
-cdUploadSize :: Lens' ClientData (Maybe Double)
-cdUploadSize = lens _cdUploadSize (\ s a -> s{_cdUploadSize = a});
-
--- | The time that the disk upload ends.
-cdUploadEnd :: Lens' ClientData (Maybe UTCTime)
-cdUploadEnd = lens _cdUploadEnd (\ s a -> s{_cdUploadEnd = a}) . mapping _Time;
-
--- | A user-defined comment about the disk upload.
-cdComment :: Lens' ClientData (Maybe Text)
-cdComment = lens _cdComment (\ s a -> s{_cdComment = a});
-
-instance ToQuery ClientData where
-        toQuery ClientData'{..}
-          = mconcat
-              ["UploadStart" =: _cdUploadStart,
-               "UploadSize" =: _cdUploadSize,
-               "UploadEnd" =: _cdUploadEnd, "Comment" =: _cdComment]
-
--- | Describes a conversion task.
---
--- /See:/ 'conversionTask' smart constructor.
-data ConversionTask = ConversionTask'
-    { _ctImportInstance   :: !(Maybe ImportInstanceTaskDetails)
-    , _ctStatusMessage    :: !(Maybe Text)
-    , _ctImportVolume     :: !(Maybe ImportVolumeTaskDetails)
-    , _ctExpirationTime   :: !(Maybe Text)
-    , _ctTags             :: !(Maybe [Tag])
-    , _ctConversionTaskId :: !Text
-    , _ctState            :: !ConversionTaskState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ConversionTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctImportInstance'
---
--- * 'ctStatusMessage'
---
--- * 'ctImportVolume'
---
--- * 'ctExpirationTime'
---
--- * 'ctTags'
---
--- * 'ctConversionTaskId'
---
--- * 'ctState'
-conversionTask
-    :: Text -- ^ 'ctConversionTaskId'
-    -> ConversionTaskState -- ^ 'ctState'
-    -> ConversionTask
-conversionTask pConversionTaskId_ pState_ =
-    ConversionTask'
-    { _ctImportInstance = Nothing
-    , _ctStatusMessage = Nothing
-    , _ctImportVolume = Nothing
-    , _ctExpirationTime = Nothing
-    , _ctTags = Nothing
-    , _ctConversionTaskId = pConversionTaskId_
-    , _ctState = pState_
-    }
-
--- | If the task is for importing an instance, this contains information
--- about the import instance task.
-ctImportInstance :: Lens' ConversionTask (Maybe ImportInstanceTaskDetails)
-ctImportInstance = lens _ctImportInstance (\ s a -> s{_ctImportInstance = a});
-
--- | The status message related to the conversion task.
-ctStatusMessage :: Lens' ConversionTask (Maybe Text)
-ctStatusMessage = lens _ctStatusMessage (\ s a -> s{_ctStatusMessage = a});
-
--- | If the task is for importing a volume, this contains information about
--- the import volume task.
-ctImportVolume :: Lens' ConversionTask (Maybe ImportVolumeTaskDetails)
-ctImportVolume = lens _ctImportVolume (\ s a -> s{_ctImportVolume = a});
-
--- | The time when the task expires. If the upload isn\'t complete before the
--- expiration time, we automatically cancel the task.
-ctExpirationTime :: Lens' ConversionTask (Maybe Text)
-ctExpirationTime = lens _ctExpirationTime (\ s a -> s{_ctExpirationTime = a});
-
--- | Any tags assigned to the task.
-ctTags :: Lens' ConversionTask [Tag]
-ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Default . _Coerce;
-
--- | The ID of the conversion task.
-ctConversionTaskId :: Lens' ConversionTask Text
-ctConversionTaskId = lens _ctConversionTaskId (\ s a -> s{_ctConversionTaskId = a});
-
--- | The state of the conversion task.
-ctState :: Lens' ConversionTask ConversionTaskState
-ctState = lens _ctState (\ s a -> s{_ctState = a});
-
-instance FromXML ConversionTask where
-        parseXML x
-          = ConversionTask' <$>
-              (x .@? "importInstance") <*> (x .@? "statusMessage")
-                <*> (x .@? "importVolume")
-                <*> (x .@? "expirationTime")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "conversionTaskId")
-                <*> (x .@ "state")
-
--- | Describes the user or group to be added or removed from the permissions
--- for a volume.
---
--- /See:/ 'createVolumePermission' smart constructor.
-data CreateVolumePermission = CreateVolumePermission'
-    { _cvpGroup  :: !(Maybe PermissionGroup)
-    , _cvpUserId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateVolumePermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvpGroup'
---
--- * 'cvpUserId'
-createVolumePermission
-    :: CreateVolumePermission
-createVolumePermission =
-    CreateVolumePermission'
-    { _cvpGroup = Nothing
-    , _cvpUserId = Nothing
-    }
-
--- | The specific group that is to be added or removed from a volume\'s list
--- of create volume permissions.
-cvpGroup :: Lens' CreateVolumePermission (Maybe PermissionGroup)
-cvpGroup = lens _cvpGroup (\ s a -> s{_cvpGroup = a});
-
--- | The specific AWS account ID that is to be added or removed from a
--- volume\'s list of create volume permissions.
-cvpUserId :: Lens' CreateVolumePermission (Maybe Text)
-cvpUserId = lens _cvpUserId (\ s a -> s{_cvpUserId = a});
-
-instance FromXML CreateVolumePermission where
-        parseXML x
-          = CreateVolumePermission' <$>
-              (x .@? "group") <*> (x .@? "userId")
-
-instance ToQuery CreateVolumePermission where
-        toQuery CreateVolumePermission'{..}
-          = mconcat
-              ["Group" =: _cvpGroup, "UserId" =: _cvpUserId]
-
--- | Describes modifications to the permissions for a volume.
---
--- /See:/ 'createVolumePermissionModifications' smart constructor.
-data CreateVolumePermissionModifications = CreateVolumePermissionModifications'
-    { _cvpmRemove :: !(Maybe [CreateVolumePermission])
-    , _cvpmAdd    :: !(Maybe [CreateVolumePermission])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateVolumePermissionModifications' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvpmRemove'
---
--- * 'cvpmAdd'
-createVolumePermissionModifications
-    :: CreateVolumePermissionModifications
-createVolumePermissionModifications =
-    CreateVolumePermissionModifications'
-    { _cvpmRemove = Nothing
-    , _cvpmAdd = Nothing
-    }
-
--- | Removes a specific AWS account ID or group from a volume\'s list of
--- create volume permissions.
-cvpmRemove :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]
-cvpmRemove = lens _cvpmRemove (\ s a -> s{_cvpmRemove = a}) . _Default . _Coerce;
-
--- | Adds a specific AWS account ID or group to a volume\'s list of create
--- volume permissions.
-cvpmAdd :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]
-cvpmAdd = lens _cvpmAdd (\ s a -> s{_cvpmAdd = a}) . _Default . _Coerce;
-
-instance ToQuery CreateVolumePermissionModifications
-         where
-        toQuery CreateVolumePermissionModifications'{..}
-          = mconcat
-              [toQuery (toQueryList "Remove" <$> _cvpmRemove),
-               toQuery (toQueryList "Add" <$> _cvpmAdd)]
-
--- | Describes a customer gateway.
---
--- /See:/ 'customerGateway' smart constructor.
-data CustomerGateway = CustomerGateway'
-    { _cgTags              :: !(Maybe [Tag])
-    , _cgBGPASN            :: !Text
-    , _cgCustomerGatewayId :: !Text
-    , _cgIPAddress         :: !Text
-    , _cgState             :: !Text
-    , _cgType              :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CustomerGateway' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cgTags'
---
--- * 'cgBGPASN'
---
--- * 'cgCustomerGatewayId'
---
--- * 'cgIPAddress'
---
--- * 'cgState'
---
--- * 'cgType'
-customerGateway
-    :: Text -- ^ 'cgBGPASN'
-    -> Text -- ^ 'cgCustomerGatewayId'
-    -> Text -- ^ 'cgIPAddress'
-    -> Text -- ^ 'cgState'
-    -> Text -- ^ 'cgType'
-    -> CustomerGateway
-customerGateway pBGPASN_ pCustomerGatewayId_ pIPAddress_ pState_ pType_ =
-    CustomerGateway'
-    { _cgTags = Nothing
-    , _cgBGPASN = pBGPASN_
-    , _cgCustomerGatewayId = pCustomerGatewayId_
-    , _cgIPAddress = pIPAddress_
-    , _cgState = pState_
-    , _cgType = pType_
-    }
-
--- | Any tags assigned to the customer gateway.
-cgTags :: Lens' CustomerGateway [Tag]
-cgTags = lens _cgTags (\ s a -> s{_cgTags = a}) . _Default . _Coerce;
-
--- | The customer gateway\'s Border Gateway Protocol (BGP) Autonomous System
--- Number (ASN).
-cgBGPASN :: Lens' CustomerGateway Text
-cgBGPASN = lens _cgBGPASN (\ s a -> s{_cgBGPASN = a});
-
--- | The ID of the customer gateway.
-cgCustomerGatewayId :: Lens' CustomerGateway Text
-cgCustomerGatewayId = lens _cgCustomerGatewayId (\ s a -> s{_cgCustomerGatewayId = a});
-
--- | The Internet-routable IP address of the customer gateway\'s outside
--- interface.
-cgIPAddress :: Lens' CustomerGateway Text
-cgIPAddress = lens _cgIPAddress (\ s a -> s{_cgIPAddress = a});
-
--- | The current state of the customer gateway
--- ('pending | available | deleting | deleted').
-cgState :: Lens' CustomerGateway Text
-cgState = lens _cgState (\ s a -> s{_cgState = a});
-
--- | The type of VPN connection the customer gateway supports ('ipsec.1').
-cgType :: Lens' CustomerGateway Text
-cgType = lens _cgType (\ s a -> s{_cgType = a});
-
-instance FromXML CustomerGateway where
-        parseXML x
-          = CustomerGateway' <$>
-              (x .@? "tagSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@ "bgpAsn")
-                <*> (x .@ "customerGatewayId")
-                <*> (x .@ "ipAddress")
-                <*> (x .@ "state")
-                <*> (x .@ "type")
-
--- | Describes a DHCP configuration option.
---
--- /See:/ 'dhcpConfiguration' smart constructor.
-data DHCPConfiguration = DHCPConfiguration'
-    { _dcValues :: !(Maybe [AttributeValue])
-    , _dcKey    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DHCPConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcValues'
---
--- * 'dcKey'
-dhcpConfiguration
-    :: DHCPConfiguration
-dhcpConfiguration =
-    DHCPConfiguration'
-    { _dcValues = Nothing
-    , _dcKey = Nothing
-    }
-
--- | One or more values for the DHCP option.
-dcValues :: Lens' DHCPConfiguration [AttributeValue]
-dcValues = lens _dcValues (\ s a -> s{_dcValues = a}) . _Default . _Coerce;
-
--- | The name of a DHCP option.
-dcKey :: Lens' DHCPConfiguration (Maybe Text)
-dcKey = lens _dcKey (\ s a -> s{_dcKey = a});
-
-instance FromXML DHCPConfiguration where
-        parseXML x
-          = DHCPConfiguration' <$>
-              (x .@? "valueSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "key")
-
--- | Describes a set of DHCP options.
---
--- /See:/ 'dhcpOptions' smart constructor.
-data DHCPOptions = DHCPOptions'
-    { _doDHCPConfigurations :: !(Maybe [DHCPConfiguration])
-    , _doDHCPOptionsId      :: !(Maybe Text)
-    , _doTags               :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DHCPOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'doDHCPConfigurations'
---
--- * 'doDHCPOptionsId'
---
--- * 'doTags'
-dhcpOptions
-    :: DHCPOptions
-dhcpOptions =
-    DHCPOptions'
-    { _doDHCPConfigurations = Nothing
-    , _doDHCPOptionsId = Nothing
-    , _doTags = Nothing
-    }
-
--- | One or more DHCP options in the set.
-doDHCPConfigurations :: Lens' DHCPOptions [DHCPConfiguration]
-doDHCPConfigurations = lens _doDHCPConfigurations (\ s a -> s{_doDHCPConfigurations = a}) . _Default . _Coerce;
-
--- | The ID of the set of DHCP options.
-doDHCPOptionsId :: Lens' DHCPOptions (Maybe Text)
-doDHCPOptionsId = lens _doDHCPOptionsId (\ s a -> s{_doDHCPOptionsId = a});
-
--- | Any tags assigned to the DHCP options set.
-doTags :: Lens' DHCPOptions [Tag]
-doTags = lens _doTags (\ s a -> s{_doTags = a}) . _Default . _Coerce;
-
-instance FromXML DHCPOptions where
-        parseXML x
-          = DHCPOptions' <$>
-              (x .@? "dhcpConfigurationSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "dhcpOptionsId")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes a disk image.
---
--- /See:/ 'diskImage' smart constructor.
-data DiskImage = DiskImage'
-    { _diImage       :: !(Maybe DiskImageDetail)
-    , _diVolume      :: !(Maybe VolumeDetail)
-    , _diDescription :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskImage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diImage'
---
--- * 'diVolume'
---
--- * 'diDescription'
-diskImage
-    :: DiskImage
-diskImage =
-    DiskImage'
-    { _diImage = Nothing
-    , _diVolume = Nothing
-    , _diDescription = Nothing
-    }
-
--- | Information about the disk image.
-diImage :: Lens' DiskImage (Maybe DiskImageDetail)
-diImage = lens _diImage (\ s a -> s{_diImage = a});
-
--- | Information about the volume.
-diVolume :: Lens' DiskImage (Maybe VolumeDetail)
-diVolume = lens _diVolume (\ s a -> s{_diVolume = a});
-
--- | A description of the disk image.
-diDescription :: Lens' DiskImage (Maybe Text)
-diDescription = lens _diDescription (\ s a -> s{_diDescription = a});
-
-instance ToQuery DiskImage where
-        toQuery DiskImage'{..}
-          = mconcat
-              ["Image" =: _diImage, "Volume" =: _diVolume,
-               "Description" =: _diDescription]
-
--- | Describes a disk image.
---
--- /See:/ 'diskImageDescription' smart constructor.
-data DiskImageDescription = DiskImageDescription'
-    { _dChecksum          :: !(Maybe Text)
-    , _dFormat            :: !DiskImageFormat
-    , _dSize              :: !Integer
-    , _dImportManifestURL :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskImageDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dChecksum'
---
--- * 'dFormat'
---
--- * 'dSize'
---
--- * 'dImportManifestURL'
-diskImageDescription
-    :: DiskImageFormat -- ^ 'dFormat'
-    -> Integer -- ^ 'dSize'
-    -> Text -- ^ 'dImportManifestURL'
-    -> DiskImageDescription
-diskImageDescription pFormat_ pSize_ pImportManifestURL_ =
-    DiskImageDescription'
-    { _dChecksum = Nothing
-    , _dFormat = pFormat_
-    , _dSize = pSize_
-    , _dImportManifestURL = pImportManifestURL_
-    }
-
--- | The checksum computed for the disk image.
-dChecksum :: Lens' DiskImageDescription (Maybe Text)
-dChecksum = lens _dChecksum (\ s a -> s{_dChecksum = a});
-
--- | The disk image format.
-dFormat :: Lens' DiskImageDescription DiskImageFormat
-dFormat = lens _dFormat (\ s a -> s{_dFormat = a});
-
--- | The size of the disk image, in GiB.
-dSize :: Lens' DiskImageDescription Integer
-dSize = lens _dSize (\ s a -> s{_dSize = a});
-
--- | A presigned URL for the import manifest stored in Amazon S3. For
--- information about creating a presigned URL for an Amazon S3 object, read
--- the \"Query String Request Authentication Alternative\" section of the
--- <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests>
--- topic in the /Amazon Simple Storage Service Developer Guide/.
-dImportManifestURL :: Lens' DiskImageDescription Text
-dImportManifestURL = lens _dImportManifestURL (\ s a -> s{_dImportManifestURL = a});
-
-instance FromXML DiskImageDescription where
-        parseXML x
-          = DiskImageDescription' <$>
-              (x .@? "checksum") <*> (x .@ "format") <*>
-                (x .@ "size")
-                <*> (x .@ "importManifestUrl")
-
--- | Describes a disk image.
---
--- /See:/ 'diskImageDetail' smart constructor.
-data DiskImageDetail = DiskImageDetail'
-    { _didFormat            :: !DiskImageFormat
-    , _didBytes             :: !Integer
-    , _didImportManifestURL :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskImageDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'didFormat'
---
--- * 'didBytes'
---
--- * 'didImportManifestURL'
-diskImageDetail
-    :: DiskImageFormat -- ^ 'didFormat'
-    -> Integer -- ^ 'didBytes'
-    -> Text -- ^ 'didImportManifestURL'
-    -> DiskImageDetail
-diskImageDetail pFormat_ pBytes_ pImportManifestURL_ =
-    DiskImageDetail'
-    { _didFormat = pFormat_
-    , _didBytes = pBytes_
-    , _didImportManifestURL = pImportManifestURL_
-    }
-
--- | The disk image format.
-didFormat :: Lens' DiskImageDetail DiskImageFormat
-didFormat = lens _didFormat (\ s a -> s{_didFormat = a});
-
--- | The size of the disk image, in GiB.
-didBytes :: Lens' DiskImageDetail Integer
-didBytes = lens _didBytes (\ s a -> s{_didBytes = a});
-
--- | A presigned URL for the import manifest stored in Amazon S3 and
--- presented here as an Amazon S3 presigned URL. For information about
--- creating a presigned URL for an Amazon S3 object, read the \"Query
--- String Request Authentication Alternative\" section of the
--- <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests>
--- topic in the /Amazon Simple Storage Service Developer Guide/.
-didImportManifestURL :: Lens' DiskImageDetail Text
-didImportManifestURL = lens _didImportManifestURL (\ s a -> s{_didImportManifestURL = a});
-
-instance ToQuery DiskImageDetail where
-        toQuery DiskImageDetail'{..}
-          = mconcat
-              ["Format" =: _didFormat, "Bytes" =: _didBytes,
-               "ImportManifestUrl" =: _didImportManifestURL]
-
--- | Describes a disk image volume.
---
--- /See:/ 'diskImageVolumeDescription' smart constructor.
-data DiskImageVolumeDescription = DiskImageVolumeDescription'
-    { _divdSize :: !(Maybe Integer)
-    , _divdId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskImageVolumeDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'divdSize'
---
--- * 'divdId'
-diskImageVolumeDescription
-    :: Text -- ^ 'divdId'
-    -> DiskImageVolumeDescription
-diskImageVolumeDescription pId_ =
-    DiskImageVolumeDescription'
-    { _divdSize = Nothing
-    , _divdId = pId_
-    }
-
--- | The size of the volume, in GiB.
-divdSize :: Lens' DiskImageVolumeDescription (Maybe Integer)
-divdSize = lens _divdSize (\ s a -> s{_divdSize = a});
-
--- | The volume identifier.
-divdId :: Lens' DiskImageVolumeDescription Text
-divdId = lens _divdId (\ s a -> s{_divdId = a});
-
-instance FromXML DiskImageVolumeDescription where
-        parseXML x
-          = DiskImageVolumeDescription' <$>
-              (x .@? "size") <*> (x .@ "id")
-
--- | Describes a block device for an EBS volume.
---
--- /See:/ 'ebsBlockDevice' smart constructor.
-data EBSBlockDevice = EBSBlockDevice'
-    { _ebdDeleteOnTermination :: !(Maybe Bool)
-    , _ebdVolumeSize          :: !(Maybe Int)
-    , _ebdIOPS                :: !(Maybe Int)
-    , _ebdEncrypted           :: !(Maybe Bool)
-    , _ebdVolumeType          :: !(Maybe VolumeType)
-    , _ebdSnapshotId          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EBSBlockDevice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ebdDeleteOnTermination'
---
--- * 'ebdVolumeSize'
---
--- * 'ebdIOPS'
---
--- * 'ebdEncrypted'
---
--- * 'ebdVolumeType'
---
--- * 'ebdSnapshotId'
-ebsBlockDevice
-    :: EBSBlockDevice
-ebsBlockDevice =
-    EBSBlockDevice'
-    { _ebdDeleteOnTermination = Nothing
-    , _ebdVolumeSize = Nothing
-    , _ebdIOPS = Nothing
-    , _ebdEncrypted = Nothing
-    , _ebdVolumeType = Nothing
-    , _ebdSnapshotId = Nothing
-    }
-
--- | Indicates whether the EBS volume is deleted on instance termination.
-ebdDeleteOnTermination :: Lens' EBSBlockDevice (Maybe Bool)
-ebdDeleteOnTermination = lens _ebdDeleteOnTermination (\ s a -> s{_ebdDeleteOnTermination = a});
-
--- | The size of the volume, in GiB.
---
--- Constraints: '1-1024' for 'standard' volumes, '1-16384' for 'gp2'
--- volumes, and '4-16384' for 'io1' volumes. If you specify a snapshot, the
--- volume size must be equal to or larger than the snapshot size.
---
--- Default: If you\'re creating the volume from a snapshot and don\'t
--- specify a volume size, the default is the snapshot size.
-ebdVolumeSize :: Lens' EBSBlockDevice (Maybe Int)
-ebdVolumeSize = lens _ebdVolumeSize (\ s a -> s{_ebdVolumeSize = a});
-
--- | The number of I\/O operations per second (IOPS) that the volume
--- supports. For Provisioned IOPS (SSD) volumes, this represents the number
--- of IOPS that are provisioned for the volume. For General Purpose (SSD)
--- volumes, this represents the baseline performance of the volume and the
--- rate at which the volume accumulates I\/O credits for bursting. For more
--- information on General Purpose (SSD) baseline performance, I\/O credits,
--- and bursting, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types>
--- in the /Amazon Elastic Compute Cloud User Guide/.
---
--- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
--- 3 to 10000 for General Purpose (SSD) volumes.
---
--- Condition: This parameter is required for requests to create 'io1'
--- volumes; it is not used in requests to create 'standard' or 'gp2'
--- volumes.
-ebdIOPS :: Lens' EBSBlockDevice (Maybe Int)
-ebdIOPS = lens _ebdIOPS (\ s a -> s{_ebdIOPS = a});
-
--- | Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
--- volumes may only be attached to instances that support Amazon EBS
--- encryption.
-ebdEncrypted :: Lens' EBSBlockDevice (Maybe Bool)
-ebdEncrypted = lens _ebdEncrypted (\ s a -> s{_ebdEncrypted = a});
-
--- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for
--- Provisioned IOPS (SSD) volumes, and 'standard' for Magnetic volumes.
---
--- Default: 'standard'
-ebdVolumeType :: Lens' EBSBlockDevice (Maybe VolumeType)
-ebdVolumeType = lens _ebdVolumeType (\ s a -> s{_ebdVolumeType = a});
-
--- | The ID of the snapshot.
-ebdSnapshotId :: Lens' EBSBlockDevice (Maybe Text)
-ebdSnapshotId = lens _ebdSnapshotId (\ s a -> s{_ebdSnapshotId = a});
-
-instance FromXML EBSBlockDevice where
-        parseXML x
-          = EBSBlockDevice' <$>
-              (x .@? "deleteOnTermination") <*>
-                (x .@? "volumeSize")
-                <*> (x .@? "iops")
-                <*> (x .@? "encrypted")
-                <*> (x .@? "volumeType")
-                <*> (x .@? "snapshotId")
-
-instance ToQuery EBSBlockDevice where
-        toQuery EBSBlockDevice'{..}
-          = mconcat
-              ["DeleteOnTermination" =: _ebdDeleteOnTermination,
-               "VolumeSize" =: _ebdVolumeSize, "Iops" =: _ebdIOPS,
-               "Encrypted" =: _ebdEncrypted,
-               "VolumeType" =: _ebdVolumeType,
-               "SnapshotId" =: _ebdSnapshotId]
-
--- | Describes a parameter used to set up an EBS volume in a block device
--- mapping.
---
--- /See:/ 'ebsInstanceBlockDevice' smart constructor.
-data EBSInstanceBlockDevice = EBSInstanceBlockDevice'
-    { _eibdDeleteOnTermination :: !(Maybe Bool)
-    , _eibdStatus              :: !(Maybe AttachmentStatus)
-    , _eibdVolumeId            :: !(Maybe Text)
-    , _eibdAttachTime          :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EBSInstanceBlockDevice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eibdDeleteOnTermination'
---
--- * 'eibdStatus'
---
--- * 'eibdVolumeId'
---
--- * 'eibdAttachTime'
-ebsInstanceBlockDevice
-    :: EBSInstanceBlockDevice
-ebsInstanceBlockDevice =
-    EBSInstanceBlockDevice'
-    { _eibdDeleteOnTermination = Nothing
-    , _eibdStatus = Nothing
-    , _eibdVolumeId = Nothing
-    , _eibdAttachTime = Nothing
-    }
-
--- | Indicates whether the volume is deleted on instance termination.
-eibdDeleteOnTermination :: Lens' EBSInstanceBlockDevice (Maybe Bool)
-eibdDeleteOnTermination = lens _eibdDeleteOnTermination (\ s a -> s{_eibdDeleteOnTermination = a});
-
--- | The attachment state.
-eibdStatus :: Lens' EBSInstanceBlockDevice (Maybe AttachmentStatus)
-eibdStatus = lens _eibdStatus (\ s a -> s{_eibdStatus = a});
-
--- | The ID of the EBS volume.
-eibdVolumeId :: Lens' EBSInstanceBlockDevice (Maybe Text)
-eibdVolumeId = lens _eibdVolumeId (\ s a -> s{_eibdVolumeId = a});
-
--- | The time stamp when the attachment initiated.
-eibdAttachTime :: Lens' EBSInstanceBlockDevice (Maybe UTCTime)
-eibdAttachTime = lens _eibdAttachTime (\ s a -> s{_eibdAttachTime = a}) . mapping _Time;
-
-instance FromXML EBSInstanceBlockDevice where
-        parseXML x
-          = EBSInstanceBlockDevice' <$>
-              (x .@? "deleteOnTermination") <*> (x .@? "status")
-                <*> (x .@? "volumeId")
-                <*> (x .@? "attachTime")
-
--- | /See:/ 'ebsInstanceBlockDeviceSpecification' smart constructor.
-data EBSInstanceBlockDeviceSpecification = EBSInstanceBlockDeviceSpecification'
-    { _eibdsDeleteOnTermination :: !(Maybe Bool)
-    , _eibdsVolumeId            :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EBSInstanceBlockDeviceSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eibdsDeleteOnTermination'
---
--- * 'eibdsVolumeId'
-ebsInstanceBlockDeviceSpecification
-    :: EBSInstanceBlockDeviceSpecification
-ebsInstanceBlockDeviceSpecification =
-    EBSInstanceBlockDeviceSpecification'
-    { _eibdsDeleteOnTermination = Nothing
-    , _eibdsVolumeId = Nothing
-    }
-
--- | Indicates whether the volume is deleted on instance termination.
-eibdsDeleteOnTermination :: Lens' EBSInstanceBlockDeviceSpecification (Maybe Bool)
-eibdsDeleteOnTermination = lens _eibdsDeleteOnTermination (\ s a -> s{_eibdsDeleteOnTermination = a});
-
--- | The ID of the EBS volume.
-eibdsVolumeId :: Lens' EBSInstanceBlockDeviceSpecification (Maybe Text)
-eibdsVolumeId = lens _eibdsVolumeId (\ s a -> s{_eibdsVolumeId = a});
-
-instance ToQuery EBSInstanceBlockDeviceSpecification
-         where
-        toQuery EBSInstanceBlockDeviceSpecification'{..}
-          = mconcat
-              ["DeleteOnTermination" =: _eibdsDeleteOnTermination,
-               "VolumeId" =: _eibdsVolumeId]
-
--- | Describes a Spot fleet event.
---
--- /See:/ 'eventInformation' smart constructor.
-data EventInformation = EventInformation'
-    { _eiInstanceId       :: !(Maybe Text)
-    , _eiEventDescription :: !(Maybe Text)
-    , _eiEventSubType     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EventInformation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eiInstanceId'
---
--- * 'eiEventDescription'
---
--- * 'eiEventSubType'
-eventInformation
-    :: EventInformation
-eventInformation =
-    EventInformation'
-    { _eiInstanceId = Nothing
-    , _eiEventDescription = Nothing
-    , _eiEventSubType = Nothing
-    }
-
--- | The ID of the instance. This information is available only for
--- 'instanceChange' events.
-eiInstanceId :: Lens' EventInformation (Maybe Text)
-eiInstanceId = lens _eiInstanceId (\ s a -> s{_eiInstanceId = a});
-
--- | The description of the event.
-eiEventDescription :: Lens' EventInformation (Maybe Text)
-eiEventDescription = lens _eiEventDescription (\ s a -> s{_eiEventDescription = a});
-
--- | The event.
---
--- The following are the 'error' events.
---
--- -   'iamFleetRoleInvalid' - Spot fleet did not have the required
---     permissions either to launch or terminate an instance.
---
--- -   'spotFleetRequestConfigurationInvalid' - The configuration is not
---     valid. For more information, see the description.
---
--- -   'spotInstanceCountLimitExceeded' - You\'ve reached the limit on the
---     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.
---
--- -   'cancelled' - The Spot fleet is canceled and has no running Spot
---     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.
---
--- -   'cancelled_terminating' - The Spot fleet is canceled and its Spot
---     Instances are terminating.
---
--- -   'expired' - The Spot fleet request has expired. A subsequent event
---     indicates that the instances were terminated, if the request was
---     created with 'terminateInstancesWithExpiration' set.
---
--- -   'price_update' - The bid price for a launch configuration was
---     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.
---
--- The following are the 'instanceChange' events.
---
--- -   'launched' - A bid was fulfilled and a new instance was launched.
---
--- -   'terminated' - An instance was terminated by the user.
---
-eiEventSubType :: Lens' EventInformation (Maybe Text)
-eiEventSubType = lens _eiEventSubType (\ s a -> s{_eiEventSubType = a});
-
-instance FromXML EventInformation where
-        parseXML x
-          = EventInformation' <$>
-              (x .@? "instanceId") <*> (x .@? "eventDescription")
-                <*> (x .@? "eventSubType")
-
--- | Describes an instance export task.
---
--- /See:/ 'exportTask' smart constructor.
-data ExportTask = ExportTask'
-    { _etDescription           :: !Text
-    , _etExportTaskId          :: !Text
-    , _etExportToS3Task        :: !ExportToS3Task
-    , _etInstanceExportDetails :: !InstanceExportDetails
-    , _etState                 :: !ExportTaskState
-    , _etStatusMessage         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExportTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etDescription'
---
--- * 'etExportTaskId'
---
--- * 'etExportToS3Task'
---
--- * 'etInstanceExportDetails'
---
--- * 'etState'
---
--- * 'etStatusMessage'
-exportTask
-    :: Text -- ^ 'etDescription'
-    -> Text -- ^ 'etExportTaskId'
-    -> ExportToS3Task -- ^ 'etExportToS3Task'
-    -> InstanceExportDetails -- ^ 'etInstanceExportDetails'
-    -> ExportTaskState -- ^ 'etState'
-    -> Text -- ^ 'etStatusMessage'
-    -> ExportTask
-exportTask pDescription_ pExportTaskId_ pExportToS3Task_ pInstanceExportDetails_ pState_ pStatusMessage_ =
-    ExportTask'
-    { _etDescription = pDescription_
-    , _etExportTaskId = pExportTaskId_
-    , _etExportToS3Task = pExportToS3Task_
-    , _etInstanceExportDetails = pInstanceExportDetails_
-    , _etState = pState_
-    , _etStatusMessage = pStatusMessage_
-    }
-
--- | A description of the resource being exported.
-etDescription :: Lens' ExportTask Text
-etDescription = lens _etDescription (\ s a -> s{_etDescription = a});
-
--- | The ID of the export task.
-etExportTaskId :: Lens' ExportTask Text
-etExportTaskId = lens _etExportTaskId (\ s a -> s{_etExportTaskId = a});
-
--- | Information about the export task.
-etExportToS3Task :: Lens' ExportTask ExportToS3Task
-etExportToS3Task = lens _etExportToS3Task (\ s a -> s{_etExportToS3Task = a});
-
--- | Information about the instance to export.
-etInstanceExportDetails :: Lens' ExportTask InstanceExportDetails
-etInstanceExportDetails = lens _etInstanceExportDetails (\ s a -> s{_etInstanceExportDetails = a});
-
--- | The state of the export task.
-etState :: Lens' ExportTask ExportTaskState
-etState = lens _etState (\ s a -> s{_etState = a});
-
--- | The status message related to the export task.
-etStatusMessage :: Lens' ExportTask Text
-etStatusMessage = lens _etStatusMessage (\ s a -> s{_etStatusMessage = a});
-
-instance FromXML ExportTask where
-        parseXML x
-          = ExportTask' <$>
-              (x .@ "description") <*> (x .@ "exportTaskId") <*>
-                (x .@ "exportToS3")
-                <*> (x .@ "instanceExport")
-                <*> (x .@ "state")
-                <*> (x .@ "statusMessage")
-
--- | Describes the format and location for an instance export task.
---
--- /See:/ 'exportToS3Task' smart constructor.
-data ExportToS3Task = ExportToS3Task'
-    { _etstS3Key           :: !(Maybe Text)
-    , _etstContainerFormat :: !(Maybe ContainerFormat)
-    , _etstS3Bucket        :: !(Maybe Text)
-    , _etstDiskImageFormat :: !(Maybe DiskImageFormat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExportToS3Task' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etstS3Key'
---
--- * 'etstContainerFormat'
---
--- * 'etstS3Bucket'
---
--- * 'etstDiskImageFormat'
-exportToS3Task
-    :: ExportToS3Task
-exportToS3Task =
-    ExportToS3Task'
-    { _etstS3Key = Nothing
-    , _etstContainerFormat = Nothing
-    , _etstS3Bucket = Nothing
-    , _etstDiskImageFormat = Nothing
-    }
-
--- | The encryption key for your S3 bucket.
-etstS3Key :: Lens' ExportToS3Task (Maybe Text)
-etstS3Key = lens _etstS3Key (\ s a -> s{_etstS3Key = a});
-
--- | The container format used to combine disk images with metadata (such as
--- OVF). If absent, only the disk image is exported.
-etstContainerFormat :: Lens' ExportToS3Task (Maybe ContainerFormat)
-etstContainerFormat = lens _etstContainerFormat (\ s a -> s{_etstContainerFormat = a});
-
--- | The S3 bucket for the destination image. The destination bucket must
--- exist and grant WRITE and READ_ACP permissions to the AWS account
--- 'vm-import-export\'amazon.com'.
-etstS3Bucket :: Lens' ExportToS3Task (Maybe Text)
-etstS3Bucket = lens _etstS3Bucket (\ s a -> s{_etstS3Bucket = a});
-
--- | The format for the exported image.
-etstDiskImageFormat :: Lens' ExportToS3Task (Maybe DiskImageFormat)
-etstDiskImageFormat = lens _etstDiskImageFormat (\ s a -> s{_etstDiskImageFormat = a});
-
-instance FromXML ExportToS3Task where
-        parseXML x
-          = ExportToS3Task' <$>
-              (x .@? "s3Key") <*> (x .@? "containerFormat") <*>
-                (x .@? "s3Bucket")
-                <*> (x .@? "diskImageFormat")
-
--- | Describes an instance export task.
---
--- /See:/ 'exportToS3TaskSpecification' smart constructor.
-data ExportToS3TaskSpecification = ExportToS3TaskSpecification'
-    { _etstsContainerFormat :: !(Maybe ContainerFormat)
-    , _etstsS3Prefix        :: !(Maybe Text)
-    , _etstsS3Bucket        :: !(Maybe Text)
-    , _etstsDiskImageFormat :: !(Maybe DiskImageFormat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExportToS3TaskSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etstsContainerFormat'
---
--- * 'etstsS3Prefix'
---
--- * 'etstsS3Bucket'
---
--- * 'etstsDiskImageFormat'
-exportToS3TaskSpecification
-    :: ExportToS3TaskSpecification
-exportToS3TaskSpecification =
-    ExportToS3TaskSpecification'
-    { _etstsContainerFormat = Nothing
-    , _etstsS3Prefix = Nothing
-    , _etstsS3Bucket = Nothing
-    , _etstsDiskImageFormat = Nothing
-    }
-
--- | The container format used to combine disk images with metadata (such as
--- OVF). If absent, only the disk image is exported.
-etstsContainerFormat :: Lens' ExportToS3TaskSpecification (Maybe ContainerFormat)
-etstsContainerFormat = lens _etstsContainerFormat (\ s a -> s{_etstsContainerFormat = a});
-
--- | The image is written to a single object in the S3 bucket at the S3 key
--- s3prefix + exportTaskId + \'.\' + diskImageFormat.
-etstsS3Prefix :: Lens' ExportToS3TaskSpecification (Maybe Text)
-etstsS3Prefix = lens _etstsS3Prefix (\ s a -> s{_etstsS3Prefix = a});
-
--- | The S3 bucket for the destination image. The destination bucket must
--- exist and grant WRITE and READ_ACP permissions to the AWS account
--- 'vm-import-export\'amazon.com'.
-etstsS3Bucket :: Lens' ExportToS3TaskSpecification (Maybe Text)
-etstsS3Bucket = lens _etstsS3Bucket (\ s a -> s{_etstsS3Bucket = a});
-
--- | The format for the exported image.
-etstsDiskImageFormat :: Lens' ExportToS3TaskSpecification (Maybe DiskImageFormat)
-etstsDiskImageFormat = lens _etstsDiskImageFormat (\ s a -> s{_etstsDiskImageFormat = a});
-
-instance ToQuery ExportToS3TaskSpecification where
-        toQuery ExportToS3TaskSpecification'{..}
-          = mconcat
-              ["ContainerFormat" =: _etstsContainerFormat,
-               "S3Prefix" =: _etstsS3Prefix,
-               "S3Bucket" =: _etstsS3Bucket,
-               "DiskImageFormat" =: _etstsDiskImageFormat]
-
--- | A filter name and value pair that is used to return a more specific list
--- of results. Filters can be used to match a set of resources by various
--- criteria, such as tags, attributes, or IDs.
---
--- /See:/ 'filter'' smart constructor.
-data Filter = Filter'
-    { _fValues :: !(Maybe [Text])
-    , _fName   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Filter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fValues'
---
--- * 'fName'
-filter'
-    :: Text -- ^ 'fName'
-    -> Filter
-filter' pName_ =
-    Filter'
-    { _fValues = Nothing
-    , _fName = pName_
-    }
-
--- | One or more filter values. Filter values are case-sensitive.
-fValues :: Lens' Filter [Text]
-fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Default . _Coerce;
-
--- | The name of the filter. Filter names are case-sensitive.
-fName :: Lens' Filter Text
-fName = lens _fName (\ s a -> s{_fName = a});
-
-instance ToQuery Filter where
-        toQuery Filter'{..}
-          = mconcat
-              [toQuery (toQueryList "Value" <$> _fValues),
-               "Name" =: _fName]
-
--- | Describes a flow log.
---
--- /See:/ 'flowLog' smart constructor.
-data FlowLog = FlowLog'
-    { _flCreationTime             :: !(Maybe ISO8601)
-    , _flResourceId               :: !(Maybe Text)
-    , _flFlowLogStatus            :: !(Maybe Text)
-    , _flTrafficType              :: !(Maybe TrafficType)
-    , _flDeliverLogsStatus        :: !(Maybe Text)
-    , _flDeliverLogsErrorMessage  :: !(Maybe Text)
-    , _flDeliverLogsPermissionARN :: !(Maybe Text)
-    , _flLogGroupName             :: !(Maybe Text)
-    , _flFlowLogId                :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FlowLog' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'flCreationTime'
---
--- * 'flResourceId'
---
--- * 'flFlowLogStatus'
---
--- * 'flTrafficType'
---
--- * 'flDeliverLogsStatus'
---
--- * 'flDeliverLogsErrorMessage'
---
--- * 'flDeliverLogsPermissionARN'
---
--- * 'flLogGroupName'
---
--- * 'flFlowLogId'
-flowLog
-    :: FlowLog
-flowLog =
-    FlowLog'
-    { _flCreationTime = Nothing
-    , _flResourceId = Nothing
-    , _flFlowLogStatus = Nothing
-    , _flTrafficType = Nothing
-    , _flDeliverLogsStatus = Nothing
-    , _flDeliverLogsErrorMessage = Nothing
-    , _flDeliverLogsPermissionARN = Nothing
-    , _flLogGroupName = Nothing
-    , _flFlowLogId = Nothing
-    }
-
--- | The date and time the flow log was created.
-flCreationTime :: Lens' FlowLog (Maybe UTCTime)
-flCreationTime = lens _flCreationTime (\ s a -> s{_flCreationTime = a}) . mapping _Time;
-
--- | The ID of the resource on which the flow log was created.
-flResourceId :: Lens' FlowLog (Maybe Text)
-flResourceId = lens _flResourceId (\ s a -> s{_flResourceId = a});
-
--- | The status of the flow log ('ACTIVE').
-flFlowLogStatus :: Lens' FlowLog (Maybe Text)
-flFlowLogStatus = lens _flFlowLogStatus (\ s a -> s{_flFlowLogStatus = a});
-
--- | The type of traffic captured for the flow log.
-flTrafficType :: Lens' FlowLog (Maybe TrafficType)
-flTrafficType = lens _flTrafficType (\ s a -> s{_flTrafficType = a});
-
--- | The status of the logs delivery ('SUCCESS' | 'FAILED').
-flDeliverLogsStatus :: Lens' FlowLog (Maybe Text)
-flDeliverLogsStatus = lens _flDeliverLogsStatus (\ s a -> s{_flDeliverLogsStatus = a});
-
--- | 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.
-flDeliverLogsErrorMessage :: Lens' FlowLog (Maybe Text)
-flDeliverLogsErrorMessage = lens _flDeliverLogsErrorMessage (\ s a -> s{_flDeliverLogsErrorMessage = a});
-
--- | The ARN of the IAM role that posts logs to CloudWatch Logs.
-flDeliverLogsPermissionARN :: Lens' FlowLog (Maybe Text)
-flDeliverLogsPermissionARN = lens _flDeliverLogsPermissionARN (\ s a -> s{_flDeliverLogsPermissionARN = a});
-
--- | The name of the flow log group.
-flLogGroupName :: Lens' FlowLog (Maybe Text)
-flLogGroupName = lens _flLogGroupName (\ s a -> s{_flLogGroupName = a});
-
--- | The flow log ID.
-flFlowLogId :: Lens' FlowLog (Maybe Text)
-flFlowLogId = lens _flFlowLogId (\ s a -> s{_flFlowLogId = a});
-
-instance FromXML FlowLog where
-        parseXML x
-          = FlowLog' <$>
-              (x .@? "creationTime") <*> (x .@? "resourceId") <*>
-                (x .@? "flowLogStatus")
-                <*> (x .@? "trafficType")
-                <*> (x .@? "deliverLogsStatus")
-                <*> (x .@? "deliverLogsErrorMessage")
-                <*> (x .@? "deliverLogsPermissionArn")
-                <*> (x .@? "logGroupName")
-                <*> (x .@? "flowLogId")
-
--- | Describes a security group.
---
--- /See:/ 'groupIdentifier' smart constructor.
-data GroupIdentifier = GroupIdentifier'
-    { _giGroupId   :: !(Maybe Text)
-    , _giGroupName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GroupIdentifier' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'giGroupId'
---
--- * 'giGroupName'
-groupIdentifier
-    :: GroupIdentifier
-groupIdentifier =
-    GroupIdentifier'
-    { _giGroupId = Nothing
-    , _giGroupName = Nothing
-    }
-
--- | The ID of the security group.
-giGroupId :: Lens' GroupIdentifier (Maybe Text)
-giGroupId = lens _giGroupId (\ s a -> s{_giGroupId = a});
-
--- | The name of the security group.
-giGroupName :: Lens' GroupIdentifier (Maybe Text)
-giGroupName = lens _giGroupName (\ s a -> s{_giGroupName = a});
-
-instance FromXML GroupIdentifier where
-        parseXML x
-          = GroupIdentifier' <$>
-              (x .@? "groupId") <*> (x .@? "groupName")
-
-instance ToQuery GroupIdentifier where
-        toQuery GroupIdentifier'{..}
-          = mconcat
-              ["GroupId" =: _giGroupId,
-               "GroupName" =: _giGroupName]
-
--- | Describes an event in the history of the Spot fleet request.
---
--- /See:/ 'historyRecord' smart constructor.
-data HistoryRecord = HistoryRecord'
-    { _hrTimestamp        :: !ISO8601
-    , _hrEventType        :: !EventType
-    , _hrEventInformation :: !EventInformation
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HistoryRecord' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hrTimestamp'
---
--- * 'hrEventType'
---
--- * 'hrEventInformation'
-historyRecord
-    :: UTCTime -- ^ 'hrTimestamp'
-    -> EventType -- ^ 'hrEventType'
-    -> EventInformation -- ^ 'hrEventInformation'
-    -> HistoryRecord
-historyRecord pTimestamp_ pEventType_ pEventInformation_ =
-    HistoryRecord'
-    { _hrTimestamp = _Time # pTimestamp_
-    , _hrEventType = pEventType_
-    , _hrEventInformation = pEventInformation_
-    }
-
--- | The date and time of the event, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
-hrTimestamp :: Lens' HistoryRecord UTCTime
-hrTimestamp = lens _hrTimestamp (\ s a -> s{_hrTimestamp = a}) . _Time;
-
--- | The event type.
---
--- -   'error' - Indicates an error with the Spot fleet request.
---
--- -   'fleetRequestChange' - Indicates a change in the status or
---     configuration of the Spot fleet request.
---
--- -   'instanceChange' - Indicates that an instance was launched or
---     terminated.
---
-hrEventType :: Lens' HistoryRecord EventType
-hrEventType = lens _hrEventType (\ s a -> s{_hrEventType = a});
-
--- | Information about the event.
-hrEventInformation :: Lens' HistoryRecord EventInformation
-hrEventInformation = lens _hrEventInformation (\ s a -> s{_hrEventInformation = a});
-
-instance FromXML HistoryRecord where
-        parseXML x
-          = HistoryRecord' <$>
-              (x .@ "timestamp") <*> (x .@ "eventType") <*>
-                (x .@ "eventInformation")
-
--- | Describes an IAM instance profile.
---
--- /See:/ 'iamInstanceProfile' smart constructor.
-data IAMInstanceProfile = IAMInstanceProfile'
-    { _iapARN :: !(Maybe Text)
-    , _iapId  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IAMInstanceProfile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapARN'
---
--- * 'iapId'
-iamInstanceProfile
-    :: IAMInstanceProfile
-iamInstanceProfile =
-    IAMInstanceProfile'
-    { _iapARN = Nothing
-    , _iapId = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the instance profile.
-iapARN :: Lens' IAMInstanceProfile (Maybe Text)
-iapARN = lens _iapARN (\ s a -> s{_iapARN = a});
-
--- | The ID of the instance profile.
-iapId :: Lens' IAMInstanceProfile (Maybe Text)
-iapId = lens _iapId (\ s a -> s{_iapId = a});
-
-instance FromXML IAMInstanceProfile where
-        parseXML x
-          = IAMInstanceProfile' <$>
-              (x .@? "arn") <*> (x .@? "id")
-
--- | Describes an IAM instance profile.
---
--- /See:/ 'iamInstanceProfileSpecification' smart constructor.
-data IAMInstanceProfileSpecification = IAMInstanceProfileSpecification'
-    { _iapsARN  :: !(Maybe Text)
-    , _iapsName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IAMInstanceProfileSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapsARN'
---
--- * 'iapsName'
-iamInstanceProfileSpecification
-    :: IAMInstanceProfileSpecification
-iamInstanceProfileSpecification =
-    IAMInstanceProfileSpecification'
-    { _iapsARN = Nothing
-    , _iapsName = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the instance profile.
-iapsARN :: Lens' IAMInstanceProfileSpecification (Maybe Text)
-iapsARN = lens _iapsARN (\ s a -> s{_iapsARN = a});
-
--- | The name of the instance profile.
-iapsName :: Lens' IAMInstanceProfileSpecification (Maybe Text)
-iapsName = lens _iapsName (\ s a -> s{_iapsName = a});
-
-instance FromXML IAMInstanceProfileSpecification
-         where
-        parseXML x
-          = IAMInstanceProfileSpecification' <$>
-              (x .@? "arn") <*> (x .@? "name")
-
-instance ToQuery IAMInstanceProfileSpecification
-         where
-        toQuery IAMInstanceProfileSpecification'{..}
-          = mconcat ["Arn" =: _iapsARN, "Name" =: _iapsName]
-
--- | Describes the ICMP type and code.
---
--- /See:/ 'icmpTypeCode' smart constructor.
-data ICMPTypeCode = ICMPTypeCode'
-    { _itcCode :: !(Maybe Int)
-    , _itcType :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ICMPTypeCode' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'itcCode'
---
--- * 'itcType'
-icmpTypeCode
-    :: ICMPTypeCode
-icmpTypeCode =
-    ICMPTypeCode'
-    { _itcCode = Nothing
-    , _itcType = Nothing
-    }
-
--- | The ICMP type. A value of -1 means all types.
-itcCode :: Lens' ICMPTypeCode (Maybe Int)
-itcCode = lens _itcCode (\ s a -> s{_itcCode = a});
-
--- | The ICMP code. A value of -1 means all codes for the specified ICMP
--- type.
-itcType :: Lens' ICMPTypeCode (Maybe Int)
-itcType = lens _itcType (\ s a -> s{_itcType = a});
-
-instance FromXML ICMPTypeCode where
-        parseXML x
-          = ICMPTypeCode' <$> (x .@? "code") <*> (x .@? "type")
-
-instance ToQuery ICMPTypeCode where
-        toQuery ICMPTypeCode'{..}
-          = mconcat ["Code" =: _itcCode, "Type" =: _itcType]
-
--- | Describes a security group rule.
---
--- /See:/ 'ipPermission' smart constructor.
-data IPPermission = IPPermission'
-    { _ipFromPort         :: !(Maybe Int)
-    , _ipUserIdGroupPairs :: !(Maybe [UserIdGroupPair])
-    , _ipPrefixListIds    :: !(Maybe [PrefixListId])
-    , _ipToPort           :: !(Maybe Int)
-    , _ipIPRanges         :: !(Maybe [IPRange])
-    , _ipIPProtocol       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IPPermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipFromPort'
---
--- * 'ipUserIdGroupPairs'
---
--- * 'ipPrefixListIds'
---
--- * 'ipToPort'
---
--- * 'ipIPRanges'
---
--- * 'ipIPProtocol'
-ipPermission
-    :: Text -- ^ 'ipIPProtocol'
-    -> IPPermission
-ipPermission pIPProtocol_ =
-    IPPermission'
-    { _ipFromPort = Nothing
-    , _ipUserIdGroupPairs = Nothing
-    , _ipPrefixListIds = Nothing
-    , _ipToPort = Nothing
-    , _ipIPRanges = Nothing
-    , _ipIPProtocol = pIPProtocol_
-    }
-
--- | The start of port range for the TCP and UDP protocols, or an ICMP type
--- number. A value of '-1' indicates all ICMP types.
-ipFromPort :: Lens' IPPermission (Maybe Int)
-ipFromPort = lens _ipFromPort (\ s a -> s{_ipFromPort = a});
-
--- | One or more security group and AWS account ID pairs.
-ipUserIdGroupPairs :: Lens' IPPermission [UserIdGroupPair]
-ipUserIdGroupPairs = lens _ipUserIdGroupPairs (\ s a -> s{_ipUserIdGroupPairs = a}) . _Default . _Coerce;
-
--- | (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and
--- DescribeSecurityGroups only) One or more prefix list IDs for an AWS
--- service. In an AuthorizeSecurityGroupEgress request, this is the AWS
--- service that you want to access through a VPC endpoint from instances
--- associated with the security group.
-ipPrefixListIds :: Lens' IPPermission [PrefixListId]
-ipPrefixListIds = lens _ipPrefixListIds (\ s a -> s{_ipPrefixListIds = a}) . _Default . _Coerce;
-
--- | The end of port range for the TCP and UDP protocols, or an ICMP code. A
--- value of '-1' indicates all ICMP codes for the specified ICMP type.
-ipToPort :: Lens' IPPermission (Maybe Int)
-ipToPort = lens _ipToPort (\ s a -> s{_ipToPort = a});
-
--- | One or more IP ranges.
-ipIPRanges :: Lens' IPPermission [IPRange]
-ipIPRanges = lens _ipIPRanges (\ s a -> s{_ipIPRanges = a}) . _Default . _Coerce;
-
--- | The protocol.
---
--- 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.
-ipIPProtocol :: Lens' IPPermission Text
-ipIPProtocol = lens _ipIPProtocol (\ s a -> s{_ipIPProtocol = a});
-
-instance FromXML IPPermission where
-        parseXML x
-          = IPPermission' <$>
-              (x .@? "fromPort") <*>
-                (x .@? "groups" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "prefixListIds" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "toPort")
-                <*>
-                (x .@? "ipRanges" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "ipProtocol")
-
-instance ToQuery IPPermission where
-        toQuery IPPermission'{..}
-          = mconcat
-              ["FromPort" =: _ipFromPort,
-               toQuery
-                 (toQueryList "Groups" <$> _ipUserIdGroupPairs),
-               toQuery
-                 (toQueryList "PrefixListIds" <$> _ipPrefixListIds),
-               "ToPort" =: _ipToPort,
-               toQuery (toQueryList "IpRanges" <$> _ipIPRanges),
-               "IpProtocol" =: _ipIPProtocol]
-
--- | Describes an IP range.
---
--- /See:/ 'ipRange' smart constructor.
-newtype IPRange = IPRange'
-    { _irCIdRIP :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IPRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'irCIdRIP'
-ipRange
-    :: Text -- ^ 'irCIdRIP'
-    -> IPRange
-ipRange pCIdRIP_ =
-    IPRange'
-    { _irCIdRIP = pCIdRIP_
-    }
-
--- | The CIDR range. You can either specify a CIDR range or a source security
--- group, not both.
-irCIdRIP :: Lens' IPRange Text
-irCIdRIP = lens _irCIdRIP (\ s a -> s{_irCIdRIP = a});
-
-instance FromXML IPRange where
-        parseXML x = IPRange' <$> (x .@ "cidrIp")
-
-instance ToQuery IPRange where
-        toQuery IPRange'{..}
-          = mconcat ["CidrIp" =: _irCIdRIP]
-
--- | Describes an image.
---
--- /See:/ 'image' smart constructor.
-data Image = Image'
-    { _iPlatform            :: !(Maybe PlatformValues)
-    , _iImageOwnerAlias     :: !(Maybe Text)
-    , _iRAMDiskId           :: !(Maybe Text)
-    , _iKernelId            :: !(Maybe Text)
-    , _iRootDeviceName      :: !(Maybe Text)
-    , _iSRIOVNetSupport     :: !(Maybe Text)
-    , _iName                :: !(Maybe Text)
-    , _iCreationDate        :: !(Maybe Text)
-    , _iProductCodes        :: !(Maybe [ProductCode])
-    , _iStateReason         :: !(Maybe StateReason)
-    , _iBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
-    , _iDescription         :: !(Maybe Text)
-    , _iTags                :: !(Maybe [Tag])
-    , _iImageId             :: !Text
-    , _iImageLocation       :: !Text
-    , _iState               :: !ImageState
-    , _iOwnerId             :: !Text
-    , _iPublic              :: !Bool
-    , _iArchitecture        :: !ArchitectureValues
-    , _iImageType           :: !ImageTypeValues
-    , _iRootDeviceType      :: !DeviceType
-    , _iVirtualizationType  :: !VirtualizationType
-    , _iHypervisor          :: !HypervisorType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Image' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iPlatform'
---
--- * 'iImageOwnerAlias'
---
--- * 'iRAMDiskId'
---
--- * 'iKernelId'
---
--- * 'iRootDeviceName'
---
--- * 'iSRIOVNetSupport'
---
--- * 'iName'
---
--- * 'iCreationDate'
---
--- * 'iProductCodes'
---
--- * 'iStateReason'
---
--- * 'iBlockDeviceMappings'
---
--- * 'iDescription'
---
--- * 'iTags'
---
--- * 'iImageId'
---
--- * 'iImageLocation'
---
--- * 'iState'
---
--- * 'iOwnerId'
---
--- * 'iPublic'
---
--- * 'iArchitecture'
---
--- * 'iImageType'
---
--- * 'iRootDeviceType'
---
--- * 'iVirtualizationType'
---
--- * 'iHypervisor'
-image
-    :: Text -- ^ 'iImageId'
-    -> Text -- ^ 'iImageLocation'
-    -> ImageState -- ^ 'iState'
-    -> Text -- ^ 'iOwnerId'
-    -> Bool -- ^ 'iPublic'
-    -> ArchitectureValues -- ^ 'iArchitecture'
-    -> ImageTypeValues -- ^ 'iImageType'
-    -> DeviceType -- ^ 'iRootDeviceType'
-    -> VirtualizationType -- ^ 'iVirtualizationType'
-    -> HypervisorType -- ^ 'iHypervisor'
-    -> Image
-image pImageId_ pImageLocation_ pState_ pOwnerId_ pPublic_ pArchitecture_ pImageType_ pRootDeviceType_ pVirtualizationType_ pHypervisor_ =
-    Image'
-    { _iPlatform = Nothing
-    , _iImageOwnerAlias = Nothing
-    , _iRAMDiskId = Nothing
-    , _iKernelId = Nothing
-    , _iRootDeviceName = Nothing
-    , _iSRIOVNetSupport = Nothing
-    , _iName = Nothing
-    , _iCreationDate = Nothing
-    , _iProductCodes = Nothing
-    , _iStateReason = Nothing
-    , _iBlockDeviceMappings = Nothing
-    , _iDescription = Nothing
-    , _iTags = Nothing
-    , _iImageId = pImageId_
-    , _iImageLocation = pImageLocation_
-    , _iState = pState_
-    , _iOwnerId = pOwnerId_
-    , _iPublic = pPublic_
-    , _iArchitecture = pArchitecture_
-    , _iImageType = pImageType_
-    , _iRootDeviceType = pRootDeviceType_
-    , _iVirtualizationType = pVirtualizationType_
-    , _iHypervisor = pHypervisor_
-    }
-
--- | The value is 'Windows' for Windows AMIs; otherwise blank.
-iPlatform :: Lens' Image (Maybe PlatformValues)
-iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
-
--- | The AWS account alias (for example, 'amazon', 'self') or the AWS account
--- ID of the AMI owner.
-iImageOwnerAlias :: Lens' Image (Maybe Text)
-iImageOwnerAlias = lens _iImageOwnerAlias (\ s a -> s{_iImageOwnerAlias = a});
-
--- | The RAM disk associated with the image, if any. Only applicable for
--- machine images.
-iRAMDiskId :: Lens' Image (Maybe Text)
-iRAMDiskId = lens _iRAMDiskId (\ s a -> s{_iRAMDiskId = a});
-
--- | The kernel associated with the image, if any. Only applicable for
--- machine images.
-iKernelId :: Lens' Image (Maybe Text)
-iKernelId = lens _iKernelId (\ s a -> s{_iKernelId = a});
-
--- | The device name of the root device (for example, '\/dev\/sda1' or
--- '\/dev\/xvda').
-iRootDeviceName :: Lens' Image (Maybe Text)
-iRootDeviceName = lens _iRootDeviceName (\ s a -> s{_iRootDeviceName = a});
-
--- | Specifies whether enhanced networking is enabled.
-iSRIOVNetSupport :: Lens' Image (Maybe Text)
-iSRIOVNetSupport = lens _iSRIOVNetSupport (\ s a -> s{_iSRIOVNetSupport = a});
-
--- | The name of the AMI that was provided during image creation.
-iName :: Lens' Image (Maybe Text)
-iName = lens _iName (\ s a -> s{_iName = a});
-
--- | The date and time the image was created.
-iCreationDate :: Lens' Image (Maybe Text)
-iCreationDate = lens _iCreationDate (\ s a -> s{_iCreationDate = a});
-
--- | Any product codes associated with the AMI.
-iProductCodes :: Lens' Image [ProductCode]
-iProductCodes = lens _iProductCodes (\ s a -> s{_iProductCodes = a}) . _Default . _Coerce;
-
--- | The reason for the state change.
-iStateReason :: Lens' Image (Maybe StateReason)
-iStateReason = lens _iStateReason (\ s a -> s{_iStateReason = a});
-
--- | Any block device mapping entries.
-iBlockDeviceMappings :: Lens' Image [BlockDeviceMapping]
-iBlockDeviceMappings = lens _iBlockDeviceMappings (\ s a -> s{_iBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | The description of the AMI that was provided during image creation.
-iDescription :: Lens' Image (Maybe Text)
-iDescription = lens _iDescription (\ s a -> s{_iDescription = a});
-
--- | Any tags assigned to the image.
-iTags :: Lens' Image [Tag]
-iTags = lens _iTags (\ s a -> s{_iTags = a}) . _Default . _Coerce;
-
--- | The ID of the AMI.
-iImageId :: Lens' Image Text
-iImageId = lens _iImageId (\ s a -> s{_iImageId = a});
-
--- | The location of the AMI.
-iImageLocation :: Lens' Image Text
-iImageLocation = lens _iImageLocation (\ s a -> s{_iImageLocation = a});
-
--- | The current state of the AMI. If the state is 'available', the image is
--- successfully registered and can be used to launch an instance.
-iState :: Lens' Image ImageState
-iState = lens _iState (\ s a -> s{_iState = a});
-
--- | The AWS account ID of the image owner.
-iOwnerId :: Lens' Image Text
-iOwnerId = lens _iOwnerId (\ s a -> s{_iOwnerId = a});
-
--- | Indicates whether the image has public launch permissions. The value is
--- 'true' if this image has public launch permissions or 'false' if it has
--- only implicit and explicit launch permissions.
-iPublic :: Lens' Image Bool
-iPublic = lens _iPublic (\ s a -> s{_iPublic = a});
-
--- | The architecture of the image.
-iArchitecture :: Lens' Image ArchitectureValues
-iArchitecture = lens _iArchitecture (\ s a -> s{_iArchitecture = a});
-
--- | The type of image.
-iImageType :: Lens' Image ImageTypeValues
-iImageType = lens _iImageType (\ s a -> s{_iImageType = a});
-
--- | The type of root device used by the AMI. The AMI can use an EBS volume
--- or an instance store volume.
-iRootDeviceType :: Lens' Image DeviceType
-iRootDeviceType = lens _iRootDeviceType (\ s a -> s{_iRootDeviceType = a});
-
--- | The type of virtualization of the AMI.
-iVirtualizationType :: Lens' Image VirtualizationType
-iVirtualizationType = lens _iVirtualizationType (\ s a -> s{_iVirtualizationType = a});
-
--- | The hypervisor type of the image.
-iHypervisor :: Lens' Image HypervisorType
-iHypervisor = lens _iHypervisor (\ s a -> s{_iHypervisor = a});
-
-instance FromXML Image where
-        parseXML x
-          = Image' <$>
-              (x .@? "platform") <*> (x .@? "imageOwnerAlias") <*>
-                (x .@? "ramdiskId")
-                <*> (x .@? "kernelId")
-                <*> (x .@? "rootDeviceName")
-                <*> (x .@? "sriovNetSupport")
-                <*> (x .@? "name")
-                <*> (x .@? "creationDate")
-                <*>
-                (x .@? "productCodes" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "stateReason")
-                <*>
-                (x .@? "blockDeviceMapping" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "description")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "imageId")
-                <*> (x .@ "imageLocation")
-                <*> (x .@ "imageState")
-                <*> (x .@ "imageOwnerId")
-                <*> (x .@ "isPublic")
-                <*> (x .@ "architecture")
-                <*> (x .@ "imageType")
-                <*> (x .@ "rootDeviceType")
-                <*> (x .@ "virtualizationType")
-                <*> (x .@ "hypervisor")
-
--- | Describes the disk container object for an import image task.
---
--- /See:/ 'imageDiskContainer' smart constructor.
-data ImageDiskContainer = ImageDiskContainer'
-    { _idcURL         :: !(Maybe Text)
-    , _idcFormat      :: !(Maybe Text)
-    , _idcDeviceName  :: !(Maybe Text)
-    , _idcUserBucket  :: !(Maybe UserBucket)
-    , _idcDescription :: !(Maybe Text)
-    , _idcSnapshotId  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImageDiskContainer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idcURL'
---
--- * 'idcFormat'
---
--- * 'idcDeviceName'
---
--- * 'idcUserBucket'
---
--- * 'idcDescription'
---
--- * 'idcSnapshotId'
-imageDiskContainer
-    :: ImageDiskContainer
-imageDiskContainer =
-    ImageDiskContainer'
-    { _idcURL = Nothing
-    , _idcFormat = Nothing
-    , _idcDeviceName = Nothing
-    , _idcUserBucket = Nothing
-    , _idcDescription = Nothing
-    , _idcSnapshotId = Nothing
-    }
-
--- | The URL to the Amazon S3-based disk image being imported. The URL can
--- either be a https URL (https:\/\/..) or an Amazon S3 URL (s3:\/\/..)
-idcURL :: Lens' ImageDiskContainer (Maybe Text)
-idcURL = lens _idcURL (\ s a -> s{_idcURL = a});
-
--- | The format of the disk image being imported.
---
--- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'
-idcFormat :: Lens' ImageDiskContainer (Maybe Text)
-idcFormat = lens _idcFormat (\ s a -> s{_idcFormat = a});
-
--- | The block device mapping for the disk.
-idcDeviceName :: Lens' ImageDiskContainer (Maybe Text)
-idcDeviceName = lens _idcDeviceName (\ s a -> s{_idcDeviceName = a});
-
--- | The S3 bucket for the disk image.
-idcUserBucket :: Lens' ImageDiskContainer (Maybe UserBucket)
-idcUserBucket = lens _idcUserBucket (\ s a -> s{_idcUserBucket = a});
-
--- | The description of the disk image.
-idcDescription :: Lens' ImageDiskContainer (Maybe Text)
-idcDescription = lens _idcDescription (\ s a -> s{_idcDescription = a});
-
--- | The ID of the EBS snapshot to be used for importing the snapshot.
-idcSnapshotId :: Lens' ImageDiskContainer (Maybe Text)
-idcSnapshotId = lens _idcSnapshotId (\ s a -> s{_idcSnapshotId = a});
-
-instance ToQuery ImageDiskContainer where
-        toQuery ImageDiskContainer'{..}
-          = mconcat
-              ["Url" =: _idcURL, "Format" =: _idcFormat,
-               "DeviceName" =: _idcDeviceName,
-               "UserBucket" =: _idcUserBucket,
-               "Description" =: _idcDescription,
-               "SnapshotId" =: _idcSnapshotId]
-
--- | Describes an import image task.
---
--- /See:/ 'importImageTask' smart constructor.
-data ImportImageTask = ImportImageTask'
-    { _iitStatus          :: !(Maybe Text)
-    , _iitHypervisor      :: !(Maybe Text)
-    , _iitPlatform        :: !(Maybe Text)
-    , _iitProgress        :: !(Maybe Text)
-    , _iitLicenseType     :: !(Maybe Text)
-    , _iitSnapshotDetails :: !(Maybe [SnapshotDetail])
-    , _iitStatusMessage   :: !(Maybe Text)
-    , _iitImageId         :: !(Maybe Text)
-    , _iitImportTaskId    :: !(Maybe Text)
-    , _iitArchitecture    :: !(Maybe Text)
-    , _iitDescription     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportImageTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iitStatus'
---
--- * 'iitHypervisor'
---
--- * 'iitPlatform'
---
--- * 'iitProgress'
---
--- * 'iitLicenseType'
---
--- * 'iitSnapshotDetails'
---
--- * 'iitStatusMessage'
---
--- * 'iitImageId'
---
--- * 'iitImportTaskId'
---
--- * 'iitArchitecture'
---
--- * 'iitDescription'
-importImageTask
-    :: ImportImageTask
-importImageTask =
-    ImportImageTask'
-    { _iitStatus = Nothing
-    , _iitHypervisor = Nothing
-    , _iitPlatform = Nothing
-    , _iitProgress = Nothing
-    , _iitLicenseType = Nothing
-    , _iitSnapshotDetails = Nothing
-    , _iitStatusMessage = Nothing
-    , _iitImageId = Nothing
-    , _iitImportTaskId = Nothing
-    , _iitArchitecture = Nothing
-    , _iitDescription = Nothing
-    }
-
--- | A brief status for the import image task.
-iitStatus :: Lens' ImportImageTask (Maybe Text)
-iitStatus = lens _iitStatus (\ s a -> s{_iitStatus = a});
-
--- | The target hypervisor for the import task.
---
--- Valid values: 'xen'
-iitHypervisor :: Lens' ImportImageTask (Maybe Text)
-iitHypervisor = lens _iitHypervisor (\ s a -> s{_iitHypervisor = a});
-
--- | The description string for the import image task.
-iitPlatform :: Lens' ImportImageTask (Maybe Text)
-iitPlatform = lens _iitPlatform (\ s a -> s{_iitPlatform = a});
-
--- | The percentage of progress of the import image task.
-iitProgress :: Lens' ImportImageTask (Maybe Text)
-iitProgress = lens _iitProgress (\ s a -> s{_iitProgress = a});
-
--- | The license type of the virtual machine.
-iitLicenseType :: Lens' ImportImageTask (Maybe Text)
-iitLicenseType = lens _iitLicenseType (\ s a -> s{_iitLicenseType = a});
-
--- | Information about the snapshots.
-iitSnapshotDetails :: Lens' ImportImageTask [SnapshotDetail]
-iitSnapshotDetails = lens _iitSnapshotDetails (\ s a -> s{_iitSnapshotDetails = a}) . _Default . _Coerce;
-
--- | A descriptive status message for the import image task.
-iitStatusMessage :: Lens' ImportImageTask (Maybe Text)
-iitStatusMessage = lens _iitStatusMessage (\ s a -> s{_iitStatusMessage = a});
-
--- | The ID of the Amazon Machine Image (AMI) of the imported virtual
--- machine.
-iitImageId :: Lens' ImportImageTask (Maybe Text)
-iitImageId = lens _iitImageId (\ s a -> s{_iitImageId = a});
-
--- | The ID of the import image task.
-iitImportTaskId :: Lens' ImportImageTask (Maybe Text)
-iitImportTaskId = lens _iitImportTaskId (\ s a -> s{_iitImportTaskId = a});
-
--- | The architecture of the virtual machine.
---
--- Valid values: 'i386' | 'x86_64'
-iitArchitecture :: Lens' ImportImageTask (Maybe Text)
-iitArchitecture = lens _iitArchitecture (\ s a -> s{_iitArchitecture = a});
-
--- | A description of the import task.
-iitDescription :: Lens' ImportImageTask (Maybe Text)
-iitDescription = lens _iitDescription (\ s a -> s{_iitDescription = a});
-
-instance FromXML ImportImageTask where
-        parseXML x
-          = ImportImageTask' <$>
-              (x .@? "status") <*> (x .@? "hypervisor") <*>
-                (x .@? "platform")
-                <*> (x .@? "progress")
-                <*> (x .@? "licenseType")
-                <*>
-                (x .@? "snapshotDetailSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "statusMessage")
-                <*> (x .@? "imageId")
-                <*> (x .@? "importTaskId")
-                <*> (x .@? "architecture")
-                <*> (x .@? "description")
-
--- | Describes the launch specification for VM import.
---
--- /See:/ 'importInstanceLaunchSpecification' smart constructor.
-data ImportInstanceLaunchSpecification = ImportInstanceLaunchSpecification'
-    { _iilsAdditionalInfo                    :: !(Maybe Text)
-    , _iilsGroupNames                        :: !(Maybe [Text])
-    , _iilsSubnetId                          :: !(Maybe Text)
-    , _iilsGroupIds                          :: !(Maybe [Text])
-    , _iilsInstanceType                      :: !(Maybe InstanceType)
-    , _iilsUserData                          :: !(Maybe UserData)
-    , _iilsMonitoring                        :: !(Maybe Bool)
-    , _iilsInstanceInitiatedShutdownBehavior :: !(Maybe ShutdownBehavior)
-    , _iilsPrivateIPAddress                  :: !(Maybe Text)
-    , _iilsArchitecture                      :: !(Maybe ArchitectureValues)
-    , _iilsPlacement                         :: !(Maybe Placement)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportInstanceLaunchSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iilsAdditionalInfo'
---
--- * 'iilsGroupNames'
---
--- * 'iilsSubnetId'
---
--- * 'iilsGroupIds'
---
--- * 'iilsInstanceType'
---
--- * 'iilsUserData'
---
--- * 'iilsMonitoring'
---
--- * 'iilsInstanceInitiatedShutdownBehavior'
---
--- * 'iilsPrivateIPAddress'
---
--- * 'iilsArchitecture'
---
--- * 'iilsPlacement'
-importInstanceLaunchSpecification
-    :: ImportInstanceLaunchSpecification
-importInstanceLaunchSpecification =
-    ImportInstanceLaunchSpecification'
-    { _iilsAdditionalInfo = Nothing
-    , _iilsGroupNames = Nothing
-    , _iilsSubnetId = Nothing
-    , _iilsGroupIds = Nothing
-    , _iilsInstanceType = Nothing
-    , _iilsUserData = Nothing
-    , _iilsMonitoring = Nothing
-    , _iilsInstanceInitiatedShutdownBehavior = Nothing
-    , _iilsPrivateIPAddress = Nothing
-    , _iilsArchitecture = Nothing
-    , _iilsPlacement = Nothing
-    }
-
--- | Reserved.
-iilsAdditionalInfo :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
-iilsAdditionalInfo = lens _iilsAdditionalInfo (\ s a -> s{_iilsAdditionalInfo = a});
-
--- | One or more security group names.
-iilsGroupNames :: Lens' ImportInstanceLaunchSpecification [Text]
-iilsGroupNames = lens _iilsGroupNames (\ s a -> s{_iilsGroupNames = a}) . _Default . _Coerce;
-
--- | [EC2-VPC] The ID of the subnet in which to launch the instance.
-iilsSubnetId :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
-iilsSubnetId = lens _iilsSubnetId (\ s a -> s{_iilsSubnetId = a});
-
--- | One or more security group IDs.
-iilsGroupIds :: Lens' ImportInstanceLaunchSpecification [Text]
-iilsGroupIds = lens _iilsGroupIds (\ s a -> s{_iilsGroupIds = a}) . _Default . _Coerce;
-
--- | The instance type. For more information about the instance types that
--- you can import, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html Before You Get Started>
--- in the Amazon Elastic Compute Cloud User Guide.
-iilsInstanceType :: Lens' ImportInstanceLaunchSpecification (Maybe InstanceType)
-iilsInstanceType = lens _iilsInstanceType (\ s a -> s{_iilsInstanceType = a});
-
--- | The Base64-encoded MIME user data to be made available to the instance.
-iilsUserData :: Lens' ImportInstanceLaunchSpecification (Maybe UserData)
-iilsUserData = lens _iilsUserData (\ s a -> s{_iilsUserData = a});
-
--- | Indicates whether monitoring is enabled.
-iilsMonitoring :: Lens' ImportInstanceLaunchSpecification (Maybe Bool)
-iilsMonitoring = lens _iilsMonitoring (\ s a -> s{_iilsMonitoring = a});
-
--- | Indicates whether an instance stops or terminates when you initiate
--- shutdown from the instance (using the operating system command for
--- system shutdown).
-iilsInstanceInitiatedShutdownBehavior :: Lens' ImportInstanceLaunchSpecification (Maybe ShutdownBehavior)
-iilsInstanceInitiatedShutdownBehavior = lens _iilsInstanceInitiatedShutdownBehavior (\ s a -> s{_iilsInstanceInitiatedShutdownBehavior = a});
-
--- | [EC2-VPC] An available IP address from the IP address range of the
--- subnet.
-iilsPrivateIPAddress :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
-iilsPrivateIPAddress = lens _iilsPrivateIPAddress (\ s a -> s{_iilsPrivateIPAddress = a});
-
--- | The architecture of the instance.
-iilsArchitecture :: Lens' ImportInstanceLaunchSpecification (Maybe ArchitectureValues)
-iilsArchitecture = lens _iilsArchitecture (\ s a -> s{_iilsArchitecture = a});
-
--- | The placement information for the instance.
-iilsPlacement :: Lens' ImportInstanceLaunchSpecification (Maybe Placement)
-iilsPlacement = lens _iilsPlacement (\ s a -> s{_iilsPlacement = a});
-
-instance ToQuery ImportInstanceLaunchSpecification
-         where
-        toQuery ImportInstanceLaunchSpecification'{..}
-          = mconcat
-              ["AdditionalInfo" =: _iilsAdditionalInfo,
-               toQuery
-                 (toQueryList "GroupName" <$> _iilsGroupNames),
-               "SubnetId" =: _iilsSubnetId,
-               toQuery (toQueryList "GroupId" <$> _iilsGroupIds),
-               "InstanceType" =: _iilsInstanceType,
-               "UserData" =: _iilsUserData,
-               "Monitoring" =: _iilsMonitoring,
-               "InstanceInitiatedShutdownBehavior" =:
-                 _iilsInstanceInitiatedShutdownBehavior,
-               "PrivateIpAddress" =: _iilsPrivateIPAddress,
-               "Architecture" =: _iilsArchitecture,
-               "Placement" =: _iilsPlacement]
-
--- | Describes an import instance task.
---
--- /See:/ 'importInstanceTaskDetails' smart constructor.
-data ImportInstanceTaskDetails = ImportInstanceTaskDetails'
-    { _iitdInstanceId  :: !(Maybe Text)
-    , _iitdPlatform    :: !(Maybe PlatformValues)
-    , _iitdDescription :: !(Maybe Text)
-    , _iitdVolumes     :: ![ImportInstanceVolumeDetailItem]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportInstanceTaskDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iitdInstanceId'
---
--- * 'iitdPlatform'
---
--- * 'iitdDescription'
---
--- * 'iitdVolumes'
-importInstanceTaskDetails
-    :: ImportInstanceTaskDetails
-importInstanceTaskDetails =
-    ImportInstanceTaskDetails'
-    { _iitdInstanceId = Nothing
-    , _iitdPlatform = Nothing
-    , _iitdDescription = Nothing
-    , _iitdVolumes = mempty
-    }
-
--- | The ID of the instance.
-iitdInstanceId :: Lens' ImportInstanceTaskDetails (Maybe Text)
-iitdInstanceId = lens _iitdInstanceId (\ s a -> s{_iitdInstanceId = a});
-
--- | The instance operating system.
-iitdPlatform :: Lens' ImportInstanceTaskDetails (Maybe PlatformValues)
-iitdPlatform = lens _iitdPlatform (\ s a -> s{_iitdPlatform = a});
-
--- | A description of the task.
-iitdDescription :: Lens' ImportInstanceTaskDetails (Maybe Text)
-iitdDescription = lens _iitdDescription (\ s a -> s{_iitdDescription = a});
-
--- | One or more volumes.
-iitdVolumes :: Lens' ImportInstanceTaskDetails [ImportInstanceVolumeDetailItem]
-iitdVolumes = lens _iitdVolumes (\ s a -> s{_iitdVolumes = a}) . _Coerce;
-
-instance FromXML ImportInstanceTaskDetails where
-        parseXML x
-          = ImportInstanceTaskDetails' <$>
-              (x .@? "instanceId") <*> (x .@? "platform") <*>
-                (x .@? "description")
-                <*>
-                (x .@? "volumes" .!@ mempty >>= parseXMLList "item")
-
--- | Describes an import volume task.
---
--- /See:/ 'importInstanceVolumeDetailItem' smart constructor.
-data ImportInstanceVolumeDetailItem = ImportInstanceVolumeDetailItem'
-    { _iivdiStatusMessage    :: !(Maybe Text)
-    , _iivdiDescription      :: !(Maybe Text)
-    , _iivdiBytesConverted   :: !Integer
-    , _iivdiAvailabilityZone :: !Text
-    , _iivdiImage            :: !DiskImageDescription
-    , _iivdiVolume           :: !DiskImageVolumeDescription
-    , _iivdiStatus           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportInstanceVolumeDetailItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iivdiStatusMessage'
---
--- * 'iivdiDescription'
---
--- * 'iivdiBytesConverted'
---
--- * 'iivdiAvailabilityZone'
---
--- * 'iivdiImage'
---
--- * 'iivdiVolume'
---
--- * 'iivdiStatus'
-importInstanceVolumeDetailItem
-    :: Integer -- ^ 'iivdiBytesConverted'
-    -> Text -- ^ 'iivdiAvailabilityZone'
-    -> DiskImageDescription -- ^ 'iivdiImage'
-    -> DiskImageVolumeDescription -- ^ 'iivdiVolume'
-    -> Text -- ^ 'iivdiStatus'
-    -> ImportInstanceVolumeDetailItem
-importInstanceVolumeDetailItem pBytesConverted_ pAvailabilityZone_ pImage_ pVolume_ pStatus_ =
-    ImportInstanceVolumeDetailItem'
-    { _iivdiStatusMessage = Nothing
-    , _iivdiDescription = Nothing
-    , _iivdiBytesConverted = pBytesConverted_
-    , _iivdiAvailabilityZone = pAvailabilityZone_
-    , _iivdiImage = pImage_
-    , _iivdiVolume = pVolume_
-    , _iivdiStatus = pStatus_
-    }
-
--- | The status information or errors related to the disk image.
-iivdiStatusMessage :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)
-iivdiStatusMessage = lens _iivdiStatusMessage (\ s a -> s{_iivdiStatusMessage = a});
-
--- | A description of the task.
-iivdiDescription :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)
-iivdiDescription = lens _iivdiDescription (\ s a -> s{_iivdiDescription = a});
-
--- | The number of bytes converted so far.
-iivdiBytesConverted :: Lens' ImportInstanceVolumeDetailItem Integer
-iivdiBytesConverted = lens _iivdiBytesConverted (\ s a -> s{_iivdiBytesConverted = a});
-
--- | The Availability Zone where the resulting instance will reside.
-iivdiAvailabilityZone :: Lens' ImportInstanceVolumeDetailItem Text
-iivdiAvailabilityZone = lens _iivdiAvailabilityZone (\ s a -> s{_iivdiAvailabilityZone = a});
-
--- | The image.
-iivdiImage :: Lens' ImportInstanceVolumeDetailItem DiskImageDescription
-iivdiImage = lens _iivdiImage (\ s a -> s{_iivdiImage = a});
-
--- | The volume.
-iivdiVolume :: Lens' ImportInstanceVolumeDetailItem DiskImageVolumeDescription
-iivdiVolume = lens _iivdiVolume (\ s a -> s{_iivdiVolume = a});
-
--- | The status of the import of this particular disk image.
-iivdiStatus :: Lens' ImportInstanceVolumeDetailItem Text
-iivdiStatus = lens _iivdiStatus (\ s a -> s{_iivdiStatus = a});
-
-instance FromXML ImportInstanceVolumeDetailItem where
-        parseXML x
-          = ImportInstanceVolumeDetailItem' <$>
-              (x .@? "statusMessage") <*> (x .@? "description") <*>
-                (x .@ "bytesConverted")
-                <*> (x .@ "availabilityZone")
-                <*> (x .@ "image")
-                <*> (x .@ "volume")
-                <*> (x .@ "status")
-
--- | Describes an import snapshot task.
---
--- /See:/ 'importSnapshotTask' smart constructor.
-data ImportSnapshotTask = ImportSnapshotTask'
-    { _istSnapshotTaskDetail :: !(Maybe SnapshotTaskDetail)
-    , _istImportTaskId       :: !(Maybe Text)
-    , _istDescription        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportSnapshotTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'istSnapshotTaskDetail'
---
--- * 'istImportTaskId'
---
--- * 'istDescription'
-importSnapshotTask
-    :: ImportSnapshotTask
-importSnapshotTask =
-    ImportSnapshotTask'
-    { _istSnapshotTaskDetail = Nothing
-    , _istImportTaskId = Nothing
-    , _istDescription = Nothing
-    }
-
--- | Describes an import snapshot task.
-istSnapshotTaskDetail :: Lens' ImportSnapshotTask (Maybe SnapshotTaskDetail)
-istSnapshotTaskDetail = lens _istSnapshotTaskDetail (\ s a -> s{_istSnapshotTaskDetail = a});
-
--- | The ID of the import snapshot task.
-istImportTaskId :: Lens' ImportSnapshotTask (Maybe Text)
-istImportTaskId = lens _istImportTaskId (\ s a -> s{_istImportTaskId = a});
-
--- | A description of the import snapshot task.
-istDescription :: Lens' ImportSnapshotTask (Maybe Text)
-istDescription = lens _istDescription (\ s a -> s{_istDescription = a});
-
-instance FromXML ImportSnapshotTask where
-        parseXML x
-          = ImportSnapshotTask' <$>
-              (x .@? "snapshotTaskDetail") <*>
-                (x .@? "importTaskId")
-                <*> (x .@? "description")
-
--- | Describes an import volume task.
---
--- /See:/ 'importVolumeTaskDetails' smart constructor.
-data ImportVolumeTaskDetails = ImportVolumeTaskDetails'
-    { _ivtdDescription      :: !(Maybe Text)
-    , _ivtdBytesConverted   :: !Integer
-    , _ivtdAvailabilityZone :: !Text
-    , _ivtdImage            :: !DiskImageDescription
-    , _ivtdVolume           :: !DiskImageVolumeDescription
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImportVolumeTaskDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ivtdDescription'
---
--- * 'ivtdBytesConverted'
---
--- * 'ivtdAvailabilityZone'
---
--- * 'ivtdImage'
---
--- * 'ivtdVolume'
-importVolumeTaskDetails
-    :: Integer -- ^ 'ivtdBytesConverted'
-    -> Text -- ^ 'ivtdAvailabilityZone'
-    -> DiskImageDescription -- ^ 'ivtdImage'
-    -> DiskImageVolumeDescription -- ^ 'ivtdVolume'
-    -> ImportVolumeTaskDetails
-importVolumeTaskDetails pBytesConverted_ pAvailabilityZone_ pImage_ pVolume_ =
-    ImportVolumeTaskDetails'
-    { _ivtdDescription = Nothing
-    , _ivtdBytesConverted = pBytesConverted_
-    , _ivtdAvailabilityZone = pAvailabilityZone_
-    , _ivtdImage = pImage_
-    , _ivtdVolume = pVolume_
-    }
-
--- | The description you provided when starting the import volume task.
-ivtdDescription :: Lens' ImportVolumeTaskDetails (Maybe Text)
-ivtdDescription = lens _ivtdDescription (\ s a -> s{_ivtdDescription = a});
-
--- | The number of bytes converted so far.
-ivtdBytesConverted :: Lens' ImportVolumeTaskDetails Integer
-ivtdBytesConverted = lens _ivtdBytesConverted (\ s a -> s{_ivtdBytesConverted = a});
-
--- | The Availability Zone where the resulting volume will reside.
-ivtdAvailabilityZone :: Lens' ImportVolumeTaskDetails Text
-ivtdAvailabilityZone = lens _ivtdAvailabilityZone (\ s a -> s{_ivtdAvailabilityZone = a});
-
--- | The image.
-ivtdImage :: Lens' ImportVolumeTaskDetails DiskImageDescription
-ivtdImage = lens _ivtdImage (\ s a -> s{_ivtdImage = a});
-
--- | The volume.
-ivtdVolume :: Lens' ImportVolumeTaskDetails DiskImageVolumeDescription
-ivtdVolume = lens _ivtdVolume (\ s a -> s{_ivtdVolume = a});
-
-instance FromXML ImportVolumeTaskDetails where
-        parseXML x
-          = ImportVolumeTaskDetails' <$>
-              (x .@? "description") <*> (x .@ "bytesConverted") <*>
-                (x .@ "availabilityZone")
-                <*> (x .@ "image")
-                <*> (x .@ "volume")
-
--- | Describes an instance.
---
--- /See:/ 'instance'' smart constructor.
-data Instance = Instance'
-    { _insPublicDNSName         :: !(Maybe Text)
-    , _insPlatform              :: !(Maybe PlatformValues)
-    , _insSecurityGroups        :: !(Maybe [GroupIdentifier])
-    , _insClientToken           :: !(Maybe Text)
-    , _insSourceDestCheck       :: !(Maybe Bool)
-    , _insVPCId                 :: !(Maybe Text)
-    , _insNetworkInterfaces     :: !(Maybe [InstanceNetworkInterface])
-    , _insKeyName               :: !(Maybe Text)
-    , _insRAMDiskId             :: !(Maybe Text)
-    , _insKernelId              :: !(Maybe Text)
-    , _insSubnetId              :: !(Maybe Text)
-    , _insRootDeviceName        :: !(Maybe Text)
-    , _insEBSOptimized          :: !(Maybe Bool)
-    , _insSRIOVNetSupport       :: !(Maybe Text)
-    , _insStateTransitionReason :: !(Maybe Text)
-    , _insIAMInstanceProfile    :: !(Maybe IAMInstanceProfile)
-    , _insInstanceLifecycle     :: !(Maybe InstanceLifecycleType)
-    , _insPrivateIPAddress      :: !(Maybe Text)
-    , _insProductCodes          :: !(Maybe [ProductCode])
-    , _insSpotInstanceRequestId :: !(Maybe Text)
-    , _insPrivateDNSName        :: !(Maybe Text)
-    , _insStateReason           :: !(Maybe StateReason)
-    , _insBlockDeviceMappings   :: !(Maybe [InstanceBlockDeviceMapping])
-    , _insPublicIPAddress       :: !(Maybe Text)
-    , _insTags                  :: !(Maybe [Tag])
-    , _insInstanceId            :: !Text
-    , _insImageId               :: !Text
-    , _insAMILaunchIndex        :: !Int
-    , _insInstanceType          :: !InstanceType
-    , _insLaunchTime            :: !ISO8601
-    , _insPlacement             :: !Placement
-    , _insMonitoring            :: !Monitoring
-    , _insArchitecture          :: !ArchitectureValues
-    , _insRootDeviceType        :: !DeviceType
-    , _insVirtualizationType    :: !VirtualizationType
-    , _insHypervisor            :: !HypervisorType
-    , _insState                 :: !InstanceState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Instance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'insPublicDNSName'
---
--- * 'insPlatform'
---
--- * 'insSecurityGroups'
---
--- * 'insClientToken'
---
--- * 'insSourceDestCheck'
---
--- * 'insVPCId'
---
--- * 'insNetworkInterfaces'
---
--- * 'insKeyName'
---
--- * 'insRAMDiskId'
---
--- * 'insKernelId'
---
--- * 'insSubnetId'
---
--- * 'insRootDeviceName'
---
--- * 'insEBSOptimized'
---
--- * 'insSRIOVNetSupport'
---
--- * 'insStateTransitionReason'
---
--- * 'insIAMInstanceProfile'
---
--- * 'insInstanceLifecycle'
---
--- * 'insPrivateIPAddress'
---
--- * 'insProductCodes'
---
--- * 'insSpotInstanceRequestId'
---
--- * 'insPrivateDNSName'
---
--- * 'insStateReason'
---
--- * 'insBlockDeviceMappings'
---
--- * 'insPublicIPAddress'
---
--- * 'insTags'
---
--- * 'insInstanceId'
---
--- * 'insImageId'
---
--- * 'insAMILaunchIndex'
---
--- * 'insInstanceType'
---
--- * 'insLaunchTime'
---
--- * 'insPlacement'
---
--- * 'insMonitoring'
---
--- * 'insArchitecture'
---
--- * 'insRootDeviceType'
---
--- * 'insVirtualizationType'
---
--- * 'insHypervisor'
---
--- * 'insState'
-instance'
-    :: Text -- ^ 'insInstanceId'
-    -> Text -- ^ 'insImageId'
-    -> Int -- ^ 'insAMILaunchIndex'
-    -> InstanceType -- ^ 'insInstanceType'
-    -> UTCTime -- ^ 'insLaunchTime'
-    -> Placement -- ^ 'insPlacement'
-    -> Monitoring -- ^ 'insMonitoring'
-    -> ArchitectureValues -- ^ 'insArchitecture'
-    -> DeviceType -- ^ 'insRootDeviceType'
-    -> VirtualizationType -- ^ 'insVirtualizationType'
-    -> HypervisorType -- ^ 'insHypervisor'
-    -> InstanceState -- ^ 'insState'
-    -> Instance
-instance' pInstanceId_ pImageId_ pAMILaunchIndex_ pInstanceType_ pLaunchTime_ pPlacement_ pMonitoring_ pArchitecture_ pRootDeviceType_ pVirtualizationType_ pHypervisor_ pState_ =
-    Instance'
-    { _insPublicDNSName = Nothing
-    , _insPlatform = Nothing
-    , _insSecurityGroups = Nothing
-    , _insClientToken = Nothing
-    , _insSourceDestCheck = Nothing
-    , _insVPCId = Nothing
-    , _insNetworkInterfaces = Nothing
-    , _insKeyName = Nothing
-    , _insRAMDiskId = Nothing
-    , _insKernelId = Nothing
-    , _insSubnetId = Nothing
-    , _insRootDeviceName = Nothing
-    , _insEBSOptimized = Nothing
-    , _insSRIOVNetSupport = Nothing
-    , _insStateTransitionReason = Nothing
-    , _insIAMInstanceProfile = Nothing
-    , _insInstanceLifecycle = Nothing
-    , _insPrivateIPAddress = Nothing
-    , _insProductCodes = Nothing
-    , _insSpotInstanceRequestId = Nothing
-    , _insPrivateDNSName = Nothing
-    , _insStateReason = Nothing
-    , _insBlockDeviceMappings = Nothing
-    , _insPublicIPAddress = Nothing
-    , _insTags = Nothing
-    , _insInstanceId = pInstanceId_
-    , _insImageId = pImageId_
-    , _insAMILaunchIndex = pAMILaunchIndex_
-    , _insInstanceType = pInstanceType_
-    , _insLaunchTime = _Time # pLaunchTime_
-    , _insPlacement = pPlacement_
-    , _insMonitoring = pMonitoring_
-    , _insArchitecture = pArchitecture_
-    , _insRootDeviceType = pRootDeviceType_
-    , _insVirtualizationType = pVirtualizationType_
-    , _insHypervisor = pHypervisor_
-    , _insState = pState_
-    }
-
--- | The public DNS name assigned to the instance. This name is not available
--- until the instance enters the 'running' state.
-insPublicDNSName :: Lens' Instance (Maybe Text)
-insPublicDNSName = lens _insPublicDNSName (\ s a -> s{_insPublicDNSName = a});
-
--- | The value is 'Windows' for Windows instances; otherwise blank.
-insPlatform :: Lens' Instance (Maybe PlatformValues)
-insPlatform = lens _insPlatform (\ s a -> s{_insPlatform = a});
-
--- | One or more security groups for the instance.
-insSecurityGroups :: Lens' Instance [GroupIdentifier]
-insSecurityGroups = lens _insSecurityGroups (\ s a -> s{_insSecurityGroups = a}) . _Default . _Coerce;
-
--- | The idempotency token you provided when you launched the instance.
-insClientToken :: Lens' Instance (Maybe Text)
-insClientToken = lens _insClientToken (\ s a -> s{_insClientToken = a});
-
--- | Specifies whether to enable an instance launched in a VPC to perform
--- NAT. This controls whether source\/destination checking is enabled on
--- the instance. A value of 'true' means checking is enabled, and 'false'
--- means checking is disabled. The value must be 'false' for the instance
--- to perform NAT. For more information, see
--- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html NAT Instances>
--- in the /Amazon Virtual Private Cloud User Guide/.
-insSourceDestCheck :: Lens' Instance (Maybe Bool)
-insSourceDestCheck = lens _insSourceDestCheck (\ s a -> s{_insSourceDestCheck = a});
-
--- | The ID of the VPC in which the instance is running.
-insVPCId :: Lens' Instance (Maybe Text)
-insVPCId = lens _insVPCId (\ s a -> s{_insVPCId = a});
-
--- | [EC2-VPC] One or more network interfaces for the instance.
-insNetworkInterfaces :: Lens' Instance [InstanceNetworkInterface]
-insNetworkInterfaces = lens _insNetworkInterfaces (\ s a -> s{_insNetworkInterfaces = a}) . _Default . _Coerce;
-
--- | The name of the key pair, if this instance was launched with an
--- associated key pair.
-insKeyName :: Lens' Instance (Maybe Text)
-insKeyName = lens _insKeyName (\ s a -> s{_insKeyName = a});
-
--- | The RAM disk associated with this instance.
-insRAMDiskId :: Lens' Instance (Maybe Text)
-insRAMDiskId = lens _insRAMDiskId (\ s a -> s{_insRAMDiskId = a});
-
--- | The kernel associated with this instance.
-insKernelId :: Lens' Instance (Maybe Text)
-insKernelId = lens _insKernelId (\ s a -> s{_insKernelId = a});
-
--- | The ID of the subnet in which the instance is running.
-insSubnetId :: Lens' Instance (Maybe Text)
-insSubnetId = lens _insSubnetId (\ s a -> s{_insSubnetId = a});
-
--- | The root device name (for example, '\/dev\/sda1' or '\/dev\/xvda').
-insRootDeviceName :: Lens' Instance (Maybe Text)
-insRootDeviceName = lens _insRootDeviceName (\ s a -> s{_insRootDeviceName = a});
-
--- | Indicates whether the instance is optimized for EBS I\/O. This
--- optimization provides dedicated throughput to Amazon EBS and an
--- optimized configuration stack to provide optimal I\/O performance. This
--- optimization isn\'t available with all instance types. Additional usage
--- charges apply when using an EBS Optimized instance.
-insEBSOptimized :: Lens' Instance (Maybe Bool)
-insEBSOptimized = lens _insEBSOptimized (\ s a -> s{_insEBSOptimized = a});
-
--- | Specifies whether enhanced networking is enabled.
-insSRIOVNetSupport :: Lens' Instance (Maybe Text)
-insSRIOVNetSupport = lens _insSRIOVNetSupport (\ s a -> s{_insSRIOVNetSupport = a});
-
--- | The reason for the most recent state transition. This might be an empty
--- string.
-insStateTransitionReason :: Lens' Instance (Maybe Text)
-insStateTransitionReason = lens _insStateTransitionReason (\ s a -> s{_insStateTransitionReason = a});
-
--- | The IAM instance profile associated with the instance.
-insIAMInstanceProfile :: Lens' Instance (Maybe IAMInstanceProfile)
-insIAMInstanceProfile = lens _insIAMInstanceProfile (\ s a -> s{_insIAMInstanceProfile = a});
-
--- | Indicates whether this is a Spot Instance.
-insInstanceLifecycle :: Lens' Instance (Maybe InstanceLifecycleType)
-insInstanceLifecycle = lens _insInstanceLifecycle (\ s a -> s{_insInstanceLifecycle = a});
-
--- | The private IP address assigned to the instance.
-insPrivateIPAddress :: Lens' Instance (Maybe Text)
-insPrivateIPAddress = lens _insPrivateIPAddress (\ s a -> s{_insPrivateIPAddress = a});
-
--- | The product codes attached to this instance.
-insProductCodes :: Lens' Instance [ProductCode]
-insProductCodes = lens _insProductCodes (\ s a -> s{_insProductCodes = a}) . _Default . _Coerce;
-
--- | The ID of the Spot Instance request.
-insSpotInstanceRequestId :: Lens' Instance (Maybe Text)
-insSpotInstanceRequestId = lens _insSpotInstanceRequestId (\ s a -> s{_insSpotInstanceRequestId = a});
-
--- | The private DNS name assigned to the instance. This DNS name can only be
--- used inside the Amazon EC2 network. This name is not available until the
--- instance enters the 'running' state.
-insPrivateDNSName :: Lens' Instance (Maybe Text)
-insPrivateDNSName = lens _insPrivateDNSName (\ s a -> s{_insPrivateDNSName = a});
-
--- | The reason for the most recent state transition.
-insStateReason :: Lens' Instance (Maybe StateReason)
-insStateReason = lens _insStateReason (\ s a -> s{_insStateReason = a});
-
--- | Any block device mapping entries for the instance.
-insBlockDeviceMappings :: Lens' Instance [InstanceBlockDeviceMapping]
-insBlockDeviceMappings = lens _insBlockDeviceMappings (\ s a -> s{_insBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | The public IP address assigned to the instance.
-insPublicIPAddress :: Lens' Instance (Maybe Text)
-insPublicIPAddress = lens _insPublicIPAddress (\ s a -> s{_insPublicIPAddress = a});
-
--- | Any tags assigned to the instance.
-insTags :: Lens' Instance [Tag]
-insTags = lens _insTags (\ s a -> s{_insTags = a}) . _Default . _Coerce;
-
--- | The ID of the instance.
-insInstanceId :: Lens' Instance Text
-insInstanceId = lens _insInstanceId (\ s a -> s{_insInstanceId = a});
-
--- | The ID of the AMI used to launch the instance.
-insImageId :: Lens' Instance Text
-insImageId = lens _insImageId (\ s a -> s{_insImageId = a});
-
--- | The AMI launch index, which can be used to find this instance in the
--- launch group.
-insAMILaunchIndex :: Lens' Instance Int
-insAMILaunchIndex = lens _insAMILaunchIndex (\ s a -> s{_insAMILaunchIndex = a});
-
--- | The instance type.
-insInstanceType :: Lens' Instance InstanceType
-insInstanceType = lens _insInstanceType (\ s a -> s{_insInstanceType = a});
-
--- | The time the instance was launched.
-insLaunchTime :: Lens' Instance UTCTime
-insLaunchTime = lens _insLaunchTime (\ s a -> s{_insLaunchTime = a}) . _Time;
-
--- | The location where the instance launched.
-insPlacement :: Lens' Instance Placement
-insPlacement = lens _insPlacement (\ s a -> s{_insPlacement = a});
-
--- | The monitoring information for the instance.
-insMonitoring :: Lens' Instance Monitoring
-insMonitoring = lens _insMonitoring (\ s a -> s{_insMonitoring = a});
-
--- | The architecture of the image.
-insArchitecture :: Lens' Instance ArchitectureValues
-insArchitecture = lens _insArchitecture (\ s a -> s{_insArchitecture = a});
-
--- | The root device type used by the AMI. The AMI can use an EBS volume or
--- an instance store volume.
-insRootDeviceType :: Lens' Instance DeviceType
-insRootDeviceType = lens _insRootDeviceType (\ s a -> s{_insRootDeviceType = a});
-
--- | The virtualization type of the instance.
-insVirtualizationType :: Lens' Instance VirtualizationType
-insVirtualizationType = lens _insVirtualizationType (\ s a -> s{_insVirtualizationType = a});
-
--- | The hypervisor type of the instance.
-insHypervisor :: Lens' Instance HypervisorType
-insHypervisor = lens _insHypervisor (\ s a -> s{_insHypervisor = a});
-
--- | The current state of the instance.
-insState :: Lens' Instance InstanceState
-insState = lens _insState (\ s a -> s{_insState = a});
-
-instance FromXML Instance where
-        parseXML x
-          = Instance' <$>
-              (x .@? "dnsName") <*> (x .@? "platform") <*>
-                (x .@? "groupSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "clientToken")
-                <*> (x .@? "sourceDestCheck")
-                <*> (x .@? "vpcId")
-                <*>
-                (x .@? "networkInterfaceSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "keyName")
-                <*> (x .@? "ramdiskId")
-                <*> (x .@? "kernelId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "rootDeviceName")
-                <*> (x .@? "ebsOptimized")
-                <*> (x .@? "sriovNetSupport")
-                <*> (x .@? "reason")
-                <*> (x .@? "iamInstanceProfile")
-                <*> (x .@? "instanceLifecycle")
-                <*> (x .@? "privateIpAddress")
-                <*>
-                (x .@? "productCodes" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "spotInstanceRequestId")
-                <*> (x .@? "privateDnsName")
-                <*> (x .@? "stateReason")
-                <*>
-                (x .@? "blockDeviceMapping" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "ipAddress")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "instanceId")
-                <*> (x .@ "imageId")
-                <*> (x .@ "amiLaunchIndex")
-                <*> (x .@ "instanceType")
-                <*> (x .@ "launchTime")
-                <*> (x .@ "placement")
-                <*> (x .@ "monitoring")
-                <*> (x .@ "architecture")
-                <*> (x .@ "rootDeviceType")
-                <*> (x .@ "virtualizationType")
-                <*> (x .@ "hypervisor")
-                <*> (x .@ "instanceState")
-
--- | Describes a block device mapping.
---
--- /See:/ 'instanceBlockDeviceMapping' smart constructor.
-data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping'
-    { _ibdmEBS        :: !(Maybe EBSInstanceBlockDevice)
-    , _ibdmDeviceName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceBlockDeviceMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ibdmEBS'
---
--- * 'ibdmDeviceName'
-instanceBlockDeviceMapping
-    :: InstanceBlockDeviceMapping
-instanceBlockDeviceMapping =
-    InstanceBlockDeviceMapping'
-    { _ibdmEBS = Nothing
-    , _ibdmDeviceName = Nothing
-    }
-
--- | Parameters used to automatically set up EBS volumes when the instance is
--- launched.
-ibdmEBS :: Lens' InstanceBlockDeviceMapping (Maybe EBSInstanceBlockDevice)
-ibdmEBS = lens _ibdmEBS (\ s a -> s{_ibdmEBS = a});
-
--- | The device name exposed to the instance (for example, '\/dev\/sdh' or
--- 'xvdh').
-ibdmDeviceName :: Lens' InstanceBlockDeviceMapping (Maybe Text)
-ibdmDeviceName = lens _ibdmDeviceName (\ s a -> s{_ibdmDeviceName = a});
-
-instance FromXML InstanceBlockDeviceMapping where
-        parseXML x
-          = InstanceBlockDeviceMapping' <$>
-              (x .@? "ebs") <*> (x .@? "deviceName")
-
--- | Describes a block device mapping entry.
---
--- /See:/ 'instanceBlockDeviceMappingSpecification' smart constructor.
-data InstanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification'
-    { _ibdmsVirtualName :: !(Maybe Text)
-    , _ibdmsNoDevice    :: !(Maybe Text)
-    , _ibdmsEBS         :: !(Maybe EBSInstanceBlockDeviceSpecification)
-    , _ibdmsDeviceName  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceBlockDeviceMappingSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ibdmsVirtualName'
---
--- * 'ibdmsNoDevice'
---
--- * 'ibdmsEBS'
---
--- * 'ibdmsDeviceName'
-instanceBlockDeviceMappingSpecification
-    :: InstanceBlockDeviceMappingSpecification
-instanceBlockDeviceMappingSpecification =
-    InstanceBlockDeviceMappingSpecification'
-    { _ibdmsVirtualName = Nothing
-    , _ibdmsNoDevice = Nothing
-    , _ibdmsEBS = Nothing
-    , _ibdmsDeviceName = Nothing
-    }
-
--- | The virtual device name.
-ibdmsVirtualName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
-ibdmsVirtualName = lens _ibdmsVirtualName (\ s a -> s{_ibdmsVirtualName = a});
-
--- | suppress the specified device included in the block device mapping.
-ibdmsNoDevice :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
-ibdmsNoDevice = lens _ibdmsNoDevice (\ s a -> s{_ibdmsNoDevice = a});
-
--- | Parameters used to automatically set up EBS volumes when the instance is
--- launched.
-ibdmsEBS :: Lens' InstanceBlockDeviceMappingSpecification (Maybe EBSInstanceBlockDeviceSpecification)
-ibdmsEBS = lens _ibdmsEBS (\ s a -> s{_ibdmsEBS = a});
-
--- | The device name exposed to the instance (for example, '\/dev\/sdh' or
--- 'xvdh').
-ibdmsDeviceName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
-ibdmsDeviceName = lens _ibdmsDeviceName (\ s a -> s{_ibdmsDeviceName = a});
-
-instance ToQuery
-         InstanceBlockDeviceMappingSpecification where
-        toQuery InstanceBlockDeviceMappingSpecification'{..}
-          = mconcat
-              ["VirtualName" =: _ibdmsVirtualName,
-               "NoDevice" =: _ibdmsNoDevice, "Ebs" =: _ibdmsEBS,
-               "DeviceName" =: _ibdmsDeviceName]
-
--- | Describes a Reserved Instance listing state.
---
--- /See:/ 'instanceCount' smart constructor.
-data InstanceCount = InstanceCount'
-    { _icState         :: !(Maybe ListingState)
-    , _icInstanceCount :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceCount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'icState'
---
--- * 'icInstanceCount'
-instanceCount
-    :: InstanceCount
-instanceCount =
-    InstanceCount'
-    { _icState = Nothing
-    , _icInstanceCount = Nothing
-    }
-
--- | 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
--- 'state'.
-icInstanceCount :: Lens' InstanceCount (Maybe Int)
-icInstanceCount = lens _icInstanceCount (\ s a -> s{_icInstanceCount = a});
-
-instance FromXML InstanceCount where
-        parseXML x
-          = InstanceCount' <$>
-              (x .@? "state") <*> (x .@? "instanceCount")
-
--- | Describes an instance to export.
---
--- /See:/ 'instanceExportDetails' smart constructor.
-data InstanceExportDetails = InstanceExportDetails'
-    { _iedInstanceId        :: !(Maybe Text)
-    , _iedTargetEnvironment :: !(Maybe ExportEnvironment)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceExportDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iedInstanceId'
---
--- * 'iedTargetEnvironment'
-instanceExportDetails
-    :: InstanceExportDetails
-instanceExportDetails =
-    InstanceExportDetails'
-    { _iedInstanceId = Nothing
-    , _iedTargetEnvironment = Nothing
-    }
-
--- | The ID of the resource being exported.
-iedInstanceId :: Lens' InstanceExportDetails (Maybe Text)
-iedInstanceId = lens _iedInstanceId (\ s a -> s{_iedInstanceId = a});
-
--- | The target virtualization environment.
-iedTargetEnvironment :: Lens' InstanceExportDetails (Maybe ExportEnvironment)
-iedTargetEnvironment = lens _iedTargetEnvironment (\ s a -> s{_iedTargetEnvironment = a});
-
-instance FromXML InstanceExportDetails where
-        parseXML x
-          = InstanceExportDetails' <$>
-              (x .@? "instanceId") <*> (x .@? "targetEnvironment")
-
--- | Describes the monitoring information of the instance.
---
--- /See:/ 'instanceMonitoring' smart constructor.
-data InstanceMonitoring = InstanceMonitoring'
-    { _imInstanceId :: !(Maybe Text)
-    , _imMonitoring :: !(Maybe Monitoring)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceMonitoring' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imInstanceId'
---
--- * 'imMonitoring'
-instanceMonitoring
-    :: InstanceMonitoring
-instanceMonitoring =
-    InstanceMonitoring'
-    { _imInstanceId = Nothing
-    , _imMonitoring = Nothing
-    }
-
--- | The ID of the instance.
-imInstanceId :: Lens' InstanceMonitoring (Maybe Text)
-imInstanceId = lens _imInstanceId (\ s a -> s{_imInstanceId = a});
-
--- | The monitoring information.
-imMonitoring :: Lens' InstanceMonitoring (Maybe Monitoring)
-imMonitoring = lens _imMonitoring (\ s a -> s{_imMonitoring = a});
-
-instance FromXML InstanceMonitoring where
-        parseXML x
-          = InstanceMonitoring' <$>
-              (x .@? "instanceId") <*> (x .@? "monitoring")
-
--- | Describes a network interface.
---
--- /See:/ 'instanceNetworkInterface' smart constructor.
-data InstanceNetworkInterface = InstanceNetworkInterface'
-    { _iniPrivateIPAddresses :: !(Maybe [InstancePrivateIPAddress])
-    , _iniStatus             :: !(Maybe NetworkInterfaceStatus)
-    , _iniGroups             :: !(Maybe [GroupIdentifier])
-    , _iniSourceDestCheck    :: !(Maybe Bool)
-    , _iniVPCId              :: !(Maybe Text)
-    , _iniNetworkInterfaceId :: !(Maybe Text)
-    , _iniSubnetId           :: !(Maybe Text)
-    , _iniAttachment         :: !(Maybe InstanceNetworkInterfaceAttachment)
-    , _iniMACAddress         :: !(Maybe Text)
-    , _iniOwnerId            :: !(Maybe Text)
-    , _iniPrivateIPAddress   :: !(Maybe Text)
-    , _iniPrivateDNSName     :: !(Maybe Text)
-    , _iniDescription        :: !(Maybe Text)
-    , _iniAssociation        :: !(Maybe InstanceNetworkInterfaceAssociation)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceNetworkInterface' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iniPrivateIPAddresses'
---
--- * 'iniStatus'
---
--- * 'iniGroups'
---
--- * 'iniSourceDestCheck'
---
--- * 'iniVPCId'
---
--- * 'iniNetworkInterfaceId'
---
--- * 'iniSubnetId'
---
--- * 'iniAttachment'
---
--- * 'iniMACAddress'
---
--- * 'iniOwnerId'
---
--- * 'iniPrivateIPAddress'
---
--- * 'iniPrivateDNSName'
---
--- * 'iniDescription'
---
--- * 'iniAssociation'
-instanceNetworkInterface
-    :: InstanceNetworkInterface
-instanceNetworkInterface =
-    InstanceNetworkInterface'
-    { _iniPrivateIPAddresses = Nothing
-    , _iniStatus = Nothing
-    , _iniGroups = Nothing
-    , _iniSourceDestCheck = Nothing
-    , _iniVPCId = Nothing
-    , _iniNetworkInterfaceId = Nothing
-    , _iniSubnetId = Nothing
-    , _iniAttachment = Nothing
-    , _iniMACAddress = Nothing
-    , _iniOwnerId = Nothing
-    , _iniPrivateIPAddress = Nothing
-    , _iniPrivateDNSName = Nothing
-    , _iniDescription = Nothing
-    , _iniAssociation = Nothing
-    }
-
--- | The private IP addresses associated with the network interface.
-iniPrivateIPAddresses :: Lens' InstanceNetworkInterface [InstancePrivateIPAddress]
-iniPrivateIPAddresses = lens _iniPrivateIPAddresses (\ s a -> s{_iniPrivateIPAddresses = a}) . _Default . _Coerce;
-
--- | The status of the network interface.
-iniStatus :: Lens' InstanceNetworkInterface (Maybe NetworkInterfaceStatus)
-iniStatus = lens _iniStatus (\ s a -> s{_iniStatus = a});
-
--- | One or more security groups.
-iniGroups :: Lens' InstanceNetworkInterface [GroupIdentifier]
-iniGroups = lens _iniGroups (\ s a -> s{_iniGroups = a}) . _Default . _Coerce;
-
--- | Indicates whether to validate network traffic to or from this network
--- interface.
-iniSourceDestCheck :: Lens' InstanceNetworkInterface (Maybe Bool)
-iniSourceDestCheck = lens _iniSourceDestCheck (\ s a -> s{_iniSourceDestCheck = a});
-
--- | The ID of the VPC.
-iniVPCId :: Lens' InstanceNetworkInterface (Maybe Text)
-iniVPCId = lens _iniVPCId (\ s a -> s{_iniVPCId = a});
-
--- | The ID of the network interface.
-iniNetworkInterfaceId :: Lens' InstanceNetworkInterface (Maybe Text)
-iniNetworkInterfaceId = lens _iniNetworkInterfaceId (\ s a -> s{_iniNetworkInterfaceId = a});
-
--- | The ID of the subnet.
-iniSubnetId :: Lens' InstanceNetworkInterface (Maybe Text)
-iniSubnetId = lens _iniSubnetId (\ s a -> s{_iniSubnetId = a});
-
--- | The network interface attachment.
-iniAttachment :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAttachment)
-iniAttachment = lens _iniAttachment (\ s a -> s{_iniAttachment = a});
-
--- | The MAC address.
-iniMACAddress :: Lens' InstanceNetworkInterface (Maybe Text)
-iniMACAddress = lens _iniMACAddress (\ s a -> s{_iniMACAddress = a});
-
--- | The ID of the AWS account that created the network interface.
-iniOwnerId :: Lens' InstanceNetworkInterface (Maybe Text)
-iniOwnerId = lens _iniOwnerId (\ s a -> s{_iniOwnerId = a});
-
--- | The IP address of the network interface within the subnet.
-iniPrivateIPAddress :: Lens' InstanceNetworkInterface (Maybe Text)
-iniPrivateIPAddress = lens _iniPrivateIPAddress (\ s a -> s{_iniPrivateIPAddress = a});
-
--- | The private DNS name.
-iniPrivateDNSName :: Lens' InstanceNetworkInterface (Maybe Text)
-iniPrivateDNSName = lens _iniPrivateDNSName (\ s a -> s{_iniPrivateDNSName = a});
-
--- | The description.
-iniDescription :: Lens' InstanceNetworkInterface (Maybe Text)
-iniDescription = lens _iniDescription (\ s a -> s{_iniDescription = a});
-
--- | The association information for an Elastic IP associated with the
--- network interface.
-iniAssociation :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAssociation)
-iniAssociation = lens _iniAssociation (\ s a -> s{_iniAssociation = a});
-
-instance FromXML InstanceNetworkInterface where
-        parseXML x
-          = InstanceNetworkInterface' <$>
-              (x .@? "privateIpAddressesSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "status")
-                <*>
-                (x .@? "groupSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "sourceDestCheck")
-                <*> (x .@? "vpcId")
-                <*> (x .@? "networkInterfaceId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "attachment")
-                <*> (x .@? "macAddress")
-                <*> (x .@? "ownerId")
-                <*> (x .@? "privateIpAddress")
-                <*> (x .@? "privateDnsName")
-                <*> (x .@? "description")
-                <*> (x .@? "association")
-
--- | Describes association information for an Elastic IP address.
---
--- /See:/ 'instanceNetworkInterfaceAssociation' smart constructor.
-data InstanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation'
-    { _iniaPublicDNSName :: !(Maybe Text)
-    , _iniaIPOwnerId     :: !(Maybe Text)
-    , _iniaPublicIP      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceNetworkInterfaceAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iniaPublicDNSName'
---
--- * 'iniaIPOwnerId'
---
--- * 'iniaPublicIP'
-instanceNetworkInterfaceAssociation
-    :: InstanceNetworkInterfaceAssociation
-instanceNetworkInterfaceAssociation =
-    InstanceNetworkInterfaceAssociation'
-    { _iniaPublicDNSName = Nothing
-    , _iniaIPOwnerId = Nothing
-    , _iniaPublicIP = Nothing
-    }
-
--- | The public DNS name.
-iniaPublicDNSName :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
-iniaPublicDNSName = lens _iniaPublicDNSName (\ s a -> s{_iniaPublicDNSName = a});
-
--- | The ID of the owner of the Elastic IP address.
-iniaIPOwnerId :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
-iniaIPOwnerId = lens _iniaIPOwnerId (\ s a -> s{_iniaIPOwnerId = a});
-
--- | The public IP address or Elastic IP address bound to the network
--- interface.
-iniaPublicIP :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
-iniaPublicIP = lens _iniaPublicIP (\ s a -> s{_iniaPublicIP = a});
-
-instance FromXML InstanceNetworkInterfaceAssociation
-         where
-        parseXML x
-          = InstanceNetworkInterfaceAssociation' <$>
-              (x .@? "publicDnsName") <*> (x .@? "ipOwnerId") <*>
-                (x .@? "publicIp")
-
--- | Describes a network interface attachment.
---
--- /See:/ 'instanceNetworkInterfaceAttachment' smart constructor.
-data InstanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment'
-    { _iniaDeleteOnTermination :: !(Maybe Bool)
-    , _iniaStatus              :: !(Maybe AttachmentStatus)
-    , _iniaAttachmentId        :: !(Maybe Text)
-    , _iniaAttachTime          :: !(Maybe ISO8601)
-    , _iniaDeviceIndex         :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceNetworkInterfaceAttachment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iniaDeleteOnTermination'
---
--- * 'iniaStatus'
---
--- * 'iniaAttachmentId'
---
--- * 'iniaAttachTime'
---
--- * 'iniaDeviceIndex'
-instanceNetworkInterfaceAttachment
-    :: InstanceNetworkInterfaceAttachment
-instanceNetworkInterfaceAttachment =
-    InstanceNetworkInterfaceAttachment'
-    { _iniaDeleteOnTermination = Nothing
-    , _iniaStatus = Nothing
-    , _iniaAttachmentId = Nothing
-    , _iniaAttachTime = Nothing
-    , _iniaDeviceIndex = Nothing
-    }
-
--- | Indicates whether the network interface is deleted when the instance is
--- terminated.
-iniaDeleteOnTermination :: Lens' InstanceNetworkInterfaceAttachment (Maybe Bool)
-iniaDeleteOnTermination = lens _iniaDeleteOnTermination (\ s a -> s{_iniaDeleteOnTermination = a});
-
--- | The attachment state.
-iniaStatus :: Lens' InstanceNetworkInterfaceAttachment (Maybe AttachmentStatus)
-iniaStatus = lens _iniaStatus (\ s a -> s{_iniaStatus = a});
-
--- | The ID of the network interface attachment.
-iniaAttachmentId :: Lens' InstanceNetworkInterfaceAttachment (Maybe Text)
-iniaAttachmentId = lens _iniaAttachmentId (\ s a -> s{_iniaAttachmentId = a});
-
--- | The time stamp when the attachment initiated.
-iniaAttachTime :: Lens' InstanceNetworkInterfaceAttachment (Maybe UTCTime)
-iniaAttachTime = lens _iniaAttachTime (\ s a -> s{_iniaAttachTime = a}) . mapping _Time;
-
--- | The index of the device on the instance for the network interface
--- attachment.
-iniaDeviceIndex :: Lens' InstanceNetworkInterfaceAttachment (Maybe Int)
-iniaDeviceIndex = lens _iniaDeviceIndex (\ s a -> s{_iniaDeviceIndex = a});
-
-instance FromXML InstanceNetworkInterfaceAttachment
-         where
-        parseXML x
-          = InstanceNetworkInterfaceAttachment' <$>
-              (x .@? "deleteOnTermination") <*> (x .@? "status")
-                <*> (x .@? "attachmentId")
-                <*> (x .@? "attachTime")
-                <*> (x .@? "deviceIndex")
-
--- | Describes a network interface.
---
--- /See:/ 'instanceNetworkInterfaceSpecification' smart constructor.
-data InstanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification'
-    { _inisPrivateIPAddresses             :: !(Maybe [PrivateIPAddressSpecification])
-    , _inisDeleteOnTermination            :: !(Maybe Bool)
-    , _inisGroups                         :: !(Maybe [Text])
-    , _inisAssociatePublicIPAddress       :: !(Maybe Bool)
-    , _inisNetworkInterfaceId             :: !(Maybe Text)
-    , _inisSubnetId                       :: !(Maybe Text)
-    , _inisPrivateIPAddress               :: !(Maybe Text)
-    , _inisSecondaryPrivateIPAddressCount :: !(Maybe Int)
-    , _inisDeviceIndex                    :: !(Maybe Int)
-    , _inisDescription                    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceNetworkInterfaceSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'inisPrivateIPAddresses'
---
--- * 'inisDeleteOnTermination'
---
--- * 'inisGroups'
---
--- * 'inisAssociatePublicIPAddress'
---
--- * 'inisNetworkInterfaceId'
---
--- * 'inisSubnetId'
---
--- * 'inisPrivateIPAddress'
---
--- * 'inisSecondaryPrivateIPAddressCount'
---
--- * 'inisDeviceIndex'
---
--- * 'inisDescription'
-instanceNetworkInterfaceSpecification
-    :: InstanceNetworkInterfaceSpecification
-instanceNetworkInterfaceSpecification =
-    InstanceNetworkInterfaceSpecification'
-    { _inisPrivateIPAddresses = Nothing
-    , _inisDeleteOnTermination = Nothing
-    , _inisGroups = Nothing
-    , _inisAssociatePublicIPAddress = Nothing
-    , _inisNetworkInterfaceId = Nothing
-    , _inisSubnetId = Nothing
-    , _inisPrivateIPAddress = Nothing
-    , _inisSecondaryPrivateIPAddressCount = Nothing
-    , _inisDeviceIndex = Nothing
-    , _inisDescription = Nothing
-    }
-
--- | One or more private IP addresses to assign to the network interface.
--- Only one private IP address can be designated as primary.
-inisPrivateIPAddresses :: Lens' InstanceNetworkInterfaceSpecification [PrivateIPAddressSpecification]
-inisPrivateIPAddresses = lens _inisPrivateIPAddresses (\ s a -> s{_inisPrivateIPAddresses = a}) . _Default . _Coerce;
-
--- | If set to 'true', the interface is deleted when the instance is
--- terminated. You can specify 'true' only if creating a new network
--- interface when launching an instance.
-inisDeleteOnTermination :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)
-inisDeleteOnTermination = lens _inisDeleteOnTermination (\ s a -> s{_inisDeleteOnTermination = a});
-
--- | The IDs of the security groups for the network interface. Applies only
--- if creating a network interface when launching an instance.
-inisGroups :: Lens' InstanceNetworkInterfaceSpecification [Text]
-inisGroups = lens _inisGroups (\ s a -> s{_inisGroups = a}) . _Default . _Coerce;
-
--- | Indicates whether to assign a public IP address to an instance you
--- launch in a VPC. The public IP address can only be assigned to a network
--- interface for eth0, and can only be assigned to a new network interface,
--- not an existing one. You cannot specify more than one network interface
--- in the request. If launching into a default subnet, the default value is
--- 'true'.
-inisAssociatePublicIPAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)
-inisAssociatePublicIPAddress = lens _inisAssociatePublicIPAddress (\ s a -> s{_inisAssociatePublicIPAddress = a});
-
--- | The ID of the network interface.
-inisNetworkInterfaceId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
-inisNetworkInterfaceId = lens _inisNetworkInterfaceId (\ s a -> s{_inisNetworkInterfaceId = a});
-
--- | The ID of the subnet associated with the network string. Applies only if
--- creating a network interface when launching an instance.
-inisSubnetId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
-inisSubnetId = lens _inisSubnetId (\ s a -> s{_inisSubnetId = a});
-
--- | The private IP address of the network interface. Applies only if
--- creating a network interface when launching an instance.
-inisPrivateIPAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
-inisPrivateIPAddress = lens _inisPrivateIPAddress (\ s a -> s{_inisPrivateIPAddress = a});
-
--- | The number of secondary private IP addresses. You can\'t specify this
--- option and specify more than one private IP address using the private IP
--- addresses option.
-inisSecondaryPrivateIPAddressCount :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)
-inisSecondaryPrivateIPAddressCount = lens _inisSecondaryPrivateIPAddressCount (\ s a -> s{_inisSecondaryPrivateIPAddressCount = a});
-
--- | The index of the device on the instance for the network interface
--- attachment. If you are specifying a network interface in a RunInstances
--- request, you must provide the device index.
-inisDeviceIndex :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)
-inisDeviceIndex = lens _inisDeviceIndex (\ s a -> s{_inisDeviceIndex = a});
-
--- | The description of the network interface. Applies only if creating a
--- network interface when launching an instance.
-inisDescription :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
-inisDescription = lens _inisDescription (\ s a -> s{_inisDescription = a});
-
-instance FromXML
-         InstanceNetworkInterfaceSpecification where
-        parseXML x
-          = InstanceNetworkInterfaceSpecification' <$>
-              (x .@? "privateIpAddressesSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "deleteOnTermination")
-                <*>
-                (x .@? "SecurityGroupId" .!@ mempty >>=
-                   may (parseXMLList "SecurityGroupId"))
-                <*> (x .@? "associatePublicIpAddress")
-                <*> (x .@? "networkInterfaceId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "privateIpAddress")
-                <*> (x .@? "secondaryPrivateIpAddressCount")
-                <*> (x .@? "deviceIndex")
-                <*> (x .@? "description")
-
-instance ToQuery
-         InstanceNetworkInterfaceSpecification where
-        toQuery InstanceNetworkInterfaceSpecification'{..}
-          = mconcat
-              [toQuery
-                 (toQueryList "PrivateIpAddresses" <$>
-                    _inisPrivateIPAddresses),
-               "DeleteOnTermination" =: _inisDeleteOnTermination,
-               toQuery
-                 (toQueryList "SecurityGroupId" <$> _inisGroups),
-               "AssociatePublicIpAddress" =:
-                 _inisAssociatePublicIPAddress,
-               "NetworkInterfaceId" =: _inisNetworkInterfaceId,
-               "SubnetId" =: _inisSubnetId,
-               "PrivateIpAddress" =: _inisPrivateIPAddress,
-               "SecondaryPrivateIpAddressCount" =:
-                 _inisSecondaryPrivateIPAddressCount,
-               "DeviceIndex" =: _inisDeviceIndex,
-               "Description" =: _inisDescription]
-
--- | Describes a private IP address.
---
--- /See:/ 'instancePrivateIPAddress' smart constructor.
-data InstancePrivateIPAddress = InstancePrivateIPAddress'
-    { _ipiaPrimary          :: !(Maybe Bool)
-    , _ipiaPrivateIPAddress :: !(Maybe Text)
-    , _ipiaPrivateDNSName   :: !(Maybe Text)
-    , _ipiaAssociation      :: !(Maybe InstanceNetworkInterfaceAssociation)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancePrivateIPAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipiaPrimary'
---
--- * 'ipiaPrivateIPAddress'
---
--- * 'ipiaPrivateDNSName'
---
--- * 'ipiaAssociation'
-instancePrivateIPAddress
-    :: InstancePrivateIPAddress
-instancePrivateIPAddress =
-    InstancePrivateIPAddress'
-    { _ipiaPrimary = Nothing
-    , _ipiaPrivateIPAddress = Nothing
-    , _ipiaPrivateDNSName = Nothing
-    , _ipiaAssociation = Nothing
-    }
-
--- | Indicates whether this IP address is the primary private IP address of
--- the network interface.
-ipiaPrimary :: Lens' InstancePrivateIPAddress (Maybe Bool)
-ipiaPrimary = lens _ipiaPrimary (\ s a -> s{_ipiaPrimary = a});
-
--- | The private IP address of the network interface.
-ipiaPrivateIPAddress :: Lens' InstancePrivateIPAddress (Maybe Text)
-ipiaPrivateIPAddress = lens _ipiaPrivateIPAddress (\ s a -> s{_ipiaPrivateIPAddress = a});
-
--- | The private DNS name.
-ipiaPrivateDNSName :: Lens' InstancePrivateIPAddress (Maybe Text)
-ipiaPrivateDNSName = lens _ipiaPrivateDNSName (\ s a -> s{_ipiaPrivateDNSName = a});
-
--- | The association information for an Elastic IP address for the network
--- interface.
-ipiaAssociation :: Lens' InstancePrivateIPAddress (Maybe InstanceNetworkInterfaceAssociation)
-ipiaAssociation = lens _ipiaAssociation (\ s a -> s{_ipiaAssociation = a});
-
-instance FromXML InstancePrivateIPAddress where
-        parseXML x
-          = InstancePrivateIPAddress' <$>
-              (x .@? "primary") <*> (x .@? "privateIpAddress") <*>
-                (x .@? "privateDnsName")
-                <*> (x .@? "association")
-
--- | Describes the current state of the instance.
---
--- /See:/ 'instanceState' smart constructor.
-data InstanceState = InstanceState'
-    { _isName :: !InstanceStateName
-    , _isCode :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'isName'
---
--- * 'isCode'
-instanceState
-    :: InstanceStateName -- ^ 'isName'
-    -> Int -- ^ 'isCode'
-    -> InstanceState
-instanceState pName_ pCode_ =
-    InstanceState'
-    { _isName = pName_
-    , _isCode = pCode_
-    }
-
--- | The current state of the instance.
-isName :: Lens' InstanceState InstanceStateName
-isName = lens _isName (\ s a -> s{_isName = a});
-
--- | The low byte represents the state. The high byte is an opaque internal
--- value and should be ignored.
---
--- -   '0' : 'pending'
---
--- -   '16' : 'running'
---
--- -   '32' : 'shutting-down'
---
--- -   '48' : 'terminated'
---
--- -   '64' : 'stopping'
---
--- -   '80' : 'stopped'
---
-isCode :: Lens' InstanceState Int
-isCode = lens _isCode (\ s a -> s{_isCode = a});
-
-instance FromXML InstanceState where
-        parseXML x
-          = InstanceState' <$> (x .@ "name") <*> (x .@ "code")
-
--- | Describes an instance state change.
---
--- /See:/ 'instanceStateChange' smart constructor.
-data InstanceStateChange = InstanceStateChange'
-    { _iscInstanceId    :: !(Maybe Text)
-    , _iscCurrentState  :: !(Maybe InstanceState)
-    , _iscPreviousState :: !(Maybe InstanceState)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceStateChange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iscInstanceId'
---
--- * 'iscCurrentState'
---
--- * 'iscPreviousState'
-instanceStateChange
-    :: InstanceStateChange
-instanceStateChange =
-    InstanceStateChange'
-    { _iscInstanceId = Nothing
-    , _iscCurrentState = Nothing
-    , _iscPreviousState = Nothing
-    }
-
--- | The ID of the instance.
-iscInstanceId :: Lens' InstanceStateChange (Maybe Text)
-iscInstanceId = lens _iscInstanceId (\ s a -> s{_iscInstanceId = a});
-
--- | The current state of the instance.
-iscCurrentState :: Lens' InstanceStateChange (Maybe InstanceState)
-iscCurrentState = lens _iscCurrentState (\ s a -> s{_iscCurrentState = a});
-
--- | The previous state of the instance.
-iscPreviousState :: Lens' InstanceStateChange (Maybe InstanceState)
-iscPreviousState = lens _iscPreviousState (\ s a -> s{_iscPreviousState = a});
-
-instance FromXML InstanceStateChange where
-        parseXML x
-          = InstanceStateChange' <$>
-              (x .@? "instanceId") <*> (x .@? "currentState") <*>
-                (x .@? "previousState")
-
--- | Describes the status of an instance.
---
--- /See:/ 'instanceStatus' smart constructor.
-data InstanceStatus = InstanceStatus'
-    { _isInstanceId       :: !(Maybe Text)
-    , _isSystemStatus     :: !(Maybe InstanceStatusSummary)
-    , _isAvailabilityZone :: !(Maybe Text)
-    , _isEvents           :: !(Maybe [InstanceStatusEvent])
-    , _isInstanceStatus   :: !(Maybe InstanceStatusSummary)
-    , _isInstanceState    :: !(Maybe InstanceState)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'isInstanceId'
---
--- * 'isSystemStatus'
---
--- * 'isAvailabilityZone'
---
--- * 'isEvents'
---
--- * 'isInstanceStatus'
---
--- * 'isInstanceState'
-instanceStatus
-    :: InstanceStatus
-instanceStatus =
-    InstanceStatus'
-    { _isInstanceId = Nothing
-    , _isSystemStatus = Nothing
-    , _isAvailabilityZone = Nothing
-    , _isEvents = Nothing
-    , _isInstanceStatus = Nothing
-    , _isInstanceState = Nothing
-    }
-
--- | The ID of the instance.
-isInstanceId :: Lens' InstanceStatus (Maybe Text)
-isInstanceId = lens _isInstanceId (\ s a -> s{_isInstanceId = a});
-
--- | Reports impaired functionality that stems from issues related to the
--- systems that support an instance, such as hardware failures and network
--- connectivity problems.
-isSystemStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)
-isSystemStatus = lens _isSystemStatus (\ s a -> s{_isSystemStatus = a});
-
--- | The Availability Zone of the instance.
-isAvailabilityZone :: Lens' InstanceStatus (Maybe Text)
-isAvailabilityZone = lens _isAvailabilityZone (\ s a -> s{_isAvailabilityZone = a});
-
--- | Any scheduled events associated with the instance.
-isEvents :: Lens' InstanceStatus [InstanceStatusEvent]
-isEvents = lens _isEvents (\ s a -> s{_isEvents = a}) . _Default . _Coerce;
-
--- | Reports impaired functionality that stems from issues internal to the
--- instance, such as impaired reachability.
-isInstanceStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)
-isInstanceStatus = lens _isInstanceStatus (\ s a -> s{_isInstanceStatus = a});
-
--- | The intended state of the instance. DescribeInstanceStatus requires that
--- an instance be in the 'running' state.
-isInstanceState :: Lens' InstanceStatus (Maybe InstanceState)
-isInstanceState = lens _isInstanceState (\ s a -> s{_isInstanceState = a});
-
-instance FromXML InstanceStatus where
-        parseXML x
-          = InstanceStatus' <$>
-              (x .@? "instanceId") <*> (x .@? "systemStatus") <*>
-                (x .@? "availabilityZone")
-                <*>
-                (x .@? "eventsSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "instanceStatus")
-                <*> (x .@? "instanceState")
-
--- | Describes the instance status.
---
--- /See:/ 'instanceStatusDetails' smart constructor.
-data InstanceStatusDetails = InstanceStatusDetails'
-    { _isdStatus        :: !(Maybe StatusType)
-    , _isdImpairedSince :: !(Maybe ISO8601)
-    , _isdName          :: !(Maybe StatusName)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceStatusDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'isdStatus'
---
--- * 'isdImpairedSince'
---
--- * 'isdName'
-instanceStatusDetails
-    :: InstanceStatusDetails
-instanceStatusDetails =
-    InstanceStatusDetails'
-    { _isdStatus = Nothing
-    , _isdImpairedSince = Nothing
-    , _isdName = Nothing
-    }
-
--- | The status.
-isdStatus :: Lens' InstanceStatusDetails (Maybe StatusType)
-isdStatus = lens _isdStatus (\ s a -> s{_isdStatus = a});
-
--- | The time when a status check failed. For an instance that was launched
--- and impaired, this is the time when the instance was launched.
-isdImpairedSince :: Lens' InstanceStatusDetails (Maybe UTCTime)
-isdImpairedSince = lens _isdImpairedSince (\ s a -> s{_isdImpairedSince = a}) . mapping _Time;
-
--- | The type of instance status.
-isdName :: Lens' InstanceStatusDetails (Maybe StatusName)
-isdName = lens _isdName (\ s a -> s{_isdName = a});
-
-instance FromXML InstanceStatusDetails where
-        parseXML x
-          = InstanceStatusDetails' <$>
-              (x .@? "status") <*> (x .@? "impairedSince") <*>
-                (x .@? "name")
-
--- | Describes a scheduled event for an instance.
---
--- /See:/ 'instanceStatusEvent' smart constructor.
-data InstanceStatusEvent = InstanceStatusEvent'
-    { _iseNotBefore   :: !(Maybe ISO8601)
-    , _iseCode        :: !(Maybe EventCode)
-    , _iseDescription :: !(Maybe Text)
-    , _iseNotAfter    :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceStatusEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iseNotBefore'
---
--- * 'iseCode'
---
--- * 'iseDescription'
---
--- * 'iseNotAfter'
-instanceStatusEvent
-    :: InstanceStatusEvent
-instanceStatusEvent =
-    InstanceStatusEvent'
-    { _iseNotBefore = Nothing
-    , _iseCode = Nothing
-    , _iseDescription = Nothing
-    , _iseNotAfter = Nothing
-    }
-
--- | The earliest scheduled start time for the event.
-iseNotBefore :: Lens' InstanceStatusEvent (Maybe UTCTime)
-iseNotBefore = lens _iseNotBefore (\ s a -> s{_iseNotBefore = a}) . mapping _Time;
-
--- | The event code.
-iseCode :: Lens' InstanceStatusEvent (Maybe EventCode)
-iseCode = lens _iseCode (\ s a -> s{_iseCode = a});
-
--- | A description of the event.
---
--- After a scheduled event is completed, it can still be described for up
--- to a week. If the event has been completed, this description starts with
--- the following text: [Completed].
-iseDescription :: Lens' InstanceStatusEvent (Maybe Text)
-iseDescription = lens _iseDescription (\ s a -> s{_iseDescription = a});
-
--- | The latest scheduled end time for the event.
-iseNotAfter :: Lens' InstanceStatusEvent (Maybe UTCTime)
-iseNotAfter = lens _iseNotAfter (\ s a -> s{_iseNotAfter = a}) . mapping _Time;
-
-instance FromXML InstanceStatusEvent where
-        parseXML x
-          = InstanceStatusEvent' <$>
-              (x .@? "notBefore") <*> (x .@? "code") <*>
-                (x .@? "description")
-                <*> (x .@? "notAfter")
-
--- | Describes the status of an instance.
---
--- /See:/ 'instanceStatusSummary' smart constructor.
-data InstanceStatusSummary = InstanceStatusSummary'
-    { _issDetails :: !(Maybe [InstanceStatusDetails])
-    , _issStatus  :: !SummaryStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceStatusSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'issDetails'
---
--- * 'issStatus'
-instanceStatusSummary
-    :: SummaryStatus -- ^ 'issStatus'
-    -> InstanceStatusSummary
-instanceStatusSummary pStatus_ =
-    InstanceStatusSummary'
-    { _issDetails = Nothing
-    , _issStatus = pStatus_
-    }
-
--- | The system instance health or application instance health.
-issDetails :: Lens' InstanceStatusSummary [InstanceStatusDetails]
-issDetails = lens _issDetails (\ s a -> s{_issDetails = a}) . _Default . _Coerce;
-
--- | The status.
-issStatus :: Lens' InstanceStatusSummary SummaryStatus
-issStatus = lens _issStatus (\ s a -> s{_issStatus = a});
-
-instance FromXML InstanceStatusSummary where
-        parseXML x
-          = InstanceStatusSummary' <$>
-              (x .@? "details" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@ "status")
-
--- | Describes an Internet gateway.
---
--- /See:/ 'internetGateway' smart constructor.
-data InternetGateway = InternetGateway'
-    { _igAttachments       :: !(Maybe [InternetGatewayAttachment])
-    , _igTags              :: !(Maybe [Tag])
-    , _igInternetGatewayId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InternetGateway' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igAttachments'
---
--- * 'igTags'
---
--- * 'igInternetGatewayId'
-internetGateway
-    :: Text -- ^ 'igInternetGatewayId'
-    -> InternetGateway
-internetGateway pInternetGatewayId_ =
-    InternetGateway'
-    { _igAttachments = Nothing
-    , _igTags = Nothing
-    , _igInternetGatewayId = pInternetGatewayId_
-    }
-
--- | Any VPCs attached to the Internet gateway.
-igAttachments :: Lens' InternetGateway [InternetGatewayAttachment]
-igAttachments = lens _igAttachments (\ s a -> s{_igAttachments = a}) . _Default . _Coerce;
-
--- | Any tags assigned to the Internet gateway.
-igTags :: Lens' InternetGateway [Tag]
-igTags = lens _igTags (\ s a -> s{_igTags = a}) . _Default . _Coerce;
-
--- | The ID of the Internet gateway.
-igInternetGatewayId :: Lens' InternetGateway Text
-igInternetGatewayId = lens _igInternetGatewayId (\ s a -> s{_igInternetGatewayId = a});
-
-instance FromXML InternetGateway where
-        parseXML x
-          = InternetGateway' <$>
-              (x .@? "attachmentSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "internetGatewayId")
-
--- | Describes the attachment of a VPC to an Internet gateway.
---
--- /See:/ 'internetGatewayAttachment' smart constructor.
-data InternetGatewayAttachment = InternetGatewayAttachment'
-    { _igaState :: !AttachmentStatus
-    , _igaVPCId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InternetGatewayAttachment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igaState'
---
--- * 'igaVPCId'
-internetGatewayAttachment
-    :: AttachmentStatus -- ^ 'igaState'
-    -> Text -- ^ 'igaVPCId'
-    -> InternetGatewayAttachment
-internetGatewayAttachment pState_ pVPCId_ =
-    InternetGatewayAttachment'
-    { _igaState = pState_
-    , _igaVPCId = pVPCId_
-    }
-
--- | The current state of the attachment.
-igaState :: Lens' InternetGatewayAttachment AttachmentStatus
-igaState = lens _igaState (\ s a -> s{_igaState = a});
-
--- | The ID of the VPC.
-igaVPCId :: Lens' InternetGatewayAttachment Text
-igaVPCId = lens _igaVPCId (\ s a -> s{_igaVPCId = a});
-
-instance FromXML InternetGatewayAttachment where
-        parseXML x
-          = InternetGatewayAttachment' <$>
-              (x .@ "state") <*> (x .@ "vpcId")
-
--- | Describes a key pair.
---
--- /See:/ 'keyPairInfo' smart constructor.
-data KeyPairInfo = KeyPairInfo'
-    { _kpiKeyFingerprint :: !(Maybe Text)
-    , _kpiKeyName        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'KeyPairInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kpiKeyFingerprint'
---
--- * 'kpiKeyName'
-keyPairInfo
-    :: KeyPairInfo
-keyPairInfo =
-    KeyPairInfo'
-    { _kpiKeyFingerprint = Nothing
-    , _kpiKeyName = Nothing
-    }
-
--- | If you used CreateKeyPair to create the key pair, this is the SHA-1
--- digest of the DER encoded private key. If you used ImportKeyPair to
--- provide AWS the public key, this is the MD5 public key fingerprint as
--- specified in section 4 of RFC4716.
-kpiKeyFingerprint :: Lens' KeyPairInfo (Maybe Text)
-kpiKeyFingerprint = lens _kpiKeyFingerprint (\ s a -> s{_kpiKeyFingerprint = a});
-
--- | The name of the key pair.
-kpiKeyName :: Lens' KeyPairInfo (Maybe Text)
-kpiKeyName = lens _kpiKeyName (\ s a -> s{_kpiKeyName = a});
-
-instance FromXML KeyPairInfo where
-        parseXML x
-          = KeyPairInfo' <$>
-              (x .@? "keyFingerprint") <*> (x .@? "keyName")
-
--- | Describes a launch permission.
---
--- /See:/ 'launchPermission' smart constructor.
-data LaunchPermission = LaunchPermission'
-    { _lpGroup  :: !(Maybe PermissionGroup)
-    , _lpUserId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LaunchPermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpGroup'
---
--- * 'lpUserId'
-launchPermission
-    :: LaunchPermission
-launchPermission =
-    LaunchPermission'
-    { _lpGroup = Nothing
-    , _lpUserId = Nothing
-    }
-
--- | The name of the group.
-lpGroup :: Lens' LaunchPermission (Maybe PermissionGroup)
-lpGroup = lens _lpGroup (\ s a -> s{_lpGroup = a});
-
--- | The AWS account ID.
-lpUserId :: Lens' LaunchPermission (Maybe Text)
-lpUserId = lens _lpUserId (\ s a -> s{_lpUserId = a});
-
-instance FromXML LaunchPermission where
-        parseXML x
-          = LaunchPermission' <$>
-              (x .@? "group") <*> (x .@? "userId")
-
-instance ToQuery LaunchPermission where
-        toQuery LaunchPermission'{..}
-          = mconcat
-              ["Group" =: _lpGroup, "UserId" =: _lpUserId]
-
--- | Describes a launch permission modification.
---
--- /See:/ 'launchPermissionModifications' smart constructor.
-data LaunchPermissionModifications = LaunchPermissionModifications'
-    { _lpmRemove :: !(Maybe [LaunchPermission])
-    , _lpmAdd    :: !(Maybe [LaunchPermission])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LaunchPermissionModifications' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpmRemove'
---
--- * 'lpmAdd'
-launchPermissionModifications
-    :: LaunchPermissionModifications
-launchPermissionModifications =
-    LaunchPermissionModifications'
-    { _lpmRemove = Nothing
-    , _lpmAdd = Nothing
-    }
-
--- | The AWS account ID to remove from the list of launch permissions for the
--- AMI.
-lpmRemove :: Lens' LaunchPermissionModifications [LaunchPermission]
-lpmRemove = lens _lpmRemove (\ s a -> s{_lpmRemove = a}) . _Default . _Coerce;
-
--- | The AWS account ID to add to the list of launch permissions for the AMI.
-lpmAdd :: Lens' LaunchPermissionModifications [LaunchPermission]
-lpmAdd = lens _lpmAdd (\ s a -> s{_lpmAdd = a}) . _Default . _Coerce;
-
-instance ToQuery LaunchPermissionModifications where
-        toQuery LaunchPermissionModifications'{..}
-          = mconcat
-              [toQuery (toQueryList "Remove" <$> _lpmRemove),
-               toQuery (toQueryList "Add" <$> _lpmAdd)]
-
--- | Describes the launch specification for an instance.
---
--- /See:/ 'launchSpecification' smart constructor.
-data LaunchSpecification = LaunchSpecification'
-    { _lsSecurityGroups      :: !(Maybe [GroupIdentifier])
-    , _lsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
-    , _lsKeyName             :: !(Maybe Text)
-    , _lsRAMDiskId           :: !(Maybe Text)
-    , _lsKernelId            :: !(Maybe Text)
-    , _lsSubnetId            :: !(Maybe Text)
-    , _lsInstanceType        :: !(Maybe InstanceType)
-    , _lsEBSOptimized        :: !(Maybe Bool)
-    , _lsUserData            :: !(Maybe Text)
-    , _lsMonitoring          :: !(Maybe RunInstancesMonitoringEnabled)
-    , _lsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
-    , _lsImageId             :: !(Maybe Text)
-    , _lsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
-    , _lsAddressingType      :: !(Maybe Text)
-    , _lsPlacement           :: !(Maybe SpotPlacement)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LaunchSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsSecurityGroups'
---
--- * 'lsNetworkInterfaces'
---
--- * 'lsKeyName'
---
--- * 'lsRAMDiskId'
---
--- * 'lsKernelId'
---
--- * 'lsSubnetId'
---
--- * 'lsInstanceType'
---
--- * 'lsEBSOptimized'
---
--- * 'lsUserData'
---
--- * 'lsMonitoring'
---
--- * 'lsIAMInstanceProfile'
---
--- * 'lsImageId'
---
--- * 'lsBlockDeviceMappings'
---
--- * 'lsAddressingType'
---
--- * 'lsPlacement'
-launchSpecification
-    :: LaunchSpecification
-launchSpecification =
-    LaunchSpecification'
-    { _lsSecurityGroups = Nothing
-    , _lsNetworkInterfaces = Nothing
-    , _lsKeyName = Nothing
-    , _lsRAMDiskId = Nothing
-    , _lsKernelId = Nothing
-    , _lsSubnetId = Nothing
-    , _lsInstanceType = Nothing
-    , _lsEBSOptimized = Nothing
-    , _lsUserData = Nothing
-    , _lsMonitoring = Nothing
-    , _lsIAMInstanceProfile = Nothing
-    , _lsImageId = Nothing
-    , _lsBlockDeviceMappings = Nothing
-    , _lsAddressingType = Nothing
-    , _lsPlacement = Nothing
-    }
-
--- | One or more security groups. To request an instance in a nondefault VPC,
--- you must specify the ID of the security group. To request an instance in
--- EC2-Classic or a default VPC, you can specify the name or the ID of the
--- security group.
-lsSecurityGroups :: Lens' LaunchSpecification [GroupIdentifier]
-lsSecurityGroups = lens _lsSecurityGroups (\ s a -> s{_lsSecurityGroups = a}) . _Default . _Coerce;
-
--- | One or more network interfaces.
-lsNetworkInterfaces :: Lens' LaunchSpecification [InstanceNetworkInterfaceSpecification]
-lsNetworkInterfaces = lens _lsNetworkInterfaces (\ s a -> s{_lsNetworkInterfaces = a}) . _Default . _Coerce;
-
--- | The name of the key pair.
-lsKeyName :: Lens' LaunchSpecification (Maybe Text)
-lsKeyName = lens _lsKeyName (\ s a -> s{_lsKeyName = a});
-
--- | The ID of the RAM disk.
-lsRAMDiskId :: Lens' LaunchSpecification (Maybe Text)
-lsRAMDiskId = lens _lsRAMDiskId (\ s a -> s{_lsRAMDiskId = a});
-
--- | The ID of the kernel.
-lsKernelId :: Lens' LaunchSpecification (Maybe Text)
-lsKernelId = lens _lsKernelId (\ s a -> s{_lsKernelId = a});
-
--- | The ID of the subnet in which to launch the instance.
-lsSubnetId :: Lens' LaunchSpecification (Maybe Text)
-lsSubnetId = lens _lsSubnetId (\ s a -> s{_lsSubnetId = a});
-
--- | The instance type.
-lsInstanceType :: Lens' LaunchSpecification (Maybe InstanceType)
-lsInstanceType = lens _lsInstanceType (\ s a -> s{_lsInstanceType = a});
-
--- | Indicates whether the instance is optimized for EBS I\/O. This
--- optimization provides dedicated throughput to Amazon EBS and an
--- optimized configuration stack to provide optimal EBS I\/O performance.
--- This optimization isn\'t available with all instance types. Additional
--- usage charges apply when using an EBS Optimized instance.
---
--- Default: 'false'
-lsEBSOptimized :: Lens' LaunchSpecification (Maybe Bool)
-lsEBSOptimized = lens _lsEBSOptimized (\ s a -> s{_lsEBSOptimized = a});
-
--- | The Base64-encoded MIME user data to make available to the instances.
-lsUserData :: Lens' LaunchSpecification (Maybe Text)
-lsUserData = lens _lsUserData (\ s a -> s{_lsUserData = a});
-
--- | Undocumented member.
-lsMonitoring :: Lens' LaunchSpecification (Maybe RunInstancesMonitoringEnabled)
-lsMonitoring = lens _lsMonitoring (\ s a -> s{_lsMonitoring = a});
-
--- | The IAM instance profile.
-lsIAMInstanceProfile :: Lens' LaunchSpecification (Maybe IAMInstanceProfileSpecification)
-lsIAMInstanceProfile = lens _lsIAMInstanceProfile (\ s a -> s{_lsIAMInstanceProfile = a});
-
--- | The ID of the AMI.
-lsImageId :: Lens' LaunchSpecification (Maybe Text)
-lsImageId = lens _lsImageId (\ s a -> s{_lsImageId = a});
-
--- | One or more block device mapping entries.
-lsBlockDeviceMappings :: Lens' LaunchSpecification [BlockDeviceMapping]
-lsBlockDeviceMappings = lens _lsBlockDeviceMappings (\ s a -> s{_lsBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | Deprecated.
-lsAddressingType :: Lens' LaunchSpecification (Maybe Text)
-lsAddressingType = lens _lsAddressingType (\ s a -> s{_lsAddressingType = a});
-
--- | The placement information for the instance.
-lsPlacement :: Lens' LaunchSpecification (Maybe SpotPlacement)
-lsPlacement = lens _lsPlacement (\ s a -> s{_lsPlacement = a});
-
-instance FromXML LaunchSpecification where
-        parseXML x
-          = LaunchSpecification' <$>
-              (x .@? "groupSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*>
-                (x .@? "networkInterfaceSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "keyName")
-                <*> (x .@? "ramdiskId")
-                <*> (x .@? "kernelId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "instanceType")
-                <*> (x .@? "ebsOptimized")
-                <*> (x .@? "userData")
-                <*> (x .@? "monitoring")
-                <*> (x .@? "iamInstanceProfile")
-                <*> (x .@? "imageId")
-                <*>
-                (x .@? "blockDeviceMapping" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "addressingType")
-                <*> (x .@? "placement")
-
--- | Describes the monitoring for the instance.
---
--- /See:/ 'monitoring' smart constructor.
-newtype Monitoring = Monitoring'
-    { _mState :: Maybe MonitoringState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Monitoring' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mState'
-monitoring
-    :: Monitoring
-monitoring =
-    Monitoring'
-    { _mState = Nothing
-    }
-
--- | Indicates whether monitoring is enabled for the instance.
-mState :: Lens' Monitoring (Maybe MonitoringState)
-mState = lens _mState (\ s a -> s{_mState = a});
-
-instance FromXML Monitoring where
-        parseXML x = Monitoring' <$> (x .@? "state")
-
--- | Describes the status of a moving Elastic IP address.
---
--- /See:/ 'movingAddressStatus' smart constructor.
-data MovingAddressStatus = MovingAddressStatus'
-    { _masMoveStatus :: !(Maybe MoveStatus)
-    , _masPublicIP   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MovingAddressStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'masMoveStatus'
---
--- * 'masPublicIP'
-movingAddressStatus
-    :: MovingAddressStatus
-movingAddressStatus =
-    MovingAddressStatus'
-    { _masMoveStatus = Nothing
-    , _masPublicIP = Nothing
-    }
-
--- | The status of the Elastic IP address that\'s being moved to the EC2-VPC
--- platform, or restored to the EC2-Classic platform.
-masMoveStatus :: Lens' MovingAddressStatus (Maybe MoveStatus)
-masMoveStatus = lens _masMoveStatus (\ s a -> s{_masMoveStatus = a});
-
--- | The Elastic IP address.
-masPublicIP :: Lens' MovingAddressStatus (Maybe Text)
-masPublicIP = lens _masPublicIP (\ s a -> s{_masPublicIP = a});
-
-instance FromXML MovingAddressStatus where
-        parseXML x
-          = MovingAddressStatus' <$>
-              (x .@? "moveStatus") <*> (x .@? "publicIp")
-
--- | Describes a network ACL.
---
--- /See:/ 'networkACL' smart constructor.
-data NetworkACL = NetworkACL'
-    { _naEntries      :: !(Maybe [NetworkACLEntry])
-    , _naNetworkACLId :: !(Maybe Text)
-    , _naVPCId        :: !(Maybe Text)
-    , _naAssociations :: !(Maybe [NetworkACLAssociation])
-    , _naIsDefault    :: !(Maybe Bool)
-    , _naTags         :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkACL' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'naEntries'
---
--- * 'naNetworkACLId'
---
--- * 'naVPCId'
---
--- * 'naAssociations'
---
--- * 'naIsDefault'
---
--- * 'naTags'
-networkACL
-    :: NetworkACL
-networkACL =
-    NetworkACL'
-    { _naEntries = Nothing
-    , _naNetworkACLId = Nothing
-    , _naVPCId = Nothing
-    , _naAssociations = Nothing
-    , _naIsDefault = Nothing
-    , _naTags = Nothing
-    }
-
--- | One or more entries (rules) in the network ACL.
-naEntries :: Lens' NetworkACL [NetworkACLEntry]
-naEntries = lens _naEntries (\ s a -> s{_naEntries = a}) . _Default . _Coerce;
-
--- | The ID of the network ACL.
-naNetworkACLId :: Lens' NetworkACL (Maybe Text)
-naNetworkACLId = lens _naNetworkACLId (\ s a -> s{_naNetworkACLId = a});
-
--- | The ID of the VPC for the network ACL.
-naVPCId :: Lens' NetworkACL (Maybe Text)
-naVPCId = lens _naVPCId (\ s a -> s{_naVPCId = a});
-
--- | Any associations between the network ACL and one or more subnets
-naAssociations :: Lens' NetworkACL [NetworkACLAssociation]
-naAssociations = lens _naAssociations (\ s a -> s{_naAssociations = a}) . _Default . _Coerce;
-
--- | Indicates whether this is the default network ACL for the VPC.
-naIsDefault :: Lens' NetworkACL (Maybe Bool)
-naIsDefault = lens _naIsDefault (\ s a -> s{_naIsDefault = a});
-
--- | Any tags assigned to the network ACL.
-naTags :: Lens' NetworkACL [Tag]
-naTags = lens _naTags (\ s a -> s{_naTags = a}) . _Default . _Coerce;
-
-instance FromXML NetworkACL where
-        parseXML x
-          = NetworkACL' <$>
-              (x .@? "entrySet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "networkAclId")
-                <*> (x .@? "vpcId")
-                <*>
-                (x .@? "associationSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "default")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes an association between a network ACL and a subnet.
---
--- /See:/ 'networkACLAssociation' smart constructor.
-data NetworkACLAssociation = NetworkACLAssociation'
-    { _naaNetworkACLId            :: !(Maybe Text)
-    , _naaSubnetId                :: !(Maybe Text)
-    , _naaNetworkACLAssociationId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkACLAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'naaNetworkACLId'
---
--- * 'naaSubnetId'
---
--- * 'naaNetworkACLAssociationId'
-networkACLAssociation
-    :: NetworkACLAssociation
-networkACLAssociation =
-    NetworkACLAssociation'
-    { _naaNetworkACLId = Nothing
-    , _naaSubnetId = Nothing
-    , _naaNetworkACLAssociationId = Nothing
-    }
-
--- | The ID of the network ACL.
-naaNetworkACLId :: Lens' NetworkACLAssociation (Maybe Text)
-naaNetworkACLId = lens _naaNetworkACLId (\ s a -> s{_naaNetworkACLId = a});
-
--- | The ID of the subnet.
-naaSubnetId :: Lens' NetworkACLAssociation (Maybe Text)
-naaSubnetId = lens _naaSubnetId (\ s a -> s{_naaSubnetId = a});
-
--- | The ID of the association between a network ACL and a subnet.
-naaNetworkACLAssociationId :: Lens' NetworkACLAssociation (Maybe Text)
-naaNetworkACLAssociationId = lens _naaNetworkACLAssociationId (\ s a -> s{_naaNetworkACLAssociationId = a});
-
-instance FromXML NetworkACLAssociation where
-        parseXML x
-          = NetworkACLAssociation' <$>
-              (x .@? "networkAclId") <*> (x .@? "subnetId") <*>
-                (x .@? "networkAclAssociationId")
-
--- | Describes an entry in a network ACL.
---
--- /See:/ 'networkACLEntry' smart constructor.
-data NetworkACLEntry = NetworkACLEntry'
-    { _naeICMPTypeCode :: !(Maybe ICMPTypeCode)
-    , _naeRuleNumber   :: !(Maybe Int)
-    , _naeRuleAction   :: !(Maybe RuleAction)
-    , _naeProtocol     :: !(Maybe Text)
-    , _naePortRange    :: !(Maybe PortRange)
-    , _naeCIdRBlock    :: !(Maybe Text)
-    , _naeEgress       :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkACLEntry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'naeICMPTypeCode'
---
--- * 'naeRuleNumber'
---
--- * 'naeRuleAction'
---
--- * 'naeProtocol'
---
--- * 'naePortRange'
---
--- * 'naeCIdRBlock'
---
--- * 'naeEgress'
-networkACLEntry
-    :: NetworkACLEntry
-networkACLEntry =
-    NetworkACLEntry'
-    { _naeICMPTypeCode = Nothing
-    , _naeRuleNumber = Nothing
-    , _naeRuleAction = Nothing
-    , _naeProtocol = Nothing
-    , _naePortRange = Nothing
-    , _naeCIdRBlock = Nothing
-    , _naeEgress = Nothing
-    }
-
--- | ICMP protocol: The ICMP type and code.
-naeICMPTypeCode :: Lens' NetworkACLEntry (Maybe ICMPTypeCode)
-naeICMPTypeCode = lens _naeICMPTypeCode (\ s a -> s{_naeICMPTypeCode = a});
-
--- | The rule number for the entry. ACL entries are processed in ascending
--- order by rule number.
-naeRuleNumber :: Lens' NetworkACLEntry (Maybe Int)
-naeRuleNumber = lens _naeRuleNumber (\ s a -> s{_naeRuleNumber = a});
-
--- | Indicates whether to allow or deny the traffic that matches the rule.
-naeRuleAction :: Lens' NetworkACLEntry (Maybe RuleAction)
-naeRuleAction = lens _naeRuleAction (\ s a -> s{_naeRuleAction = a});
-
--- | The protocol. A value of '-1' means all protocols.
-naeProtocol :: Lens' NetworkACLEntry (Maybe Text)
-naeProtocol = lens _naeProtocol (\ s a -> s{_naeProtocol = a});
-
--- | TCP or UDP protocols: The range of ports the rule applies to.
-naePortRange :: Lens' NetworkACLEntry (Maybe PortRange)
-naePortRange = lens _naePortRange (\ s a -> s{_naePortRange = a});
-
--- | The network range to allow or deny, in CIDR notation.
-naeCIdRBlock :: Lens' NetworkACLEntry (Maybe Text)
-naeCIdRBlock = lens _naeCIdRBlock (\ s a -> s{_naeCIdRBlock = a});
-
--- | Indicates whether the rule is an egress rule (applied to traffic leaving
--- the subnet).
-naeEgress :: Lens' NetworkACLEntry (Maybe Bool)
-naeEgress = lens _naeEgress (\ s a -> s{_naeEgress = a});
-
-instance FromXML NetworkACLEntry where
-        parseXML x
-          = NetworkACLEntry' <$>
-              (x .@? "icmpTypeCode") <*> (x .@? "ruleNumber") <*>
-                (x .@? "ruleAction")
-                <*> (x .@? "protocol")
-                <*> (x .@? "portRange")
-                <*> (x .@? "cidrBlock")
-                <*> (x .@? "egress")
-
--- | Describes a network interface.
---
--- /See:/ 'networkInterface' smart constructor.
-data NetworkInterface = NetworkInterface'
-    { _niPrivateIPAddresses :: !(Maybe [NetworkInterfacePrivateIPAddress])
-    , _niStatus             :: !(Maybe NetworkInterfaceStatus)
-    , _niGroups             :: !(Maybe [GroupIdentifier])
-    , _niSourceDestCheck    :: !(Maybe Bool)
-    , _niTagSet             :: !(Maybe [Tag])
-    , _niVPCId              :: !(Maybe Text)
-    , _niRequesterManaged   :: !(Maybe Bool)
-    , _niNetworkInterfaceId :: !(Maybe Text)
-    , _niSubnetId           :: !(Maybe Text)
-    , _niAttachment         :: !(Maybe NetworkInterfaceAttachment)
-    , _niMACAddress         :: !(Maybe Text)
-    , _niOwnerId            :: !(Maybe Text)
-    , _niAvailabilityZone   :: !(Maybe Text)
-    , _niPrivateIPAddress   :: !(Maybe Text)
-    , _niPrivateDNSName     :: !(Maybe Text)
-    , _niRequesterId        :: !(Maybe Text)
-    , _niDescription        :: !(Maybe Text)
-    , _niAssociation        :: !(Maybe NetworkInterfaceAssociation)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niPrivateIPAddresses'
---
--- * 'niStatus'
---
--- * 'niGroups'
---
--- * 'niSourceDestCheck'
---
--- * 'niTagSet'
---
--- * 'niVPCId'
---
--- * 'niRequesterManaged'
---
--- * 'niNetworkInterfaceId'
---
--- * 'niSubnetId'
---
--- * 'niAttachment'
---
--- * 'niMACAddress'
---
--- * 'niOwnerId'
---
--- * 'niAvailabilityZone'
---
--- * 'niPrivateIPAddress'
---
--- * 'niPrivateDNSName'
---
--- * 'niRequesterId'
---
--- * 'niDescription'
---
--- * 'niAssociation'
-networkInterface
-    :: NetworkInterface
-networkInterface =
-    NetworkInterface'
-    { _niPrivateIPAddresses = Nothing
-    , _niStatus = Nothing
-    , _niGroups = Nothing
-    , _niSourceDestCheck = Nothing
-    , _niTagSet = Nothing
-    , _niVPCId = Nothing
-    , _niRequesterManaged = Nothing
-    , _niNetworkInterfaceId = Nothing
-    , _niSubnetId = Nothing
-    , _niAttachment = Nothing
-    , _niMACAddress = Nothing
-    , _niOwnerId = Nothing
-    , _niAvailabilityZone = Nothing
-    , _niPrivateIPAddress = Nothing
-    , _niPrivateDNSName = Nothing
-    , _niRequesterId = Nothing
-    , _niDescription = Nothing
-    , _niAssociation = Nothing
-    }
-
--- | The private IP addresses associated with the network interface.
-niPrivateIPAddresses :: Lens' NetworkInterface [NetworkInterfacePrivateIPAddress]
-niPrivateIPAddresses = lens _niPrivateIPAddresses (\ s a -> s{_niPrivateIPAddresses = a}) . _Default . _Coerce;
-
--- | The status of the network interface.
-niStatus :: Lens' NetworkInterface (Maybe NetworkInterfaceStatus)
-niStatus = lens _niStatus (\ s a -> s{_niStatus = a});
-
--- | Any security groups for the network interface.
-niGroups :: Lens' NetworkInterface [GroupIdentifier]
-niGroups = lens _niGroups (\ s a -> s{_niGroups = a}) . _Default . _Coerce;
-
--- | Indicates whether traffic to or from the instance is validated.
-niSourceDestCheck :: Lens' NetworkInterface (Maybe Bool)
-niSourceDestCheck = lens _niSourceDestCheck (\ s a -> s{_niSourceDestCheck = a});
-
--- | Any tags assigned to the network interface.
-niTagSet :: Lens' NetworkInterface [Tag]
-niTagSet = lens _niTagSet (\ s a -> s{_niTagSet = a}) . _Default . _Coerce;
-
--- | The ID of the VPC.
-niVPCId :: Lens' NetworkInterface (Maybe Text)
-niVPCId = lens _niVPCId (\ s a -> s{_niVPCId = a});
-
--- | Indicates whether the network interface is being managed by AWS.
-niRequesterManaged :: Lens' NetworkInterface (Maybe Bool)
-niRequesterManaged = lens _niRequesterManaged (\ s a -> s{_niRequesterManaged = a});
-
--- | The ID of the network interface.
-niNetworkInterfaceId :: Lens' NetworkInterface (Maybe Text)
-niNetworkInterfaceId = lens _niNetworkInterfaceId (\ s a -> s{_niNetworkInterfaceId = a});
-
--- | The ID of the subnet.
-niSubnetId :: Lens' NetworkInterface (Maybe Text)
-niSubnetId = lens _niSubnetId (\ s a -> s{_niSubnetId = a});
-
--- | The network interface attachment.
-niAttachment :: Lens' NetworkInterface (Maybe NetworkInterfaceAttachment)
-niAttachment = lens _niAttachment (\ s a -> s{_niAttachment = a});
-
--- | The MAC address.
-niMACAddress :: Lens' NetworkInterface (Maybe Text)
-niMACAddress = lens _niMACAddress (\ s a -> s{_niMACAddress = a});
-
--- | The AWS account ID of the owner of the network interface.
-niOwnerId :: Lens' NetworkInterface (Maybe Text)
-niOwnerId = lens _niOwnerId (\ s a -> s{_niOwnerId = a});
-
--- | The Availability Zone.
-niAvailabilityZone :: Lens' NetworkInterface (Maybe Text)
-niAvailabilityZone = lens _niAvailabilityZone (\ s a -> s{_niAvailabilityZone = a});
-
--- | The IP address of the network interface within the subnet.
-niPrivateIPAddress :: Lens' NetworkInterface (Maybe Text)
-niPrivateIPAddress = lens _niPrivateIPAddress (\ s a -> s{_niPrivateIPAddress = a});
-
--- | The private DNS name.
-niPrivateDNSName :: Lens' NetworkInterface (Maybe Text)
-niPrivateDNSName = lens _niPrivateDNSName (\ s a -> s{_niPrivateDNSName = a});
-
--- | The ID of the entity that launched the instance on your behalf (for
--- example, AWS Management Console or Auto Scaling).
-niRequesterId :: Lens' NetworkInterface (Maybe Text)
-niRequesterId = lens _niRequesterId (\ s a -> s{_niRequesterId = a});
-
--- | A description.
-niDescription :: Lens' NetworkInterface (Maybe Text)
-niDescription = lens _niDescription (\ s a -> s{_niDescription = a});
-
--- | The association information for an Elastic IP associated with the
--- network interface.
-niAssociation :: Lens' NetworkInterface (Maybe NetworkInterfaceAssociation)
-niAssociation = lens _niAssociation (\ s a -> s{_niAssociation = a});
-
-instance FromXML NetworkInterface where
-        parseXML x
-          = NetworkInterface' <$>
-              (x .@? "privateIpAddressesSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "status")
-                <*>
-                (x .@? "groupSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "sourceDestCheck")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "vpcId")
-                <*> (x .@? "requesterManaged")
-                <*> (x .@? "networkInterfaceId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "attachment")
-                <*> (x .@? "macAddress")
-                <*> (x .@? "ownerId")
-                <*> (x .@? "availabilityZone")
-                <*> (x .@? "privateIpAddress")
-                <*> (x .@? "privateDnsName")
-                <*> (x .@? "requesterId")
-                <*> (x .@? "description")
-                <*> (x .@? "association")
-
--- | Describes association information for an Elastic IP address.
---
--- /See:/ 'networkInterfaceAssociation' smart constructor.
-data NetworkInterfaceAssociation = NetworkInterfaceAssociation'
-    { _niaAssociationId :: !(Maybe Text)
-    , _niaPublicDNSName :: !(Maybe Text)
-    , _niaAllocationId  :: !(Maybe Text)
-    , _niaIPOwnerId     :: !(Maybe Text)
-    , _niaPublicIP      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterfaceAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niaAssociationId'
---
--- * 'niaPublicDNSName'
---
--- * 'niaAllocationId'
---
--- * 'niaIPOwnerId'
---
--- * 'niaPublicIP'
-networkInterfaceAssociation
-    :: NetworkInterfaceAssociation
-networkInterfaceAssociation =
-    NetworkInterfaceAssociation'
-    { _niaAssociationId = Nothing
-    , _niaPublicDNSName = Nothing
-    , _niaAllocationId = Nothing
-    , _niaIPOwnerId = Nothing
-    , _niaPublicIP = Nothing
-    }
-
--- | The association ID.
-niaAssociationId :: Lens' NetworkInterfaceAssociation (Maybe Text)
-niaAssociationId = lens _niaAssociationId (\ s a -> s{_niaAssociationId = a});
-
--- | The public DNS name.
-niaPublicDNSName :: Lens' NetworkInterfaceAssociation (Maybe Text)
-niaPublicDNSName = lens _niaPublicDNSName (\ s a -> s{_niaPublicDNSName = a});
-
--- | The allocation ID.
-niaAllocationId :: Lens' NetworkInterfaceAssociation (Maybe Text)
-niaAllocationId = lens _niaAllocationId (\ s a -> s{_niaAllocationId = a});
-
--- | The ID of the Elastic IP address owner.
-niaIPOwnerId :: Lens' NetworkInterfaceAssociation (Maybe Text)
-niaIPOwnerId = lens _niaIPOwnerId (\ s a -> s{_niaIPOwnerId = a});
-
--- | The address of the Elastic IP address bound to the network interface.
-niaPublicIP :: Lens' NetworkInterfaceAssociation (Maybe Text)
-niaPublicIP = lens _niaPublicIP (\ s a -> s{_niaPublicIP = a});
-
-instance FromXML NetworkInterfaceAssociation where
-        parseXML x
-          = NetworkInterfaceAssociation' <$>
-              (x .@? "associationId") <*> (x .@? "publicDnsName")
-                <*> (x .@? "allocationId")
-                <*> (x .@? "ipOwnerId")
-                <*> (x .@? "publicIp")
-
--- | Describes a network interface attachment.
---
--- /See:/ 'networkInterfaceAttachment' smart constructor.
-data NetworkInterfaceAttachment = NetworkInterfaceAttachment'
-    { _niaInstanceId          :: !(Maybe Text)
-    , _niaDeleteOnTermination :: !(Maybe Bool)
-    , _niaStatus              :: !(Maybe AttachmentStatus)
-    , _niaAttachmentId        :: !(Maybe Text)
-    , _niaInstanceOwnerId     :: !(Maybe Text)
-    , _niaAttachTime          :: !(Maybe ISO8601)
-    , _niaDeviceIndex         :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterfaceAttachment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niaInstanceId'
---
--- * 'niaDeleteOnTermination'
---
--- * 'niaStatus'
---
--- * 'niaAttachmentId'
---
--- * 'niaInstanceOwnerId'
---
--- * 'niaAttachTime'
---
--- * 'niaDeviceIndex'
-networkInterfaceAttachment
-    :: NetworkInterfaceAttachment
-networkInterfaceAttachment =
-    NetworkInterfaceAttachment'
-    { _niaInstanceId = Nothing
-    , _niaDeleteOnTermination = Nothing
-    , _niaStatus = Nothing
-    , _niaAttachmentId = Nothing
-    , _niaInstanceOwnerId = Nothing
-    , _niaAttachTime = Nothing
-    , _niaDeviceIndex = Nothing
-    }
-
--- | The ID of the instance.
-niaInstanceId :: Lens' NetworkInterfaceAttachment (Maybe Text)
-niaInstanceId = lens _niaInstanceId (\ s a -> s{_niaInstanceId = a});
-
--- | Indicates whether the network interface is deleted when the instance is
--- terminated.
-niaDeleteOnTermination :: Lens' NetworkInterfaceAttachment (Maybe Bool)
-niaDeleteOnTermination = lens _niaDeleteOnTermination (\ s a -> s{_niaDeleteOnTermination = a});
-
--- | The attachment state.
-niaStatus :: Lens' NetworkInterfaceAttachment (Maybe AttachmentStatus)
-niaStatus = lens _niaStatus (\ s a -> s{_niaStatus = a});
-
--- | The ID of the network interface attachment.
-niaAttachmentId :: Lens' NetworkInterfaceAttachment (Maybe Text)
-niaAttachmentId = lens _niaAttachmentId (\ s a -> s{_niaAttachmentId = a});
-
--- | The AWS account ID of the owner of the instance.
-niaInstanceOwnerId :: Lens' NetworkInterfaceAttachment (Maybe Text)
-niaInstanceOwnerId = lens _niaInstanceOwnerId (\ s a -> s{_niaInstanceOwnerId = a});
-
--- | The timestamp indicating when the attachment initiated.
-niaAttachTime :: Lens' NetworkInterfaceAttachment (Maybe UTCTime)
-niaAttachTime = lens _niaAttachTime (\ s a -> s{_niaAttachTime = a}) . mapping _Time;
-
--- | The device index of the network interface attachment on the instance.
-niaDeviceIndex :: Lens' NetworkInterfaceAttachment (Maybe Int)
-niaDeviceIndex = lens _niaDeviceIndex (\ s a -> s{_niaDeviceIndex = a});
-
-instance FromXML NetworkInterfaceAttachment where
-        parseXML x
-          = NetworkInterfaceAttachment' <$>
-              (x .@? "instanceId") <*>
-                (x .@? "deleteOnTermination")
-                <*> (x .@? "status")
-                <*> (x .@? "attachmentId")
-                <*> (x .@? "instanceOwnerId")
-                <*> (x .@? "attachTime")
-                <*> (x .@? "deviceIndex")
-
--- | Describes an attachment change.
---
--- /See:/ 'networkInterfaceAttachmentChanges' smart constructor.
-data NetworkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges'
-    { _niacDeleteOnTermination :: !(Maybe Bool)
-    , _niacAttachmentId        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterfaceAttachmentChanges' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niacDeleteOnTermination'
---
--- * 'niacAttachmentId'
-networkInterfaceAttachmentChanges
-    :: NetworkInterfaceAttachmentChanges
-networkInterfaceAttachmentChanges =
-    NetworkInterfaceAttachmentChanges'
-    { _niacDeleteOnTermination = Nothing
-    , _niacAttachmentId = Nothing
-    }
-
--- | Indicates whether the network interface is deleted when the instance is
--- terminated.
-niacDeleteOnTermination :: Lens' NetworkInterfaceAttachmentChanges (Maybe Bool)
-niacDeleteOnTermination = lens _niacDeleteOnTermination (\ s a -> s{_niacDeleteOnTermination = a});
-
--- | The ID of the network interface attachment.
-niacAttachmentId :: Lens' NetworkInterfaceAttachmentChanges (Maybe Text)
-niacAttachmentId = lens _niacAttachmentId (\ s a -> s{_niacAttachmentId = a});
-
-instance ToQuery NetworkInterfaceAttachmentChanges
-         where
-        toQuery NetworkInterfaceAttachmentChanges'{..}
-          = mconcat
-              ["DeleteOnTermination" =: _niacDeleteOnTermination,
-               "AttachmentId" =: _niacAttachmentId]
-
--- | Describes the private IP address of a network interface.
---
--- /See:/ 'networkInterfacePrivateIPAddress' smart constructor.
-data NetworkInterfacePrivateIPAddress = NetworkInterfacePrivateIPAddress'
-    { _nipiaPrimary          :: !(Maybe Bool)
-    , _nipiaPrivateIPAddress :: !(Maybe Text)
-    , _nipiaPrivateDNSName   :: !(Maybe Text)
-    , _nipiaAssociation      :: !(Maybe NetworkInterfaceAssociation)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterfacePrivateIPAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nipiaPrimary'
---
--- * 'nipiaPrivateIPAddress'
---
--- * 'nipiaPrivateDNSName'
---
--- * 'nipiaAssociation'
-networkInterfacePrivateIPAddress
-    :: NetworkInterfacePrivateIPAddress
-networkInterfacePrivateIPAddress =
-    NetworkInterfacePrivateIPAddress'
-    { _nipiaPrimary = Nothing
-    , _nipiaPrivateIPAddress = Nothing
-    , _nipiaPrivateDNSName = Nothing
-    , _nipiaAssociation = Nothing
-    }
-
--- | Indicates whether this IP address is the primary private IP address of
--- the network interface.
-nipiaPrimary :: Lens' NetworkInterfacePrivateIPAddress (Maybe Bool)
-nipiaPrimary = lens _nipiaPrimary (\ s a -> s{_nipiaPrimary = a});
-
--- | The private IP address.
-nipiaPrivateIPAddress :: Lens' NetworkInterfacePrivateIPAddress (Maybe Text)
-nipiaPrivateIPAddress = lens _nipiaPrivateIPAddress (\ s a -> s{_nipiaPrivateIPAddress = a});
-
--- | The private DNS name.
-nipiaPrivateDNSName :: Lens' NetworkInterfacePrivateIPAddress (Maybe Text)
-nipiaPrivateDNSName = lens _nipiaPrivateDNSName (\ s a -> s{_nipiaPrivateDNSName = a});
-
--- | The association information for an Elastic IP address associated with
--- the network interface.
-nipiaAssociation :: Lens' NetworkInterfacePrivateIPAddress (Maybe NetworkInterfaceAssociation)
-nipiaAssociation = lens _nipiaAssociation (\ s a -> s{_nipiaAssociation = a});
-
-instance FromXML NetworkInterfacePrivateIPAddress
-         where
-        parseXML x
-          = NetworkInterfacePrivateIPAddress' <$>
-              (x .@? "primary") <*> (x .@? "privateIpAddress") <*>
-                (x .@? "privateDnsName")
-                <*> (x .@? "association")
-
--- | /See:/ 'newDHCPConfiguration' smart constructor.
-data NewDHCPConfiguration = NewDHCPConfiguration'
-    { _ndcValues :: !(Maybe [Text])
-    , _ndcKey    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NewDHCPConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ndcValues'
---
--- * 'ndcKey'
-newDHCPConfiguration
-    :: NewDHCPConfiguration
-newDHCPConfiguration =
-    NewDHCPConfiguration'
-    { _ndcValues = Nothing
-    , _ndcKey = Nothing
-    }
-
--- | Undocumented member.
-ndcValues :: Lens' NewDHCPConfiguration [Text]
-ndcValues = lens _ndcValues (\ s a -> s{_ndcValues = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-ndcKey :: Lens' NewDHCPConfiguration (Maybe Text)
-ndcKey = lens _ndcKey (\ s a -> s{_ndcKey = a});
-
-instance ToQuery NewDHCPConfiguration where
-        toQuery NewDHCPConfiguration'{..}
-          = mconcat
-              [toQuery (toQueryList "Value" <$> _ndcValues),
-               "Key" =: _ndcKey]
-
--- | Describes the placement for the instance.
---
--- /See:/ 'placement' smart constructor.
-data Placement = Placement'
-    { _pAvailabilityZone :: !(Maybe Text)
-    , _pTenancy          :: !(Maybe Tenancy)
-    , _pGroupName        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Placement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pAvailabilityZone'
---
--- * 'pTenancy'
---
--- * 'pGroupName'
-placement
-    :: Placement
-placement =
-    Placement'
-    { _pAvailabilityZone = Nothing
-    , _pTenancy = Nothing
-    , _pGroupName = Nothing
-    }
-
--- | 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.
-pTenancy :: Lens' Placement (Maybe Tenancy)
-pTenancy = lens _pTenancy (\ s a -> s{_pTenancy = a});
-
--- | The name of the placement group the instance is in (for cluster compute
--- instances).
-pGroupName :: Lens' Placement (Maybe Text)
-pGroupName = lens _pGroupName (\ s a -> s{_pGroupName = a});
-
-instance FromXML Placement where
-        parseXML x
-          = Placement' <$>
-              (x .@? "availabilityZone") <*> (x .@? "tenancy") <*>
-                (x .@? "groupName")
-
-instance ToQuery Placement where
-        toQuery Placement'{..}
-          = mconcat
-              ["AvailabilityZone" =: _pAvailabilityZone,
-               "Tenancy" =: _pTenancy, "GroupName" =: _pGroupName]
-
--- | Describes a placement group.
---
--- /See:/ 'placementGroup' smart constructor.
-data PlacementGroup = PlacementGroup'
-    { _pgState     :: !(Maybe PlacementGroupState)
-    , _pgStrategy  :: !(Maybe PlacementStrategy)
-    , _pgGroupName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PlacementGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgState'
---
--- * 'pgStrategy'
---
--- * 'pgGroupName'
-placementGroup
-    :: PlacementGroup
-placementGroup =
-    PlacementGroup'
-    { _pgState = Nothing
-    , _pgStrategy = Nothing
-    , _pgGroupName = Nothing
-    }
-
--- | The state of the placement group.
-pgState :: Lens' PlacementGroup (Maybe PlacementGroupState)
-pgState = lens _pgState (\ s a -> s{_pgState = a});
-
--- | The placement strategy.
-pgStrategy :: Lens' PlacementGroup (Maybe PlacementStrategy)
-pgStrategy = lens _pgStrategy (\ s a -> s{_pgStrategy = a});
-
--- | The name of the placement group.
-pgGroupName :: Lens' PlacementGroup (Maybe Text)
-pgGroupName = lens _pgGroupName (\ s a -> s{_pgGroupName = a});
-
-instance FromXML PlacementGroup where
-        parseXML x
-          = PlacementGroup' <$>
-              (x .@? "state") <*> (x .@? "strategy") <*>
-                (x .@? "groupName")
-
--- | Describes a range of ports.
---
--- /See:/ 'portRange' smart constructor.
-data PortRange = PortRange'
-    { _prTo   :: !(Maybe Int)
-    , _prFrom :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PortRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prTo'
---
--- * 'prFrom'
-portRange
-    :: PortRange
-portRange =
-    PortRange'
-    { _prTo = Nothing
-    , _prFrom = Nothing
-    }
-
--- | The last port in the range.
-prTo :: Lens' PortRange (Maybe Int)
-prTo = lens _prTo (\ s a -> s{_prTo = a});
-
--- | The first port in the range.
-prFrom :: Lens' PortRange (Maybe Int)
-prFrom = lens _prFrom (\ s a -> s{_prFrom = a});
-
-instance FromXML PortRange where
-        parseXML x
-          = PortRange' <$> (x .@? "to") <*> (x .@? "from")
-
-instance ToQuery PortRange where
-        toQuery PortRange'{..}
-          = mconcat ["To" =: _prTo, "From" =: _prFrom]
-
--- | Describes prefixes for AWS services.
---
--- /See:/ 'prefixList' smart constructor.
-data PrefixList = PrefixList'
-    { _plCIdRs          :: !(Maybe [Text])
-    , _plPrefixListId   :: !(Maybe Text)
-    , _plPrefixListName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PrefixList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'plCIdRs'
---
--- * 'plPrefixListId'
---
--- * 'plPrefixListName'
-prefixList
-    :: PrefixList
-prefixList =
-    PrefixList'
-    { _plCIdRs = Nothing
-    , _plPrefixListId = Nothing
-    , _plPrefixListName = Nothing
-    }
-
--- | The IP address range of the AWS service.
-plCIdRs :: Lens' PrefixList [Text]
-plCIdRs = lens _plCIdRs (\ s a -> s{_plCIdRs = a}) . _Default . _Coerce;
-
--- | The ID of the prefix.
-plPrefixListId :: Lens' PrefixList (Maybe Text)
-plPrefixListId = lens _plPrefixListId (\ s a -> s{_plPrefixListId = a});
-
--- | The name of the prefix.
-plPrefixListName :: Lens' PrefixList (Maybe Text)
-plPrefixListName = lens _plPrefixListName (\ s a -> s{_plPrefixListName = a});
-
-instance FromXML PrefixList where
-        parseXML x
-          = PrefixList' <$>
-              (x .@? "cidrSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "prefixListId")
-                <*> (x .@? "prefixListName")
-
--- | The ID of the prefix.
---
--- /See:/ 'prefixListId' smart constructor.
-newtype PrefixListId = PrefixListId'
-    { _pliPrefixListId :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PrefixListId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pliPrefixListId'
-prefixListId
-    :: PrefixListId
-prefixListId =
-    PrefixListId'
-    { _pliPrefixListId = Nothing
-    }
-
--- | The ID of the prefix.
-pliPrefixListId :: Lens' PrefixListId (Maybe Text)
-pliPrefixListId = lens _pliPrefixListId (\ s a -> s{_pliPrefixListId = a});
-
-instance FromXML PrefixListId where
-        parseXML x = PrefixListId' <$> (x .@? "prefixListId")
-
-instance ToQuery PrefixListId where
-        toQuery PrefixListId'{..}
-          = mconcat ["PrefixListId" =: _pliPrefixListId]
-
--- | Describes the price for a Reserved Instance.
---
--- /See:/ 'priceSchedule' smart constructor.
-data PriceSchedule = PriceSchedule'
-    { _psCurrencyCode :: !(Maybe CurrencyCodeValues)
-    , _psTerm         :: !(Maybe Integer)
-    , _psActive       :: !(Maybe Bool)
-    , _psPrice        :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PriceSchedule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psCurrencyCode'
---
--- * 'psTerm'
---
--- * 'psActive'
---
--- * 'psPrice'
-priceSchedule
-    :: PriceSchedule
-priceSchedule =
-    PriceSchedule'
-    { _psCurrencyCode = Nothing
-    , _psTerm = Nothing
-    , _psActive = Nothing
-    , _psPrice = Nothing
-    }
-
--- | 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});
-
--- | The number of months remaining in the reservation. For example, 2 is the
--- second to the last month before the capacity reservation expires.
-psTerm :: Lens' PriceSchedule (Maybe Integer)
-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.
---
--- 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
--- 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
--- two months of the term, will be active for months 2 and 1.
-psActive :: Lens' PriceSchedule (Maybe Bool)
-psActive = lens _psActive (\ s a -> s{_psActive = a});
-
--- | The fixed price for the term.
-psPrice :: Lens' PriceSchedule (Maybe Double)
-psPrice = lens _psPrice (\ s a -> s{_psPrice = a});
-
-instance FromXML PriceSchedule where
-        parseXML x
-          = PriceSchedule' <$>
-              (x .@? "currencyCode") <*> (x .@? "term") <*>
-                (x .@? "active")
-                <*> (x .@? "price")
-
--- | Describes the price for a Reserved Instance.
---
--- /See:/ 'priceScheduleSpecification' smart constructor.
-data PriceScheduleSpecification = PriceScheduleSpecification'
-    { _pssCurrencyCode :: !(Maybe CurrencyCodeValues)
-    , _pssTerm         :: !(Maybe Integer)
-    , _pssPrice        :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PriceScheduleSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pssCurrencyCode'
---
--- * 'pssTerm'
---
--- * 'pssPrice'
-priceScheduleSpecification
-    :: PriceScheduleSpecification
-priceScheduleSpecification =
-    PriceScheduleSpecification'
-    { _pssCurrencyCode = Nothing
-    , _pssTerm = Nothing
-    , _pssPrice = Nothing
-    }
-
--- | 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});
-
--- | The number of months remaining in the reservation. For example, 2 is the
--- second to the last month before the capacity reservation expires.
-pssTerm :: Lens' PriceScheduleSpecification (Maybe Integer)
-pssTerm = lens _pssTerm (\ s a -> s{_pssTerm = a});
-
--- | The fixed price for the term.
-pssPrice :: Lens' PriceScheduleSpecification (Maybe Double)
-pssPrice = lens _pssPrice (\ s a -> s{_pssPrice = a});
-
-instance ToQuery PriceScheduleSpecification where
-        toQuery PriceScheduleSpecification'{..}
-          = mconcat
-              ["CurrencyCode" =: _pssCurrencyCode,
-               "Term" =: _pssTerm, "Price" =: _pssPrice]
-
--- | Describes a Reserved Instance offering.
---
--- /See:/ 'pricingDetail' smart constructor.
-data PricingDetail = PricingDetail'
-    { _pdCount :: !(Maybe Int)
-    , _pdPrice :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PricingDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pdCount'
---
--- * 'pdPrice'
-pricingDetail
-    :: PricingDetail
-pricingDetail =
-    PricingDetail'
-    { _pdCount = Nothing
-    , _pdPrice = Nothing
-    }
-
--- | The number of instances available for the price.
-pdCount :: Lens' PricingDetail (Maybe Int)
-pdCount = lens _pdCount (\ s a -> s{_pdCount = a});
-
--- | The price per instance.
-pdPrice :: Lens' PricingDetail (Maybe Double)
-pdPrice = lens _pdPrice (\ s a -> s{_pdPrice = a});
-
-instance FromXML PricingDetail where
-        parseXML x
-          = PricingDetail' <$>
-              (x .@? "count") <*> (x .@? "price")
-
--- | Describes a secondary private IP address for a network interface.
---
--- /See:/ 'privateIPAddressSpecification' smart constructor.
-data PrivateIPAddressSpecification = PrivateIPAddressSpecification'
-    { _piasPrimary          :: !(Maybe Bool)
-    , _piasPrivateIPAddress :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PrivateIPAddressSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piasPrimary'
---
--- * 'piasPrivateIPAddress'
-privateIPAddressSpecification
-    :: Text -- ^ 'piasPrivateIPAddress'
-    -> PrivateIPAddressSpecification
-privateIPAddressSpecification pPrivateIPAddress_ =
-    PrivateIPAddressSpecification'
-    { _piasPrimary = Nothing
-    , _piasPrivateIPAddress = pPrivateIPAddress_
-    }
-
--- | Indicates whether the private IP address is the primary private IP
--- address. Only one IP address can be designated as primary.
-piasPrimary :: Lens' PrivateIPAddressSpecification (Maybe Bool)
-piasPrimary = lens _piasPrimary (\ s a -> s{_piasPrimary = a});
-
--- | The private IP addresses.
-piasPrivateIPAddress :: Lens' PrivateIPAddressSpecification Text
-piasPrivateIPAddress = lens _piasPrivateIPAddress (\ s a -> s{_piasPrivateIPAddress = a});
-
-instance FromXML PrivateIPAddressSpecification where
-        parseXML x
-          = PrivateIPAddressSpecification' <$>
-              (x .@? "primary") <*> (x .@ "privateIpAddress")
-
-instance ToQuery PrivateIPAddressSpecification where
-        toQuery PrivateIPAddressSpecification'{..}
-          = mconcat
-              ["Primary" =: _piasPrimary,
-               "PrivateIpAddress" =: _piasPrivateIPAddress]
-
--- | Describes a product code.
---
--- /See:/ 'productCode' smart constructor.
-data ProductCode = ProductCode'
-    { _pcProductCodeType :: !(Maybe ProductCodeValues)
-    , _pcProductCodeId   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductCode' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pcProductCodeType'
---
--- * 'pcProductCodeId'
-productCode
-    :: ProductCode
-productCode =
-    ProductCode'
-    { _pcProductCodeType = Nothing
-    , _pcProductCodeId = Nothing
-    }
-
--- | The type of product code.
-pcProductCodeType :: Lens' ProductCode (Maybe ProductCodeValues)
-pcProductCodeType = lens _pcProductCodeType (\ s a -> s{_pcProductCodeType = a});
-
--- | The product code.
-pcProductCodeId :: Lens' ProductCode (Maybe Text)
-pcProductCodeId = lens _pcProductCodeId (\ s a -> s{_pcProductCodeId = a});
-
-instance FromXML ProductCode where
-        parseXML x
-          = ProductCode' <$>
-              (x .@? "type") <*> (x .@? "productCode")
-
--- | Describes a virtual private gateway propagating route.
---
--- /See:/ 'propagatingVGW' smart constructor.
-newtype PropagatingVGW = PropagatingVGW'
-    { _pvGatewayId :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropagatingVGW' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvGatewayId'
-propagatingVGW
-    :: PropagatingVGW
-propagatingVGW =
-    PropagatingVGW'
-    { _pvGatewayId = Nothing
-    }
-
--- | The ID of the virtual private gateway (VGW).
-pvGatewayId :: Lens' PropagatingVGW (Maybe Text)
-pvGatewayId = lens _pvGatewayId (\ s a -> s{_pvGatewayId = a});
-
-instance FromXML PropagatingVGW where
-        parseXML x = PropagatingVGW' <$> (x .@? "gatewayId")
-
--- | Describes a recurring charge.
---
--- /See:/ 'recurringCharge' smart constructor.
-data RecurringCharge = RecurringCharge'
-    { _rcFrequency :: !(Maybe RecurringChargeFrequency)
-    , _rcAmount    :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RecurringCharge' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcFrequency'
---
--- * 'rcAmount'
-recurringCharge
-    :: RecurringCharge
-recurringCharge =
-    RecurringCharge'
-    { _rcFrequency = Nothing
-    , _rcAmount = Nothing
-    }
-
--- | The frequency of the recurring charge.
-rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)
-rcFrequency = lens _rcFrequency (\ s a -> s{_rcFrequency = a});
-
--- | The amount of the recurring charge.
-rcAmount :: Lens' RecurringCharge (Maybe Double)
-rcAmount = lens _rcAmount (\ s a -> s{_rcAmount = a});
-
-instance FromXML RecurringCharge where
-        parseXML x
-          = RecurringCharge' <$>
-              (x .@? "frequency") <*> (x .@? "amount")
-
--- | Describes a region.
---
--- /See:/ 'regionInfo' smart constructor.
-data RegionInfo = RegionInfo'
-    { _riRegionName :: !(Maybe Text)
-    , _riEndpoint   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riRegionName'
---
--- * 'riEndpoint'
-regionInfo
-    :: RegionInfo
-regionInfo =
-    RegionInfo'
-    { _riRegionName = Nothing
-    , _riEndpoint = Nothing
-    }
-
--- | The name of the region.
-riRegionName :: Lens' RegionInfo (Maybe Text)
-riRegionName = lens _riRegionName (\ s a -> s{_riRegionName = a});
-
--- | The region service endpoint.
-riEndpoint :: Lens' RegionInfo (Maybe Text)
-riEndpoint = lens _riEndpoint (\ s a -> s{_riEndpoint = a});
-
-instance FromXML RegionInfo where
-        parseXML x
-          = RegionInfo' <$>
-              (x .@? "regionName") <*> (x .@? "regionEndpoint")
-
--- | Describes the launch specification for an instance.
---
--- /See:/ 'requestSpotLaunchSpecification' smart constructor.
-data RequestSpotLaunchSpecification = RequestSpotLaunchSpecification'
-    { _rslsSecurityGroupIds    :: !(Maybe [Text])
-    , _rslsSecurityGroups      :: !(Maybe [Text])
-    , _rslsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
-    , _rslsKeyName             :: !(Maybe Text)
-    , _rslsRAMDiskId           :: !(Maybe Text)
-    , _rslsKernelId            :: !(Maybe Text)
-    , _rslsSubnetId            :: !(Maybe Text)
-    , _rslsInstanceType        :: !(Maybe InstanceType)
-    , _rslsEBSOptimized        :: !(Maybe Bool)
-    , _rslsUserData            :: !(Maybe Text)
-    , _rslsMonitoring          :: !(Maybe RunInstancesMonitoringEnabled)
-    , _rslsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
-    , _rslsImageId             :: !(Maybe Text)
-    , _rslsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
-    , _rslsAddressingType      :: !(Maybe Text)
-    , _rslsPlacement           :: !(Maybe SpotPlacement)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RequestSpotLaunchSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rslsSecurityGroupIds'
---
--- * 'rslsSecurityGroups'
---
--- * 'rslsNetworkInterfaces'
---
--- * 'rslsKeyName'
---
--- * 'rslsRAMDiskId'
---
--- * 'rslsKernelId'
---
--- * 'rslsSubnetId'
---
--- * 'rslsInstanceType'
---
--- * 'rslsEBSOptimized'
---
--- * 'rslsUserData'
---
--- * 'rslsMonitoring'
---
--- * 'rslsIAMInstanceProfile'
---
--- * 'rslsImageId'
---
--- * 'rslsBlockDeviceMappings'
---
--- * 'rslsAddressingType'
---
--- * 'rslsPlacement'
-requestSpotLaunchSpecification
-    :: RequestSpotLaunchSpecification
-requestSpotLaunchSpecification =
-    RequestSpotLaunchSpecification'
-    { _rslsSecurityGroupIds = Nothing
-    , _rslsSecurityGroups = Nothing
-    , _rslsNetworkInterfaces = Nothing
-    , _rslsKeyName = Nothing
-    , _rslsRAMDiskId = Nothing
-    , _rslsKernelId = Nothing
-    , _rslsSubnetId = Nothing
-    , _rslsInstanceType = Nothing
-    , _rslsEBSOptimized = Nothing
-    , _rslsUserData = Nothing
-    , _rslsMonitoring = Nothing
-    , _rslsIAMInstanceProfile = Nothing
-    , _rslsImageId = Nothing
-    , _rslsBlockDeviceMappings = Nothing
-    , _rslsAddressingType = Nothing
-    , _rslsPlacement = Nothing
-    }
-
--- | Undocumented member.
-rslsSecurityGroupIds :: Lens' RequestSpotLaunchSpecification [Text]
-rslsSecurityGroupIds = lens _rslsSecurityGroupIds (\ s a -> s{_rslsSecurityGroupIds = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-rslsSecurityGroups :: Lens' RequestSpotLaunchSpecification [Text]
-rslsSecurityGroups = lens _rslsSecurityGroups (\ s a -> s{_rslsSecurityGroups = a}) . _Default . _Coerce;
-
--- | One or more network interfaces.
-rslsNetworkInterfaces :: Lens' RequestSpotLaunchSpecification [InstanceNetworkInterfaceSpecification]
-rslsNetworkInterfaces = lens _rslsNetworkInterfaces (\ s a -> s{_rslsNetworkInterfaces = a}) . _Default . _Coerce;
-
--- | The name of the key pair.
-rslsKeyName :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsKeyName = lens _rslsKeyName (\ s a -> s{_rslsKeyName = a});
-
--- | The ID of the RAM disk.
-rslsRAMDiskId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsRAMDiskId = lens _rslsRAMDiskId (\ s a -> s{_rslsRAMDiskId = a});
-
--- | The ID of the kernel.
-rslsKernelId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsKernelId = lens _rslsKernelId (\ s a -> s{_rslsKernelId = a});
-
--- | The ID of the subnet in which to launch the instance.
-rslsSubnetId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsSubnetId = lens _rslsSubnetId (\ s a -> s{_rslsSubnetId = a});
-
--- | The instance type.
-rslsInstanceType :: Lens' RequestSpotLaunchSpecification (Maybe InstanceType)
-rslsInstanceType = lens _rslsInstanceType (\ s a -> s{_rslsInstanceType = a});
-
--- | Indicates whether the instance is optimized for EBS I\/O. This
--- optimization provides dedicated throughput to Amazon EBS and an
--- optimized configuration stack to provide optimal EBS I\/O performance.
--- This optimization isn\'t available with all instance types. Additional
--- usage charges apply when using an EBS Optimized instance.
---
--- Default: 'false'
-rslsEBSOptimized :: Lens' RequestSpotLaunchSpecification (Maybe Bool)
-rslsEBSOptimized = lens _rslsEBSOptimized (\ s a -> s{_rslsEBSOptimized = a});
-
--- | The Base64-encoded MIME user data to make available to the instances.
-rslsUserData :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsUserData = lens _rslsUserData (\ s a -> s{_rslsUserData = a});
-
--- | Undocumented member.
-rslsMonitoring :: Lens' RequestSpotLaunchSpecification (Maybe RunInstancesMonitoringEnabled)
-rslsMonitoring = lens _rslsMonitoring (\ s a -> s{_rslsMonitoring = a});
-
--- | The IAM instance profile.
-rslsIAMInstanceProfile :: Lens' RequestSpotLaunchSpecification (Maybe IAMInstanceProfileSpecification)
-rslsIAMInstanceProfile = lens _rslsIAMInstanceProfile (\ s a -> s{_rslsIAMInstanceProfile = a});
-
--- | The ID of the AMI.
-rslsImageId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsImageId = lens _rslsImageId (\ s a -> s{_rslsImageId = a});
-
--- | One or more block device mapping entries.
-rslsBlockDeviceMappings :: Lens' RequestSpotLaunchSpecification [BlockDeviceMapping]
-rslsBlockDeviceMappings = lens _rslsBlockDeviceMappings (\ s a -> s{_rslsBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | Deprecated.
-rslsAddressingType :: Lens' RequestSpotLaunchSpecification (Maybe Text)
-rslsAddressingType = lens _rslsAddressingType (\ s a -> s{_rslsAddressingType = a});
-
--- | The placement information for the instance.
-rslsPlacement :: Lens' RequestSpotLaunchSpecification (Maybe SpotPlacement)
-rslsPlacement = lens _rslsPlacement (\ s a -> s{_rslsPlacement = a});
-
-instance ToQuery RequestSpotLaunchSpecification where
-        toQuery RequestSpotLaunchSpecification'{..}
-          = mconcat
-              [toQuery
-                 (toQueryList "SecurityGroupId" <$>
-                    _rslsSecurityGroupIds),
-               toQuery
-                 (toQueryList "SecurityGroup" <$>
-                    _rslsSecurityGroups),
-               toQuery
-                 (toQueryList "NetworkInterface" <$>
-                    _rslsNetworkInterfaces),
-               "KeyName" =: _rslsKeyName,
-               "RamdiskId" =: _rslsRAMDiskId,
-               "KernelId" =: _rslsKernelId,
-               "SubnetId" =: _rslsSubnetId,
-               "InstanceType" =: _rslsInstanceType,
-               "EbsOptimized" =: _rslsEBSOptimized,
-               "UserData" =: _rslsUserData,
-               "Monitoring" =: _rslsMonitoring,
-               "IamInstanceProfile" =: _rslsIAMInstanceProfile,
-               "ImageId" =: _rslsImageId,
-               toQuery
-                 (toQueryList "BlockDeviceMapping" <$>
-                    _rslsBlockDeviceMappings),
-               "AddressingType" =: _rslsAddressingType,
-               "Placement" =: _rslsPlacement]
-
--- | Describes a reservation.
---
--- /See:/ 'reservation' smart constructor.
-data Reservation = Reservation'
-    { _rGroups        :: !(Maybe [GroupIdentifier])
-    , _rInstances     :: !(Maybe [Instance])
-    , _rRequesterId   :: !(Maybe Text)
-    , _rReservationId :: !Text
-    , _rOwnerId       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Reservation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rGroups'
---
--- * 'rInstances'
---
--- * 'rRequesterId'
---
--- * 'rReservationId'
---
--- * 'rOwnerId'
-reservation
-    :: Text -- ^ 'rReservationId'
-    -> Text -- ^ 'rOwnerId'
-    -> Reservation
-reservation pReservationId_ pOwnerId_ =
-    Reservation'
-    { _rGroups = Nothing
-    , _rInstances = Nothing
-    , _rRequesterId = Nothing
-    , _rReservationId = pReservationId_
-    , _rOwnerId = pOwnerId_
-    }
-
--- | One or more security groups.
-rGroups :: Lens' Reservation [GroupIdentifier]
-rGroups = lens _rGroups (\ s a -> s{_rGroups = a}) . _Default . _Coerce;
-
--- | One or more instances.
-rInstances :: Lens' Reservation [Instance]
-rInstances = lens _rInstances (\ s a -> s{_rInstances = a}) . _Default . _Coerce;
-
--- | The ID of the requester that launched the instances on your behalf (for
--- example, AWS Management Console or Auto Scaling).
-rRequesterId :: Lens' Reservation (Maybe Text)
-rRequesterId = lens _rRequesterId (\ s a -> s{_rRequesterId = a});
-
--- | The ID of the reservation.
-rReservationId :: Lens' Reservation Text
-rReservationId = lens _rReservationId (\ s a -> s{_rReservationId = a});
-
--- | The ID of the AWS account that owns the reservation.
-rOwnerId :: Lens' Reservation Text
-rOwnerId = lens _rOwnerId (\ s a -> s{_rOwnerId = a});
-
-instance FromXML Reservation where
-        parseXML x
-          = Reservation' <$>
-              (x .@? "groupSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*>
-                (x .@? "instancesSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "requesterId")
-                <*> (x .@ "reservationId")
-                <*> (x .@ "ownerId")
-
--- | Describes the limit price of a Reserved Instance offering.
---
--- /See:/ 'reservedInstanceLimitPrice' smart constructor.
-data ReservedInstanceLimitPrice = ReservedInstanceLimitPrice'
-    { _rilpAmount       :: !(Maybe Double)
-    , _rilpCurrencyCode :: !(Maybe CurrencyCodeValues)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstanceLimitPrice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rilpAmount'
---
--- * 'rilpCurrencyCode'
-reservedInstanceLimitPrice
-    :: ReservedInstanceLimitPrice
-reservedInstanceLimitPrice =
-    ReservedInstanceLimitPrice'
-    { _rilpAmount = Nothing
-    , _rilpCurrencyCode = Nothing
-    }
-
--- | Used for Reserved Instance Marketplace offerings. Specifies the limit
--- price on the total order (instanceCount * price).
-rilpAmount :: Lens' ReservedInstanceLimitPrice (Maybe Double)
-rilpAmount = lens _rilpAmount (\ s a -> s{_rilpAmount = a});
-
--- | The currency in which the 'limitPrice' amount is specified. At this
--- time, the only supported currency is 'USD'.
-rilpCurrencyCode :: Lens' ReservedInstanceLimitPrice (Maybe CurrencyCodeValues)
-rilpCurrencyCode = lens _rilpCurrencyCode (\ s a -> s{_rilpCurrencyCode = a});
-
-instance ToQuery ReservedInstanceLimitPrice where
-        toQuery ReservedInstanceLimitPrice'{..}
-          = mconcat
-              ["Amount" =: _rilpAmount,
-               "CurrencyCode" =: _rilpCurrencyCode]
-
--- | Describes a Reserved Instance.
---
--- /See:/ 'reservedInstances' smart constructor.
-data ReservedInstances = ReservedInstances'
-    { _riState               :: !(Maybe ReservedInstanceState)
-    , _riCurrencyCode        :: !(Maybe CurrencyCodeValues)
-    , _riInstanceCount       :: !(Maybe Int)
-    , _riProductDescription  :: !(Maybe RIProductDescription)
-    , _riStart               :: !(Maybe ISO8601)
-    , _riInstanceType        :: !(Maybe InstanceType)
-    , _riAvailabilityZone    :: !(Maybe Text)
-    , _riEnd                 :: !(Maybe ISO8601)
-    , _riOfferingType        :: !(Maybe OfferingTypeValues)
-    , _riUsagePrice          :: !(Maybe Double)
-    , _riRecurringCharges    :: !(Maybe [RecurringCharge])
-    , _riInstanceTenancy     :: !(Maybe Tenancy)
-    , _riFixedPrice          :: !(Maybe Double)
-    , _riReservedInstancesId :: !(Maybe Text)
-    , _riDuration            :: !(Maybe Integer)
-    , _riTags                :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstances' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riState'
---
--- * 'riCurrencyCode'
---
--- * 'riInstanceCount'
---
--- * 'riProductDescription'
---
--- * 'riStart'
---
--- * 'riInstanceType'
---
--- * 'riAvailabilityZone'
---
--- * 'riEnd'
---
--- * 'riOfferingType'
---
--- * 'riUsagePrice'
---
--- * 'riRecurringCharges'
---
--- * 'riInstanceTenancy'
---
--- * 'riFixedPrice'
---
--- * 'riReservedInstancesId'
---
--- * 'riDuration'
---
--- * 'riTags'
-reservedInstances
-    :: ReservedInstances
-reservedInstances =
-    ReservedInstances'
-    { _riState = Nothing
-    , _riCurrencyCode = Nothing
-    , _riInstanceCount = Nothing
-    , _riProductDescription = Nothing
-    , _riStart = Nothing
-    , _riInstanceType = Nothing
-    , _riAvailabilityZone = Nothing
-    , _riEnd = Nothing
-    , _riOfferingType = Nothing
-    , _riUsagePrice = Nothing
-    , _riRecurringCharges = Nothing
-    , _riInstanceTenancy = Nothing
-    , _riFixedPrice = Nothing
-    , _riReservedInstancesId = Nothing
-    , _riDuration = Nothing
-    , _riTags = Nothing
-    }
-
--- | 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
--- 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.
-riInstanceCount :: Lens' ReservedInstances (Maybe Int)
-riInstanceCount = lens _riInstanceCount (\ s a -> s{_riInstanceCount = a});
-
--- | 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.
-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.
-riInstanceType :: Lens' ReservedInstances (Maybe InstanceType)
-riInstanceType = lens _riInstanceType (\ s a -> s{_riInstanceType = a});
-
--- | The Availability Zone in which the Reserved Instance can be used.
-riAvailabilityZone :: Lens' ReservedInstances (Maybe Text)
-riAvailabilityZone = lens _riAvailabilityZone (\ s a -> s{_riAvailabilityZone = a});
-
--- | The time when the Reserved Instance expires.
-riEnd :: Lens' ReservedInstances (Maybe UTCTime)
-riEnd = lens _riEnd (\ s a -> s{_riEnd = a}) . mapping _Time;
-
--- | 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.
-riUsagePrice :: Lens' ReservedInstances (Maybe Double)
-riUsagePrice = lens _riUsagePrice (\ s a -> s{_riUsagePrice = a});
-
--- | The recurring charge tag assigned to the resource.
-riRecurringCharges :: Lens' ReservedInstances [RecurringCharge]
-riRecurringCharges = lens _riRecurringCharges (\ s a -> s{_riRecurringCharges = a}) . _Default . _Coerce;
-
--- | The tenancy of the reserved instance.
-riInstanceTenancy :: Lens' ReservedInstances (Maybe Tenancy)
-riInstanceTenancy = lens _riInstanceTenancy (\ s a -> s{_riInstanceTenancy = a});
-
--- | 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.
-riReservedInstancesId :: Lens' ReservedInstances (Maybe Text)
-riReservedInstancesId = lens _riReservedInstancesId (\ s a -> s{_riReservedInstancesId = a});
-
--- | The duration of the Reserved Instance, in seconds.
-riDuration :: Lens' ReservedInstances (Maybe Integer)
-riDuration = lens _riDuration (\ s a -> s{_riDuration = a});
-
--- | Any tags assigned to the resource.
-riTags :: Lens' ReservedInstances [Tag]
-riTags = lens _riTags (\ s a -> s{_riTags = a}) . _Default . _Coerce;
-
-instance FromXML ReservedInstances where
-        parseXML x
-          = ReservedInstances' <$>
-              (x .@? "state") <*> (x .@? "currencyCode") <*>
-                (x .@? "instanceCount")
-                <*> (x .@? "productDescription")
-                <*> (x .@? "start")
-                <*> (x .@? "instanceType")
-                <*> (x .@? "availabilityZone")
-                <*> (x .@? "end")
-                <*> (x .@? "offeringType")
-                <*> (x .@? "usagePrice")
-                <*>
-                (x .@? "recurringCharges" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "instanceTenancy")
-                <*> (x .@? "fixedPrice")
-                <*> (x .@? "reservedInstancesId")
-                <*> (x .@? "duration")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes the configuration settings for the modified Reserved
--- Instances.
---
--- /See:/ 'reservedInstancesConfiguration' smart constructor.
-data ReservedInstancesConfiguration = ReservedInstancesConfiguration'
-    { _ricPlatform         :: !(Maybe Text)
-    , _ricInstanceCount    :: !(Maybe Int)
-    , _ricInstanceType     :: !(Maybe InstanceType)
-    , _ricAvailabilityZone :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ricPlatform'
---
--- * 'ricInstanceCount'
---
--- * 'ricInstanceType'
---
--- * 'ricAvailabilityZone'
-reservedInstancesConfiguration
-    :: ReservedInstancesConfiguration
-reservedInstancesConfiguration =
-    ReservedInstancesConfiguration'
-    { _ricPlatform = Nothing
-    , _ricInstanceCount = Nothing
-    , _ricInstanceType = Nothing
-    , _ricAvailabilityZone = Nothing
-    }
-
--- | 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.
-ricInstanceCount :: Lens' ReservedInstancesConfiguration (Maybe Int)
-ricInstanceCount = lens _ricInstanceCount (\ s a -> s{_ricInstanceCount = a});
-
--- | 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.
-ricAvailabilityZone :: Lens' ReservedInstancesConfiguration (Maybe Text)
-ricAvailabilityZone = lens _ricAvailabilityZone (\ s a -> s{_ricAvailabilityZone = a});
-
-instance FromXML ReservedInstancesConfiguration where
-        parseXML x
-          = ReservedInstancesConfiguration' <$>
-              (x .@? "platform") <*> (x .@? "instanceCount") <*>
-                (x .@? "instanceType")
-                <*> (x .@? "availabilityZone")
-
-instance ToQuery ReservedInstancesConfiguration where
-        toQuery ReservedInstancesConfiguration'{..}
-          = mconcat
-              ["Platform" =: _ricPlatform,
-               "InstanceCount" =: _ricInstanceCount,
-               "InstanceType" =: _ricInstanceType,
-               "AvailabilityZone" =: _ricAvailabilityZone]
-
--- | Describes the ID of a Reserved Instance.
---
--- /See:/ 'reservedInstancesId' smart constructor.
-newtype ReservedInstancesId = ReservedInstancesId'
-    { _riiReservedInstancesId :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riiReservedInstancesId'
-reservedInstancesId
-    :: ReservedInstancesId
-reservedInstancesId =
-    ReservedInstancesId'
-    { _riiReservedInstancesId = Nothing
-    }
-
--- | The ID of the Reserved Instance.
-riiReservedInstancesId :: Lens' ReservedInstancesId (Maybe Text)
-riiReservedInstancesId = lens _riiReservedInstancesId (\ s a -> s{_riiReservedInstancesId = a});
-
-instance FromXML ReservedInstancesId where
-        parseXML x
-          = ReservedInstancesId' <$>
-              (x .@? "reservedInstancesId")
-
--- | Describes a Reserved Instance listing.
---
--- /See:/ 'reservedInstancesListing' smart constructor.
-data ReservedInstancesListing = ReservedInstancesListing'
-    { _rilStatus                     :: !(Maybe ListingStatus)
-    , _rilClientToken                :: !(Maybe Text)
-    , _rilUpdateDate                 :: !(Maybe ISO8601)
-    , _rilCreateDate                 :: !(Maybe ISO8601)
-    , _rilPriceSchedules             :: !(Maybe [PriceSchedule])
-    , _rilStatusMessage              :: !(Maybe Text)
-    , _rilReservedInstancesId        :: !(Maybe Text)
-    , _rilInstanceCounts             :: !(Maybe [InstanceCount])
-    , _rilReservedInstancesListingId :: !(Maybe Text)
-    , _rilTags                       :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesListing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rilStatus'
---
--- * 'rilClientToken'
---
--- * 'rilUpdateDate'
---
--- * 'rilCreateDate'
---
--- * 'rilPriceSchedules'
---
--- * 'rilStatusMessage'
---
--- * 'rilReservedInstancesId'
---
--- * 'rilInstanceCounts'
---
--- * 'rilReservedInstancesListingId'
---
--- * 'rilTags'
-reservedInstancesListing
-    :: ReservedInstancesListing
-reservedInstancesListing =
-    ReservedInstancesListing'
-    { _rilStatus = Nothing
-    , _rilClientToken = Nothing
-    , _rilUpdateDate = Nothing
-    , _rilCreateDate = Nothing
-    , _rilPriceSchedules = Nothing
-    , _rilStatusMessage = Nothing
-    , _rilReservedInstancesId = Nothing
-    , _rilInstanceCounts = Nothing
-    , _rilReservedInstancesListingId = Nothing
-    , _rilTags = Nothing
-    }
-
--- | The status of the Reserved Instance listing.
-rilStatus :: Lens' ReservedInstancesListing (Maybe ListingStatus)
-rilStatus = lens _rilStatus (\ s a -> s{_rilStatus = a});
-
--- | A unique, case-sensitive key supplied by the client to ensure that the
--- request is idempotent. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
-rilClientToken :: Lens' ReservedInstancesListing (Maybe Text)
-rilClientToken = lens _rilClientToken (\ s a -> s{_rilClientToken = a});
-
--- | The last modified timestamp of the listing.
-rilUpdateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)
-rilUpdateDate = lens _rilUpdateDate (\ s a -> s{_rilUpdateDate = a}) . mapping _Time;
-
--- | The time the listing was created.
-rilCreateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)
-rilCreateDate = lens _rilCreateDate (\ s a -> s{_rilCreateDate = a}) . mapping _Time;
-
--- | 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
--- response can be blank.
-rilStatusMessage :: Lens' ReservedInstancesListing (Maybe Text)
-rilStatusMessage = lens _rilStatusMessage (\ s a -> s{_rilStatusMessage = a});
-
--- | The ID of the Reserved Instance.
-rilReservedInstancesId :: Lens' ReservedInstancesListing (Maybe Text)
-rilReservedInstancesId = lens _rilReservedInstancesId (\ s a -> s{_rilReservedInstancesId = a});
-
--- | The number of instances in this state.
-rilInstanceCounts :: Lens' ReservedInstancesListing [InstanceCount]
-rilInstanceCounts = lens _rilInstanceCounts (\ s a -> s{_rilInstanceCounts = a}) . _Default . _Coerce;
-
--- | The ID of the Reserved Instance listing.
-rilReservedInstancesListingId :: Lens' ReservedInstancesListing (Maybe Text)
-rilReservedInstancesListingId = lens _rilReservedInstancesListingId (\ s a -> s{_rilReservedInstancesListingId = a});
-
--- | Any tags assigned to the resource.
-rilTags :: Lens' ReservedInstancesListing [Tag]
-rilTags = lens _rilTags (\ s a -> s{_rilTags = a}) . _Default . _Coerce;
-
-instance FromXML ReservedInstancesListing where
-        parseXML x
-          = ReservedInstancesListing' <$>
-              (x .@? "status") <*> (x .@? "clientToken") <*>
-                (x .@? "updateDate")
-                <*> (x .@? "createDate")
-                <*>
-                (x .@? "priceSchedules" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "statusMessage")
-                <*> (x .@? "reservedInstancesId")
-                <*>
-                (x .@? "instanceCounts" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "reservedInstancesListingId")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes a Reserved Instance modification.
---
--- /See:/ 'reservedInstancesModification' smart constructor.
-data ReservedInstancesModification = ReservedInstancesModification'
-    { _rimModificationResults             :: !(Maybe [ReservedInstancesModificationResult])
-    , _rimStatus                          :: !(Maybe Text)
-    , _rimClientToken                     :: !(Maybe Text)
-    , _rimUpdateDate                      :: !(Maybe ISO8601)
-    , _rimCreateDate                      :: !(Maybe ISO8601)
-    , _rimEffectiveDate                   :: !(Maybe ISO8601)
-    , _rimStatusMessage                   :: !(Maybe Text)
-    , _rimReservedInstancesModificationId :: !(Maybe Text)
-    , _rimReservedInstancesIds            :: !(Maybe [ReservedInstancesId])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesModification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rimModificationResults'
---
--- * 'rimStatus'
---
--- * 'rimClientToken'
---
--- * 'rimUpdateDate'
---
--- * 'rimCreateDate'
---
--- * 'rimEffectiveDate'
---
--- * 'rimStatusMessage'
---
--- * 'rimReservedInstancesModificationId'
---
--- * 'rimReservedInstancesIds'
-reservedInstancesModification
-    :: ReservedInstancesModification
-reservedInstancesModification =
-    ReservedInstancesModification'
-    { _rimModificationResults = Nothing
-    , _rimStatus = Nothing
-    , _rimClientToken = Nothing
-    , _rimUpdateDate = Nothing
-    , _rimCreateDate = Nothing
-    , _rimEffectiveDate = Nothing
-    , _rimStatusMessage = Nothing
-    , _rimReservedInstancesModificationId = Nothing
-    , _rimReservedInstancesIds = Nothing
-    }
-
--- | Contains target configurations along with their corresponding new
--- 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.
-rimStatus :: Lens' ReservedInstancesModification (Maybe Text)
-rimStatus = lens _rimStatus (\ s a -> s{_rimStatus = a});
-
--- | A unique, case-sensitive key supplied by the client to ensure that the
--- request is idempotent. For more information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
-rimClientToken :: Lens' ReservedInstancesModification (Maybe Text)
-rimClientToken = lens _rimClientToken (\ s a -> s{_rimClientToken = a});
-
--- | The time when the modification request was last updated.
-rimUpdateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
-rimUpdateDate = lens _rimUpdateDate (\ s a -> s{_rimUpdateDate = a}) . mapping _Time;
-
--- | The time when the modification request was created.
-rimCreateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
-rimCreateDate = lens _rimCreateDate (\ s a -> s{_rimCreateDate = a}) . mapping _Time;
-
--- | The time for the modification to become effective.
-rimEffectiveDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
-rimEffectiveDate = lens _rimEffectiveDate (\ s a -> s{_rimEffectiveDate = a}) . mapping _Time;
-
--- | The reason for the status.
-rimStatusMessage :: Lens' ReservedInstancesModification (Maybe Text)
-rimStatusMessage = lens _rimStatusMessage (\ s a -> s{_rimStatusMessage = a});
-
--- | 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.
-rimReservedInstancesIds :: Lens' ReservedInstancesModification [ReservedInstancesId]
-rimReservedInstancesIds = lens _rimReservedInstancesIds (\ s a -> s{_rimReservedInstancesIds = a}) . _Default . _Coerce;
-
-instance FromXML ReservedInstancesModification where
-        parseXML x
-          = ReservedInstancesModification' <$>
-              (x .@? "modificationResultSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "status")
-                <*> (x .@? "clientToken")
-                <*> (x .@? "updateDate")
-                <*> (x .@? "createDate")
-                <*> (x .@? "effectiveDate")
-                <*> (x .@? "statusMessage")
-                <*> (x .@? "reservedInstancesModificationId")
-                <*>
-                (x .@? "reservedInstancesSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | /See:/ 'reservedInstancesModificationResult' smart constructor.
-data ReservedInstancesModificationResult = ReservedInstancesModificationResult'
-    { _rimrReservedInstancesId :: !(Maybe Text)
-    , _rimrTargetConfiguration :: !(Maybe ReservedInstancesConfiguration)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesModificationResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rimrReservedInstancesId'
---
--- * 'rimrTargetConfiguration'
-reservedInstancesModificationResult
-    :: ReservedInstancesModificationResult
-reservedInstancesModificationResult =
-    ReservedInstancesModificationResult'
-    { _rimrReservedInstancesId = Nothing
-    , _rimrTargetConfiguration = Nothing
-    }
-
--- | 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
--- modification request.
-rimrTargetConfiguration :: Lens' ReservedInstancesModificationResult (Maybe ReservedInstancesConfiguration)
-rimrTargetConfiguration = lens _rimrTargetConfiguration (\ s a -> s{_rimrTargetConfiguration = a});
-
-instance FromXML ReservedInstancesModificationResult
-         where
-        parseXML x
-          = ReservedInstancesModificationResult' <$>
-              (x .@? "reservedInstancesId") <*>
-                (x .@? "targetConfiguration")
-
--- | Describes a Reserved Instance offering.
---
--- /See:/ 'reservedInstancesOffering' smart constructor.
-data ReservedInstancesOffering = ReservedInstancesOffering'
-    { _rioMarketplace                 :: !(Maybe Bool)
-    , _rioCurrencyCode                :: !(Maybe CurrencyCodeValues)
-    , _rioProductDescription          :: !(Maybe RIProductDescription)
-    , _rioInstanceType                :: !(Maybe InstanceType)
-    , _rioAvailabilityZone            :: !(Maybe Text)
-    , _rioPricingDetails              :: !(Maybe [PricingDetail])
-    , _rioOfferingType                :: !(Maybe OfferingTypeValues)
-    , _rioUsagePrice                  :: !(Maybe Double)
-    , _rioRecurringCharges            :: !(Maybe [RecurringCharge])
-    , _rioReservedInstancesOfferingId :: !(Maybe Text)
-    , _rioInstanceTenancy             :: !(Maybe Tenancy)
-    , _rioFixedPrice                  :: !(Maybe Double)
-    , _rioDuration                    :: !(Maybe Integer)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReservedInstancesOffering' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rioMarketplace'
---
--- * 'rioCurrencyCode'
---
--- * 'rioProductDescription'
---
--- * 'rioInstanceType'
---
--- * 'rioAvailabilityZone'
---
--- * 'rioPricingDetails'
---
--- * 'rioOfferingType'
---
--- * 'rioUsagePrice'
---
--- * 'rioRecurringCharges'
---
--- * 'rioReservedInstancesOfferingId'
---
--- * 'rioInstanceTenancy'
---
--- * 'rioFixedPrice'
---
--- * 'rioDuration'
-reservedInstancesOffering
-    :: ReservedInstancesOffering
-reservedInstancesOffering =
-    ReservedInstancesOffering'
-    { _rioMarketplace = Nothing
-    , _rioCurrencyCode = Nothing
-    , _rioProductDescription = Nothing
-    , _rioInstanceType = Nothing
-    , _rioAvailabilityZone = Nothing
-    , _rioPricingDetails = Nothing
-    , _rioOfferingType = Nothing
-    , _rioUsagePrice = Nothing
-    , _rioRecurringCharges = Nothing
-    , _rioReservedInstancesOfferingId = Nothing
-    , _rioInstanceTenancy = Nothing
-    , _rioFixedPrice = Nothing
-    , _rioDuration = Nothing
-    }
-
--- | Indicates whether the offering is available through the Reserved
--- Instance Marketplace (resale) or AWS. If it\'s a Reserved Instance
--- Marketplace offering, this is 'true'.
-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
--- 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.
-rioProductDescription :: Lens' ReservedInstancesOffering (Maybe RIProductDescription)
-rioProductDescription = lens _rioProductDescription (\ s a -> s{_rioProductDescription = a});
-
--- | 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.
-rioAvailabilityZone :: Lens' ReservedInstancesOffering (Maybe Text)
-rioAvailabilityZone = lens _rioAvailabilityZone (\ s a -> s{_rioAvailabilityZone = a});
-
--- | The pricing details of the Reserved Instance offering.
-rioPricingDetails :: Lens' ReservedInstancesOffering [PricingDetail]
-rioPricingDetails = lens _rioPricingDetails (\ s a -> s{_rioPricingDetails = a}) . _Default . _Coerce;
-
--- | 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.
-rioUsagePrice :: Lens' ReservedInstancesOffering (Maybe Double)
-rioUsagePrice = lens _rioUsagePrice (\ s a -> s{_rioUsagePrice = a});
-
--- | The recurring charge tag assigned to the resource.
-rioRecurringCharges :: Lens' ReservedInstancesOffering [RecurringCharge]
-rioRecurringCharges = lens _rioRecurringCharges (\ s a -> s{_rioRecurringCharges = a}) . _Default . _Coerce;
-
--- | The ID of the Reserved Instance offering.
-rioReservedInstancesOfferingId :: Lens' ReservedInstancesOffering (Maybe Text)
-rioReservedInstancesOfferingId = lens _rioReservedInstancesOfferingId (\ s a -> s{_rioReservedInstancesOfferingId = a});
-
--- | The tenancy of the reserved instance.
-rioInstanceTenancy :: Lens' ReservedInstancesOffering (Maybe Tenancy)
-rioInstanceTenancy = lens _rioInstanceTenancy (\ s a -> s{_rioInstanceTenancy = a});
-
--- | The purchase price of the Reserved Instance.
-rioFixedPrice :: Lens' ReservedInstancesOffering (Maybe Double)
-rioFixedPrice = lens _rioFixedPrice (\ s a -> s{_rioFixedPrice = a});
-
--- | The duration of the Reserved Instance, in seconds.
-rioDuration :: Lens' ReservedInstancesOffering (Maybe Integer)
-rioDuration = lens _rioDuration (\ s a -> s{_rioDuration = a});
-
-instance FromXML ReservedInstancesOffering where
-        parseXML x
-          = ReservedInstancesOffering' <$>
-              (x .@? "marketplace") <*> (x .@? "currencyCode") <*>
-                (x .@? "productDescription")
-                <*> (x .@? "instanceType")
-                <*> (x .@? "availabilityZone")
-                <*>
-                (x .@? "pricingDetailsSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "offeringType")
-                <*> (x .@? "usagePrice")
-                <*>
-                (x .@? "recurringCharges" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "reservedInstancesOfferingId")
-                <*> (x .@? "instanceTenancy")
-                <*> (x .@? "fixedPrice")
-                <*> (x .@? "duration")
-
--- | Describes a route in a route table.
---
--- /See:/ 'route' smart constructor.
-data Route = Route'
-    { _rInstanceId              :: !(Maybe Text)
-    , _rOrigin                  :: !(Maybe RouteOrigin)
-    , _rVPCPeeringConnectionId  :: !(Maybe Text)
-    , _rState                   :: !(Maybe RouteState)
-    , _rNetworkInterfaceId      :: !(Maybe Text)
-    , _rGatewayId               :: !(Maybe Text)
-    , _rInstanceOwnerId         :: !(Maybe Text)
-    , _rDestinationPrefixListId :: !(Maybe Text)
-    , _rDestinationCIdRBlock    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Route' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rInstanceId'
---
--- * 'rOrigin'
---
--- * 'rVPCPeeringConnectionId'
---
--- * 'rState'
---
--- * 'rNetworkInterfaceId'
---
--- * 'rGatewayId'
---
--- * 'rInstanceOwnerId'
---
--- * 'rDestinationPrefixListId'
---
--- * 'rDestinationCIdRBlock'
-route
-    :: Route
-route =
-    Route'
-    { _rInstanceId = Nothing
-    , _rOrigin = Nothing
-    , _rVPCPeeringConnectionId = Nothing
-    , _rState = Nothing
-    , _rNetworkInterfaceId = Nothing
-    , _rGatewayId = Nothing
-    , _rInstanceOwnerId = Nothing
-    , _rDestinationPrefixListId = Nothing
-    , _rDestinationCIdRBlock = Nothing
-    }
-
--- | The ID of a NAT instance in your VPC.
-rInstanceId :: Lens' Route (Maybe Text)
-rInstanceId = lens _rInstanceId (\ s a -> s{_rInstanceId = a});
-
--- | Describes how the route was created.
---
--- -   'CreateRouteTable' indicates that route was automatically created
---     when the route table was created.
--- -   'CreateRoute' indicates that the route was manually added to the
---     route table.
--- -   'EnableVgwRoutePropagation' indicates that the route was propagated
---     by route propagation.
-rOrigin :: Lens' Route (Maybe RouteOrigin)
-rOrigin = lens _rOrigin (\ s a -> s{_rOrigin = a});
-
--- | The ID of the VPC peering connection.
-rVPCPeeringConnectionId :: Lens' Route (Maybe Text)
-rVPCPeeringConnectionId = lens _rVPCPeeringConnectionId (\ s a -> s{_rVPCPeeringConnectionId = a});
-
--- | The state of the route. The 'blackhole' state indicates that the
--- route\'s target isn\'t available (for example, the specified gateway
--- isn\'t attached to the VPC, or the specified NAT instance has been
--- terminated).
-rState :: Lens' Route (Maybe RouteState)
-rState = lens _rState (\ s a -> s{_rState = a});
-
--- | The ID of the network interface.
-rNetworkInterfaceId :: Lens' Route (Maybe Text)
-rNetworkInterfaceId = lens _rNetworkInterfaceId (\ s a -> s{_rNetworkInterfaceId = a});
-
--- | The ID of a gateway attached to your VPC.
-rGatewayId :: Lens' Route (Maybe Text)
-rGatewayId = lens _rGatewayId (\ s a -> s{_rGatewayId = a});
-
--- | The AWS account ID of the owner of the instance.
-rInstanceOwnerId :: Lens' Route (Maybe Text)
-rInstanceOwnerId = lens _rInstanceOwnerId (\ s a -> s{_rInstanceOwnerId = a});
-
--- | The prefix of the AWS service.
-rDestinationPrefixListId :: Lens' Route (Maybe Text)
-rDestinationPrefixListId = lens _rDestinationPrefixListId (\ s a -> s{_rDestinationPrefixListId = a});
-
--- | The CIDR block used for the destination match.
-rDestinationCIdRBlock :: Lens' Route (Maybe Text)
-rDestinationCIdRBlock = lens _rDestinationCIdRBlock (\ s a -> s{_rDestinationCIdRBlock = a});
-
-instance FromXML Route where
-        parseXML x
-          = Route' <$>
-              (x .@? "instanceId") <*> (x .@? "origin") <*>
-                (x .@? "vpcPeeringConnectionId")
-                <*> (x .@? "state")
-                <*> (x .@? "networkInterfaceId")
-                <*> (x .@? "gatewayId")
-                <*> (x .@? "instanceOwnerId")
-                <*> (x .@? "destinationPrefixListId")
-                <*> (x .@? "destinationCidrBlock")
-
--- | Describes a route table.
---
--- /See:/ 'routeTable' smart constructor.
-data RouteTable = RouteTable'
-    { _rtRoutes          :: !(Maybe [Route])
-    , _rtRouteTableId    :: !(Maybe Text)
-    , _rtVPCId           :: !(Maybe Text)
-    , _rtPropagatingVGWs :: !(Maybe [PropagatingVGW])
-    , _rtAssociations    :: !(Maybe [RouteTableAssociation])
-    , _rtTags            :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouteTable' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rtRoutes'
---
--- * 'rtRouteTableId'
---
--- * 'rtVPCId'
---
--- * 'rtPropagatingVGWs'
---
--- * 'rtAssociations'
---
--- * 'rtTags'
-routeTable
-    :: RouteTable
-routeTable =
-    RouteTable'
-    { _rtRoutes = Nothing
-    , _rtRouteTableId = Nothing
-    , _rtVPCId = Nothing
-    , _rtPropagatingVGWs = Nothing
-    , _rtAssociations = Nothing
-    , _rtTags = Nothing
-    }
-
--- | The routes in the route table.
-rtRoutes :: Lens' RouteTable [Route]
-rtRoutes = lens _rtRoutes (\ s a -> s{_rtRoutes = a}) . _Default . _Coerce;
-
--- | The ID of the route table.
-rtRouteTableId :: Lens' RouteTable (Maybe Text)
-rtRouteTableId = lens _rtRouteTableId (\ s a -> s{_rtRouteTableId = a});
-
--- | The ID of the VPC.
-rtVPCId :: Lens' RouteTable (Maybe Text)
-rtVPCId = lens _rtVPCId (\ s a -> s{_rtVPCId = a});
-
--- | Any virtual private gateway (VGW) propagating routes.
-rtPropagatingVGWs :: Lens' RouteTable [PropagatingVGW]
-rtPropagatingVGWs = lens _rtPropagatingVGWs (\ s a -> s{_rtPropagatingVGWs = a}) . _Default . _Coerce;
-
--- | The associations between the route table and one or more subnets.
-rtAssociations :: Lens' RouteTable [RouteTableAssociation]
-rtAssociations = lens _rtAssociations (\ s a -> s{_rtAssociations = a}) . _Default . _Coerce;
-
--- | Any tags assigned to the route table.
-rtTags :: Lens' RouteTable [Tag]
-rtTags = lens _rtTags (\ s a -> s{_rtTags = a}) . _Default . _Coerce;
-
-instance FromXML RouteTable where
-        parseXML x
-          = RouteTable' <$>
-              (x .@? "routeSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "routeTableId")
-                <*> (x .@? "vpcId")
-                <*>
-                (x .@? "propagatingVgwSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "associationSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes an association between a route table and a subnet.
---
--- /See:/ 'routeTableAssociation' smart constructor.
-data RouteTableAssociation = RouteTableAssociation'
-    { _rtaRouteTableId            :: !(Maybe Text)
-    , _rtaRouteTableAssociationId :: !(Maybe Text)
-    , _rtaMain                    :: !(Maybe Bool)
-    , _rtaSubnetId                :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouteTableAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rtaRouteTableId'
---
--- * 'rtaRouteTableAssociationId'
---
--- * 'rtaMain'
---
--- * 'rtaSubnetId'
-routeTableAssociation
-    :: RouteTableAssociation
-routeTableAssociation =
-    RouteTableAssociation'
-    { _rtaRouteTableId = Nothing
-    , _rtaRouteTableAssociationId = Nothing
-    , _rtaMain = Nothing
-    , _rtaSubnetId = Nothing
-    }
-
--- | The ID of the route table.
-rtaRouteTableId :: Lens' RouteTableAssociation (Maybe Text)
-rtaRouteTableId = lens _rtaRouteTableId (\ s a -> s{_rtaRouteTableId = a});
-
--- | The ID of the association between a route table and a subnet.
-rtaRouteTableAssociationId :: Lens' RouteTableAssociation (Maybe Text)
-rtaRouteTableAssociationId = lens _rtaRouteTableAssociationId (\ s a -> s{_rtaRouteTableAssociationId = a});
-
--- | Indicates whether this is the main route table.
-rtaMain :: Lens' RouteTableAssociation (Maybe Bool)
-rtaMain = lens _rtaMain (\ s a -> s{_rtaMain = a});
-
--- | The ID of the subnet. A subnet ID is not returned for an implicit
--- association.
-rtaSubnetId :: Lens' RouteTableAssociation (Maybe Text)
-rtaSubnetId = lens _rtaSubnetId (\ s a -> s{_rtaSubnetId = a});
-
-instance FromXML RouteTableAssociation where
-        parseXML x
-          = RouteTableAssociation' <$>
-              (x .@? "routeTableId") <*>
-                (x .@? "routeTableAssociationId")
-                <*> (x .@? "main")
-                <*> (x .@? "subnetId")
-
--- | Describes the monitoring for the instance.
---
--- /See:/ 'runInstancesMonitoringEnabled' smart constructor.
-newtype RunInstancesMonitoringEnabled = RunInstancesMonitoringEnabled'
-    { _rimeEnabled :: Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RunInstancesMonitoringEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rimeEnabled'
-runInstancesMonitoringEnabled
-    :: Bool -- ^ 'rimeEnabled'
-    -> RunInstancesMonitoringEnabled
-runInstancesMonitoringEnabled pEnabled_ =
-    RunInstancesMonitoringEnabled'
-    { _rimeEnabled = pEnabled_
-    }
-
--- | Indicates whether monitoring is enabled for the instance.
-rimeEnabled :: Lens' RunInstancesMonitoringEnabled Bool
-rimeEnabled = lens _rimeEnabled (\ s a -> s{_rimeEnabled = a});
-
-instance FromXML RunInstancesMonitoringEnabled where
-        parseXML x
-          = RunInstancesMonitoringEnabled' <$> (x .@ "enabled")
-
-instance ToQuery RunInstancesMonitoringEnabled where
-        toQuery RunInstancesMonitoringEnabled'{..}
-          = mconcat ["Enabled" =: _rimeEnabled]
-
--- | Describes the storage parameters for S3 and S3 buckets for an instance
--- store-backed AMI.
---
--- /See:/ 's3Storage' smart constructor.
-data S3Storage = S3Storage'
-    { _ssPrefix                :: !(Maybe Text)
-    , _ssUploadPolicy          :: !(Maybe Base64)
-    , _ssBucket                :: !(Maybe Text)
-    , _ssUploadPolicySignature :: !(Maybe Text)
-    , _ssAWSAccessKeyId        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'S3Storage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssPrefix'
---
--- * 'ssUploadPolicy'
---
--- * 'ssBucket'
---
--- * 'ssUploadPolicySignature'
---
--- * 'ssAWSAccessKeyId'
-s3Storage
-    :: S3Storage
-s3Storage =
-    S3Storage'
-    { _ssPrefix = Nothing
-    , _ssUploadPolicy = Nothing
-    , _ssBucket = Nothing
-    , _ssUploadPolicySignature = Nothing
-    , _ssAWSAccessKeyId = Nothing
-    }
-
--- | The beginning of the file name of the AMI.
-ssPrefix :: Lens' S3Storage (Maybe Text)
-ssPrefix = lens _ssPrefix (\ s a -> s{_ssPrefix = a});
-
--- | A Base64-encoded Amazon S3 upload policy that gives Amazon EC2
--- permission to upload items into Amazon S3 on your behalf.
---
--- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
--- despite what the AWS documentation might say.
--- The underlying isomorphism will encode to Base64 representation during
--- serialisation, and decode from Base64 representation during deserialisation.
--- This 'Lens' accepts and returns only raw unencoded data.
-ssUploadPolicy :: Lens' S3Storage (Maybe ByteString)
-ssUploadPolicy = lens _ssUploadPolicy (\ s a -> s{_ssUploadPolicy = a}) . mapping _Base64;
-
--- | The bucket in which to store the AMI. You can specify a bucket that you
--- already own or a new bucket that Amazon EC2 creates on your behalf. If
--- you specify a bucket that belongs to someone else, Amazon EC2 returns an
--- error.
-ssBucket :: Lens' S3Storage (Maybe Text)
-ssBucket = lens _ssBucket (\ s a -> s{_ssBucket = a});
-
--- | The signature of the Base64 encoded JSON document.
-ssUploadPolicySignature :: Lens' S3Storage (Maybe Text)
-ssUploadPolicySignature = lens _ssUploadPolicySignature (\ s a -> s{_ssUploadPolicySignature = a});
-
--- | The access key ID of the owner of the bucket. Before you specify a value
--- for your access key ID, review and follow the guidance in
--- <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html Best Practices for Managing AWS Access Keys>.
-ssAWSAccessKeyId :: Lens' S3Storage (Maybe Text)
-ssAWSAccessKeyId = lens _ssAWSAccessKeyId (\ s a -> s{_ssAWSAccessKeyId = a});
-
-instance FromXML S3Storage where
-        parseXML x
-          = S3Storage' <$>
-              (x .@? "prefix") <*> (x .@? "uploadPolicy") <*>
-                (x .@? "bucket")
-                <*> (x .@? "uploadPolicySignature")
-                <*> (x .@? "AWSAccessKeyId")
-
-instance ToQuery S3Storage where
-        toQuery S3Storage'{..}
-          = mconcat
-              ["Prefix" =: _ssPrefix,
-               "UploadPolicy" =: _ssUploadPolicy,
-               "Bucket" =: _ssBucket,
-               "UploadPolicySignature" =: _ssUploadPolicySignature,
-               "AWSAccessKeyId" =: _ssAWSAccessKeyId]
-
--- | Describes a security group
---
--- /See:/ 'securityGroup' smart constructor.
-data SecurityGroup = SecurityGroup'
-    { _sgVPCId               :: !(Maybe Text)
-    , _sgIPPermissions       :: !(Maybe [IPPermission])
-    , _sgIPPermissionsEgress :: !(Maybe [IPPermission])
-    , _sgTags                :: !(Maybe [Tag])
-    , _sgOwnerId             :: !Text
-    , _sgGroupId             :: !Text
-    , _sgGroupName           :: !Text
-    , _sgDescription         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SecurityGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sgVPCId'
---
--- * 'sgIPPermissions'
---
--- * 'sgIPPermissionsEgress'
---
--- * 'sgTags'
---
--- * 'sgOwnerId'
---
--- * 'sgGroupId'
---
--- * 'sgGroupName'
---
--- * 'sgDescription'
-securityGroup
-    :: Text -- ^ 'sgOwnerId'
-    -> Text -- ^ 'sgGroupId'
-    -> Text -- ^ 'sgGroupName'
-    -> Text -- ^ 'sgDescription'
-    -> SecurityGroup
-securityGroup pOwnerId_ pGroupId_ pGroupName_ pDescription_ =
-    SecurityGroup'
-    { _sgVPCId = Nothing
-    , _sgIPPermissions = Nothing
-    , _sgIPPermissionsEgress = Nothing
-    , _sgTags = Nothing
-    , _sgOwnerId = pOwnerId_
-    , _sgGroupId = pGroupId_
-    , _sgGroupName = pGroupName_
-    , _sgDescription = pDescription_
-    }
-
--- | [EC2-VPC] The ID of the VPC for the security group.
-sgVPCId :: Lens' SecurityGroup (Maybe Text)
-sgVPCId = lens _sgVPCId (\ s a -> s{_sgVPCId = a});
-
--- | One or more inbound rules associated with the security group.
-sgIPPermissions :: Lens' SecurityGroup [IPPermission]
-sgIPPermissions = lens _sgIPPermissions (\ s a -> s{_sgIPPermissions = a}) . _Default . _Coerce;
-
--- | [EC2-VPC] One or more outbound rules associated with the security group.
-sgIPPermissionsEgress :: Lens' SecurityGroup [IPPermission]
-sgIPPermissionsEgress = lens _sgIPPermissionsEgress (\ s a -> s{_sgIPPermissionsEgress = a}) . _Default . _Coerce;
-
--- | Any tags assigned to the security group.
-sgTags :: Lens' SecurityGroup [Tag]
-sgTags = lens _sgTags (\ s a -> s{_sgTags = a}) . _Default . _Coerce;
-
--- | The AWS account ID of the owner of the security group.
-sgOwnerId :: Lens' SecurityGroup Text
-sgOwnerId = lens _sgOwnerId (\ s a -> s{_sgOwnerId = a});
-
--- | The ID of the security group.
-sgGroupId :: Lens' SecurityGroup Text
-sgGroupId = lens _sgGroupId (\ s a -> s{_sgGroupId = a});
-
--- | The name of the security group.
-sgGroupName :: Lens' SecurityGroup Text
-sgGroupName = lens _sgGroupName (\ s a -> s{_sgGroupName = a});
-
--- | A description of the security group.
-sgDescription :: Lens' SecurityGroup Text
-sgDescription = lens _sgDescription (\ s a -> s{_sgDescription = a});
-
-instance FromXML SecurityGroup where
-        parseXML x
-          = SecurityGroup' <$>
-              (x .@? "vpcId") <*>
-                (x .@? "ipPermissions" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "ipPermissionsEgress" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "ownerId")
-                <*> (x .@ "groupId")
-                <*> (x .@ "groupName")
-                <*> (x .@ "groupDescription")
-
--- | Describes a snapshot.
---
--- /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
-    } 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:
---
--- * 'sOwnerAlias'
---
--- * 'sKMSKeyId'
---
--- * 'sTags'
---
--- * 'sSnapshotId'
---
--- * 'sOwnerId'
---
--- * 'sVolumeId'
---
--- * 'sVolumeSize'
---
--- * 'sDescription'
---
--- * 'sStartTime'
---
--- * 'sProgress'
---
--- * 'sState'
---
--- * 'sEncrypted'
-snapshot
-    :: Text -- ^ 'sSnapshotId'
-    -> Text -- ^ 'sOwnerId'
-    -> Text -- ^ 'sVolumeId'
-    -> Int -- ^ 'sVolumeSize'
-    -> Text -- ^ 'sDescription'
-    -> UTCTime -- ^ 'sStartTime'
-    -> Text -- ^ 'sProgress'
-    -> SnapshotState -- ^ 'sState'
-    -> Bool -- ^ 'sEncrypted'
-    -> Snapshot
-snapshot pSnapshotId_ pOwnerId_ pVolumeId_ pVolumeSize_ pDescription_ pStartTime_ pProgress_ pState_ pEncrypted_ =
-    Snapshot'
-    { _sOwnerAlias = Nothing
-    , _sKMSKeyId = Nothing
-    , _sTags = Nothing
-    , _sSnapshotId = pSnapshotId_
-    , _sOwnerId = pOwnerId_
-    , _sVolumeId = pVolumeId_
-    , _sVolumeSize = pVolumeSize_
-    , _sDescription = pDescription_
-    , _sStartTime = _Time # pStartTime_
-    , _sProgress = pProgress_
-    , _sState = pState_
-    , _sEncrypted = pEncrypted_
-    }
-
--- | 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 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.
-sKMSKeyId :: Lens' Snapshot (Maybe Text)
-sKMSKeyId = lens _sKMSKeyId (\ s a -> s{_sKMSKeyId = a});
-
--- | Any tags assigned to the snapshot.
-sTags :: Lens' Snapshot [Tag]
-sTags = lens _sTags (\ s a -> s{_sTags = a}) . _Default . _Coerce;
-
--- | The ID of the snapshot.
-sSnapshotId :: Lens' Snapshot Text
-sSnapshotId = lens _sSnapshotId (\ s a -> s{_sSnapshotId = a});
-
--- | The AWS account ID of the EBS snapshot owner.
-sOwnerId :: Lens' Snapshot Text
-sOwnerId = lens _sOwnerId (\ s a -> s{_sOwnerId = a});
-
--- | The ID of the volume.
-sVolumeId :: Lens' Snapshot Text
-sVolumeId = lens _sVolumeId (\ s a -> s{_sVolumeId = a});
-
--- | The size of the volume, in GiB.
-sVolumeSize :: Lens' Snapshot Int
-sVolumeSize = lens _sVolumeSize (\ s a -> s{_sVolumeSize = a});
-
--- | The description for the snapshot.
-sDescription :: Lens' Snapshot Text
-sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
-
--- | The time stamp when the snapshot was initiated.
-sStartTime :: Lens' Snapshot UTCTime
-sStartTime = lens _sStartTime (\ s a -> s{_sStartTime = a}) . _Time;
-
--- | The progress of the snapshot, as a percentage.
-sProgress :: Lens' Snapshot Text
-sProgress = lens _sProgress (\ s a -> s{_sProgress = a});
-
--- | The snapshot state.
-sState :: Lens' Snapshot SnapshotState
-sState = lens _sState (\ s a -> s{_sState = a});
-
--- | Indicates whether the snapshot is encrypted.
-sEncrypted :: Lens' Snapshot Bool
-sEncrypted = lens _sEncrypted (\ s a -> s{_sEncrypted = a});
-
-instance FromXML Snapshot where
-        parseXML x
-          = Snapshot' <$>
-              (x .@? "ownerAlias") <*> (x .@? "kmsKeyId") <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "snapshotId")
-                <*> (x .@ "ownerId")
-                <*> (x .@ "volumeId")
-                <*> (x .@ "volumeSize")
-                <*> (x .@ "description")
-                <*> (x .@ "startTime")
-                <*> (x .@ "progress")
-                <*> (x .@ "status")
-                <*> (x .@ "encrypted")
-
--- | Describes the snapshot created from the imported disk.
---
--- /See:/ 'snapshotDetail' smart constructor.
-data SnapshotDetail = SnapshotDetail'
-    { _sdStatus        :: !(Maybe Text)
-    , _sdProgress      :: !(Maybe Text)
-    , _sdURL           :: !(Maybe Text)
-    , _sdFormat        :: !(Maybe Text)
-    , _sdDeviceName    :: !(Maybe Text)
-    , _sdUserBucket    :: !(Maybe UserBucketDetails)
-    , _sdDiskImageSize :: !(Maybe Double)
-    , _sdStatusMessage :: !(Maybe Text)
-    , _sdDescription   :: !(Maybe Text)
-    , _sdSnapshotId    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SnapshotDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdStatus'
---
--- * 'sdProgress'
---
--- * 'sdURL'
---
--- * 'sdFormat'
---
--- * 'sdDeviceName'
---
--- * 'sdUserBucket'
---
--- * 'sdDiskImageSize'
---
--- * 'sdStatusMessage'
---
--- * 'sdDescription'
---
--- * 'sdSnapshotId'
-snapshotDetail
-    :: SnapshotDetail
-snapshotDetail =
-    SnapshotDetail'
-    { _sdStatus = Nothing
-    , _sdProgress = Nothing
-    , _sdURL = Nothing
-    , _sdFormat = Nothing
-    , _sdDeviceName = Nothing
-    , _sdUserBucket = Nothing
-    , _sdDiskImageSize = Nothing
-    , _sdStatusMessage = Nothing
-    , _sdDescription = Nothing
-    , _sdSnapshotId = Nothing
-    }
-
--- | A brief status of the snapshot creation.
-sdStatus :: Lens' SnapshotDetail (Maybe Text)
-sdStatus = lens _sdStatus (\ s a -> s{_sdStatus = a});
-
--- | The percentage of progress for the task.
-sdProgress :: Lens' SnapshotDetail (Maybe Text)
-sdProgress = lens _sdProgress (\ s a -> s{_sdProgress = a});
-
--- | The URL used to access the disk image.
-sdURL :: Lens' SnapshotDetail (Maybe Text)
-sdURL = lens _sdURL (\ s a -> s{_sdURL = a});
-
--- | The format of the disk image from which the snapshot is created.
-sdFormat :: Lens' SnapshotDetail (Maybe Text)
-sdFormat = lens _sdFormat (\ s a -> s{_sdFormat = a});
-
--- | The block device mapping for the snapshot.
-sdDeviceName :: Lens' SnapshotDetail (Maybe Text)
-sdDeviceName = lens _sdDeviceName (\ s a -> s{_sdDeviceName = a});
-
--- | Undocumented member.
-sdUserBucket :: Lens' SnapshotDetail (Maybe UserBucketDetails)
-sdUserBucket = lens _sdUserBucket (\ s a -> s{_sdUserBucket = a});
-
--- | The size of the disk in the snapshot, in GiB.
-sdDiskImageSize :: Lens' SnapshotDetail (Maybe Double)
-sdDiskImageSize = lens _sdDiskImageSize (\ s a -> s{_sdDiskImageSize = a});
-
--- | A detailed status message for the snapshot creation.
-sdStatusMessage :: Lens' SnapshotDetail (Maybe Text)
-sdStatusMessage = lens _sdStatusMessage (\ s a -> s{_sdStatusMessage = a});
-
--- | A description for the snapshot.
-sdDescription :: Lens' SnapshotDetail (Maybe Text)
-sdDescription = lens _sdDescription (\ s a -> s{_sdDescription = a});
-
--- | The snapshot ID of the disk being imported.
-sdSnapshotId :: Lens' SnapshotDetail (Maybe Text)
-sdSnapshotId = lens _sdSnapshotId (\ s a -> s{_sdSnapshotId = a});
-
-instance FromXML SnapshotDetail where
-        parseXML x
-          = SnapshotDetail' <$>
-              (x .@? "status") <*> (x .@? "progress") <*>
-                (x .@? "url")
-                <*> (x .@? "format")
-                <*> (x .@? "deviceName")
-                <*> (x .@? "userBucket")
-                <*> (x .@? "diskImageSize")
-                <*> (x .@? "statusMessage")
-                <*> (x .@? "description")
-                <*> (x .@? "snapshotId")
-
--- | The disk container object for the import snapshot request.
---
--- /See:/ 'snapshotDiskContainer' smart constructor.
-data SnapshotDiskContainer = SnapshotDiskContainer'
-    { _sdcURL         :: !(Maybe Text)
-    , _sdcFormat      :: !(Maybe Text)
-    , _sdcUserBucket  :: !(Maybe UserBucket)
-    , _sdcDescription :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SnapshotDiskContainer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdcURL'
---
--- * 'sdcFormat'
---
--- * 'sdcUserBucket'
---
--- * 'sdcDescription'
-snapshotDiskContainer
-    :: SnapshotDiskContainer
-snapshotDiskContainer =
-    SnapshotDiskContainer'
-    { _sdcURL = Nothing
-    , _sdcFormat = Nothing
-    , _sdcUserBucket = Nothing
-    , _sdcDescription = Nothing
-    }
-
--- | The URL to the Amazon S3-based disk image being imported. It can either
--- be a https URL (https:\/\/..) or an Amazon S3 URL (s3:\/\/..).
-sdcURL :: Lens' SnapshotDiskContainer (Maybe Text)
-sdcURL = lens _sdcURL (\ s a -> s{_sdcURL = a});
-
--- | The format of the disk image being imported.
---
--- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'
-sdcFormat :: Lens' SnapshotDiskContainer (Maybe Text)
-sdcFormat = lens _sdcFormat (\ s a -> s{_sdcFormat = a});
-
--- | Undocumented member.
-sdcUserBucket :: Lens' SnapshotDiskContainer (Maybe UserBucket)
-sdcUserBucket = lens _sdcUserBucket (\ s a -> s{_sdcUserBucket = a});
-
--- | The description of the disk image being imported.
-sdcDescription :: Lens' SnapshotDiskContainer (Maybe Text)
-sdcDescription = lens _sdcDescription (\ s a -> s{_sdcDescription = a});
-
-instance ToQuery SnapshotDiskContainer where
-        toQuery SnapshotDiskContainer'{..}
-          = mconcat
-              ["Url" =: _sdcURL, "Format" =: _sdcFormat,
-               "UserBucket" =: _sdcUserBucket,
-               "Description" =: _sdcDescription]
-
--- | Details about the import snapshot task.
---
--- /See:/ 'snapshotTaskDetail' smart constructor.
-data SnapshotTaskDetail = SnapshotTaskDetail'
-    { _stdStatus        :: !(Maybe Text)
-    , _stdProgress      :: !(Maybe Text)
-    , _stdURL           :: !(Maybe Text)
-    , _stdFormat        :: !(Maybe Text)
-    , _stdUserBucket    :: !(Maybe UserBucketDetails)
-    , _stdDiskImageSize :: !(Maybe Double)
-    , _stdStatusMessage :: !(Maybe Text)
-    , _stdDescription   :: !(Maybe Text)
-    , _stdSnapshotId    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SnapshotTaskDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'stdStatus'
---
--- * 'stdProgress'
---
--- * 'stdURL'
---
--- * 'stdFormat'
---
--- * 'stdUserBucket'
---
--- * 'stdDiskImageSize'
---
--- * 'stdStatusMessage'
---
--- * 'stdDescription'
---
--- * 'stdSnapshotId'
-snapshotTaskDetail
-    :: SnapshotTaskDetail
-snapshotTaskDetail =
-    SnapshotTaskDetail'
-    { _stdStatus = Nothing
-    , _stdProgress = Nothing
-    , _stdURL = Nothing
-    , _stdFormat = Nothing
-    , _stdUserBucket = Nothing
-    , _stdDiskImageSize = Nothing
-    , _stdStatusMessage = Nothing
-    , _stdDescription = Nothing
-    , _stdSnapshotId = Nothing
-    }
-
--- | A brief status for the import snapshot task.
-stdStatus :: Lens' SnapshotTaskDetail (Maybe Text)
-stdStatus = lens _stdStatus (\ s a -> s{_stdStatus = a});
-
--- | The percentage of completion for the import snapshot task.
-stdProgress :: Lens' SnapshotTaskDetail (Maybe Text)
-stdProgress = lens _stdProgress (\ s a -> s{_stdProgress = a});
-
--- | The URL of the disk image from which the snapshot is created.
-stdURL :: Lens' SnapshotTaskDetail (Maybe Text)
-stdURL = lens _stdURL (\ s a -> s{_stdURL = a});
-
--- | The format of the disk image from which the snapshot is created.
-stdFormat :: Lens' SnapshotTaskDetail (Maybe Text)
-stdFormat = lens _stdFormat (\ s a -> s{_stdFormat = a});
-
--- | The S3 bucket for the disk image.
-stdUserBucket :: Lens' SnapshotTaskDetail (Maybe UserBucketDetails)
-stdUserBucket = lens _stdUserBucket (\ s a -> s{_stdUserBucket = a});
-
--- | The size of the disk in the snapshot, in GiB.
-stdDiskImageSize :: Lens' SnapshotTaskDetail (Maybe Double)
-stdDiskImageSize = lens _stdDiskImageSize (\ s a -> s{_stdDiskImageSize = a});
-
--- | A detailed status message for the import snapshot task.
-stdStatusMessage :: Lens' SnapshotTaskDetail (Maybe Text)
-stdStatusMessage = lens _stdStatusMessage (\ s a -> s{_stdStatusMessage = a});
-
--- | The description of the snapshot.
-stdDescription :: Lens' SnapshotTaskDetail (Maybe Text)
-stdDescription = lens _stdDescription (\ s a -> s{_stdDescription = a});
-
--- | The snapshot ID of the disk being imported.
-stdSnapshotId :: Lens' SnapshotTaskDetail (Maybe Text)
-stdSnapshotId = lens _stdSnapshotId (\ s a -> s{_stdSnapshotId = a});
-
-instance FromXML SnapshotTaskDetail where
-        parseXML x
-          = SnapshotTaskDetail' <$>
-              (x .@? "status") <*> (x .@? "progress") <*>
-                (x .@? "url")
-                <*> (x .@? "format")
-                <*> (x .@? "userBucket")
-                <*> (x .@? "diskImageSize")
-                <*> (x .@? "statusMessage")
-                <*> (x .@? "description")
-                <*> (x .@? "snapshotId")
-
--- | Describes the data feed for a Spot Instance.
---
--- /See:/ 'spotDatafeedSubscription' smart constructor.
-data SpotDatafeedSubscription = SpotDatafeedSubscription'
-    { _sdsState   :: !(Maybe DatafeedSubscriptionState)
-    , _sdsPrefix  :: !(Maybe Text)
-    , _sdsBucket  :: !(Maybe Text)
-    , _sdsOwnerId :: !(Maybe Text)
-    , _sdsFault   :: !(Maybe SpotInstanceStateFault)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotDatafeedSubscription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdsState'
---
--- * 'sdsPrefix'
---
--- * 'sdsBucket'
---
--- * 'sdsOwnerId'
---
--- * 'sdsFault'
-spotDatafeedSubscription
-    :: SpotDatafeedSubscription
-spotDatafeedSubscription =
-    SpotDatafeedSubscription'
-    { _sdsState = Nothing
-    , _sdsPrefix = Nothing
-    , _sdsBucket = Nothing
-    , _sdsOwnerId = Nothing
-    , _sdsFault = Nothing
-    }
-
--- | The state of the Spot Instance data feed subscription.
-sdsState :: Lens' SpotDatafeedSubscription (Maybe DatafeedSubscriptionState)
-sdsState = lens _sdsState (\ s a -> s{_sdsState = a});
-
--- | The prefix that is prepended to data feed files.
-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.
-sdsBucket :: Lens' SpotDatafeedSubscription (Maybe Text)
-sdsBucket = lens _sdsBucket (\ s a -> s{_sdsBucket = a});
-
--- | The AWS account ID of the account.
-sdsOwnerId :: Lens' SpotDatafeedSubscription (Maybe Text)
-sdsOwnerId = lens _sdsOwnerId (\ s a -> s{_sdsOwnerId = a});
-
--- | The fault codes for the Spot Instance request, if any.
-sdsFault :: Lens' SpotDatafeedSubscription (Maybe SpotInstanceStateFault)
-sdsFault = lens _sdsFault (\ s a -> s{_sdsFault = a});
-
-instance FromXML SpotDatafeedSubscription where
-        parseXML x
-          = SpotDatafeedSubscription' <$>
-              (x .@? "state") <*> (x .@? "prefix") <*>
-                (x .@? "bucket")
-                <*> (x .@? "ownerId")
-                <*> (x .@? "fault")
-
--- | Describes the launch specification for an instance.
---
--- /See:/ 'spotFleetLaunchSpecification' smart constructor.
-data SpotFleetLaunchSpecification = SpotFleetLaunchSpecification'
-    { _sflsSecurityGroups      :: !(Maybe [GroupIdentifier])
-    , _sflsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
-    , _sflsKeyName             :: !(Maybe Text)
-    , _sflsRAMDiskId           :: !(Maybe Text)
-    , _sflsKernelId            :: !(Maybe Text)
-    , _sflsSubnetId            :: !(Maybe Text)
-    , _sflsInstanceType        :: !(Maybe InstanceType)
-    , _sflsEBSOptimized        :: !(Maybe Bool)
-    , _sflsUserData            :: !(Maybe Text)
-    , _sflsMonitoring          :: !(Maybe SpotFleetMonitoring)
-    , _sflsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
-    , _sflsImageId             :: !(Maybe Text)
-    , _sflsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
-    , _sflsAddressingType      :: !(Maybe Text)
-    , _sflsPlacement           :: !(Maybe SpotPlacement)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotFleetLaunchSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sflsSecurityGroups'
---
--- * 'sflsNetworkInterfaces'
---
--- * 'sflsKeyName'
---
--- * 'sflsRAMDiskId'
---
--- * 'sflsKernelId'
---
--- * 'sflsSubnetId'
---
--- * 'sflsInstanceType'
---
--- * 'sflsEBSOptimized'
---
--- * 'sflsUserData'
---
--- * 'sflsMonitoring'
---
--- * 'sflsIAMInstanceProfile'
---
--- * 'sflsImageId'
---
--- * 'sflsBlockDeviceMappings'
---
--- * 'sflsAddressingType'
---
--- * 'sflsPlacement'
-spotFleetLaunchSpecification
-    :: SpotFleetLaunchSpecification
-spotFleetLaunchSpecification =
-    SpotFleetLaunchSpecification'
-    { _sflsSecurityGroups = Nothing
-    , _sflsNetworkInterfaces = Nothing
-    , _sflsKeyName = Nothing
-    , _sflsRAMDiskId = Nothing
-    , _sflsKernelId = Nothing
-    , _sflsSubnetId = Nothing
-    , _sflsInstanceType = Nothing
-    , _sflsEBSOptimized = Nothing
-    , _sflsUserData = Nothing
-    , _sflsMonitoring = Nothing
-    , _sflsIAMInstanceProfile = Nothing
-    , _sflsImageId = Nothing
-    , _sflsBlockDeviceMappings = Nothing
-    , _sflsAddressingType = Nothing
-    , _sflsPlacement = Nothing
-    }
-
--- | One or more security groups. To request an instance in a nondefault VPC,
--- you must specify the ID of the security group. To request an instance in
--- EC2-Classic or a default VPC, you can specify the name or the ID of the
--- security group.
-sflsSecurityGroups :: Lens' SpotFleetLaunchSpecification [GroupIdentifier]
-sflsSecurityGroups = lens _sflsSecurityGroups (\ s a -> s{_sflsSecurityGroups = a}) . _Default . _Coerce;
-
--- | One or more network interfaces.
-sflsNetworkInterfaces :: Lens' SpotFleetLaunchSpecification [InstanceNetworkInterfaceSpecification]
-sflsNetworkInterfaces = lens _sflsNetworkInterfaces (\ s a -> s{_sflsNetworkInterfaces = a}) . _Default . _Coerce;
-
--- | The name of the key pair.
-sflsKeyName :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsKeyName = lens _sflsKeyName (\ s a -> s{_sflsKeyName = a});
-
--- | The ID of the RAM disk.
-sflsRAMDiskId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsRAMDiskId = lens _sflsRAMDiskId (\ s a -> s{_sflsRAMDiskId = a});
-
--- | The ID of the kernel.
-sflsKernelId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsKernelId = lens _sflsKernelId (\ s a -> s{_sflsKernelId = a});
-
--- | The ID of the subnet in which to launch the instance.
-sflsSubnetId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsSubnetId = lens _sflsSubnetId (\ s a -> s{_sflsSubnetId = a});
-
--- | The instance type.
-sflsInstanceType :: Lens' SpotFleetLaunchSpecification (Maybe InstanceType)
-sflsInstanceType = lens _sflsInstanceType (\ s a -> s{_sflsInstanceType = a});
-
--- | Indicates whether the instance is optimized for EBS I\/O. This
--- optimization provides dedicated throughput to Amazon EBS and an
--- optimized configuration stack to provide optimal EBS I\/O performance.
--- This optimization isn\'t available with all instance types. Additional
--- usage charges apply when using an EBS Optimized instance.
---
--- Default: 'false'
-sflsEBSOptimized :: Lens' SpotFleetLaunchSpecification (Maybe Bool)
-sflsEBSOptimized = lens _sflsEBSOptimized (\ s a -> s{_sflsEBSOptimized = a});
-
--- | The Base64-encoded MIME user data to make available to the instances.
-sflsUserData :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsUserData = lens _sflsUserData (\ s a -> s{_sflsUserData = a});
-
--- | Enable or disable monitoring for the instance.
-sflsMonitoring :: Lens' SpotFleetLaunchSpecification (Maybe SpotFleetMonitoring)
-sflsMonitoring = lens _sflsMonitoring (\ s a -> s{_sflsMonitoring = a});
-
--- | Undocumented member.
-sflsIAMInstanceProfile :: Lens' SpotFleetLaunchSpecification (Maybe IAMInstanceProfileSpecification)
-sflsIAMInstanceProfile = lens _sflsIAMInstanceProfile (\ s a -> s{_sflsIAMInstanceProfile = a});
-
--- | The ID of the AMI.
-sflsImageId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsImageId = lens _sflsImageId (\ s a -> s{_sflsImageId = a});
-
--- | One or more block device mapping entries.
-sflsBlockDeviceMappings :: Lens' SpotFleetLaunchSpecification [BlockDeviceMapping]
-sflsBlockDeviceMappings = lens _sflsBlockDeviceMappings (\ s a -> s{_sflsBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | Deprecated.
-sflsAddressingType :: Lens' SpotFleetLaunchSpecification (Maybe Text)
-sflsAddressingType = lens _sflsAddressingType (\ s a -> s{_sflsAddressingType = a});
-
--- | Undocumented member.
-sflsPlacement :: Lens' SpotFleetLaunchSpecification (Maybe SpotPlacement)
-sflsPlacement = lens _sflsPlacement (\ s a -> s{_sflsPlacement = a});
-
-instance FromXML SpotFleetLaunchSpecification where
-        parseXML x
-          = SpotFleetLaunchSpecification' <$>
-              (x .@? "groupSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*>
-                (x .@? "networkInterfaceSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "keyName")
-                <*> (x .@? "ramdiskId")
-                <*> (x .@? "kernelId")
-                <*> (x .@? "subnetId")
-                <*> (x .@? "instanceType")
-                <*> (x .@? "ebsOptimized")
-                <*> (x .@? "userData")
-                <*> (x .@? "monitoring")
-                <*> (x .@? "iamInstanceProfile")
-                <*> (x .@? "imageId")
-                <*>
-                (x .@? "blockDeviceMapping" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "addressingType")
-                <*> (x .@? "placement")
-
-instance ToQuery SpotFleetLaunchSpecification where
-        toQuery SpotFleetLaunchSpecification'{..}
-          = mconcat
-              [toQuery
-                 (toQueryList "GroupSet" <$> _sflsSecurityGroups),
-               toQuery
-                 (toQueryList "NetworkInterfaceSet" <$>
-                    _sflsNetworkInterfaces),
-               "KeyName" =: _sflsKeyName,
-               "RamdiskId" =: _sflsRAMDiskId,
-               "KernelId" =: _sflsKernelId,
-               "SubnetId" =: _sflsSubnetId,
-               "InstanceType" =: _sflsInstanceType,
-               "EbsOptimized" =: _sflsEBSOptimized,
-               "UserData" =: _sflsUserData,
-               "Monitoring" =: _sflsMonitoring,
-               "IamInstanceProfile" =: _sflsIAMInstanceProfile,
-               "ImageId" =: _sflsImageId,
-               toQuery
-                 (toQueryList "BlockDeviceMapping" <$>
-                    _sflsBlockDeviceMappings),
-               "AddressingType" =: _sflsAddressingType,
-               "Placement" =: _sflsPlacement]
-
--- | Describes whether monitoring is enabled.
---
--- /See:/ 'spotFleetMonitoring' smart constructor.
-newtype SpotFleetMonitoring = SpotFleetMonitoring'
-    { _sfmEnabled :: Maybe Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotFleetMonitoring' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfmEnabled'
-spotFleetMonitoring
-    :: SpotFleetMonitoring
-spotFleetMonitoring =
-    SpotFleetMonitoring'
-    { _sfmEnabled = Nothing
-    }
-
--- | Enables monitoring for the instance.
---
--- Default: 'false'
-sfmEnabled :: Lens' SpotFleetMonitoring (Maybe Bool)
-sfmEnabled = lens _sfmEnabled (\ s a -> s{_sfmEnabled = a});
-
-instance FromXML SpotFleetMonitoring where
-        parseXML x
-          = SpotFleetMonitoring' <$> (x .@? "enabled")
-
-instance ToQuery SpotFleetMonitoring where
-        toQuery SpotFleetMonitoring'{..}
-          = mconcat ["Enabled" =: _sfmEnabled]
-
--- | Describes a Spot fleet request.
---
--- /See:/ 'spotFleetRequestConfig' smart constructor.
-data SpotFleetRequestConfig = SpotFleetRequestConfig'
-    { _sfrcSpotFleetRequestId     :: !Text
-    , _sfrcSpotFleetRequestState  :: !BatchState
-    , _sfrcSpotFleetRequestConfig :: !SpotFleetRequestConfigData
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotFleetRequestConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfrcSpotFleetRequestId'
---
--- * 'sfrcSpotFleetRequestState'
---
--- * 'sfrcSpotFleetRequestConfig'
-spotFleetRequestConfig
-    :: Text -- ^ 'sfrcSpotFleetRequestId'
-    -> BatchState -- ^ 'sfrcSpotFleetRequestState'
-    -> SpotFleetRequestConfigData -- ^ 'sfrcSpotFleetRequestConfig'
-    -> SpotFleetRequestConfig
-spotFleetRequestConfig pSpotFleetRequestId_ pSpotFleetRequestState_ pSpotFleetRequestConfig_ =
-    SpotFleetRequestConfig'
-    { _sfrcSpotFleetRequestId = pSpotFleetRequestId_
-    , _sfrcSpotFleetRequestState = pSpotFleetRequestState_
-    , _sfrcSpotFleetRequestConfig = pSpotFleetRequestConfig_
-    }
-
--- | The ID of the Spot fleet request.
-sfrcSpotFleetRequestId :: Lens' SpotFleetRequestConfig Text
-sfrcSpotFleetRequestId = lens _sfrcSpotFleetRequestId (\ s a -> s{_sfrcSpotFleetRequestId = a});
-
--- | The state of the Spot fleet request.
-sfrcSpotFleetRequestState :: Lens' SpotFleetRequestConfig BatchState
-sfrcSpotFleetRequestState = lens _sfrcSpotFleetRequestState (\ s a -> s{_sfrcSpotFleetRequestState = a});
-
--- | Information about the configuration of the Spot fleet request.
-sfrcSpotFleetRequestConfig :: Lens' SpotFleetRequestConfig SpotFleetRequestConfigData
-sfrcSpotFleetRequestConfig = lens _sfrcSpotFleetRequestConfig (\ s a -> s{_sfrcSpotFleetRequestConfig = a});
-
-instance FromXML SpotFleetRequestConfig where
-        parseXML x
-          = SpotFleetRequestConfig' <$>
-              (x .@ "spotFleetRequestId") <*>
-                (x .@ "spotFleetRequestState")
-                <*> (x .@ "spotFleetRequestConfig")
-
--- | Describes the configuration of a Spot fleet request.
---
--- /See:/ 'spotFleetRequestConfigData' smart constructor.
-data SpotFleetRequestConfigData = SpotFleetRequestConfigData'
-    { _sfrcdClientToken                      :: !(Maybe Text)
-    , _sfrcdValidUntil                       :: !(Maybe ISO8601)
-    , _sfrcdTerminateInstancesWithExpiration :: !(Maybe Bool)
-    , _sfrcdValidFrom                        :: !(Maybe ISO8601)
-    , _sfrcdSpotPrice                        :: !Text
-    , _sfrcdTargetCapacity                   :: !Int
-    , _sfrcdIAMFleetRole                     :: !Text
-    , _sfrcdLaunchSpecifications             :: !(List1 SpotFleetLaunchSpecification)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotFleetRequestConfigData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfrcdClientToken'
---
--- * 'sfrcdValidUntil'
---
--- * 'sfrcdTerminateInstancesWithExpiration'
---
--- * 'sfrcdValidFrom'
---
--- * 'sfrcdSpotPrice'
---
--- * 'sfrcdTargetCapacity'
---
--- * 'sfrcdIAMFleetRole'
---
--- * 'sfrcdLaunchSpecifications'
-spotFleetRequestConfigData
-    :: Text -- ^ 'sfrcdSpotPrice'
-    -> Int -- ^ 'sfrcdTargetCapacity'
-    -> Text -- ^ 'sfrcdIAMFleetRole'
-    -> NonEmpty SpotFleetLaunchSpecification -- ^ 'sfrcdLaunchSpecifications'
-    -> SpotFleetRequestConfigData
-spotFleetRequestConfigData pSpotPrice_ pTargetCapacity_ pIAMFleetRole_ pLaunchSpecifications_ =
-    SpotFleetRequestConfigData'
-    { _sfrcdClientToken = Nothing
-    , _sfrcdValidUntil = Nothing
-    , _sfrcdTerminateInstancesWithExpiration = Nothing
-    , _sfrcdValidFrom = Nothing
-    , _sfrcdSpotPrice = pSpotPrice_
-    , _sfrcdTargetCapacity = pTargetCapacity_
-    , _sfrcdIAMFleetRole = pIAMFleetRole_
-    , _sfrcdLaunchSpecifications = _List1 # pLaunchSpecifications_
-    }
-
--- | A unique, case-sensitive identifier you provide to ensure idempotency of
--- your listings. This helps avoid duplicate listings. For more
--- information, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
-sfrcdClientToken :: Lens' SpotFleetRequestConfigData (Maybe Text)
-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
--- 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.
-sfrcdTerminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)
-sfrcdTerminateInstancesWithExpiration = lens _sfrcdTerminateInstancesWithExpiration (\ s a -> s{_sfrcdTerminateInstancesWithExpiration = a});
-
--- | The start date and time of the request, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). The default is to start fulfilling
--- the request immediately.
-sfrcdValidFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
-sfrcdValidFrom = lens _sfrcdValidFrom (\ s a -> s{_sfrcdValidFrom = a}) . mapping _Time;
-
--- | The maximum hourly price (bid) for any Spot Instance launched to fulfill
--- the request.
-sfrcdSpotPrice :: Lens' SpotFleetRequestConfigData Text
-sfrcdSpotPrice = lens _sfrcdSpotPrice (\ s a -> s{_sfrcdSpotPrice = a});
-
--- | The maximum number of Spot Instances to launch.
-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
--- 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.
-sfrcdLaunchSpecifications :: Lens' SpotFleetRequestConfigData (NonEmpty SpotFleetLaunchSpecification)
-sfrcdLaunchSpecifications = lens _sfrcdLaunchSpecifications (\ s a -> s{_sfrcdLaunchSpecifications = a}) . _List1;
-
-instance FromXML SpotFleetRequestConfigData where
-        parseXML x
-          = SpotFleetRequestConfigData' <$>
-              (x .@? "clientToken") <*> (x .@? "validUntil") <*>
-                (x .@? "terminateInstancesWithExpiration")
-                <*> (x .@? "validFrom")
-                <*> (x .@ "spotPrice")
-                <*> (x .@ "targetCapacity")
-                <*> (x .@ "iamFleetRole")
-                <*>
-                (x .@? "launchSpecifications" .!@ mempty >>=
-                   parseXMLList1 "item")
-
-instance ToQuery SpotFleetRequestConfigData where
-        toQuery SpotFleetRequestConfigData'{..}
-          = mconcat
-              ["ClientToken" =: _sfrcdClientToken,
-               "ValidUntil" =: _sfrcdValidUntil,
-               "TerminateInstancesWithExpiration" =:
-                 _sfrcdTerminateInstancesWithExpiration,
-               "ValidFrom" =: _sfrcdValidFrom,
-               "SpotPrice" =: _sfrcdSpotPrice,
-               "TargetCapacity" =: _sfrcdTargetCapacity,
-               "IamFleetRole" =: _sfrcdIAMFleetRole,
-               toQueryList "LaunchSpecifications"
-                 _sfrcdLaunchSpecifications]
-
--- | Describe a Spot Instance request.
---
--- /See:/ 'spotInstanceRequest' smart constructor.
-data SpotInstanceRequest = SpotInstanceRequest'
-    { _sirInstanceId               :: !(Maybe Text)
-    , _sirStatus                   :: !(Maybe SpotInstanceStatus)
-    , _sirState                    :: !(Maybe SpotInstanceState)
-    , _sirProductDescription       :: !(Maybe RIProductDescription)
-    , _sirSpotPrice                :: !(Maybe Text)
-    , _sirAvailabilityZoneGroup    :: !(Maybe Text)
-    , _sirLaunchSpecification      :: !(Maybe LaunchSpecification)
-    , _sirLaunchedAvailabilityZone :: !(Maybe Text)
-    , _sirValidUntil               :: !(Maybe ISO8601)
-    , _sirFault                    :: !(Maybe SpotInstanceStateFault)
-    , _sirLaunchGroup              :: !(Maybe Text)
-    , _sirSpotInstanceRequestId    :: !(Maybe Text)
-    , _sirType                     :: !(Maybe SpotInstanceType)
-    , _sirValidFrom                :: !(Maybe ISO8601)
-    , _sirTags                     :: !(Maybe [Tag])
-    , _sirCreateTime               :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotInstanceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sirInstanceId'
---
--- * 'sirStatus'
---
--- * 'sirState'
---
--- * 'sirProductDescription'
---
--- * 'sirSpotPrice'
---
--- * 'sirAvailabilityZoneGroup'
---
--- * 'sirLaunchSpecification'
---
--- * 'sirLaunchedAvailabilityZone'
---
--- * 'sirValidUntil'
---
--- * 'sirFault'
---
--- * 'sirLaunchGroup'
---
--- * 'sirSpotInstanceRequestId'
---
--- * 'sirType'
---
--- * 'sirValidFrom'
---
--- * 'sirTags'
---
--- * 'sirCreateTime'
-spotInstanceRequest
-    :: SpotInstanceRequest
-spotInstanceRequest =
-    SpotInstanceRequest'
-    { _sirInstanceId = Nothing
-    , _sirStatus = Nothing
-    , _sirState = Nothing
-    , _sirProductDescription = Nothing
-    , _sirSpotPrice = Nothing
-    , _sirAvailabilityZoneGroup = Nothing
-    , _sirLaunchSpecification = Nothing
-    , _sirLaunchedAvailabilityZone = Nothing
-    , _sirValidUntil = Nothing
-    , _sirFault = Nothing
-    , _sirLaunchGroup = Nothing
-    , _sirSpotInstanceRequestId = Nothing
-    , _sirType = Nothing
-    , _sirValidFrom = Nothing
-    , _sirTags = Nothing
-    , _sirCreateTime = Nothing
-    }
-
--- | The instance ID, if an instance has been launched to fulfill the Spot
--- 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.
-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
--- <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.
-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 request.
-sirSpotPrice :: Lens' SpotInstanceRequest (Maybe Text)
-sirSpotPrice = lens _sirSpotPrice (\ s a -> s{_sirSpotPrice = a});
-
--- | The Availability Zone group. If you specify the same Availability Zone
--- 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});
-
--- | Additional information for launching instances.
-sirLaunchSpecification :: Lens' SpotInstanceRequest (Maybe LaunchSpecification)
-sirLaunchSpecification = lens _sirLaunchSpecification (\ s a -> s{_sirLaunchSpecification = a});
-
--- | The Availability Zone in which the bid is launched.
-sirLaunchedAvailabilityZone :: Lens' SpotInstanceRequest (Maybe Text)
-sirLaunchedAvailabilityZone = lens _sirLaunchedAvailabilityZone (\ s a -> s{_sirLaunchedAvailabilityZone = a});
-
--- | The end date of the request, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). If this is a one-time request, the
--- request remains active until all instances launch, the request is
--- canceled, or this date is reached. If the request is persistent, it
--- remains active until it is canceled or this date is reached.
-sirValidUntil :: Lens' SpotInstanceRequest (Maybe UTCTime)
-sirValidUntil = lens _sirValidUntil (\ s a -> s{_sirValidUntil = a}) . mapping _Time;
-
--- | The fault codes for the Spot Instance request, if any.
-sirFault :: Lens' SpotInstanceRequest (Maybe SpotInstanceStateFault)
-sirFault = lens _sirFault (\ s a -> s{_sirFault = a});
-
--- | 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 ID of the Spot Instance request.
-sirSpotInstanceRequestId :: Lens' SpotInstanceRequest (Maybe Text)
-sirSpotInstanceRequestId = lens _sirSpotInstanceRequestId (\ s a -> s{_sirSpotInstanceRequestId = a});
-
--- | The Spot Instance request type.
-sirType :: Lens' SpotInstanceRequest (Maybe SpotInstanceType)
-sirType = lens _sirType (\ s a -> s{_sirType = a});
-
--- | The start date of the request, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). If this is a one-time request, the
--- request becomes active at this date and time and remains active until
--- all instances launch, the request expires, or the request is canceled.
--- If the request is persistent, the request becomes active at this date
--- and time and remains active until it expires or is canceled.
-sirValidFrom :: Lens' SpotInstanceRequest (Maybe UTCTime)
-sirValidFrom = lens _sirValidFrom (\ s a -> s{_sirValidFrom = a}) . mapping _Time;
-
--- | Any tags assigned to the resource.
-sirTags :: Lens' SpotInstanceRequest [Tag]
-sirTags = lens _sirTags (\ s a -> s{_sirTags = a}) . _Default . _Coerce;
-
--- | 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;
-
-instance FromXML SpotInstanceRequest where
-        parseXML x
-          = SpotInstanceRequest' <$>
-              (x .@? "instanceId") <*> (x .@? "status") <*>
-                (x .@? "state")
-                <*> (x .@? "productDescription")
-                <*> (x .@? "spotPrice")
-                <*> (x .@? "availabilityZoneGroup")
-                <*> (x .@? "launchSpecification")
-                <*> (x .@? "launchedAvailabilityZone")
-                <*> (x .@? "validUntil")
-                <*> (x .@? "fault")
-                <*> (x .@? "launchGroup")
-                <*> (x .@? "spotInstanceRequestId")
-                <*> (x .@? "type")
-                <*> (x .@? "validFrom")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "createTime")
-
--- | Describes a Spot Instance state change.
---
--- /See:/ 'spotInstanceStateFault' smart constructor.
-data SpotInstanceStateFault = SpotInstanceStateFault'
-    { _sisfCode    :: !(Maybe Text)
-    , _sisfMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotInstanceStateFault' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sisfCode'
---
--- * 'sisfMessage'
-spotInstanceStateFault
-    :: SpotInstanceStateFault
-spotInstanceStateFault =
-    SpotInstanceStateFault'
-    { _sisfCode = Nothing
-    , _sisfMessage = Nothing
-    }
-
--- | 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.
-sisfMessage :: Lens' SpotInstanceStateFault (Maybe Text)
-sisfMessage = lens _sisfMessage (\ s a -> s{_sisfMessage = a});
-
-instance FromXML SpotInstanceStateFault where
-        parseXML x
-          = SpotInstanceStateFault' <$>
-              (x .@? "code") <*> (x .@? "message")
-
--- | Describes the status of a Spot Instance request.
---
--- /See:/ 'spotInstanceStatus' smart constructor.
-data SpotInstanceStatus = SpotInstanceStatus'
-    { _sisUpdateTime :: !(Maybe ISO8601)
-    , _sisCode       :: !(Maybe Text)
-    , _sisMessage    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotInstanceStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sisUpdateTime'
---
--- * 'sisCode'
---
--- * 'sisMessage'
-spotInstanceStatus
-    :: SpotInstanceStatus
-spotInstanceStatus =
-    SpotInstanceStatus'
-    { _sisUpdateTime = Nothing
-    , _sisCode = Nothing
-    , _sisMessage = Nothing
-    }
-
--- | The date and time of the most recent status update, in UTC format (for
--- example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
-sisUpdateTime :: Lens' SpotInstanceStatus (Maybe UTCTime)
-sisUpdateTime = lens _sisUpdateTime (\ s a -> s{_sisUpdateTime = a}) . mapping _Time;
-
--- | The status code.
-sisCode :: Lens' SpotInstanceStatus (Maybe Text)
-sisCode = lens _sisCode (\ s a -> s{_sisCode = a});
-
--- | The description for the status code.
-sisMessage :: Lens' SpotInstanceStatus (Maybe Text)
-sisMessage = lens _sisMessage (\ s a -> s{_sisMessage = a});
-
-instance FromXML SpotInstanceStatus where
-        parseXML x
-          = SpotInstanceStatus' <$>
-              (x .@? "updateTime") <*> (x .@? "code") <*>
-                (x .@? "message")
-
--- | Describes Spot Instance placement.
---
--- /See:/ 'spotPlacement' smart constructor.
-data SpotPlacement = SpotPlacement'
-    { _spAvailabilityZone :: !(Maybe Text)
-    , _spGroupName        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotPlacement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spAvailabilityZone'
---
--- * 'spGroupName'
-spotPlacement
-    :: SpotPlacement
-spotPlacement =
-    SpotPlacement'
-    { _spAvailabilityZone = Nothing
-    , _spGroupName = Nothing
-    }
-
--- | The Availability Zone.
-spAvailabilityZone :: Lens' SpotPlacement (Maybe Text)
-spAvailabilityZone = lens _spAvailabilityZone (\ s a -> s{_spAvailabilityZone = a});
-
--- | The name of the placement group (for cluster instances).
-spGroupName :: Lens' SpotPlacement (Maybe Text)
-spGroupName = lens _spGroupName (\ s a -> s{_spGroupName = a});
-
-instance FromXML SpotPlacement where
-        parseXML x
-          = SpotPlacement' <$>
-              (x .@? "availabilityZone") <*> (x .@? "groupName")
-
-instance ToQuery SpotPlacement where
-        toQuery SpotPlacement'{..}
-          = mconcat
-              ["AvailabilityZone" =: _spAvailabilityZone,
-               "GroupName" =: _spGroupName]
-
--- | Describes the maximum hourly price (bid) for any Spot Instance launched
--- to fulfill the request.
---
--- /See:/ 'spotPrice' smart constructor.
-data SpotPrice = SpotPrice'
-    { _sProductDescription :: !(Maybe RIProductDescription)
-    , _sSpotPrice          :: !(Maybe Text)
-    , _sInstanceType       :: !(Maybe InstanceType)
-    , _sAvailabilityZone   :: !(Maybe Text)
-    , _sTimestamp          :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SpotPrice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sProductDescription'
---
--- * 'sSpotPrice'
---
--- * 'sInstanceType'
---
--- * 'sAvailabilityZone'
---
--- * 'sTimestamp'
-spotPrice
-    :: SpotPrice
-spotPrice =
-    SpotPrice'
-    { _sProductDescription = Nothing
-    , _sSpotPrice = Nothing
-    , _sInstanceType = Nothing
-    , _sAvailabilityZone = Nothing
-    , _sTimestamp = Nothing
-    }
-
--- | A general description of the AMI.
-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.
-sSpotPrice :: Lens' SpotPrice (Maybe Text)
-sSpotPrice = lens _sSpotPrice (\ s a -> s{_sSpotPrice = a});
-
--- | The instance type.
-sInstanceType :: Lens' SpotPrice (Maybe InstanceType)
-sInstanceType = lens _sInstanceType (\ s a -> s{_sInstanceType = a});
-
--- | The Availability Zone.
-sAvailabilityZone :: Lens' SpotPrice (Maybe Text)
-sAvailabilityZone = lens _sAvailabilityZone (\ s a -> s{_sAvailabilityZone = a});
-
--- | The date and time the request was created, in UTC format (for example,
--- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
-sTimestamp :: Lens' SpotPrice (Maybe UTCTime)
-sTimestamp = lens _sTimestamp (\ s a -> s{_sTimestamp = a}) . mapping _Time;
-
-instance FromXML SpotPrice where
-        parseXML x
-          = SpotPrice' <$>
-              (x .@? "productDescription") <*> (x .@? "spotPrice")
-                <*> (x .@? "instanceType")
-                <*> (x .@? "availabilityZone")
-                <*> (x .@? "timestamp")
-
--- | Describes a state change.
---
--- /See:/ 'stateReason' smart constructor.
-data StateReason = StateReason'
-    { _srCode    :: !(Maybe Text)
-    , _srMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StateReason' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srCode'
---
--- * 'srMessage'
-stateReason
-    :: StateReason
-stateReason =
-    StateReason'
-    { _srCode = Nothing
-    , _srMessage = Nothing
-    }
-
--- | The reason code for the state change.
-srCode :: Lens' StateReason (Maybe Text)
-srCode = lens _srCode (\ s a -> s{_srCode = a});
-
--- | The message for the state change.
---
--- -   'Server.SpotInstanceTermination': A Spot Instance was terminated due
---     to an increase in the market price.
---
--- -   'Server.InternalError': An internal error occurred during instance
---     launch, resulting in termination.
---
--- -   'Server.InsufficientInstanceCapacity': There was insufficient
---     instance capacity to satisfy the launch request.
---
--- -   'Client.InternalError': A client error caused the instance to
---     terminate on launch.
---
--- -   'Client.InstanceInitiatedShutdown': The instance was shut down using
---     the 'shutdown -h' command from the instance.
---
--- -   'Client.UserInitiatedShutdown': The instance was shut down using the
---     Amazon EC2 API.
---
--- -   'Client.VolumeLimitExceeded': The volume limit was exceeded.
---
--- -   'Client.InvalidSnapshot.NotFound': The specified snapshot was not
---     found.
---
-srMessage :: Lens' StateReason (Maybe Text)
-srMessage = lens _srMessage (\ s a -> s{_srMessage = a});
-
-instance FromXML StateReason where
-        parseXML x
-          = StateReason' <$>
-              (x .@? "code") <*> (x .@? "message")
-
--- | Describes the storage location for an instance store-backed AMI.
---
--- /See:/ 'storage' smart constructor.
-newtype Storage = Storage'
-    { _sS3 :: Maybe S3Storage
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Storage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sS3'
-storage
-    :: Storage
-storage =
-    Storage'
-    { _sS3 = Nothing
-    }
-
--- | An Amazon S3 storage location.
-sS3 :: Lens' Storage (Maybe S3Storage)
-sS3 = lens _sS3 (\ s a -> s{_sS3 = a});
-
-instance FromXML Storage where
-        parseXML x = Storage' <$> (x .@? "S3")
-
-instance ToQuery Storage where
-        toQuery Storage'{..} = mconcat ["S3" =: _sS3]
-
--- | Describes a subnet.
---
--- /See:/ 'subnet' smart constructor.
-data Subnet = Subnet'
-    { _subTags                    :: !(Maybe [Tag])
-    , _subAvailabilityZone        :: !Text
-    , _subAvailableIPAddressCount :: !Int
-    , _subCIdRBlock               :: !Text
-    , _subDefaultForAz            :: !Bool
-    , _subMapPublicIPOnLaunch     :: !Bool
-    , _subState                   :: !SubnetState
-    , _subSubnetId                :: !Text
-    , _subVPCId                   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Subnet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'subTags'
---
--- * 'subAvailabilityZone'
---
--- * 'subAvailableIPAddressCount'
---
--- * 'subCIdRBlock'
---
--- * 'subDefaultForAz'
---
--- * 'subMapPublicIPOnLaunch'
---
--- * 'subState'
---
--- * 'subSubnetId'
---
--- * 'subVPCId'
-subnet
-    :: 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'
-    { _subTags = Nothing
-    , _subAvailabilityZone = pAvailabilityZone_
-    , _subAvailableIPAddressCount = pAvailableIPAddressCount_
-    , _subCIdRBlock = pCIdRBlock_
-    , _subDefaultForAz = pDefaultForAz_
-    , _subMapPublicIPOnLaunch = pMapPublicIPOnLaunch_
-    , _subState = pState_
-    , _subSubnetId = pSubnetId_
-    , _subVPCId = pVPCId_
-    }
-
--- | Any tags assigned to the subnet.
-subTags :: Lens' Subnet [Tag]
-subTags = lens _subTags (\ s a -> s{_subTags = a}) . _Default . _Coerce;
-
--- | The Availability Zone of the subnet.
-subAvailabilityZone :: Lens' Subnet Text
-subAvailabilityZone = lens _subAvailabilityZone (\ s a -> s{_subAvailabilityZone = a});
-
--- | The number of unused IP addresses in the subnet. Note that the IP
--- addresses for any stopped instances are considered unavailable.
-subAvailableIPAddressCount :: Lens' Subnet Int
-subAvailableIPAddressCount = lens _subAvailableIPAddressCount (\ s a -> s{_subAvailableIPAddressCount = a});
-
--- | The CIDR block assigned to the subnet.
-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});
-
--- | The ID of the subnet.
-subSubnetId :: Lens' Subnet Text
-subSubnetId = lens _subSubnetId (\ s a -> s{_subSubnetId = a});
-
--- | The ID of the VPC the subnet is in.
-subVPCId :: Lens' Subnet Text
-subVPCId = lens _subVPCId (\ s a -> s{_subVPCId = a});
-
-instance FromXML Subnet where
-        parseXML x
-          = Subnet' <$>
-              (x .@? "tagSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@ "availabilityZone")
-                <*> (x .@ "availableIpAddressCount")
-                <*> (x .@ "cidrBlock")
-                <*> (x .@ "defaultForAz")
-                <*> (x .@ "mapPublicIpOnLaunch")
-                <*> (x .@ "state")
-                <*> (x .@ "subnetId")
-                <*> (x .@ "vpcId")
-
--- | Describes a tag.
---
--- /See:/ 'tag' smart constructor.
-data Tag = Tag'
-    { _tagKey   :: !Text
-    , _tagValue :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Tag' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tagKey'
---
--- * 'tagValue'
-tag
-    :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag pKey_ pValue_ =
-    Tag'
-    { _tagKey = pKey_
-    , _tagValue = pValue_
-    }
-
--- | The key of the tag.
---
--- Constraints: Tag keys are case-sensitive and accept a maximum of 127
--- Unicode characters. May not begin with 'aws:'
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
-
--- | The value of the tag.
---
--- Constraints: Tag values are case-sensitive and accept a maximum of 255
--- Unicode characters.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
-
-instance FromXML Tag where
-        parseXML x = Tag' <$> (x .@ "key") <*> (x .@ "value")
-
-instance ToQuery Tag where
-        toQuery Tag'{..}
-          = mconcat ["Key" =: _tagKey, "Value" =: _tagValue]
-
--- | Describes a tag.
---
--- /See:/ 'tagDescription' smart constructor.
-data TagDescription = TagDescription'
-    { _tdResourceId   :: !Text
-    , _tdResourceType :: !ResourceType
-    , _tdKey          :: !Text
-    , _tdValue        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TagDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdResourceId'
---
--- * 'tdResourceType'
---
--- * 'tdKey'
---
--- * 'tdValue'
-tagDescription
-    :: Text -- ^ 'tdResourceId'
-    -> ResourceType -- ^ 'tdResourceType'
-    -> Text -- ^ 'tdKey'
-    -> Text -- ^ 'tdValue'
-    -> TagDescription
-tagDescription pResourceId_ pResourceType_ pKey_ pValue_ =
-    TagDescription'
-    { _tdResourceId = pResourceId_
-    , _tdResourceType = pResourceType_
-    , _tdKey = pKey_
-    , _tdValue = pValue_
-    }
-
--- | The ID of the resource. For example, 'ami-1a2b3c4d'.
-tdResourceId :: Lens' TagDescription Text
-tdResourceId = lens _tdResourceId (\ s a -> s{_tdResourceId = a});
-
--- | The resource type.
-tdResourceType :: Lens' TagDescription ResourceType
-tdResourceType = lens _tdResourceType (\ s a -> s{_tdResourceType = a});
-
--- | The tag key.
-tdKey :: Lens' TagDescription Text
-tdKey = lens _tdKey (\ s a -> s{_tdKey = a});
-
--- | The tag value.
-tdValue :: Lens' TagDescription Text
-tdValue = lens _tdValue (\ s a -> s{_tdValue = a});
-
-instance FromXML TagDescription where
-        parseXML x
-          = TagDescription' <$>
-              (x .@ "resourceId") <*> (x .@ "resourceType") <*>
-                (x .@ "key")
-                <*> (x .@ "value")
-
--- | Information about items that were not successfully processed in a batch
--- call.
---
--- /See:/ 'unsuccessfulItem' smart constructor.
-data UnsuccessfulItem = UnsuccessfulItem'
-    { _uiResourceId :: !(Maybe Text)
-    , _uiError      :: !UnsuccessfulItemError
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UnsuccessfulItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uiResourceId'
---
--- * 'uiError'
-unsuccessfulItem
-    :: UnsuccessfulItemError -- ^ 'uiError'
-    -> UnsuccessfulItem
-unsuccessfulItem pError_ =
-    UnsuccessfulItem'
-    { _uiResourceId = Nothing
-    , _uiError = pError_
-    }
-
--- | The ID of the resource.
-uiResourceId :: Lens' UnsuccessfulItem (Maybe Text)
-uiResourceId = lens _uiResourceId (\ s a -> s{_uiResourceId = a});
-
--- | Information about the error.
-uiError :: Lens' UnsuccessfulItem UnsuccessfulItemError
-uiError = lens _uiError (\ s a -> s{_uiError = a});
-
-instance FromXML UnsuccessfulItem where
-        parseXML x
-          = UnsuccessfulItem' <$>
-              (x .@? "resourceId") <*> (x .@ "error")
-
--- | Information about the error that occured. For more information about
--- errors, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html Error Codes>.
---
--- /See:/ 'unsuccessfulItemError' smart constructor.
-data UnsuccessfulItemError = UnsuccessfulItemError'
-    { _uieCode    :: !Text
-    , _uieMessage :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UnsuccessfulItemError' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uieCode'
---
--- * 'uieMessage'
-unsuccessfulItemError
-    :: Text -- ^ 'uieCode'
-    -> Text -- ^ 'uieMessage'
-    -> UnsuccessfulItemError
-unsuccessfulItemError pCode_ pMessage_ =
-    UnsuccessfulItemError'
-    { _uieCode = pCode_
-    , _uieMessage = pMessage_
-    }
-
--- | The error code.
-uieCode :: Lens' UnsuccessfulItemError Text
-uieCode = lens _uieCode (\ s a -> s{_uieCode = a});
-
--- | The error message accompanying the error code.
-uieMessage :: Lens' UnsuccessfulItemError Text
-uieMessage = lens _uieMessage (\ s a -> s{_uieMessage = a});
-
-instance FromXML UnsuccessfulItemError where
-        parseXML x
-          = UnsuccessfulItemError' <$>
-              (x .@ "code") <*> (x .@ "message")
-
--- | Describes the S3 bucket for the disk image.
---
--- /See:/ 'userBucket' smart constructor.
-data UserBucket = UserBucket'
-    { _ubS3Key    :: !(Maybe Text)
-    , _ubS3Bucket :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserBucket' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ubS3Key'
---
--- * 'ubS3Bucket'
-userBucket
-    :: UserBucket
-userBucket =
-    UserBucket'
-    { _ubS3Key = Nothing
-    , _ubS3Bucket = Nothing
-    }
-
--- | The key for the disk image.
-ubS3Key :: Lens' UserBucket (Maybe Text)
-ubS3Key = lens _ubS3Key (\ s a -> s{_ubS3Key = a});
-
--- | The name of the S3 bucket where the disk image is located.
-ubS3Bucket :: Lens' UserBucket (Maybe Text)
-ubS3Bucket = lens _ubS3Bucket (\ s a -> s{_ubS3Bucket = a});
-
-instance ToQuery UserBucket where
-        toQuery UserBucket'{..}
-          = mconcat
-              ["S3Key" =: _ubS3Key, "S3Bucket" =: _ubS3Bucket]
-
--- | Describes the S3 bucket for the disk image.
---
--- /See:/ 'userBucketDetails' smart constructor.
-data UserBucketDetails = UserBucketDetails'
-    { _ubdS3Key    :: !(Maybe Text)
-    , _ubdS3Bucket :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserBucketDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ubdS3Key'
---
--- * 'ubdS3Bucket'
-userBucketDetails
-    :: UserBucketDetails
-userBucketDetails =
-    UserBucketDetails'
-    { _ubdS3Key = Nothing
-    , _ubdS3Bucket = Nothing
-    }
-
--- | The key from which the disk image was created.
-ubdS3Key :: Lens' UserBucketDetails (Maybe Text)
-ubdS3Key = lens _ubdS3Key (\ s a -> s{_ubdS3Key = a});
-
--- | The S3 bucket from which the disk image was created.
-ubdS3Bucket :: Lens' UserBucketDetails (Maybe Text)
-ubdS3Bucket = lens _ubdS3Bucket (\ s a -> s{_ubdS3Bucket = a});
-
-instance FromXML UserBucketDetails where
-        parseXML x
-          = UserBucketDetails' <$>
-              (x .@? "s3Key") <*> (x .@? "s3Bucket")
-
--- | Describes the user data to be made available to an instance.
---
--- /See:/ 'userData' smart constructor.
-newtype UserData = UserData'
-    { _udData :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udData'
-userData
-    :: UserData
-userData =
-    UserData'
-    { _udData = Nothing
-    }
-
--- | The Base64-encoded MIME user data for the instance.
-udData :: Lens' UserData (Maybe Text)
-udData = lens _udData (\ s a -> s{_udData = a});
-
-instance ToQuery UserData where
-        toQuery UserData'{..} = mconcat ["Data" =: _udData]
-
--- | Describes a security group and AWS account ID pair.
---
--- /See:/ 'userIdGroupPair' smart constructor.
-data UserIdGroupPair = UserIdGroupPair'
-    { _uigpUserId    :: !(Maybe Text)
-    , _uigpGroupId   :: !(Maybe Text)
-    , _uigpGroupName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserIdGroupPair' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uigpUserId'
---
--- * 'uigpGroupId'
---
--- * 'uigpGroupName'
-userIdGroupPair
-    :: UserIdGroupPair
-userIdGroupPair =
-    UserIdGroupPair'
-    { _uigpUserId = Nothing
-    , _uigpGroupId = Nothing
-    , _uigpGroupName = Nothing
-    }
-
--- | The ID of an AWS account. EC2-Classic only.
-uigpUserId :: Lens' UserIdGroupPair (Maybe Text)
-uigpUserId = lens _uigpUserId (\ s a -> s{_uigpUserId = a});
-
--- | The ID of the security group.
-uigpGroupId :: Lens' UserIdGroupPair (Maybe Text)
-uigpGroupId = lens _uigpGroupId (\ s a -> s{_uigpGroupId = a});
-
--- | The name of the security group. In a request, use this parameter for a
--- security group in EC2-Classic or a default VPC only. For a security
--- group in a nondefault VPC, use 'GroupId'.
-uigpGroupName :: Lens' UserIdGroupPair (Maybe Text)
-uigpGroupName = lens _uigpGroupName (\ s a -> s{_uigpGroupName = a});
-
-instance FromXML UserIdGroupPair where
-        parseXML x
-          = UserIdGroupPair' <$>
-              (x .@? "userId") <*> (x .@? "groupId") <*>
-                (x .@? "groupName")
-
-instance ToQuery UserIdGroupPair where
-        toQuery UserIdGroupPair'{..}
-          = mconcat
-              ["UserId" =: _uigpUserId, "GroupId" =: _uigpGroupId,
-               "GroupName" =: _uigpGroupName]
-
--- | Describes telemetry for a VPN tunnel.
---
--- /See:/ 'vgwTelemetry' smart constructor.
-data VGWTelemetry = VGWTelemetry'
-    { _vtStatus             :: !(Maybe TelemetryStatus)
-    , _vtOutsideIPAddress   :: !(Maybe Text)
-    , _vtLastStatusChange   :: !(Maybe ISO8601)
-    , _vtAcceptedRouteCount :: !(Maybe Int)
-    , _vtStatusMessage      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VGWTelemetry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtStatus'
---
--- * 'vtOutsideIPAddress'
---
--- * 'vtLastStatusChange'
---
--- * 'vtAcceptedRouteCount'
---
--- * 'vtStatusMessage'
-vgwTelemetry
-    :: VGWTelemetry
-vgwTelemetry =
-    VGWTelemetry'
-    { _vtStatus = Nothing
-    , _vtOutsideIPAddress = Nothing
-    , _vtLastStatusChange = Nothing
-    , _vtAcceptedRouteCount = Nothing
-    , _vtStatusMessage = Nothing
-    }
-
--- | The status of the VPN tunnel.
-vtStatus :: Lens' VGWTelemetry (Maybe TelemetryStatus)
-vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a});
-
--- | The Internet-routable IP address of the virtual private gateway\'s
--- outside interface.
-vtOutsideIPAddress :: Lens' VGWTelemetry (Maybe Text)
-vtOutsideIPAddress = lens _vtOutsideIPAddress (\ s a -> s{_vtOutsideIPAddress = a});
-
--- | The date and time of the last change in status.
-vtLastStatusChange :: Lens' VGWTelemetry (Maybe UTCTime)
-vtLastStatusChange = lens _vtLastStatusChange (\ s a -> s{_vtLastStatusChange = a}) . mapping _Time;
-
--- | The number of accepted routes.
-vtAcceptedRouteCount :: Lens' VGWTelemetry (Maybe Int)
-vtAcceptedRouteCount = lens _vtAcceptedRouteCount (\ s a -> s{_vtAcceptedRouteCount = a});
-
--- | If an error occurs, a description of the error.
-vtStatusMessage :: Lens' VGWTelemetry (Maybe Text)
-vtStatusMessage = lens _vtStatusMessage (\ s a -> s{_vtStatusMessage = a});
-
-instance FromXML VGWTelemetry where
-        parseXML x
-          = VGWTelemetry' <$>
-              (x .@? "status") <*> (x .@? "outsideIpAddress") <*>
-                (x .@? "lastStatusChange")
-                <*> (x .@? "acceptedRouteCount")
-                <*> (x .@? "statusMessage")
-
--- | Describes a VPC.
---
--- /See:/ 'vpc' smart constructor.
-data VPC = VPC'
-    { _vpcTags            :: !(Maybe [Tag])
-    , _vpcCIdRBlock       :: !Text
-    , _vpcDHCPOptionsId   :: !Text
-    , _vpcInstanceTenancy :: !Tenancy
-    , _vpcIsDefault       :: !Bool
-    , _vpcState           :: !VPCState
-    , _vpcVPCId           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPC' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpcTags'
---
--- * 'vpcCIdRBlock'
---
--- * 'vpcDHCPOptionsId'
---
--- * 'vpcInstanceTenancy'
---
--- * 'vpcIsDefault'
---
--- * 'vpcState'
---
--- * 'vpcVPCId'
-vpc
-    :: Text -- ^ 'vpcCIdRBlock'
-    -> Text -- ^ 'vpcDHCPOptionsId'
-    -> Tenancy -- ^ 'vpcInstanceTenancy'
-    -> Bool -- ^ 'vpcIsDefault'
-    -> VPCState -- ^ 'vpcState'
-    -> Text -- ^ 'vpcVPCId'
-    -> VPC
-vpc pCIdRBlock_ pDHCPOptionsId_ pInstanceTenancy_ pIsDefault_ pState_ pVPCId_ =
-    VPC'
-    { _vpcTags = Nothing
-    , _vpcCIdRBlock = pCIdRBlock_
-    , _vpcDHCPOptionsId = pDHCPOptionsId_
-    , _vpcInstanceTenancy = pInstanceTenancy_
-    , _vpcIsDefault = pIsDefault_
-    , _vpcState = pState_
-    , _vpcVPCId = pVPCId_
-    }
-
--- | Any tags assigned to the VPC.
-vpcTags :: Lens' VPC [Tag]
-vpcTags = lens _vpcTags (\ s a -> s{_vpcTags = a}) . _Default . _Coerce;
-
--- | The CIDR block for the VPC.
-vpcCIdRBlock :: Lens' VPC Text
-vpcCIdRBlock = lens _vpcCIdRBlock (\ s a -> s{_vpcCIdRBlock = a});
-
--- | The ID of the set of DHCP options you\'ve associated with the VPC (or
--- 'default' if the default options are associated with the VPC).
-vpcDHCPOptionsId :: Lens' VPC Text
-vpcDHCPOptionsId = lens _vpcDHCPOptionsId (\ s a -> s{_vpcDHCPOptionsId = a});
-
--- | The allowed tenancy of instances launched into the VPC.
-vpcInstanceTenancy :: Lens' VPC Tenancy
-vpcInstanceTenancy = lens _vpcInstanceTenancy (\ s a -> s{_vpcInstanceTenancy = a});
-
--- | Indicates whether the VPC is the default VPC.
-vpcIsDefault :: Lens' VPC Bool
-vpcIsDefault = lens _vpcIsDefault (\ s a -> s{_vpcIsDefault = a});
-
--- | The current state of the VPC.
-vpcState :: Lens' VPC VPCState
-vpcState = lens _vpcState (\ s a -> s{_vpcState = a});
-
--- | The ID of the VPC.
-vpcVPCId :: Lens' VPC Text
-vpcVPCId = lens _vpcVPCId (\ s a -> s{_vpcVPCId = a});
-
-instance FromXML VPC where
-        parseXML x
-          = VPC' <$>
-              (x .@? "tagSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@ "cidrBlock")
-                <*> (x .@ "dhcpOptionsId")
-                <*> (x .@ "instanceTenancy")
-                <*> (x .@ "isDefault")
-                <*> (x .@ "state")
-                <*> (x .@ "vpcId")
-
--- | Describes an attachment between a virtual private gateway and a VPC.
---
--- /See:/ 'vpcAttachment' smart constructor.
-data VPCAttachment = VPCAttachment'
-    { _vaState :: !(Maybe AttachmentStatus)
-    , _vaVPCId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCAttachment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vaState'
---
--- * 'vaVPCId'
-vpcAttachment
-    :: VPCAttachment
-vpcAttachment =
-    VPCAttachment'
-    { _vaState = Nothing
-    , _vaVPCId = Nothing
-    }
-
--- | The current state of the attachment.
-vaState :: Lens' VPCAttachment (Maybe AttachmentStatus)
-vaState = lens _vaState (\ s a -> s{_vaState = a});
-
--- | The ID of the VPC.
-vaVPCId :: Lens' VPCAttachment (Maybe Text)
-vaVPCId = lens _vaVPCId (\ s a -> s{_vaVPCId = a});
-
-instance FromXML VPCAttachment where
-        parseXML x
-          = VPCAttachment' <$>
-              (x .@? "state") <*> (x .@? "vpcId")
-
--- | Describes whether a VPC is enabled for ClassicLink.
---
--- /See:/ 'vpcClassicLink' smart constructor.
-data VPCClassicLink = VPCClassicLink'
-    { _vclVPCId              :: !(Maybe Text)
-    , _vclTags               :: !(Maybe [Tag])
-    , _vclClassicLinkEnabled :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCClassicLink' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vclVPCId'
---
--- * 'vclTags'
---
--- * 'vclClassicLinkEnabled'
-vpcClassicLink
-    :: VPCClassicLink
-vpcClassicLink =
-    VPCClassicLink'
-    { _vclVPCId = Nothing
-    , _vclTags = Nothing
-    , _vclClassicLinkEnabled = Nothing
-    }
-
--- | The ID of the VPC.
-vclVPCId :: Lens' VPCClassicLink (Maybe Text)
-vclVPCId = lens _vclVPCId (\ s a -> s{_vclVPCId = a});
-
--- | Any tags assigned to the VPC.
-vclTags :: Lens' VPCClassicLink [Tag]
-vclTags = lens _vclTags (\ s a -> s{_vclTags = a}) . _Default . _Coerce;
-
--- | Indicates whether the VPC is enabled for ClassicLink.
-vclClassicLinkEnabled :: Lens' VPCClassicLink (Maybe Bool)
-vclClassicLinkEnabled = lens _vclClassicLinkEnabled (\ s a -> s{_vclClassicLinkEnabled = a});
-
-instance FromXML VPCClassicLink where
-        parseXML x
-          = VPCClassicLink' <$>
-              (x .@? "vpcId") <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "classicLinkEnabled")
-
--- | Describes a VPC endpoint.
---
--- /See:/ 'vpcEndpoint' smart constructor.
-data VPCEndpoint = VPCEndpoint'
-    { _vePolicyDocument    :: !(Maybe Text)
-    , _veState             :: !(Maybe State)
-    , _veVPCId             :: !(Maybe Text)
-    , _veCreationTimestamp :: !(Maybe ISO8601)
-    , _veServiceName       :: !(Maybe Text)
-    , _veVPCEndpointId     :: !(Maybe Text)
-    , _veRouteTableIds     :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vePolicyDocument'
---
--- * 'veState'
---
--- * 'veVPCId'
---
--- * 'veCreationTimestamp'
---
--- * 'veServiceName'
---
--- * 'veVPCEndpointId'
---
--- * 'veRouteTableIds'
-vpcEndpoint
-    :: VPCEndpoint
-vpcEndpoint =
-    VPCEndpoint'
-    { _vePolicyDocument = Nothing
-    , _veState = Nothing
-    , _veVPCId = Nothing
-    , _veCreationTimestamp = Nothing
-    , _veServiceName = Nothing
-    , _veVPCEndpointId = Nothing
-    , _veRouteTableIds = Nothing
-    }
-
--- | The policy document associated with the endpoint.
-vePolicyDocument :: Lens' VPCEndpoint (Maybe Text)
-vePolicyDocument = lens _vePolicyDocument (\ s a -> s{_vePolicyDocument = a});
-
--- | The state of the VPC endpoint.
-veState :: Lens' VPCEndpoint (Maybe State)
-veState = lens _veState (\ s a -> s{_veState = a});
-
--- | The ID of the VPC to which the endpoint is associated.
-veVPCId :: Lens' VPCEndpoint (Maybe Text)
-veVPCId = lens _veVPCId (\ s a -> s{_veVPCId = a});
-
--- | The date and time the VPC endpoint was created.
-veCreationTimestamp :: Lens' VPCEndpoint (Maybe UTCTime)
-veCreationTimestamp = lens _veCreationTimestamp (\ s a -> s{_veCreationTimestamp = a}) . mapping _Time;
-
--- | The name of the AWS service to which the endpoint is associated.
-veServiceName :: Lens' VPCEndpoint (Maybe Text)
-veServiceName = lens _veServiceName (\ s a -> s{_veServiceName = a});
-
--- | The ID of the VPC endpoint.
-veVPCEndpointId :: Lens' VPCEndpoint (Maybe Text)
-veVPCEndpointId = lens _veVPCEndpointId (\ s a -> s{_veVPCEndpointId = a});
-
--- | One or more route tables associated with the endpoint.
-veRouteTableIds :: Lens' VPCEndpoint [Text]
-veRouteTableIds = lens _veRouteTableIds (\ s a -> s{_veRouteTableIds = a}) . _Default . _Coerce;
-
-instance FromXML VPCEndpoint where
-        parseXML x
-          = VPCEndpoint' <$>
-              (x .@? "policyDocument") <*> (x .@? "state") <*>
-                (x .@? "vpcId")
-                <*> (x .@? "creationTimestamp")
-                <*> (x .@? "serviceName")
-                <*> (x .@? "vpcEndpointId")
-                <*>
-                (x .@? "routeTableIdSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes a VPC peering connection.
---
--- /See:/ 'vpcPeeringConnection' smart constructor.
-data VPCPeeringConnection = VPCPeeringConnection'
-    { _vpcpcStatus                 :: !(Maybe VPCPeeringConnectionStateReason)
-    , _vpcpcVPCPeeringConnectionId :: !(Maybe Text)
-    , _vpcpcAccepterVPCInfo        :: !(Maybe VPCPeeringConnectionVPCInfo)
-    , _vpcpcRequesterVPCInfo       :: !(Maybe VPCPeeringConnectionVPCInfo)
-    , _vpcpcExpirationTime         :: !(Maybe ISO8601)
-    , _vpcpcTags                   :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCPeeringConnection' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpcpcStatus'
---
--- * 'vpcpcVPCPeeringConnectionId'
---
--- * 'vpcpcAccepterVPCInfo'
---
--- * 'vpcpcRequesterVPCInfo'
---
--- * 'vpcpcExpirationTime'
---
--- * 'vpcpcTags'
-vpcPeeringConnection
-    :: VPCPeeringConnection
-vpcPeeringConnection =
-    VPCPeeringConnection'
-    { _vpcpcStatus = Nothing
-    , _vpcpcVPCPeeringConnectionId = Nothing
-    , _vpcpcAccepterVPCInfo = Nothing
-    , _vpcpcRequesterVPCInfo = Nothing
-    , _vpcpcExpirationTime = Nothing
-    , _vpcpcTags = Nothing
-    }
-
--- | The status of the VPC peering connection.
-vpcpcStatus :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionStateReason)
-vpcpcStatus = lens _vpcpcStatus (\ s a -> s{_vpcpcStatus = a});
-
--- | The ID of the VPC peering connection.
-vpcpcVPCPeeringConnectionId :: Lens' VPCPeeringConnection (Maybe Text)
-vpcpcVPCPeeringConnectionId = lens _vpcpcVPCPeeringConnectionId (\ s a -> s{_vpcpcVPCPeeringConnectionId = a});
-
--- | The information of the peer VPC.
-vpcpcAccepterVPCInfo :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionVPCInfo)
-vpcpcAccepterVPCInfo = lens _vpcpcAccepterVPCInfo (\ s a -> s{_vpcpcAccepterVPCInfo = a});
-
--- | The information of the requester VPC.
-vpcpcRequesterVPCInfo :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionVPCInfo)
-vpcpcRequesterVPCInfo = lens _vpcpcRequesterVPCInfo (\ s a -> s{_vpcpcRequesterVPCInfo = a});
-
--- | The time that an unaccepted VPC peering connection will expire.
-vpcpcExpirationTime :: Lens' VPCPeeringConnection (Maybe UTCTime)
-vpcpcExpirationTime = lens _vpcpcExpirationTime (\ s a -> s{_vpcpcExpirationTime = a}) . mapping _Time;
-
--- | Any tags assigned to the resource.
-vpcpcTags :: Lens' VPCPeeringConnection [Tag]
-vpcpcTags = lens _vpcpcTags (\ s a -> s{_vpcpcTags = a}) . _Default . _Coerce;
-
-instance FromXML VPCPeeringConnection where
-        parseXML x
-          = VPCPeeringConnection' <$>
-              (x .@? "status") <*> (x .@? "vpcPeeringConnectionId")
-                <*> (x .@? "accepterVpcInfo")
-                <*> (x .@? "requesterVpcInfo")
-                <*> (x .@? "expirationTime")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes the status of a VPC peering connection.
---
--- /See:/ 'vpcPeeringConnectionStateReason' smart constructor.
-data VPCPeeringConnectionStateReason = VPCPeeringConnectionStateReason'
-    { _vpcsrCode    :: !(Maybe VPCPeeringConnectionStateReasonCode)
-    , _vpcsrMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCPeeringConnectionStateReason' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpcsrCode'
---
--- * 'vpcsrMessage'
-vpcPeeringConnectionStateReason
-    :: VPCPeeringConnectionStateReason
-vpcPeeringConnectionStateReason =
-    VPCPeeringConnectionStateReason'
-    { _vpcsrCode = Nothing
-    , _vpcsrMessage = Nothing
-    }
-
--- | The status of the VPC peering connection.
-vpcsrCode :: Lens' VPCPeeringConnectionStateReason (Maybe VPCPeeringConnectionStateReasonCode)
-vpcsrCode = lens _vpcsrCode (\ s a -> s{_vpcsrCode = a});
-
--- | A message that provides more information about the status, if
--- applicable.
-vpcsrMessage :: Lens' VPCPeeringConnectionStateReason (Maybe Text)
-vpcsrMessage = lens _vpcsrMessage (\ s a -> s{_vpcsrMessage = a});
-
-instance FromXML VPCPeeringConnectionStateReason
-         where
-        parseXML x
-          = VPCPeeringConnectionStateReason' <$>
-              (x .@? "code") <*> (x .@? "message")
-
--- | Describes a VPC in a VPC peering connection.
---
--- /See:/ 'vpcPeeringConnectionVPCInfo' smart constructor.
-data VPCPeeringConnectionVPCInfo = VPCPeeringConnectionVPCInfo'
-    { _vpcviVPCId     :: !(Maybe Text)
-    , _vpcviOwnerId   :: !(Maybe Text)
-    , _vpcviCIdRBlock :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCPeeringConnectionVPCInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpcviVPCId'
---
--- * 'vpcviOwnerId'
---
--- * 'vpcviCIdRBlock'
-vpcPeeringConnectionVPCInfo
-    :: VPCPeeringConnectionVPCInfo
-vpcPeeringConnectionVPCInfo =
-    VPCPeeringConnectionVPCInfo'
-    { _vpcviVPCId = Nothing
-    , _vpcviOwnerId = Nothing
-    , _vpcviCIdRBlock = Nothing
-    }
-
--- | The ID of the VPC.
-vpcviVPCId :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
-vpcviVPCId = lens _vpcviVPCId (\ s a -> s{_vpcviVPCId = a});
-
--- | The AWS account ID of the VPC owner.
-vpcviOwnerId :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
-vpcviOwnerId = lens _vpcviOwnerId (\ s a -> s{_vpcviOwnerId = a});
-
--- | The CIDR block for the VPC.
-vpcviCIdRBlock :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
-vpcviCIdRBlock = lens _vpcviCIdRBlock (\ s a -> s{_vpcviCIdRBlock = a});
-
-instance FromXML VPCPeeringConnectionVPCInfo where
-        parseXML x
-          = VPCPeeringConnectionVPCInfo' <$>
-              (x .@? "vpcId") <*> (x .@? "ownerId") <*>
-                (x .@? "cidrBlock")
-
--- | Describes a VPN connection.
---
--- /See:/ 'vpnConnection' smart constructor.
-data VPNConnection = VPNConnection'
-    { _vcRoutes                       :: !(Maybe [VPNStaticRoute])
-    , _vcVPNGatewayId                 :: !(Maybe Text)
-    , _vcOptions                      :: !(Maybe VPNConnectionOptions)
-    , _vcVGWTelemetry                 :: !(Maybe [VGWTelemetry])
-    , _vcTags                         :: !(Maybe [Tag])
-    , _vcVPNConnectionId              :: !Text
-    , _vcCustomerGatewayId            :: !Text
-    , _vcCustomerGatewayConfiguration :: !Text
-    , _vcState                        :: !VPNState
-    , _vcType                         :: !GatewayType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNConnection' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcRoutes'
---
--- * 'vcVPNGatewayId'
---
--- * 'vcOptions'
---
--- * 'vcVGWTelemetry'
---
--- * 'vcTags'
---
--- * 'vcVPNConnectionId'
---
--- * 'vcCustomerGatewayId'
---
--- * 'vcCustomerGatewayConfiguration'
---
--- * 'vcState'
---
--- * 'vcType'
-vpnConnection
-    :: Text -- ^ 'vcVPNConnectionId'
-    -> Text -- ^ 'vcCustomerGatewayId'
-    -> Text -- ^ 'vcCustomerGatewayConfiguration'
-    -> VPNState -- ^ 'vcState'
-    -> GatewayType -- ^ 'vcType'
-    -> VPNConnection
-vpnConnection pVPNConnectionId_ pCustomerGatewayId_ pCustomerGatewayConfiguration_ pState_ pType_ =
-    VPNConnection'
-    { _vcRoutes = Nothing
-    , _vcVPNGatewayId = Nothing
-    , _vcOptions = Nothing
-    , _vcVGWTelemetry = Nothing
-    , _vcTags = Nothing
-    , _vcVPNConnectionId = pVPNConnectionId_
-    , _vcCustomerGatewayId = pCustomerGatewayId_
-    , _vcCustomerGatewayConfiguration = pCustomerGatewayConfiguration_
-    , _vcState = pState_
-    , _vcType = pType_
-    }
-
--- | The static routes associated with the VPN connection.
-vcRoutes :: Lens' VPNConnection [VPNStaticRoute]
-vcRoutes = lens _vcRoutes (\ s a -> s{_vcRoutes = a}) . _Default . _Coerce;
-
--- | The ID of the virtual private gateway at the AWS side of the VPN
--- connection.
-vcVPNGatewayId :: Lens' VPNConnection (Maybe Text)
-vcVPNGatewayId = lens _vcVPNGatewayId (\ s a -> s{_vcVPNGatewayId = a});
-
--- | The VPN connection options.
-vcOptions :: Lens' VPNConnection (Maybe VPNConnectionOptions)
-vcOptions = lens _vcOptions (\ s a -> s{_vcOptions = a});
-
--- | Information about the VPN tunnel.
-vcVGWTelemetry :: Lens' VPNConnection [VGWTelemetry]
-vcVGWTelemetry = lens _vcVGWTelemetry (\ s a -> s{_vcVGWTelemetry = a}) . _Default . _Coerce;
-
--- | Any tags assigned to the VPN connection.
-vcTags :: Lens' VPNConnection [Tag]
-vcTags = lens _vcTags (\ s a -> s{_vcTags = a}) . _Default . _Coerce;
-
--- | The ID of the VPN connection.
-vcVPNConnectionId :: Lens' VPNConnection Text
-vcVPNConnectionId = lens _vcVPNConnectionId (\ s a -> s{_vcVPNConnectionId = a});
-
--- | The ID of the customer gateway at your end of the VPN connection.
-vcCustomerGatewayId :: Lens' VPNConnection Text
-vcCustomerGatewayId = lens _vcCustomerGatewayId (\ s a -> s{_vcCustomerGatewayId = a});
-
--- | The configuration information for the VPN connection\'s customer gateway
--- (in the native XML format). This element is always present in the
--- CreateVpnConnection response; however, it\'s present in the
--- DescribeVpnConnections response only if the VPN connection is in the
--- 'pending' or 'available' state.
-vcCustomerGatewayConfiguration :: Lens' VPNConnection Text
-vcCustomerGatewayConfiguration = lens _vcCustomerGatewayConfiguration (\ s a -> s{_vcCustomerGatewayConfiguration = a});
-
--- | The current state of the VPN connection.
-vcState :: Lens' VPNConnection VPNState
-vcState = lens _vcState (\ s a -> s{_vcState = a});
-
--- | The type of VPN connection.
-vcType :: Lens' VPNConnection GatewayType
-vcType = lens _vcType (\ s a -> s{_vcType = a});
-
-instance FromXML VPNConnection where
-        parseXML x
-          = VPNConnection' <$>
-              (x .@? "routes" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "vpnGatewayId")
-                <*> (x .@? "options")
-                <*>
-                (x .@? "vgwTelemetry" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "vpnConnectionId")
-                <*> (x .@ "customerGatewayId")
-                <*> (x .@ "customerGatewayConfiguration")
-                <*> (x .@ "state")
-                <*> (x .@ "type")
-
--- | Describes VPN connection options.
---
--- /See:/ 'vpnConnectionOptions' smart constructor.
-newtype VPNConnectionOptions = VPNConnectionOptions'
-    { _vcoStaticRoutesOnly :: Maybe Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNConnectionOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcoStaticRoutesOnly'
-vpnConnectionOptions
-    :: VPNConnectionOptions
-vpnConnectionOptions =
-    VPNConnectionOptions'
-    { _vcoStaticRoutesOnly = Nothing
-    }
-
--- | Indicates whether the VPN connection uses static routes only. Static
--- routes must be used for devices that don\'t support BGP.
-vcoStaticRoutesOnly :: Lens' VPNConnectionOptions (Maybe Bool)
-vcoStaticRoutesOnly = lens _vcoStaticRoutesOnly (\ s a -> s{_vcoStaticRoutesOnly = a});
-
-instance FromXML VPNConnectionOptions where
-        parseXML x
-          = VPNConnectionOptions' <$>
-              (x .@? "staticRoutesOnly")
-
--- | Describes VPN connection options.
---
--- /See:/ 'vpnConnectionOptionsSpecification' smart constructor.
-newtype VPNConnectionOptionsSpecification = VPNConnectionOptionsSpecification'
-    { _vcosStaticRoutesOnly :: Maybe Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNConnectionOptionsSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcosStaticRoutesOnly'
-vpnConnectionOptionsSpecification
-    :: VPNConnectionOptionsSpecification
-vpnConnectionOptionsSpecification =
-    VPNConnectionOptionsSpecification'
-    { _vcosStaticRoutesOnly = Nothing
-    }
-
--- | Indicates whether the VPN connection uses static routes only. Static
--- routes must be used for devices that don\'t support BGP.
-vcosStaticRoutesOnly :: Lens' VPNConnectionOptionsSpecification (Maybe Bool)
-vcosStaticRoutesOnly = lens _vcosStaticRoutesOnly (\ s a -> s{_vcosStaticRoutesOnly = a});
-
-instance ToQuery VPNConnectionOptionsSpecification
-         where
-        toQuery VPNConnectionOptionsSpecification'{..}
-          = mconcat
-              ["StaticRoutesOnly" =: _vcosStaticRoutesOnly]
-
--- | Describes a virtual private gateway.
---
--- /See:/ 'vpnGateway' smart constructor.
-data VPNGateway = VPNGateway'
-    { _vgVPCAttachments   :: !(Maybe [VPCAttachment])
-    , _vgState            :: !(Maybe VPNState)
-    , _vgVPNGatewayId     :: !(Maybe Text)
-    , _vgAvailabilityZone :: !(Maybe Text)
-    , _vgType             :: !(Maybe GatewayType)
-    , _vgTags             :: !(Maybe [Tag])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNGateway' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vgVPCAttachments'
---
--- * 'vgState'
---
--- * 'vgVPNGatewayId'
---
--- * 'vgAvailabilityZone'
---
--- * 'vgType'
---
--- * 'vgTags'
-vpnGateway
-    :: VPNGateway
-vpnGateway =
-    VPNGateway'
-    { _vgVPCAttachments = Nothing
-    , _vgState = Nothing
-    , _vgVPNGatewayId = Nothing
-    , _vgAvailabilityZone = Nothing
-    , _vgType = Nothing
-    , _vgTags = Nothing
-    }
-
--- | Any VPCs attached to the virtual private gateway.
-vgVPCAttachments :: Lens' VPNGateway [VPCAttachment]
-vgVPCAttachments = lens _vgVPCAttachments (\ s a -> s{_vgVPCAttachments = a}) . _Default . _Coerce;
-
--- | The current state of the virtual private gateway.
-vgState :: Lens' VPNGateway (Maybe VPNState)
-vgState = lens _vgState (\ s a -> s{_vgState = a});
-
--- | The ID of the virtual private gateway.
-vgVPNGatewayId :: Lens' VPNGateway (Maybe Text)
-vgVPNGatewayId = lens _vgVPNGatewayId (\ s a -> s{_vgVPNGatewayId = a});
-
--- | The Availability Zone where the virtual private gateway was created.
-vgAvailabilityZone :: Lens' VPNGateway (Maybe Text)
-vgAvailabilityZone = lens _vgAvailabilityZone (\ s a -> s{_vgAvailabilityZone = a});
-
--- | The type of VPN connection the virtual private gateway supports.
-vgType :: Lens' VPNGateway (Maybe GatewayType)
-vgType = lens _vgType (\ s a -> s{_vgType = a});
-
--- | Any tags assigned to the virtual private gateway.
-vgTags :: Lens' VPNGateway [Tag]
-vgTags = lens _vgTags (\ s a -> s{_vgTags = a}) . _Default . _Coerce;
-
-instance FromXML VPNGateway where
-        parseXML x
-          = VPNGateway' <$>
-              (x .@? "attachments" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "state")
-                <*> (x .@? "vpnGatewayId")
-                <*> (x .@? "availabilityZone")
-                <*> (x .@? "type")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes a static route for a VPN connection.
---
--- /See:/ 'vpnStaticRoute' smart constructor.
-data VPNStaticRoute = VPNStaticRoute'
-    { _vsrState                :: !(Maybe VPNState)
-    , _vsrSource               :: !(Maybe VPNStaticRouteSource)
-    , _vsrDestinationCIdRBlock :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNStaticRoute' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsrState'
---
--- * 'vsrSource'
---
--- * 'vsrDestinationCIdRBlock'
-vpnStaticRoute
-    :: VPNStaticRoute
-vpnStaticRoute =
-    VPNStaticRoute'
-    { _vsrState = Nothing
-    , _vsrSource = Nothing
-    , _vsrDestinationCIdRBlock = Nothing
-    }
-
--- | The current state of the static route.
-vsrState :: Lens' VPNStaticRoute (Maybe VPNState)
-vsrState = lens _vsrState (\ s a -> s{_vsrState = a});
-
--- | Indicates how the routes were provided.
-vsrSource :: Lens' VPNStaticRoute (Maybe VPNStaticRouteSource)
-vsrSource = lens _vsrSource (\ s a -> s{_vsrSource = a});
-
--- | The CIDR block associated with the local subnet of the customer data
--- center.
-vsrDestinationCIdRBlock :: Lens' VPNStaticRoute (Maybe Text)
-vsrDestinationCIdRBlock = lens _vsrDestinationCIdRBlock (\ s a -> s{_vsrDestinationCIdRBlock = a});
-
-instance FromXML VPNStaticRoute where
-        parseXML x
-          = VPNStaticRoute' <$>
-              (x .@? "state") <*> (x .@? "source") <*>
-                (x .@? "destinationCidrBlock")
-
--- | Describes a volume.
---
--- /See:/ 'volume' smart constructor.
-data Volume = Volume'
-    { _vAttachments      :: !(Maybe [VolumeAttachment])
-    , _vIOPS             :: !(Maybe Int)
-    , _vKMSKeyId         :: !(Maybe Text)
-    , _vTags             :: !(Maybe [Tag])
-    , _vAvailabilityZone :: !Text
-    , _vCreateTime       :: !ISO8601
-    , _vEncrypted        :: !Bool
-    , _vSize             :: !Int
-    , _vSnapshotId       :: !Text
-    , _vState            :: !VolumeState
-    , _vVolumeId         :: !Text
-    , _vVolumeType       :: !VolumeType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Volume' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vAttachments'
---
--- * 'vIOPS'
---
--- * 'vKMSKeyId'
---
--- * 'vTags'
---
--- * 'vAvailabilityZone'
---
--- * 'vCreateTime'
---
--- * 'vEncrypted'
---
--- * 'vSize'
---
--- * 'vSnapshotId'
---
--- * 'vState'
---
--- * 'vVolumeId'
---
--- * 'vVolumeType'
-volume
-    :: Text -- ^ 'vAvailabilityZone'
-    -> UTCTime -- ^ 'vCreateTime'
-    -> Bool -- ^ 'vEncrypted'
-    -> Int -- ^ 'vSize'
-    -> Text -- ^ 'vSnapshotId'
-    -> VolumeState -- ^ 'vState'
-    -> Text -- ^ 'vVolumeId'
-    -> VolumeType -- ^ 'vVolumeType'
-    -> Volume
-volume pAvailabilityZone_ pCreateTime_ pEncrypted_ pSize_ pSnapshotId_ pState_ pVolumeId_ pVolumeType_ =
-    Volume'
-    { _vAttachments = Nothing
-    , _vIOPS = Nothing
-    , _vKMSKeyId = Nothing
-    , _vTags = Nothing
-    , _vAvailabilityZone = pAvailabilityZone_
-    , _vCreateTime = _Time # pCreateTime_
-    , _vEncrypted = pEncrypted_
-    , _vSize = pSize_
-    , _vSnapshotId = pSnapshotId_
-    , _vState = pState_
-    , _vVolumeId = pVolumeId_
-    , _vVolumeType = pVolumeType_
-    }
-
--- | Information about the volume attachments.
-vAttachments :: Lens' Volume [VolumeAttachment]
-vAttachments = lens _vAttachments (\ s a -> s{_vAttachments = a}) . _Default . _Coerce;
-
--- | The number of I\/O operations per second (IOPS) that the volume
--- supports. For Provisioned IOPS (SSD) volumes, this represents the number
--- of IOPS that are provisioned for the volume. For General Purpose (SSD)
--- volumes, this represents the baseline performance of the volume and the
--- rate at which the volume accumulates I\/O credits for bursting. For more
--- information on General Purpose (SSD) baseline performance, I\/O credits,
--- and bursting, see
--- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types>
--- in the /Amazon Elastic Compute Cloud User Guide/.
---
--- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
--- 3 to 10000 for General Purpose (SSD) volumes.
---
--- Condition: This parameter is required for requests to create 'io1'
--- volumes; it is not used in requests to create 'standard' or 'gp2'
--- volumes.
-vIOPS :: Lens' Volume (Maybe Int)
-vIOPS = lens _vIOPS (\ s a -> s{_vIOPS = 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
--- volume.
-vKMSKeyId :: Lens' Volume (Maybe Text)
-vKMSKeyId = lens _vKMSKeyId (\ s a -> s{_vKMSKeyId = a});
-
--- | Any tags assigned to the volume.
-vTags :: Lens' Volume [Tag]
-vTags = lens _vTags (\ s a -> s{_vTags = a}) . _Default . _Coerce;
-
--- | The Availability Zone for the volume.
-vAvailabilityZone :: Lens' Volume Text
-vAvailabilityZone = lens _vAvailabilityZone (\ s a -> s{_vAvailabilityZone = a});
-
--- | The time stamp when volume creation was initiated.
-vCreateTime :: Lens' Volume UTCTime
-vCreateTime = lens _vCreateTime (\ s a -> s{_vCreateTime = a}) . _Time;
-
--- | Indicates whether the volume will be encrypted.
-vEncrypted :: Lens' Volume Bool
-vEncrypted = lens _vEncrypted (\ s a -> s{_vEncrypted = a});
-
--- | The size of the volume, in GiBs.
-vSize :: Lens' Volume Int
-vSize = lens _vSize (\ s a -> s{_vSize = a});
-
--- | The snapshot from which the volume was created, if applicable.
-vSnapshotId :: Lens' Volume Text
-vSnapshotId = lens _vSnapshotId (\ s a -> s{_vSnapshotId = a});
-
--- | The volume state.
-vState :: Lens' Volume VolumeState
-vState = lens _vState (\ s a -> s{_vState = a});
-
--- | The ID of the volume.
-vVolumeId :: Lens' Volume Text
-vVolumeId = lens _vVolumeId (\ s a -> s{_vVolumeId = a});
-
--- | The volume type. This can be 'gp2' for General Purpose (SSD) volumes,
--- 'io1' for Provisioned IOPS (SSD) volumes, or 'standard' for Magnetic
--- volumes.
-vVolumeType :: Lens' Volume VolumeType
-vVolumeType = lens _vVolumeType (\ s a -> s{_vVolumeType = a});
-
-instance FromXML Volume where
-        parseXML x
-          = Volume' <$>
-              (x .@? "attachmentSet" .!@ mempty >>=
-                 may (parseXMLList "item"))
-                <*> (x .@? "iops")
-                <*> (x .@? "kmsKeyId")
-                <*>
-                (x .@? "tagSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@ "availabilityZone")
-                <*> (x .@ "createTime")
-                <*> (x .@ "encrypted")
-                <*> (x .@ "size")
-                <*> (x .@ "snapshotId")
-                <*> (x .@ "status")
-                <*> (x .@ "volumeId")
-                <*> (x .@ "volumeType")
-
--- | Describes volume attachment details.
---
--- /See:/ 'volumeAttachment' smart constructor.
-data VolumeAttachment = VolumeAttachment'
-    { _volInstanceId          :: !(Maybe Text)
-    , _volDeleteOnTermination :: !(Maybe Bool)
-    , _volState               :: !(Maybe VolumeAttachmentState)
-    , _volDevice              :: !(Maybe Text)
-    , _volVolumeId            :: !(Maybe Text)
-    , _volAttachTime          :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeAttachment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'volInstanceId'
---
--- * 'volDeleteOnTermination'
---
--- * 'volState'
---
--- * 'volDevice'
---
--- * 'volVolumeId'
---
--- * 'volAttachTime'
-volumeAttachment
-    :: VolumeAttachment
-volumeAttachment =
-    VolumeAttachment'
-    { _volInstanceId = Nothing
-    , _volDeleteOnTermination = Nothing
-    , _volState = Nothing
-    , _volDevice = Nothing
-    , _volVolumeId = Nothing
-    , _volAttachTime = Nothing
-    }
-
--- | The ID of the instance.
-volInstanceId :: Lens' VolumeAttachment (Maybe Text)
-volInstanceId = lens _volInstanceId (\ s a -> s{_volInstanceId = a});
-
--- | Indicates whether the EBS volume is deleted on instance termination.
-volDeleteOnTermination :: Lens' VolumeAttachment (Maybe Bool)
-volDeleteOnTermination = lens _volDeleteOnTermination (\ s a -> s{_volDeleteOnTermination = a});
-
--- | The attachment state of the volume.
-volState :: Lens' VolumeAttachment (Maybe VolumeAttachmentState)
-volState = lens _volState (\ s a -> s{_volState = a});
-
--- | The device name.
-volDevice :: Lens' VolumeAttachment (Maybe Text)
-volDevice = lens _volDevice (\ s a -> s{_volDevice = a});
-
--- | The ID of the volume.
-volVolumeId :: Lens' VolumeAttachment (Maybe Text)
-volVolumeId = lens _volVolumeId (\ s a -> s{_volVolumeId = a});
-
--- | The time stamp when the attachment initiated.
-volAttachTime :: Lens' VolumeAttachment (Maybe UTCTime)
-volAttachTime = lens _volAttachTime (\ s a -> s{_volAttachTime = a}) . mapping _Time;
-
-instance FromXML VolumeAttachment where
-        parseXML x
-          = VolumeAttachment' <$>
-              (x .@? "instanceId") <*>
-                (x .@? "deleteOnTermination")
-                <*> (x .@? "status")
-                <*> (x .@? "device")
-                <*> (x .@? "volumeId")
-                <*> (x .@? "attachTime")
-
--- | Describes an EBS volume.
---
--- /See:/ 'volumeDetail' smart constructor.
-newtype VolumeDetail = VolumeDetail'
-    { _vdSize :: Integer
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vdSize'
-volumeDetail
-    :: Integer -- ^ 'vdSize'
-    -> VolumeDetail
-volumeDetail pSize_ =
-    VolumeDetail'
-    { _vdSize = pSize_
-    }
-
--- | The size of the volume, in GiB.
-vdSize :: Lens' VolumeDetail Integer
-vdSize = lens _vdSize (\ s a -> s{_vdSize = a});
-
-instance ToQuery VolumeDetail where
-        toQuery VolumeDetail'{..}
-          = mconcat ["Size" =: _vdSize]
-
--- | Describes a volume status operation code.
---
--- /See:/ 'volumeStatusAction' smart constructor.
-data VolumeStatusAction = VolumeStatusAction'
-    { _vsaEventType   :: !(Maybe Text)
-    , _vsaCode        :: !(Maybe Text)
-    , _vsaDescription :: !(Maybe Text)
-    , _vsaEventId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeStatusAction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsaEventType'
---
--- * 'vsaCode'
---
--- * 'vsaDescription'
---
--- * 'vsaEventId'
-volumeStatusAction
-    :: VolumeStatusAction
-volumeStatusAction =
-    VolumeStatusAction'
-    { _vsaEventType = Nothing
-    , _vsaCode = Nothing
-    , _vsaDescription = Nothing
-    , _vsaEventId = Nothing
-    }
-
--- | The event type associated with this operation.
-vsaEventType :: Lens' VolumeStatusAction (Maybe Text)
-vsaEventType = lens _vsaEventType (\ s a -> s{_vsaEventType = a});
-
--- | The code identifying the operation, for example, 'enable-volume-io'.
-vsaCode :: Lens' VolumeStatusAction (Maybe Text)
-vsaCode = lens _vsaCode (\ s a -> s{_vsaCode = a});
-
--- | A description of the operation.
-vsaDescription :: Lens' VolumeStatusAction (Maybe Text)
-vsaDescription = lens _vsaDescription (\ s a -> s{_vsaDescription = a});
-
--- | The ID of the event associated with this operation.
-vsaEventId :: Lens' VolumeStatusAction (Maybe Text)
-vsaEventId = lens _vsaEventId (\ s a -> s{_vsaEventId = a});
-
-instance FromXML VolumeStatusAction where
-        parseXML x
-          = VolumeStatusAction' <$>
-              (x .@? "eventType") <*> (x .@? "code") <*>
-                (x .@? "description")
-                <*> (x .@? "eventId")
-
--- | Describes a volume status.
---
--- /See:/ 'volumeStatusDetails' smart constructor.
-data VolumeStatusDetails = VolumeStatusDetails'
-    { _vsdStatus :: !(Maybe Text)
-    , _vsdName   :: !(Maybe VolumeStatusName)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeStatusDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsdStatus'
---
--- * 'vsdName'
-volumeStatusDetails
-    :: VolumeStatusDetails
-volumeStatusDetails =
-    VolumeStatusDetails'
-    { _vsdStatus = Nothing
-    , _vsdName = Nothing
-    }
-
--- | The intended status of the volume status.
-vsdStatus :: Lens' VolumeStatusDetails (Maybe Text)
-vsdStatus = lens _vsdStatus (\ s a -> s{_vsdStatus = a});
-
--- | The name of the volume status.
-vsdName :: Lens' VolumeStatusDetails (Maybe VolumeStatusName)
-vsdName = lens _vsdName (\ s a -> s{_vsdName = a});
-
-instance FromXML VolumeStatusDetails where
-        parseXML x
-          = VolumeStatusDetails' <$>
-              (x .@? "status") <*> (x .@? "name")
-
--- | Describes a volume status event.
---
--- /See:/ 'volumeStatusEvent' smart constructor.
-data VolumeStatusEvent = VolumeStatusEvent'
-    { _vseNotBefore   :: !(Maybe ISO8601)
-    , _vseEventType   :: !(Maybe Text)
-    , _vseDescription :: !(Maybe Text)
-    , _vseNotAfter    :: !(Maybe ISO8601)
-    , _vseEventId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeStatusEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vseNotBefore'
---
--- * 'vseEventType'
---
--- * 'vseDescription'
---
--- * 'vseNotAfter'
---
--- * 'vseEventId'
-volumeStatusEvent
-    :: VolumeStatusEvent
-volumeStatusEvent =
-    VolumeStatusEvent'
-    { _vseNotBefore = Nothing
-    , _vseEventType = Nothing
-    , _vseDescription = Nothing
-    , _vseNotAfter = Nothing
-    , _vseEventId = Nothing
-    }
-
--- | The earliest start time of the event.
-vseNotBefore :: Lens' VolumeStatusEvent (Maybe UTCTime)
-vseNotBefore = lens _vseNotBefore (\ s a -> s{_vseNotBefore = a}) . mapping _Time;
-
--- | The type of this event.
-vseEventType :: Lens' VolumeStatusEvent (Maybe Text)
-vseEventType = lens _vseEventType (\ s a -> s{_vseEventType = a});
-
--- | A description of the event.
-vseDescription :: Lens' VolumeStatusEvent (Maybe Text)
-vseDescription = lens _vseDescription (\ s a -> s{_vseDescription = a});
-
--- | The latest end time of the event.
-vseNotAfter :: Lens' VolumeStatusEvent (Maybe UTCTime)
-vseNotAfter = lens _vseNotAfter (\ s a -> s{_vseNotAfter = a}) . mapping _Time;
-
--- | The ID of this event.
-vseEventId :: Lens' VolumeStatusEvent (Maybe Text)
-vseEventId = lens _vseEventId (\ s a -> s{_vseEventId = a});
-
-instance FromXML VolumeStatusEvent where
-        parseXML x
-          = VolumeStatusEvent' <$>
-              (x .@? "notBefore") <*> (x .@? "eventType") <*>
-                (x .@? "description")
-                <*> (x .@? "notAfter")
-                <*> (x .@? "eventId")
-
--- | Describes the status of a volume.
---
--- /See:/ 'volumeStatusInfo' smart constructor.
-data VolumeStatusInfo = VolumeStatusInfo'
-    { _vsiStatus  :: !(Maybe VolumeStatusInfoStatus)
-    , _vsiDetails :: !(Maybe [VolumeStatusDetails])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeStatusInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsiStatus'
---
--- * 'vsiDetails'
-volumeStatusInfo
-    :: VolumeStatusInfo
-volumeStatusInfo =
-    VolumeStatusInfo'
-    { _vsiStatus = Nothing
-    , _vsiDetails = Nothing
-    }
-
--- | The status of the volume.
-vsiStatus :: Lens' VolumeStatusInfo (Maybe VolumeStatusInfoStatus)
-vsiStatus = lens _vsiStatus (\ s a -> s{_vsiStatus = a});
-
--- | The details of the volume status.
-vsiDetails :: Lens' VolumeStatusInfo [VolumeStatusDetails]
-vsiDetails = lens _vsiDetails (\ s a -> s{_vsiDetails = a}) . _Default . _Coerce;
-
-instance FromXML VolumeStatusInfo where
-        parseXML x
-          = VolumeStatusInfo' <$>
-              (x .@? "status") <*>
-                (x .@? "details" .!@ mempty >>=
-                   may (parseXMLList "item"))
-
--- | Describes the volume status.
---
--- /See:/ 'volumeStatusItem' smart constructor.
-data VolumeStatusItem = VolumeStatusItem'
-    { _vsiVolumeStatus     :: !(Maybe VolumeStatusInfo)
-    , _vsiActions          :: !(Maybe [VolumeStatusAction])
-    , _vsiAvailabilityZone :: !(Maybe Text)
-    , _vsiEvents           :: !(Maybe [VolumeStatusEvent])
-    , _vsiVolumeId         :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeStatusItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsiVolumeStatus'
---
--- * 'vsiActions'
---
--- * 'vsiAvailabilityZone'
---
--- * 'vsiEvents'
---
--- * 'vsiVolumeId'
-volumeStatusItem
-    :: VolumeStatusItem
-volumeStatusItem =
-    VolumeStatusItem'
-    { _vsiVolumeStatus = Nothing
-    , _vsiActions = Nothing
-    , _vsiAvailabilityZone = Nothing
-    , _vsiEvents = Nothing
-    , _vsiVolumeId = Nothing
-    }
-
--- | The volume status.
-vsiVolumeStatus :: Lens' VolumeStatusItem (Maybe VolumeStatusInfo)
-vsiVolumeStatus = lens _vsiVolumeStatus (\ s a -> s{_vsiVolumeStatus = a});
-
--- | The details of the operation.
-vsiActions :: Lens' VolumeStatusItem [VolumeStatusAction]
-vsiActions = lens _vsiActions (\ s a -> s{_vsiActions = a}) . _Default . _Coerce;
-
--- | The Availability Zone of the volume.
-vsiAvailabilityZone :: Lens' VolumeStatusItem (Maybe Text)
-vsiAvailabilityZone = lens _vsiAvailabilityZone (\ s a -> s{_vsiAvailabilityZone = a});
-
--- | A list of events associated with the volume.
-vsiEvents :: Lens' VolumeStatusItem [VolumeStatusEvent]
-vsiEvents = lens _vsiEvents (\ s a -> s{_vsiEvents = a}) . _Default . _Coerce;
-
--- | The volume ID.
-vsiVolumeId :: Lens' VolumeStatusItem (Maybe Text)
-vsiVolumeId = lens _vsiVolumeId (\ s a -> s{_vsiVolumeId = a});
-
-instance FromXML VolumeStatusItem where
-        parseXML x
-          = VolumeStatusItem' <$>
-              (x .@? "volumeStatus") <*>
-                (x .@? "actionsSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
-                <*> (x .@? "availabilityZone")
-                <*>
-                (x .@? "eventsSet" .!@ mempty >>=
-                   may (parseXMLList "item"))
+    { _aAssociationId           :: !(Maybe Text)
+    , _aInstanceId              :: !(Maybe Text)
+    , _aNetworkInterfaceOwnerId :: !(Maybe Text)
+    , _aAllocationId            :: !(Maybe Text)
+    , _aDomain                  :: !(Maybe DomainType)
+    , _aNetworkInterfaceId      :: !(Maybe Text)
+    , _aPrivateIPAddress        :: !(Maybe Text)
+    , _aPublicIP                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Address' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAssociationId'
+--
+-- * 'aInstanceId'
+--
+-- * 'aNetworkInterfaceOwnerId'
+--
+-- * 'aAllocationId'
+--
+-- * 'aDomain'
+--
+-- * 'aNetworkInterfaceId'
+--
+-- * 'aPrivateIPAddress'
+--
+-- * 'aPublicIP'
+address
+    :: Address
+address =
+    Address'
+    { _aAssociationId = Nothing
+    , _aInstanceId = Nothing
+    , _aNetworkInterfaceOwnerId = Nothing
+    , _aAllocationId = Nothing
+    , _aDomain = Nothing
+    , _aNetworkInterfaceId = Nothing
+    , _aPrivateIPAddress = Nothing
+    , _aPublicIP = Nothing
+    }
+
+-- | The ID representing the association of the address with an instance in a
+-- VPC.
+aAssociationId :: Lens' Address (Maybe Text)
+aAssociationId = lens _aAssociationId (\ s a -> s{_aAssociationId = a});
+
+-- | The ID of the instance that the address is associated with (if any).
+aInstanceId :: Lens' Address (Maybe Text)
+aInstanceId = lens _aInstanceId (\ s a -> s{_aInstanceId = a});
+
+-- | The ID of the AWS account that owns the network interface.
+aNetworkInterfaceOwnerId :: Lens' Address (Maybe Text)
+aNetworkInterfaceOwnerId = lens _aNetworkInterfaceOwnerId (\ s a -> s{_aNetworkInterfaceOwnerId = a});
+
+-- | The ID representing the allocation of the address for use with EC2-VPC.
+aAllocationId :: Lens' Address (Maybe Text)
+aAllocationId = lens _aAllocationId (\ s a -> s{_aAllocationId = a});
+
+-- | Indicates whether this Elastic IP address is for use with instances in
+-- EC2-Classic ('standard') or instances in a VPC ('vpc').
+aDomain :: Lens' Address (Maybe DomainType)
+aDomain = lens _aDomain (\ s a -> s{_aDomain = a});
+
+-- | The ID of the network interface.
+aNetworkInterfaceId :: Lens' Address (Maybe Text)
+aNetworkInterfaceId = lens _aNetworkInterfaceId (\ s a -> s{_aNetworkInterfaceId = a});
+
+-- | The private IP address associated with the Elastic IP address.
+aPrivateIPAddress :: Lens' Address (Maybe Text)
+aPrivateIPAddress = lens _aPrivateIPAddress (\ s a -> s{_aPrivateIPAddress = a});
+
+-- | The Elastic IP address.
+aPublicIP :: Lens' Address (Maybe Text)
+aPublicIP = lens _aPublicIP (\ s a -> s{_aPublicIP = a});
+
+instance FromXML Address where
+        parseXML x
+          = Address' <$>
+              (x .@? "associationId") <*> (x .@? "instanceId") <*>
+                (x .@? "networkInterfaceOwnerId")
+                <*> (x .@? "allocationId")
+                <*> (x .@? "domain")
+                <*> (x .@? "networkInterfaceId")
+                <*> (x .@? "privateIpAddress")
+                <*> (x .@? "publicIp")
+
+-- | The value to use when a resource attribute accepts a Boolean value.
+--
+-- /See:/ 'attributeBooleanValue' smart constructor.
+newtype AttributeBooleanValue = AttributeBooleanValue'
+    { _abvValue :: Maybe Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttributeBooleanValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'abvValue'
+attributeBooleanValue
+    :: AttributeBooleanValue
+attributeBooleanValue =
+    AttributeBooleanValue'
+    { _abvValue = Nothing
+    }
+
+-- | Valid values are 'true' or 'false'.
+abvValue :: Lens' AttributeBooleanValue (Maybe Bool)
+abvValue = lens _abvValue (\ s a -> s{_abvValue = a});
+
+instance FromXML AttributeBooleanValue where
+        parseXML x
+          = AttributeBooleanValue' <$> (x .@? "value")
+
+instance ToQuery AttributeBooleanValue where
+        toQuery AttributeBooleanValue'{..}
+          = mconcat ["Value" =: _abvValue]
+
+-- | The value to use for a resource attribute.
+--
+-- /See:/ 'attributeValue' smart constructor.
+newtype AttributeValue = AttributeValue'
+    { _avValue :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttributeValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'avValue'
+attributeValue
+    :: AttributeValue
+attributeValue =
+    AttributeValue'
+    { _avValue = Nothing
+    }
+
+-- | Valid values are case-sensitive and vary by action.
+avValue :: Lens' AttributeValue (Maybe Text)
+avValue = lens _avValue (\ s a -> s{_avValue = a});
+
+instance FromXML AttributeValue where
+        parseXML x = AttributeValue' <$> (x .@? "value")
+
+instance ToQuery AttributeValue where
+        toQuery AttributeValue'{..}
+          = mconcat ["Value" =: _avValue]
+
+-- | Describes an Availability Zone.
+--
+-- /See:/ 'availabilityZone' smart constructor.
+data AvailabilityZone = AvailabilityZone'
+    { _azState      :: !(Maybe AvailabilityZoneState)
+    , _azRegionName :: !(Maybe Text)
+    , _azZoneName   :: !(Maybe Text)
+    , _azMessages   :: !(Maybe [AvailabilityZoneMessage])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AvailabilityZone' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'azState'
+--
+-- * 'azRegionName'
+--
+-- * 'azZoneName'
+--
+-- * 'azMessages'
+availabilityZone
+    :: AvailabilityZone
+availabilityZone =
+    AvailabilityZone'
+    { _azState = Nothing
+    , _azRegionName = Nothing
+    , _azZoneName = Nothing
+    , _azMessages = Nothing
+    }
+
+-- | The state of the Availability Zone ('available' | 'impaired' |
+-- 'unavailable').
+azState :: Lens' AvailabilityZone (Maybe AvailabilityZoneState)
+azState = lens _azState (\ s a -> s{_azState = a});
+
+-- | The name of the region.
+azRegionName :: Lens' AvailabilityZone (Maybe Text)
+azRegionName = lens _azRegionName (\ s a -> s{_azRegionName = a});
+
+-- | The name of the Availability Zone.
+azZoneName :: Lens' AvailabilityZone (Maybe Text)
+azZoneName = lens _azZoneName (\ s a -> s{_azZoneName = a});
+
+-- | Any messages about the Availability Zone.
+azMessages :: Lens' AvailabilityZone [AvailabilityZoneMessage]
+azMessages = lens _azMessages (\ s a -> s{_azMessages = a}) . _Default . _Coerce;
+
+instance FromXML AvailabilityZone where
+        parseXML x
+          = AvailabilityZone' <$>
+              (x .@? "zoneState") <*> (x .@? "regionName") <*>
+                (x .@? "zoneName")
+                <*>
+                (x .@? "messageSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes a message about an Availability Zone.
+--
+-- /See:/ 'availabilityZoneMessage' smart constructor.
+newtype AvailabilityZoneMessage = AvailabilityZoneMessage'
+    { _azmMessage :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AvailabilityZoneMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'azmMessage'
+availabilityZoneMessage
+    :: AvailabilityZoneMessage
+availabilityZoneMessage =
+    AvailabilityZoneMessage'
+    { _azmMessage = Nothing
+    }
+
+-- | The message about the Availability Zone.
+azmMessage :: Lens' AvailabilityZoneMessage (Maybe Text)
+azmMessage = lens _azmMessage (\ s a -> s{_azmMessage = a});
+
+instance FromXML AvailabilityZoneMessage where
+        parseXML x
+          = AvailabilityZoneMessage' <$> (x .@? "message")
+
+-- | /See:/ 'blobAttributeValue' smart constructor.
+newtype BlobAttributeValue = BlobAttributeValue'
+    { _bavValue :: Maybe Base64
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BlobAttributeValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bavValue'
+blobAttributeValue
+    :: BlobAttributeValue
+blobAttributeValue =
+    BlobAttributeValue'
+    { _bavValue = Nothing
+    }
+
+-- | Undocumented member.
+--
+-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
+-- despite what the AWS documentation might say.
+-- The underlying isomorphism will encode to Base64 representation during
+-- serialisation, and decode from Base64 representation during deserialisation.
+-- This 'Lens' accepts and returns only raw unencoded data.
+bavValue :: Lens' BlobAttributeValue (Maybe ByteString)
+bavValue = lens _bavValue (\ s a -> s{_bavValue = a}) . mapping _Base64;
+
+instance ToQuery BlobAttributeValue where
+        toQuery BlobAttributeValue'{..}
+          = mconcat ["Value" =: _bavValue]
+
+-- | Describes a block device mapping.
+--
+-- /See:/ 'blockDeviceMapping' smart constructor.
+data BlockDeviceMapping = BlockDeviceMapping'
+    { _bdmVirtualName :: !(Maybe Text)
+    , _bdmNoDevice    :: !(Maybe Text)
+    , _bdmEBS         :: !(Maybe EBSBlockDevice)
+    , _bdmDeviceName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bdmVirtualName'
+--
+-- * 'bdmNoDevice'
+--
+-- * 'bdmEBS'
+--
+-- * 'bdmDeviceName'
+blockDeviceMapping
+    :: Text -- ^ 'bdmDeviceName'
+    -> BlockDeviceMapping
+blockDeviceMapping pDeviceName_ =
+    BlockDeviceMapping'
+    { _bdmVirtualName = Nothing
+    , _bdmNoDevice = Nothing
+    , _bdmEBS = Nothing
+    , _bdmDeviceName = pDeviceName_
+    }
+
+-- | The virtual device name ('ephemeral'N). Instance store volumes are
+-- numbered starting from 0. An instance type with 2 available instance
+-- store volumes can specify mappings for 'ephemeral0' and 'ephemeral1'.The
+-- number of available instance store volumes depends on the instance type.
+-- After you connect to the instance, you must mount the volume.
+--
+-- Constraints: For M3 instances, you must specify instance store volumes
+-- in the block device mapping for the instance. When you launch an M3
+-- instance, we ignore any instance store volumes specified in the block
+-- device mapping for the AMI.
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
+
+-- | Suppresses the specified device included in the block device mapping of
+-- the AMI.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
+bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
+
+-- | Parameters used to automatically set up EBS volumes when the instance is
+-- launched.
+bdmEBS :: Lens' BlockDeviceMapping (Maybe EBSBlockDevice)
+bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
+
+-- | The device name exposed to the instance (for example, '\/dev\/sdh' or
+-- 'xvdh').
+bdmDeviceName :: Lens' BlockDeviceMapping Text
+bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
+
+instance FromXML BlockDeviceMapping where
+        parseXML x
+          = BlockDeviceMapping' <$>
+              (x .@? "virtualName") <*> (x .@? "noDevice") <*>
+                (x .@? "ebs")
+                <*> (x .@ "deviceName")
+
+instance ToQuery BlockDeviceMapping where
+        toQuery BlockDeviceMapping'{..}
+          = mconcat
+              ["VirtualName" =: _bdmVirtualName,
+               "NoDevice" =: _bdmNoDevice, "Ebs" =: _bdmEBS,
+               "DeviceName" =: _bdmDeviceName]
+
+-- | Describes a bundle task.
+--
+-- /See:/ 'bundleTask' smart constructor.
+data BundleTask = BundleTask'
+    { _btBundleTaskError :: !(Maybe BundleTaskError)
+    , _btBundleId        :: !Text
+    , _btInstanceId      :: !Text
+    , _btProgress        :: !Text
+    , _btStartTime       :: !ISO8601
+    , _btState           :: !BundleTaskState
+    , _btStorage         :: !Storage
+    , _btUpdateTime      :: !ISO8601
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BundleTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'btBundleTaskError'
+--
+-- * 'btBundleId'
+--
+-- * 'btInstanceId'
+--
+-- * 'btProgress'
+--
+-- * 'btStartTime'
+--
+-- * 'btState'
+--
+-- * 'btStorage'
+--
+-- * 'btUpdateTime'
+bundleTask
+    :: Text -- ^ 'btBundleId'
+    -> Text -- ^ 'btInstanceId'
+    -> Text -- ^ 'btProgress'
+    -> UTCTime -- ^ 'btStartTime'
+    -> BundleTaskState -- ^ 'btState'
+    -> Storage -- ^ 'btStorage'
+    -> UTCTime -- ^ 'btUpdateTime'
+    -> BundleTask
+bundleTask pBundleId_ pInstanceId_ pProgress_ pStartTime_ pState_ pStorage_ pUpdateTime_ =
+    BundleTask'
+    { _btBundleTaskError = Nothing
+    , _btBundleId = pBundleId_
+    , _btInstanceId = pInstanceId_
+    , _btProgress = pProgress_
+    , _btStartTime = _Time # pStartTime_
+    , _btState = pState_
+    , _btStorage = pStorage_
+    , _btUpdateTime = _Time # pUpdateTime_
+    }
+
+-- | If the task fails, a description of the error.
+btBundleTaskError :: Lens' BundleTask (Maybe BundleTaskError)
+btBundleTaskError = lens _btBundleTaskError (\ s a -> s{_btBundleTaskError = a});
+
+-- | The ID of the bundle task.
+btBundleId :: Lens' BundleTask Text
+btBundleId = lens _btBundleId (\ s a -> s{_btBundleId = a});
+
+-- | The ID of the instance associated with this bundle task.
+btInstanceId :: Lens' BundleTask Text
+btInstanceId = lens _btInstanceId (\ s a -> s{_btInstanceId = a});
+
+-- | The level of task completion, as a percent (for example, 20%).
+btProgress :: Lens' BundleTask Text
+btProgress = lens _btProgress (\ s a -> s{_btProgress = a});
+
+-- | The time this task started.
+btStartTime :: Lens' BundleTask UTCTime
+btStartTime = lens _btStartTime (\ s a -> s{_btStartTime = a}) . _Time;
+
+-- | The state of the task.
+btState :: Lens' BundleTask BundleTaskState
+btState = lens _btState (\ s a -> s{_btState = a});
+
+-- | The Amazon S3 storage locations.
+btStorage :: Lens' BundleTask Storage
+btStorage = lens _btStorage (\ s a -> s{_btStorage = a});
+
+-- | The time of the most recent update for the task.
+btUpdateTime :: Lens' BundleTask UTCTime
+btUpdateTime = lens _btUpdateTime (\ s a -> s{_btUpdateTime = a}) . _Time;
+
+instance FromXML BundleTask where
+        parseXML x
+          = BundleTask' <$>
+              (x .@? "error") <*> (x .@ "bundleId") <*>
+                (x .@ "instanceId")
+                <*> (x .@ "progress")
+                <*> (x .@ "startTime")
+                <*> (x .@ "state")
+                <*> (x .@ "storage")
+                <*> (x .@ "updateTime")
+
+-- | Describes an error for BundleInstance.
+--
+-- /See:/ 'bundleTaskError' smart constructor.
+data BundleTaskError = BundleTaskError'
+    { _bteCode    :: !(Maybe Text)
+    , _bteMessage :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BundleTaskError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bteCode'
+--
+-- * 'bteMessage'
+bundleTaskError
+    :: BundleTaskError
+bundleTaskError =
+    BundleTaskError'
+    { _bteCode = Nothing
+    , _bteMessage = Nothing
+    }
+
+-- | The error code.
+bteCode :: Lens' BundleTaskError (Maybe Text)
+bteCode = lens _bteCode (\ s a -> s{_bteCode = a});
+
+-- | The error message.
+bteMessage :: Lens' BundleTaskError (Maybe Text)
+bteMessage = lens _bteMessage (\ s a -> s{_bteMessage = a});
+
+instance FromXML BundleTaskError where
+        parseXML x
+          = BundleTaskError' <$>
+              (x .@? "code") <*> (x .@? "message")
+
+-- | Describes a Spot fleet error.
+--
+-- /See:/ 'cancelSpotFleetRequestsError' smart constructor.
+data CancelSpotFleetRequestsError = CancelSpotFleetRequestsError'
+    { _csfreCode    :: !CancelBatchErrorCode
+    , _csfreMessage :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelSpotFleetRequestsError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csfreCode'
+--
+-- * 'csfreMessage'
+cancelSpotFleetRequestsError
+    :: CancelBatchErrorCode -- ^ 'csfreCode'
+    -> Text -- ^ 'csfreMessage'
+    -> CancelSpotFleetRequestsError
+cancelSpotFleetRequestsError pCode_ pMessage_ =
+    CancelSpotFleetRequestsError'
+    { _csfreCode = pCode_
+    , _csfreMessage = pMessage_
+    }
+
+-- | The error code.
+csfreCode :: Lens' CancelSpotFleetRequestsError CancelBatchErrorCode
+csfreCode = lens _csfreCode (\ s a -> s{_csfreCode = a});
+
+-- | The description for the error code.
+csfreMessage :: Lens' CancelSpotFleetRequestsError Text
+csfreMessage = lens _csfreMessage (\ s a -> s{_csfreMessage = a});
+
+instance FromXML CancelSpotFleetRequestsError where
+        parseXML x
+          = CancelSpotFleetRequestsError' <$>
+              (x .@ "code") <*> (x .@ "message")
+
+-- | Describes a Spot fleet request that was not successfully canceled.
+--
+-- /See:/ 'cancelSpotFleetRequestsErrorItem' smart constructor.
+data CancelSpotFleetRequestsErrorItem = CancelSpotFleetRequestsErrorItem'
+    { _csfreiSpotFleetRequestId :: !Text
+    , _csfreiError              :: !CancelSpotFleetRequestsError
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelSpotFleetRequestsErrorItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csfreiSpotFleetRequestId'
+--
+-- * 'csfreiError'
+cancelSpotFleetRequestsErrorItem
+    :: Text -- ^ 'csfreiSpotFleetRequestId'
+    -> CancelSpotFleetRequestsError -- ^ 'csfreiError'
+    -> CancelSpotFleetRequestsErrorItem
+cancelSpotFleetRequestsErrorItem pSpotFleetRequestId_ pError_ =
+    CancelSpotFleetRequestsErrorItem'
+    { _csfreiSpotFleetRequestId = pSpotFleetRequestId_
+    , _csfreiError = pError_
+    }
+
+-- | The ID of the Spot fleet request.
+csfreiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsErrorItem Text
+csfreiSpotFleetRequestId = lens _csfreiSpotFleetRequestId (\ s a -> s{_csfreiSpotFleetRequestId = a});
+
+-- | The error.
+csfreiError :: Lens' CancelSpotFleetRequestsErrorItem CancelSpotFleetRequestsError
+csfreiError = lens _csfreiError (\ s a -> s{_csfreiError = a});
+
+instance FromXML CancelSpotFleetRequestsErrorItem
+         where
+        parseXML x
+          = CancelSpotFleetRequestsErrorItem' <$>
+              (x .@ "spotFleetRequestId") <*> (x .@ "error")
+
+-- | Describes a Spot fleet request that was successfully canceled.
+--
+-- /See:/ 'cancelSpotFleetRequestsSuccessItem' smart constructor.
+data CancelSpotFleetRequestsSuccessItem = CancelSpotFleetRequestsSuccessItem'
+    { _csfrsiSpotFleetRequestId            :: !Text
+    , _csfrsiCurrentSpotFleetRequestState  :: !BatchState
+    , _csfrsiPreviousSpotFleetRequestState :: !BatchState
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelSpotFleetRequestsSuccessItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csfrsiSpotFleetRequestId'
+--
+-- * 'csfrsiCurrentSpotFleetRequestState'
+--
+-- * 'csfrsiPreviousSpotFleetRequestState'
+cancelSpotFleetRequestsSuccessItem
+    :: Text -- ^ 'csfrsiSpotFleetRequestId'
+    -> BatchState -- ^ 'csfrsiCurrentSpotFleetRequestState'
+    -> BatchState -- ^ 'csfrsiPreviousSpotFleetRequestState'
+    -> CancelSpotFleetRequestsSuccessItem
+cancelSpotFleetRequestsSuccessItem pSpotFleetRequestId_ pCurrentSpotFleetRequestState_ pPreviousSpotFleetRequestState_ =
+    CancelSpotFleetRequestsSuccessItem'
+    { _csfrsiSpotFleetRequestId = pSpotFleetRequestId_
+    , _csfrsiCurrentSpotFleetRequestState = pCurrentSpotFleetRequestState_
+    , _csfrsiPreviousSpotFleetRequestState = pPreviousSpotFleetRequestState_
+    }
+
+-- | The ID of the Spot fleet request.
+csfrsiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsSuccessItem Text
+csfrsiSpotFleetRequestId = lens _csfrsiSpotFleetRequestId (\ s a -> s{_csfrsiSpotFleetRequestId = a});
+
+-- | The current state of the Spot fleet request.
+csfrsiCurrentSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
+csfrsiCurrentSpotFleetRequestState = lens _csfrsiCurrentSpotFleetRequestState (\ s a -> s{_csfrsiCurrentSpotFleetRequestState = a});
+
+-- | The previous state of the Spot fleet request.
+csfrsiPreviousSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
+csfrsiPreviousSpotFleetRequestState = lens _csfrsiPreviousSpotFleetRequestState (\ s a -> s{_csfrsiPreviousSpotFleetRequestState = a});
+
+instance FromXML CancelSpotFleetRequestsSuccessItem
+         where
+        parseXML x
+          = CancelSpotFleetRequestsSuccessItem' <$>
+              (x .@ "spotFleetRequestId") <*>
+                (x .@ "currentSpotFleetRequestState")
+                <*> (x .@ "previousSpotFleetRequestState")
+
+-- | Describes a request to cancel a Spot Instance.
+--
+-- /See:/ 'cancelledSpotInstanceRequest' smart constructor.
+data CancelledSpotInstanceRequest = CancelledSpotInstanceRequest'
+    { _csirState                 :: !(Maybe CancelSpotInstanceRequestState)
+    , _csirSpotInstanceRequestId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelledSpotInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csirState'
+--
+-- * 'csirSpotInstanceRequestId'
+cancelledSpotInstanceRequest
+    :: CancelledSpotInstanceRequest
+cancelledSpotInstanceRequest =
+    CancelledSpotInstanceRequest'
+    { _csirState = Nothing
+    , _csirSpotInstanceRequestId = Nothing
+    }
+
+-- | 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.
+csirSpotInstanceRequestId :: Lens' CancelledSpotInstanceRequest (Maybe Text)
+csirSpotInstanceRequestId = lens _csirSpotInstanceRequestId (\ s a -> s{_csirSpotInstanceRequestId = a});
+
+instance FromXML CancelledSpotInstanceRequest where
+        parseXML x
+          = CancelledSpotInstanceRequest' <$>
+              (x .@? "state") <*> (x .@? "spotInstanceRequestId")
+
+-- | Describes a linked EC2-Classic instance.
+--
+-- /See:/ 'classicLinkInstance' smart constructor.
+data ClassicLinkInstance = ClassicLinkInstance'
+    { _cliInstanceId :: !(Maybe Text)
+    , _cliGroups     :: !(Maybe [GroupIdentifier])
+    , _cliVPCId      :: !(Maybe Text)
+    , _cliTags       :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClassicLinkInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cliInstanceId'
+--
+-- * 'cliGroups'
+--
+-- * 'cliVPCId'
+--
+-- * 'cliTags'
+classicLinkInstance
+    :: ClassicLinkInstance
+classicLinkInstance =
+    ClassicLinkInstance'
+    { _cliInstanceId = Nothing
+    , _cliGroups = Nothing
+    , _cliVPCId = Nothing
+    , _cliTags = Nothing
+    }
+
+-- | The ID of the instance.
+cliInstanceId :: Lens' ClassicLinkInstance (Maybe Text)
+cliInstanceId = lens _cliInstanceId (\ s a -> s{_cliInstanceId = a});
+
+-- | A list of security groups.
+cliGroups :: Lens' ClassicLinkInstance [GroupIdentifier]
+cliGroups = lens _cliGroups (\ s a -> s{_cliGroups = a}) . _Default . _Coerce;
+
+-- | The ID of the VPC.
+cliVPCId :: Lens' ClassicLinkInstance (Maybe Text)
+cliVPCId = lens _cliVPCId (\ s a -> s{_cliVPCId = a});
+
+-- | Any tags assigned to the instance.
+cliTags :: Lens' ClassicLinkInstance [Tag]
+cliTags = lens _cliTags (\ s a -> s{_cliTags = a}) . _Default . _Coerce;
+
+instance FromXML ClassicLinkInstance where
+        parseXML x
+          = ClassicLinkInstance' <$>
+              (x .@? "instanceId") <*>
+                (x .@? "groupSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "vpcId")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes the client-specific data.
+--
+-- /See:/ 'clientData' smart constructor.
+data ClientData = ClientData'
+    { _cdUploadStart :: !(Maybe ISO8601)
+    , _cdUploadSize  :: !(Maybe Double)
+    , _cdUploadEnd   :: !(Maybe ISO8601)
+    , _cdComment     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClientData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdUploadStart'
+--
+-- * 'cdUploadSize'
+--
+-- * 'cdUploadEnd'
+--
+-- * 'cdComment'
+clientData
+    :: ClientData
+clientData =
+    ClientData'
+    { _cdUploadStart = Nothing
+    , _cdUploadSize = Nothing
+    , _cdUploadEnd = Nothing
+    , _cdComment = Nothing
+    }
+
+-- | The time that the disk upload starts.
+cdUploadStart :: Lens' ClientData (Maybe UTCTime)
+cdUploadStart = lens _cdUploadStart (\ s a -> s{_cdUploadStart = a}) . mapping _Time;
+
+-- | The size of the uploaded disk image, in GiB.
+cdUploadSize :: Lens' ClientData (Maybe Double)
+cdUploadSize = lens _cdUploadSize (\ s a -> s{_cdUploadSize = a});
+
+-- | The time that the disk upload ends.
+cdUploadEnd :: Lens' ClientData (Maybe UTCTime)
+cdUploadEnd = lens _cdUploadEnd (\ s a -> s{_cdUploadEnd = a}) . mapping _Time;
+
+-- | A user-defined comment about the disk upload.
+cdComment :: Lens' ClientData (Maybe Text)
+cdComment = lens _cdComment (\ s a -> s{_cdComment = a});
+
+instance ToQuery ClientData where
+        toQuery ClientData'{..}
+          = mconcat
+              ["UploadStart" =: _cdUploadStart,
+               "UploadSize" =: _cdUploadSize,
+               "UploadEnd" =: _cdUploadEnd, "Comment" =: _cdComment]
+
+-- | Describes a conversion task.
+--
+-- /See:/ 'conversionTask' smart constructor.
+data ConversionTask = ConversionTask'
+    { _ctImportInstance   :: !(Maybe ImportInstanceTaskDetails)
+    , _ctStatusMessage    :: !(Maybe Text)
+    , _ctImportVolume     :: !(Maybe ImportVolumeTaskDetails)
+    , _ctExpirationTime   :: !(Maybe Text)
+    , _ctTags             :: !(Maybe [Tag])
+    , _ctConversionTaskId :: !Text
+    , _ctState            :: !ConversionTaskState
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctImportInstance'
+--
+-- * 'ctStatusMessage'
+--
+-- * 'ctImportVolume'
+--
+-- * 'ctExpirationTime'
+--
+-- * 'ctTags'
+--
+-- * 'ctConversionTaskId'
+--
+-- * 'ctState'
+conversionTask
+    :: Text -- ^ 'ctConversionTaskId'
+    -> ConversionTaskState -- ^ 'ctState'
+    -> ConversionTask
+conversionTask pConversionTaskId_ pState_ =
+    ConversionTask'
+    { _ctImportInstance = Nothing
+    , _ctStatusMessage = Nothing
+    , _ctImportVolume = Nothing
+    , _ctExpirationTime = Nothing
+    , _ctTags = Nothing
+    , _ctConversionTaskId = pConversionTaskId_
+    , _ctState = pState_
+    }
+
+-- | If the task is for importing an instance, this contains information
+-- about the import instance task.
+ctImportInstance :: Lens' ConversionTask (Maybe ImportInstanceTaskDetails)
+ctImportInstance = lens _ctImportInstance (\ s a -> s{_ctImportInstance = a});
+
+-- | The status message related to the conversion task.
+ctStatusMessage :: Lens' ConversionTask (Maybe Text)
+ctStatusMessage = lens _ctStatusMessage (\ s a -> s{_ctStatusMessage = a});
+
+-- | If the task is for importing a volume, this contains information about
+-- the import volume task.
+ctImportVolume :: Lens' ConversionTask (Maybe ImportVolumeTaskDetails)
+ctImportVolume = lens _ctImportVolume (\ s a -> s{_ctImportVolume = a});
+
+-- | The time when the task expires. If the upload isn\'t complete before the
+-- expiration time, we automatically cancel the task.
+ctExpirationTime :: Lens' ConversionTask (Maybe Text)
+ctExpirationTime = lens _ctExpirationTime (\ s a -> s{_ctExpirationTime = a});
+
+-- | Any tags assigned to the task.
+ctTags :: Lens' ConversionTask [Tag]
+ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Default . _Coerce;
+
+-- | The ID of the conversion task.
+ctConversionTaskId :: Lens' ConversionTask Text
+ctConversionTaskId = lens _ctConversionTaskId (\ s a -> s{_ctConversionTaskId = a});
+
+-- | The state of the conversion task.
+ctState :: Lens' ConversionTask ConversionTaskState
+ctState = lens _ctState (\ s a -> s{_ctState = a});
+
+instance FromXML ConversionTask where
+        parseXML x
+          = ConversionTask' <$>
+              (x .@? "importInstance") <*> (x .@? "statusMessage")
+                <*> (x .@? "importVolume")
+                <*> (x .@? "expirationTime")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "conversionTaskId")
+                <*> (x .@ "state")
+
+-- | Describes the user or group to be added or removed from the permissions
+-- for a volume.
+--
+-- /See:/ 'createVolumePermission' smart constructor.
+data CreateVolumePermission = CreateVolumePermission'
+    { _cvpGroup  :: !(Maybe PermissionGroup)
+    , _cvpUserId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateVolumePermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvpGroup'
+--
+-- * 'cvpUserId'
+createVolumePermission
+    :: CreateVolumePermission
+createVolumePermission =
+    CreateVolumePermission'
+    { _cvpGroup = Nothing
+    , _cvpUserId = Nothing
+    }
+
+-- | The specific group that is to be added or removed from a volume\'s list
+-- of create volume permissions.
+cvpGroup :: Lens' CreateVolumePermission (Maybe PermissionGroup)
+cvpGroup = lens _cvpGroup (\ s a -> s{_cvpGroup = a});
+
+-- | The specific AWS account ID that is to be added or removed from a
+-- volume\'s list of create volume permissions.
+cvpUserId :: Lens' CreateVolumePermission (Maybe Text)
+cvpUserId = lens _cvpUserId (\ s a -> s{_cvpUserId = a});
+
+instance FromXML CreateVolumePermission where
+        parseXML x
+          = CreateVolumePermission' <$>
+              (x .@? "group") <*> (x .@? "userId")
+
+instance ToQuery CreateVolumePermission where
+        toQuery CreateVolumePermission'{..}
+          = mconcat
+              ["Group" =: _cvpGroup, "UserId" =: _cvpUserId]
+
+-- | Describes modifications to the permissions for a volume.
+--
+-- /See:/ 'createVolumePermissionModifications' smart constructor.
+data CreateVolumePermissionModifications = CreateVolumePermissionModifications'
+    { _cvpmRemove :: !(Maybe [CreateVolumePermission])
+    , _cvpmAdd    :: !(Maybe [CreateVolumePermission])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateVolumePermissionModifications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvpmRemove'
+--
+-- * 'cvpmAdd'
+createVolumePermissionModifications
+    :: CreateVolumePermissionModifications
+createVolumePermissionModifications =
+    CreateVolumePermissionModifications'
+    { _cvpmRemove = Nothing
+    , _cvpmAdd = Nothing
+    }
+
+-- | Removes a specific AWS account ID or group from a volume\'s list of
+-- create volume permissions.
+cvpmRemove :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]
+cvpmRemove = lens _cvpmRemove (\ s a -> s{_cvpmRemove = a}) . _Default . _Coerce;
+
+-- | Adds a specific AWS account ID or group to a volume\'s list of create
+-- volume permissions.
+cvpmAdd :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]
+cvpmAdd = lens _cvpmAdd (\ s a -> s{_cvpmAdd = a}) . _Default . _Coerce;
+
+instance ToQuery CreateVolumePermissionModifications
+         where
+        toQuery CreateVolumePermissionModifications'{..}
+          = mconcat
+              [toQuery (toQueryList "Remove" <$> _cvpmRemove),
+               toQuery (toQueryList "Add" <$> _cvpmAdd)]
+
+-- | Describes a customer gateway.
+--
+-- /See:/ 'customerGateway' smart constructor.
+data CustomerGateway = CustomerGateway'
+    { _cgTags              :: !(Maybe [Tag])
+    , _cgBGPASN            :: !Text
+    , _cgCustomerGatewayId :: !Text
+    , _cgIPAddress         :: !Text
+    , _cgState             :: !Text
+    , _cgType              :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomerGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cgTags'
+--
+-- * 'cgBGPASN'
+--
+-- * 'cgCustomerGatewayId'
+--
+-- * 'cgIPAddress'
+--
+-- * 'cgState'
+--
+-- * 'cgType'
+customerGateway
+    :: Text -- ^ 'cgBGPASN'
+    -> Text -- ^ 'cgCustomerGatewayId'
+    -> Text -- ^ 'cgIPAddress'
+    -> Text -- ^ 'cgState'
+    -> Text -- ^ 'cgType'
+    -> CustomerGateway
+customerGateway pBGPASN_ pCustomerGatewayId_ pIPAddress_ pState_ pType_ =
+    CustomerGateway'
+    { _cgTags = Nothing
+    , _cgBGPASN = pBGPASN_
+    , _cgCustomerGatewayId = pCustomerGatewayId_
+    , _cgIPAddress = pIPAddress_
+    , _cgState = pState_
+    , _cgType = pType_
+    }
+
+-- | Any tags assigned to the customer gateway.
+cgTags :: Lens' CustomerGateway [Tag]
+cgTags = lens _cgTags (\ s a -> s{_cgTags = a}) . _Default . _Coerce;
+
+-- | The customer gateway\'s Border Gateway Protocol (BGP) Autonomous System
+-- Number (ASN).
+cgBGPASN :: Lens' CustomerGateway Text
+cgBGPASN = lens _cgBGPASN (\ s a -> s{_cgBGPASN = a});
+
+-- | The ID of the customer gateway.
+cgCustomerGatewayId :: Lens' CustomerGateway Text
+cgCustomerGatewayId = lens _cgCustomerGatewayId (\ s a -> s{_cgCustomerGatewayId = a});
+
+-- | The Internet-routable IP address of the customer gateway\'s outside
+-- interface.
+cgIPAddress :: Lens' CustomerGateway Text
+cgIPAddress = lens _cgIPAddress (\ s a -> s{_cgIPAddress = a});
+
+-- | The current state of the customer gateway
+-- ('pending | available | deleting | deleted').
+cgState :: Lens' CustomerGateway Text
+cgState = lens _cgState (\ s a -> s{_cgState = a});
+
+-- | The type of VPN connection the customer gateway supports ('ipsec.1').
+cgType :: Lens' CustomerGateway Text
+cgType = lens _cgType (\ s a -> s{_cgType = a});
+
+instance FromXML CustomerGateway where
+        parseXML x
+          = CustomerGateway' <$>
+              (x .@? "tagSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@ "bgpAsn")
+                <*> (x .@ "customerGatewayId")
+                <*> (x .@ "ipAddress")
+                <*> (x .@ "state")
+                <*> (x .@ "type")
+
+-- | Describes a DHCP configuration option.
+--
+-- /See:/ 'dhcpConfiguration' smart constructor.
+data DHCPConfiguration = DHCPConfiguration'
+    { _dcValues :: !(Maybe [AttributeValue])
+    , _dcKey    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DHCPConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcValues'
+--
+-- * 'dcKey'
+dhcpConfiguration
+    :: DHCPConfiguration
+dhcpConfiguration =
+    DHCPConfiguration'
+    { _dcValues = Nothing
+    , _dcKey = Nothing
+    }
+
+-- | One or more values for the DHCP option.
+dcValues :: Lens' DHCPConfiguration [AttributeValue]
+dcValues = lens _dcValues (\ s a -> s{_dcValues = a}) . _Default . _Coerce;
+
+-- | The name of a DHCP option.
+dcKey :: Lens' DHCPConfiguration (Maybe Text)
+dcKey = lens _dcKey (\ s a -> s{_dcKey = a});
+
+instance FromXML DHCPConfiguration where
+        parseXML x
+          = DHCPConfiguration' <$>
+              (x .@? "valueSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "key")
+
+-- | Describes a set of DHCP options.
+--
+-- /See:/ 'dhcpOptions' smart constructor.
+data DHCPOptions = DHCPOptions'
+    { _doDHCPConfigurations :: !(Maybe [DHCPConfiguration])
+    , _doDHCPOptionsId      :: !(Maybe Text)
+    , _doTags               :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DHCPOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'doDHCPConfigurations'
+--
+-- * 'doDHCPOptionsId'
+--
+-- * 'doTags'
+dhcpOptions
+    :: DHCPOptions
+dhcpOptions =
+    DHCPOptions'
+    { _doDHCPConfigurations = Nothing
+    , _doDHCPOptionsId = Nothing
+    , _doTags = Nothing
+    }
+
+-- | One or more DHCP options in the set.
+doDHCPConfigurations :: Lens' DHCPOptions [DHCPConfiguration]
+doDHCPConfigurations = lens _doDHCPConfigurations (\ s a -> s{_doDHCPConfigurations = a}) . _Default . _Coerce;
+
+-- | The ID of the set of DHCP options.
+doDHCPOptionsId :: Lens' DHCPOptions (Maybe Text)
+doDHCPOptionsId = lens _doDHCPOptionsId (\ s a -> s{_doDHCPOptionsId = a});
+
+-- | Any tags assigned to the DHCP options set.
+doTags :: Lens' DHCPOptions [Tag]
+doTags = lens _doTags (\ s a -> s{_doTags = a}) . _Default . _Coerce;
+
+instance FromXML DHCPOptions where
+        parseXML x
+          = DHCPOptions' <$>
+              (x .@? "dhcpConfigurationSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "dhcpOptionsId")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes a disk image.
+--
+-- /See:/ 'diskImage' smart constructor.
+data DiskImage = DiskImage'
+    { _diImage       :: !(Maybe DiskImageDetail)
+    , _diVolume      :: !(Maybe VolumeDetail)
+    , _diDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskImage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diImage'
+--
+-- * 'diVolume'
+--
+-- * 'diDescription'
+diskImage
+    :: DiskImage
+diskImage =
+    DiskImage'
+    { _diImage = Nothing
+    , _diVolume = Nothing
+    , _diDescription = Nothing
+    }
+
+-- | Information about the disk image.
+diImage :: Lens' DiskImage (Maybe DiskImageDetail)
+diImage = lens _diImage (\ s a -> s{_diImage = a});
+
+-- | Information about the volume.
+diVolume :: Lens' DiskImage (Maybe VolumeDetail)
+diVolume = lens _diVolume (\ s a -> s{_diVolume = a});
+
+-- | A description of the disk image.
+diDescription :: Lens' DiskImage (Maybe Text)
+diDescription = lens _diDescription (\ s a -> s{_diDescription = a});
+
+instance ToQuery DiskImage where
+        toQuery DiskImage'{..}
+          = mconcat
+              ["Image" =: _diImage, "Volume" =: _diVolume,
+               "Description" =: _diDescription]
+
+-- | Describes a disk image.
+--
+-- /See:/ 'diskImageDescription' smart constructor.
+data DiskImageDescription = DiskImageDescription'
+    { _dChecksum          :: !(Maybe Text)
+    , _dFormat            :: !DiskImageFormat
+    , _dSize              :: !Integer
+    , _dImportManifestURL :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskImageDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dChecksum'
+--
+-- * 'dFormat'
+--
+-- * 'dSize'
+--
+-- * 'dImportManifestURL'
+diskImageDescription
+    :: DiskImageFormat -- ^ 'dFormat'
+    -> Integer -- ^ 'dSize'
+    -> Text -- ^ 'dImportManifestURL'
+    -> DiskImageDescription
+diskImageDescription pFormat_ pSize_ pImportManifestURL_ =
+    DiskImageDescription'
+    { _dChecksum = Nothing
+    , _dFormat = pFormat_
+    , _dSize = pSize_
+    , _dImportManifestURL = pImportManifestURL_
+    }
+
+-- | The checksum computed for the disk image.
+dChecksum :: Lens' DiskImageDescription (Maybe Text)
+dChecksum = lens _dChecksum (\ s a -> s{_dChecksum = a});
+
+-- | The disk image format.
+dFormat :: Lens' DiskImageDescription DiskImageFormat
+dFormat = lens _dFormat (\ s a -> s{_dFormat = a});
+
+-- | The size of the disk image, in GiB.
+dSize :: Lens' DiskImageDescription Integer
+dSize = lens _dSize (\ s a -> s{_dSize = a});
+
+-- | A presigned URL for the import manifest stored in Amazon S3. For
+-- information about creating a presigned URL for an Amazon S3 object, read
+-- the \"Query String Request Authentication Alternative\" section of the
+-- <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests>
+-- topic in the /Amazon Simple Storage Service Developer Guide/.
+dImportManifestURL :: Lens' DiskImageDescription Text
+dImportManifestURL = lens _dImportManifestURL (\ s a -> s{_dImportManifestURL = a});
+
+instance FromXML DiskImageDescription where
+        parseXML x
+          = DiskImageDescription' <$>
+              (x .@? "checksum") <*> (x .@ "format") <*>
+                (x .@ "size")
+                <*> (x .@ "importManifestUrl")
+
+-- | Describes a disk image.
+--
+-- /See:/ 'diskImageDetail' smart constructor.
+data DiskImageDetail = DiskImageDetail'
+    { _didFormat            :: !DiskImageFormat
+    , _didBytes             :: !Integer
+    , _didImportManifestURL :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskImageDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'didFormat'
+--
+-- * 'didBytes'
+--
+-- * 'didImportManifestURL'
+diskImageDetail
+    :: DiskImageFormat -- ^ 'didFormat'
+    -> Integer -- ^ 'didBytes'
+    -> Text -- ^ 'didImportManifestURL'
+    -> DiskImageDetail
+diskImageDetail pFormat_ pBytes_ pImportManifestURL_ =
+    DiskImageDetail'
+    { _didFormat = pFormat_
+    , _didBytes = pBytes_
+    , _didImportManifestURL = pImportManifestURL_
+    }
+
+-- | The disk image format.
+didFormat :: Lens' DiskImageDetail DiskImageFormat
+didFormat = lens _didFormat (\ s a -> s{_didFormat = a});
+
+-- | The size of the disk image, in GiB.
+didBytes :: Lens' DiskImageDetail Integer
+didBytes = lens _didBytes (\ s a -> s{_didBytes = a});
+
+-- | A presigned URL for the import manifest stored in Amazon S3 and
+-- presented here as an Amazon S3 presigned URL. For information about
+-- creating a presigned URL for an Amazon S3 object, read the \"Query
+-- String Request Authentication Alternative\" section of the
+-- <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests>
+-- topic in the /Amazon Simple Storage Service Developer Guide/.
+didImportManifestURL :: Lens' DiskImageDetail Text
+didImportManifestURL = lens _didImportManifestURL (\ s a -> s{_didImportManifestURL = a});
+
+instance ToQuery DiskImageDetail where
+        toQuery DiskImageDetail'{..}
+          = mconcat
+              ["Format" =: _didFormat, "Bytes" =: _didBytes,
+               "ImportManifestUrl" =: _didImportManifestURL]
+
+-- | Describes a disk image volume.
+--
+-- /See:/ 'diskImageVolumeDescription' smart constructor.
+data DiskImageVolumeDescription = DiskImageVolumeDescription'
+    { _divdSize :: !(Maybe Integer)
+    , _divdId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskImageVolumeDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'divdSize'
+--
+-- * 'divdId'
+diskImageVolumeDescription
+    :: Text -- ^ 'divdId'
+    -> DiskImageVolumeDescription
+diskImageVolumeDescription pId_ =
+    DiskImageVolumeDescription'
+    { _divdSize = Nothing
+    , _divdId = pId_
+    }
+
+-- | The size of the volume, in GiB.
+divdSize :: Lens' DiskImageVolumeDescription (Maybe Integer)
+divdSize = lens _divdSize (\ s a -> s{_divdSize = a});
+
+-- | The volume identifier.
+divdId :: Lens' DiskImageVolumeDescription Text
+divdId = lens _divdId (\ s a -> s{_divdId = a});
+
+instance FromXML DiskImageVolumeDescription where
+        parseXML x
+          = DiskImageVolumeDescription' <$>
+              (x .@? "size") <*> (x .@ "id")
+
+-- | Describes a block device for an EBS volume.
+--
+-- /See:/ 'ebsBlockDevice' smart constructor.
+data EBSBlockDevice = EBSBlockDevice'
+    { _ebdDeleteOnTermination :: !(Maybe Bool)
+    , _ebdVolumeSize          :: !(Maybe Int)
+    , _ebdIOPS                :: !(Maybe Int)
+    , _ebdEncrypted           :: !(Maybe Bool)
+    , _ebdVolumeType          :: !(Maybe VolumeType)
+    , _ebdSnapshotId          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EBSBlockDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ebdDeleteOnTermination'
+--
+-- * 'ebdVolumeSize'
+--
+-- * 'ebdIOPS'
+--
+-- * 'ebdEncrypted'
+--
+-- * 'ebdVolumeType'
+--
+-- * 'ebdSnapshotId'
+ebsBlockDevice
+    :: EBSBlockDevice
+ebsBlockDevice =
+    EBSBlockDevice'
+    { _ebdDeleteOnTermination = Nothing
+    , _ebdVolumeSize = Nothing
+    , _ebdIOPS = Nothing
+    , _ebdEncrypted = Nothing
+    , _ebdVolumeType = Nothing
+    , _ebdSnapshotId = Nothing
+    }
+
+-- | Indicates whether the EBS volume is deleted on instance termination.
+ebdDeleteOnTermination :: Lens' EBSBlockDevice (Maybe Bool)
+ebdDeleteOnTermination = lens _ebdDeleteOnTermination (\ s a -> s{_ebdDeleteOnTermination = a});
+
+-- | The size of the volume, in GiB.
+--
+-- Constraints: '1-1024' for 'standard' volumes, '1-16384' for 'gp2'
+-- volumes, and '4-16384' for 'io1' volumes. If you specify a snapshot, the
+-- volume size must be equal to or larger than the snapshot size.
+--
+-- Default: If you\'re creating the volume from a snapshot and don\'t
+-- specify a volume size, the default is the snapshot size.
+ebdVolumeSize :: Lens' EBSBlockDevice (Maybe Int)
+ebdVolumeSize = lens _ebdVolumeSize (\ s a -> s{_ebdVolumeSize = a});
+
+-- | The number of I\/O operations per second (IOPS) that the volume
+-- supports. For Provisioned IOPS (SSD) volumes, this represents the number
+-- of IOPS that are provisioned for the volume. For General Purpose (SSD)
+-- volumes, this represents the baseline performance of the volume and the
+-- rate at which the volume accumulates I\/O credits for bursting. For more
+-- information on General Purpose (SSD) baseline performance, I\/O credits,
+-- and bursting, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+--
+-- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
+-- 3 to 10000 for General Purpose (SSD) volumes.
+--
+-- Condition: This parameter is required for requests to create 'io1'
+-- volumes; it is not used in requests to create 'standard' or 'gp2'
+-- volumes.
+ebdIOPS :: Lens' EBSBlockDevice (Maybe Int)
+ebdIOPS = lens _ebdIOPS (\ s a -> s{_ebdIOPS = a});
+
+-- | Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
+-- volumes may only be attached to instances that support Amazon EBS
+-- encryption.
+ebdEncrypted :: Lens' EBSBlockDevice (Maybe Bool)
+ebdEncrypted = lens _ebdEncrypted (\ s a -> s{_ebdEncrypted = a});
+
+-- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for
+-- Provisioned IOPS (SSD) volumes, and 'standard' for Magnetic volumes.
+--
+-- Default: 'standard'
+ebdVolumeType :: Lens' EBSBlockDevice (Maybe VolumeType)
+ebdVolumeType = lens _ebdVolumeType (\ s a -> s{_ebdVolumeType = a});
+
+-- | The ID of the snapshot.
+ebdSnapshotId :: Lens' EBSBlockDevice (Maybe Text)
+ebdSnapshotId = lens _ebdSnapshotId (\ s a -> s{_ebdSnapshotId = a});
+
+instance FromXML EBSBlockDevice where
+        parseXML x
+          = EBSBlockDevice' <$>
+              (x .@? "deleteOnTermination") <*>
+                (x .@? "volumeSize")
+                <*> (x .@? "iops")
+                <*> (x .@? "encrypted")
+                <*> (x .@? "volumeType")
+                <*> (x .@? "snapshotId")
+
+instance ToQuery EBSBlockDevice where
+        toQuery EBSBlockDevice'{..}
+          = mconcat
+              ["DeleteOnTermination" =: _ebdDeleteOnTermination,
+               "VolumeSize" =: _ebdVolumeSize, "Iops" =: _ebdIOPS,
+               "Encrypted" =: _ebdEncrypted,
+               "VolumeType" =: _ebdVolumeType,
+               "SnapshotId" =: _ebdSnapshotId]
+
+-- | Describes a parameter used to set up an EBS volume in a block device
+-- mapping.
+--
+-- /See:/ 'ebsInstanceBlockDevice' smart constructor.
+data EBSInstanceBlockDevice = EBSInstanceBlockDevice'
+    { _eibdStatus              :: !(Maybe AttachmentStatus)
+    , _eibdDeleteOnTermination :: !(Maybe Bool)
+    , _eibdVolumeId            :: !(Maybe Text)
+    , _eibdAttachTime          :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EBSInstanceBlockDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eibdStatus'
+--
+-- * 'eibdDeleteOnTermination'
+--
+-- * 'eibdVolumeId'
+--
+-- * 'eibdAttachTime'
+ebsInstanceBlockDevice
+    :: EBSInstanceBlockDevice
+ebsInstanceBlockDevice =
+    EBSInstanceBlockDevice'
+    { _eibdStatus = Nothing
+    , _eibdDeleteOnTermination = Nothing
+    , _eibdVolumeId = Nothing
+    , _eibdAttachTime = Nothing
+    }
+
+-- | The attachment state.
+eibdStatus :: Lens' EBSInstanceBlockDevice (Maybe AttachmentStatus)
+eibdStatus = lens _eibdStatus (\ s a -> s{_eibdStatus = a});
+
+-- | Indicates whether the volume is deleted on instance termination.
+eibdDeleteOnTermination :: Lens' EBSInstanceBlockDevice (Maybe Bool)
+eibdDeleteOnTermination = lens _eibdDeleteOnTermination (\ s a -> s{_eibdDeleteOnTermination = a});
+
+-- | The ID of the EBS volume.
+eibdVolumeId :: Lens' EBSInstanceBlockDevice (Maybe Text)
+eibdVolumeId = lens _eibdVolumeId (\ s a -> s{_eibdVolumeId = a});
+
+-- | The time stamp when the attachment initiated.
+eibdAttachTime :: Lens' EBSInstanceBlockDevice (Maybe UTCTime)
+eibdAttachTime = lens _eibdAttachTime (\ s a -> s{_eibdAttachTime = a}) . mapping _Time;
+
+instance FromXML EBSInstanceBlockDevice where
+        parseXML x
+          = EBSInstanceBlockDevice' <$>
+              (x .@? "status") <*> (x .@? "deleteOnTermination")
+                <*> (x .@? "volumeId")
+                <*> (x .@? "attachTime")
+
+-- | /See:/ 'ebsInstanceBlockDeviceSpecification' smart constructor.
+data EBSInstanceBlockDeviceSpecification = EBSInstanceBlockDeviceSpecification'
+    { _eibdsDeleteOnTermination :: !(Maybe Bool)
+    , _eibdsVolumeId            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EBSInstanceBlockDeviceSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eibdsDeleteOnTermination'
+--
+-- * 'eibdsVolumeId'
+ebsInstanceBlockDeviceSpecification
+    :: EBSInstanceBlockDeviceSpecification
+ebsInstanceBlockDeviceSpecification =
+    EBSInstanceBlockDeviceSpecification'
+    { _eibdsDeleteOnTermination = Nothing
+    , _eibdsVolumeId = Nothing
+    }
+
+-- | Indicates whether the volume is deleted on instance termination.
+eibdsDeleteOnTermination :: Lens' EBSInstanceBlockDeviceSpecification (Maybe Bool)
+eibdsDeleteOnTermination = lens _eibdsDeleteOnTermination (\ s a -> s{_eibdsDeleteOnTermination = a});
+
+-- | The ID of the EBS volume.
+eibdsVolumeId :: Lens' EBSInstanceBlockDeviceSpecification (Maybe Text)
+eibdsVolumeId = lens _eibdsVolumeId (\ s a -> s{_eibdsVolumeId = a});
+
+instance ToQuery EBSInstanceBlockDeviceSpecification
+         where
+        toQuery EBSInstanceBlockDeviceSpecification'{..}
+          = mconcat
+              ["DeleteOnTermination" =: _eibdsDeleteOnTermination,
+               "VolumeId" =: _eibdsVolumeId]
+
+-- | Describes a Spot fleet event.
+--
+-- /See:/ 'eventInformation' smart constructor.
+data EventInformation = EventInformation'
+    { _eiInstanceId       :: !(Maybe Text)
+    , _eiEventDescription :: !(Maybe Text)
+    , _eiEventSubType     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EventInformation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eiInstanceId'
+--
+-- * 'eiEventDescription'
+--
+-- * 'eiEventSubType'
+eventInformation
+    :: EventInformation
+eventInformation =
+    EventInformation'
+    { _eiInstanceId = Nothing
+    , _eiEventDescription = Nothing
+    , _eiEventSubType = Nothing
+    }
+
+-- | The ID of the instance. This information is available only for
+-- 'instanceChange' events.
+eiInstanceId :: Lens' EventInformation (Maybe Text)
+eiInstanceId = lens _eiInstanceId (\ s a -> s{_eiInstanceId = a});
+
+-- | The description of the event.
+eiEventDescription :: Lens' EventInformation (Maybe Text)
+eiEventDescription = lens _eiEventDescription (\ s a -> s{_eiEventDescription = a});
+
+-- | The event.
+--
+-- The following are the 'error' events.
+--
+-- -   'iamFleetRoleInvalid' - Spot fleet did not have the required
+--     permissions either to launch or terminate an instance.
+--
+-- -   'spotFleetRequestConfigurationInvalid' - The configuration is not
+--     valid. For more information, see the description.
+--
+-- -   'spotInstanceCountLimitExceeded' - You\'ve reached the limit on the
+--     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.
+--
+-- -   'cancelled' - The Spot fleet is canceled and has no running Spot
+--     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.
+--
+-- -   'cancelled_terminating' - The Spot fleet is canceled and its Spot
+--     Instances are terminating.
+--
+-- -   'expired' - The Spot fleet request has expired. A subsequent event
+--     indicates that the instances were terminated, if the request was
+--     created with 'TerminateInstancesWithExpiration' set.
+--
+-- -   'price_update' - The bid price for a launch configuration was
+--     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.
+--
+-- The following are the 'instanceChange' events.
+--
+-- -   'launched' - A bid was fulfilled and a new instance was launched.
+--
+-- -   'terminated' - An instance was terminated by the user.
+--
+eiEventSubType :: Lens' EventInformation (Maybe Text)
+eiEventSubType = lens _eiEventSubType (\ s a -> s{_eiEventSubType = a});
+
+instance FromXML EventInformation where
+        parseXML x
+          = EventInformation' <$>
+              (x .@? "instanceId") <*> (x .@? "eventDescription")
+                <*> (x .@? "eventSubType")
+
+-- | Describes an instance export task.
+--
+-- /See:/ 'exportTask' smart constructor.
+data ExportTask = ExportTask'
+    { _etDescription           :: !Text
+    , _etExportTaskId          :: !Text
+    , _etExportToS3Task        :: !ExportToS3Task
+    , _etInstanceExportDetails :: !InstanceExportDetails
+    , _etState                 :: !ExportTaskState
+    , _etStatusMessage         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExportTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'etDescription'
+--
+-- * 'etExportTaskId'
+--
+-- * 'etExportToS3Task'
+--
+-- * 'etInstanceExportDetails'
+--
+-- * 'etState'
+--
+-- * 'etStatusMessage'
+exportTask
+    :: Text -- ^ 'etDescription'
+    -> Text -- ^ 'etExportTaskId'
+    -> ExportToS3Task -- ^ 'etExportToS3Task'
+    -> InstanceExportDetails -- ^ 'etInstanceExportDetails'
+    -> ExportTaskState -- ^ 'etState'
+    -> Text -- ^ 'etStatusMessage'
+    -> ExportTask
+exportTask pDescription_ pExportTaskId_ pExportToS3Task_ pInstanceExportDetails_ pState_ pStatusMessage_ =
+    ExportTask'
+    { _etDescription = pDescription_
+    , _etExportTaskId = pExportTaskId_
+    , _etExportToS3Task = pExportToS3Task_
+    , _etInstanceExportDetails = pInstanceExportDetails_
+    , _etState = pState_
+    , _etStatusMessage = pStatusMessage_
+    }
+
+-- | A description of the resource being exported.
+etDescription :: Lens' ExportTask Text
+etDescription = lens _etDescription (\ s a -> s{_etDescription = a});
+
+-- | The ID of the export task.
+etExportTaskId :: Lens' ExportTask Text
+etExportTaskId = lens _etExportTaskId (\ s a -> s{_etExportTaskId = a});
+
+-- | Information about the export task.
+etExportToS3Task :: Lens' ExportTask ExportToS3Task
+etExportToS3Task = lens _etExportToS3Task (\ s a -> s{_etExportToS3Task = a});
+
+-- | Information about the instance to export.
+etInstanceExportDetails :: Lens' ExportTask InstanceExportDetails
+etInstanceExportDetails = lens _etInstanceExportDetails (\ s a -> s{_etInstanceExportDetails = a});
+
+-- | The state of the export task.
+etState :: Lens' ExportTask ExportTaskState
+etState = lens _etState (\ s a -> s{_etState = a});
+
+-- | The status message related to the export task.
+etStatusMessage :: Lens' ExportTask Text
+etStatusMessage = lens _etStatusMessage (\ s a -> s{_etStatusMessage = a});
+
+instance FromXML ExportTask where
+        parseXML x
+          = ExportTask' <$>
+              (x .@ "description") <*> (x .@ "exportTaskId") <*>
+                (x .@ "exportToS3")
+                <*> (x .@ "instanceExport")
+                <*> (x .@ "state")
+                <*> (x .@ "statusMessage")
+
+-- | Describes the format and location for an instance export task.
+--
+-- /See:/ 'exportToS3Task' smart constructor.
+data ExportToS3Task = ExportToS3Task'
+    { _etstS3Key           :: !(Maybe Text)
+    , _etstContainerFormat :: !(Maybe ContainerFormat)
+    , _etstS3Bucket        :: !(Maybe Text)
+    , _etstDiskImageFormat :: !(Maybe DiskImageFormat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExportToS3Task' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'etstS3Key'
+--
+-- * 'etstContainerFormat'
+--
+-- * 'etstS3Bucket'
+--
+-- * 'etstDiskImageFormat'
+exportToS3Task
+    :: ExportToS3Task
+exportToS3Task =
+    ExportToS3Task'
+    { _etstS3Key = Nothing
+    , _etstContainerFormat = Nothing
+    , _etstS3Bucket = Nothing
+    , _etstDiskImageFormat = Nothing
+    }
+
+-- | The encryption key for your S3 bucket.
+etstS3Key :: Lens' ExportToS3Task (Maybe Text)
+etstS3Key = lens _etstS3Key (\ s a -> s{_etstS3Key = a});
+
+-- | The container format used to combine disk images with metadata (such as
+-- OVF). If absent, only the disk image is exported.
+etstContainerFormat :: Lens' ExportToS3Task (Maybe ContainerFormat)
+etstContainerFormat = lens _etstContainerFormat (\ s a -> s{_etstContainerFormat = a});
+
+-- | The S3 bucket for the destination image. The destination bucket must
+-- exist and grant WRITE and READ_ACP permissions to the AWS account
+-- 'vm-import-export\'amazon.com'.
+etstS3Bucket :: Lens' ExportToS3Task (Maybe Text)
+etstS3Bucket = lens _etstS3Bucket (\ s a -> s{_etstS3Bucket = a});
+
+-- | The format for the exported image.
+etstDiskImageFormat :: Lens' ExportToS3Task (Maybe DiskImageFormat)
+etstDiskImageFormat = lens _etstDiskImageFormat (\ s a -> s{_etstDiskImageFormat = a});
+
+instance FromXML ExportToS3Task where
+        parseXML x
+          = ExportToS3Task' <$>
+              (x .@? "s3Key") <*> (x .@? "containerFormat") <*>
+                (x .@? "s3Bucket")
+                <*> (x .@? "diskImageFormat")
+
+-- | Describes an instance export task.
+--
+-- /See:/ 'exportToS3TaskSpecification' smart constructor.
+data ExportToS3TaskSpecification = ExportToS3TaskSpecification'
+    { _etstsContainerFormat :: !(Maybe ContainerFormat)
+    , _etstsS3Prefix        :: !(Maybe Text)
+    , _etstsS3Bucket        :: !(Maybe Text)
+    , _etstsDiskImageFormat :: !(Maybe DiskImageFormat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExportToS3TaskSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'etstsContainerFormat'
+--
+-- * 'etstsS3Prefix'
+--
+-- * 'etstsS3Bucket'
+--
+-- * 'etstsDiskImageFormat'
+exportToS3TaskSpecification
+    :: ExportToS3TaskSpecification
+exportToS3TaskSpecification =
+    ExportToS3TaskSpecification'
+    { _etstsContainerFormat = Nothing
+    , _etstsS3Prefix = Nothing
+    , _etstsS3Bucket = Nothing
+    , _etstsDiskImageFormat = Nothing
+    }
+
+-- | The container format used to combine disk images with metadata (such as
+-- OVF). If absent, only the disk image is exported.
+etstsContainerFormat :: Lens' ExportToS3TaskSpecification (Maybe ContainerFormat)
+etstsContainerFormat = lens _etstsContainerFormat (\ s a -> s{_etstsContainerFormat = a});
+
+-- | The image is written to a single object in the S3 bucket at the S3 key
+-- s3prefix + exportTaskId + \'.\' + diskImageFormat.
+etstsS3Prefix :: Lens' ExportToS3TaskSpecification (Maybe Text)
+etstsS3Prefix = lens _etstsS3Prefix (\ s a -> s{_etstsS3Prefix = a});
+
+-- | The S3 bucket for the destination image. The destination bucket must
+-- exist and grant WRITE and READ_ACP permissions to the AWS account
+-- 'vm-import-export\'amazon.com'.
+etstsS3Bucket :: Lens' ExportToS3TaskSpecification (Maybe Text)
+etstsS3Bucket = lens _etstsS3Bucket (\ s a -> s{_etstsS3Bucket = a});
+
+-- | The format for the exported image.
+etstsDiskImageFormat :: Lens' ExportToS3TaskSpecification (Maybe DiskImageFormat)
+etstsDiskImageFormat = lens _etstsDiskImageFormat (\ s a -> s{_etstsDiskImageFormat = a});
+
+instance ToQuery ExportToS3TaskSpecification where
+        toQuery ExportToS3TaskSpecification'{..}
+          = mconcat
+              ["ContainerFormat" =: _etstsContainerFormat,
+               "S3Prefix" =: _etstsS3Prefix,
+               "S3Bucket" =: _etstsS3Bucket,
+               "DiskImageFormat" =: _etstsDiskImageFormat]
+
+-- | A filter name and value pair that is used to return a more specific list
+-- of results. Filters can be used to match a set of resources by various
+-- criteria, such as tags, attributes, or IDs.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter = Filter'
+    { _fValues :: !(Maybe [Text])
+    , _fName   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fValues'
+--
+-- * 'fName'
+filter'
+    :: Text -- ^ 'fName'
+    -> Filter
+filter' pName_ =
+    Filter'
+    { _fValues = Nothing
+    , _fName = pName_
+    }
+
+-- | One or more filter values. Filter values are case-sensitive.
+fValues :: Lens' Filter [Text]
+fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Default . _Coerce;
+
+-- | The name of the filter. Filter names are case-sensitive.
+fName :: Lens' Filter Text
+fName = lens _fName (\ s a -> s{_fName = a});
+
+instance ToQuery Filter where
+        toQuery Filter'{..}
+          = mconcat
+              [toQuery (toQueryList "Value" <$> _fValues),
+               "Name" =: _fName]
+
+-- | Describes a flow log.
+--
+-- /See:/ 'flowLog' smart constructor.
+data FlowLog = FlowLog'
+    { _flCreationTime             :: !(Maybe ISO8601)
+    , _flResourceId               :: !(Maybe Text)
+    , _flFlowLogStatus            :: !(Maybe Text)
+    , _flTrafficType              :: !(Maybe TrafficType)
+    , _flDeliverLogsStatus        :: !(Maybe Text)
+    , _flDeliverLogsErrorMessage  :: !(Maybe Text)
+    , _flLogGroupName             :: !(Maybe Text)
+    , _flDeliverLogsPermissionARN :: !(Maybe Text)
+    , _flFlowLogId                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FlowLog' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flCreationTime'
+--
+-- * 'flResourceId'
+--
+-- * 'flFlowLogStatus'
+--
+-- * 'flTrafficType'
+--
+-- * 'flDeliverLogsStatus'
+--
+-- * 'flDeliverLogsErrorMessage'
+--
+-- * 'flLogGroupName'
+--
+-- * 'flDeliverLogsPermissionARN'
+--
+-- * 'flFlowLogId'
+flowLog
+    :: FlowLog
+flowLog =
+    FlowLog'
+    { _flCreationTime = Nothing
+    , _flResourceId = Nothing
+    , _flFlowLogStatus = Nothing
+    , _flTrafficType = Nothing
+    , _flDeliverLogsStatus = Nothing
+    , _flDeliverLogsErrorMessage = Nothing
+    , _flLogGroupName = Nothing
+    , _flDeliverLogsPermissionARN = Nothing
+    , _flFlowLogId = Nothing
+    }
+
+-- | The date and time the flow log was created.
+flCreationTime :: Lens' FlowLog (Maybe UTCTime)
+flCreationTime = lens _flCreationTime (\ s a -> s{_flCreationTime = a}) . mapping _Time;
+
+-- | The ID of the resource on which the flow log was created.
+flResourceId :: Lens' FlowLog (Maybe Text)
+flResourceId = lens _flResourceId (\ s a -> s{_flResourceId = a});
+
+-- | The status of the flow log ('ACTIVE').
+flFlowLogStatus :: Lens' FlowLog (Maybe Text)
+flFlowLogStatus = lens _flFlowLogStatus (\ s a -> s{_flFlowLogStatus = a});
+
+-- | The type of traffic captured for the flow log.
+flTrafficType :: Lens' FlowLog (Maybe TrafficType)
+flTrafficType = lens _flTrafficType (\ s a -> s{_flTrafficType = a});
+
+-- | The status of the logs delivery ('SUCCESS' | 'FAILED').
+flDeliverLogsStatus :: Lens' FlowLog (Maybe Text)
+flDeliverLogsStatus = lens _flDeliverLogsStatus (\ s a -> s{_flDeliverLogsStatus = a});
+
+-- | 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.
+flDeliverLogsErrorMessage :: Lens' FlowLog (Maybe Text)
+flDeliverLogsErrorMessage = lens _flDeliverLogsErrorMessage (\ s a -> s{_flDeliverLogsErrorMessage = a});
+
+-- | The name of the flow log group.
+flLogGroupName :: Lens' FlowLog (Maybe Text)
+flLogGroupName = lens _flLogGroupName (\ s a -> s{_flLogGroupName = a});
+
+-- | The ARN of the IAM role that posts logs to CloudWatch Logs.
+flDeliverLogsPermissionARN :: Lens' FlowLog (Maybe Text)
+flDeliverLogsPermissionARN = lens _flDeliverLogsPermissionARN (\ s a -> s{_flDeliverLogsPermissionARN = a});
+
+-- | The flow log ID.
+flFlowLogId :: Lens' FlowLog (Maybe Text)
+flFlowLogId = lens _flFlowLogId (\ s a -> s{_flFlowLogId = a});
+
+instance FromXML FlowLog where
+        parseXML x
+          = FlowLog' <$>
+              (x .@? "creationTime") <*> (x .@? "resourceId") <*>
+                (x .@? "flowLogStatus")
+                <*> (x .@? "trafficType")
+                <*> (x .@? "deliverLogsStatus")
+                <*> (x .@? "deliverLogsErrorMessage")
+                <*> (x .@? "logGroupName")
+                <*> (x .@? "deliverLogsPermissionArn")
+                <*> (x .@? "flowLogId")
+
+-- | Describes a security group.
+--
+-- /See:/ 'groupIdentifier' smart constructor.
+data GroupIdentifier = GroupIdentifier'
+    { _giGroupId   :: !(Maybe Text)
+    , _giGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupIdentifier' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giGroupId'
+--
+-- * 'giGroupName'
+groupIdentifier
+    :: GroupIdentifier
+groupIdentifier =
+    GroupIdentifier'
+    { _giGroupId = Nothing
+    , _giGroupName = Nothing
+    }
+
+-- | The ID of the security group.
+giGroupId :: Lens' GroupIdentifier (Maybe Text)
+giGroupId = lens _giGroupId (\ s a -> s{_giGroupId = a});
+
+-- | The name of the security group.
+giGroupName :: Lens' GroupIdentifier (Maybe Text)
+giGroupName = lens _giGroupName (\ s a -> s{_giGroupName = a});
+
+instance FromXML GroupIdentifier where
+        parseXML x
+          = GroupIdentifier' <$>
+              (x .@? "groupId") <*> (x .@? "groupName")
+
+instance ToQuery GroupIdentifier where
+        toQuery GroupIdentifier'{..}
+          = mconcat
+              ["GroupId" =: _giGroupId,
+               "GroupName" =: _giGroupName]
+
+-- | Describes an event in the history of the Spot fleet request.
+--
+-- /See:/ 'historyRecord' smart constructor.
+data HistoryRecord = HistoryRecord'
+    { _hrTimestamp        :: !ISO8601
+    , _hrEventType        :: !EventType
+    , _hrEventInformation :: !EventInformation
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HistoryRecord' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hrTimestamp'
+--
+-- * 'hrEventType'
+--
+-- * 'hrEventInformation'
+historyRecord
+    :: UTCTime -- ^ 'hrTimestamp'
+    -> EventType -- ^ 'hrEventType'
+    -> EventInformation -- ^ 'hrEventInformation'
+    -> HistoryRecord
+historyRecord pTimestamp_ pEventType_ pEventInformation_ =
+    HistoryRecord'
+    { _hrTimestamp = _Time # pTimestamp_
+    , _hrEventType = pEventType_
+    , _hrEventInformation = pEventInformation_
+    }
+
+-- | The date and time of the event, in UTC format (for example,
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
+hrTimestamp :: Lens' HistoryRecord UTCTime
+hrTimestamp = lens _hrTimestamp (\ s a -> s{_hrTimestamp = a}) . _Time;
+
+-- | The event type.
+--
+-- -   'error' - Indicates an error with the Spot fleet request.
+--
+-- -   'fleetRequestChange' - Indicates a change in the status or
+--     configuration of the Spot fleet request.
+--
+-- -   'instanceChange' - Indicates that an instance was launched or
+--     terminated.
+--
+hrEventType :: Lens' HistoryRecord EventType
+hrEventType = lens _hrEventType (\ s a -> s{_hrEventType = a});
+
+-- | Information about the event.
+hrEventInformation :: Lens' HistoryRecord EventInformation
+hrEventInformation = lens _hrEventInformation (\ s a -> s{_hrEventInformation = a});
+
+instance FromXML HistoryRecord where
+        parseXML x
+          = HistoryRecord' <$>
+              (x .@ "timestamp") <*> (x .@ "eventType") <*>
+                (x .@ "eventInformation")
+
+-- | Describes an IAM instance profile.
+--
+-- /See:/ 'iamInstanceProfile' smart constructor.
+data IAMInstanceProfile = IAMInstanceProfile'
+    { _iapARN :: !(Maybe Text)
+    , _iapId  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IAMInstanceProfile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapARN'
+--
+-- * 'iapId'
+iamInstanceProfile
+    :: IAMInstanceProfile
+iamInstanceProfile =
+    IAMInstanceProfile'
+    { _iapARN = Nothing
+    , _iapId = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the instance profile.
+iapARN :: Lens' IAMInstanceProfile (Maybe Text)
+iapARN = lens _iapARN (\ s a -> s{_iapARN = a});
+
+-- | The ID of the instance profile.
+iapId :: Lens' IAMInstanceProfile (Maybe Text)
+iapId = lens _iapId (\ s a -> s{_iapId = a});
+
+instance FromXML IAMInstanceProfile where
+        parseXML x
+          = IAMInstanceProfile' <$>
+              (x .@? "arn") <*> (x .@? "id")
+
+-- | Describes an IAM instance profile.
+--
+-- /See:/ 'iamInstanceProfileSpecification' smart constructor.
+data IAMInstanceProfileSpecification = IAMInstanceProfileSpecification'
+    { _iapsARN  :: !(Maybe Text)
+    , _iapsName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IAMInstanceProfileSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapsARN'
+--
+-- * 'iapsName'
+iamInstanceProfileSpecification
+    :: IAMInstanceProfileSpecification
+iamInstanceProfileSpecification =
+    IAMInstanceProfileSpecification'
+    { _iapsARN = Nothing
+    , _iapsName = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the instance profile.
+iapsARN :: Lens' IAMInstanceProfileSpecification (Maybe Text)
+iapsARN = lens _iapsARN (\ s a -> s{_iapsARN = a});
+
+-- | The name of the instance profile.
+iapsName :: Lens' IAMInstanceProfileSpecification (Maybe Text)
+iapsName = lens _iapsName (\ s a -> s{_iapsName = a});
+
+instance FromXML IAMInstanceProfileSpecification
+         where
+        parseXML x
+          = IAMInstanceProfileSpecification' <$>
+              (x .@? "arn") <*> (x .@? "name")
+
+instance ToQuery IAMInstanceProfileSpecification
+         where
+        toQuery IAMInstanceProfileSpecification'{..}
+          = mconcat ["Arn" =: _iapsARN, "Name" =: _iapsName]
+
+-- | Describes the ICMP type and code.
+--
+-- /See:/ 'icmpTypeCode' smart constructor.
+data ICMPTypeCode = ICMPTypeCode'
+    { _itcCode :: !(Maybe Int)
+    , _itcType :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ICMPTypeCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itcCode'
+--
+-- * 'itcType'
+icmpTypeCode
+    :: ICMPTypeCode
+icmpTypeCode =
+    ICMPTypeCode'
+    { _itcCode = Nothing
+    , _itcType = Nothing
+    }
+
+-- | The ICMP type. A value of -1 means all types.
+itcCode :: Lens' ICMPTypeCode (Maybe Int)
+itcCode = lens _itcCode (\ s a -> s{_itcCode = a});
+
+-- | The ICMP code. A value of -1 means all codes for the specified ICMP
+-- type.
+itcType :: Lens' ICMPTypeCode (Maybe Int)
+itcType = lens _itcType (\ s a -> s{_itcType = a});
+
+instance FromXML ICMPTypeCode where
+        parseXML x
+          = ICMPTypeCode' <$> (x .@? "code") <*> (x .@? "type")
+
+instance ToQuery ICMPTypeCode where
+        toQuery ICMPTypeCode'{..}
+          = mconcat ["Code" =: _itcCode, "Type" =: _itcType]
+
+-- | Describes a security group rule.
+--
+-- /See:/ 'ipPermission' smart constructor.
+data IPPermission = IPPermission'
+    { _ipFromPort         :: !(Maybe Int)
+    , _ipUserIdGroupPairs :: !(Maybe [UserIdGroupPair])
+    , _ipPrefixListIds    :: !(Maybe [PrefixListId])
+    , _ipToPort           :: !(Maybe Int)
+    , _ipIPRanges         :: !(Maybe [IPRange])
+    , _ipIPProtocol       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IPPermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipFromPort'
+--
+-- * 'ipUserIdGroupPairs'
+--
+-- * 'ipPrefixListIds'
+--
+-- * 'ipToPort'
+--
+-- * 'ipIPRanges'
+--
+-- * 'ipIPProtocol'
+ipPermission
+    :: Text -- ^ 'ipIPProtocol'
+    -> IPPermission
+ipPermission pIPProtocol_ =
+    IPPermission'
+    { _ipFromPort = Nothing
+    , _ipUserIdGroupPairs = Nothing
+    , _ipPrefixListIds = Nothing
+    , _ipToPort = Nothing
+    , _ipIPRanges = Nothing
+    , _ipIPProtocol = pIPProtocol_
+    }
+
+-- | The start of port range for the TCP and UDP protocols, or an ICMP type
+-- number. A value of '-1' indicates all ICMP types.
+ipFromPort :: Lens' IPPermission (Maybe Int)
+ipFromPort = lens _ipFromPort (\ s a -> s{_ipFromPort = a});
+
+-- | One or more security group and AWS account ID pairs.
+ipUserIdGroupPairs :: Lens' IPPermission [UserIdGroupPair]
+ipUserIdGroupPairs = lens _ipUserIdGroupPairs (\ s a -> s{_ipUserIdGroupPairs = a}) . _Default . _Coerce;
+
+-- | (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and
+-- DescribeSecurityGroups only) One or more prefix list IDs for an AWS
+-- service. In an AuthorizeSecurityGroupEgress request, this is the AWS
+-- service that you want to access through a VPC endpoint from instances
+-- associated with the security group.
+ipPrefixListIds :: Lens' IPPermission [PrefixListId]
+ipPrefixListIds = lens _ipPrefixListIds (\ s a -> s{_ipPrefixListIds = a}) . _Default . _Coerce;
+
+-- | The end of port range for the TCP and UDP protocols, or an ICMP code. A
+-- value of '-1' indicates all ICMP codes for the specified ICMP type.
+ipToPort :: Lens' IPPermission (Maybe Int)
+ipToPort = lens _ipToPort (\ s a -> s{_ipToPort = a});
+
+-- | One or more IP ranges.
+ipIPRanges :: Lens' IPPermission [IPRange]
+ipIPRanges = lens _ipIPRanges (\ s a -> s{_ipIPRanges = a}) . _Default . _Coerce;
+
+-- | The protocol.
+--
+-- 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.
+ipIPProtocol :: Lens' IPPermission Text
+ipIPProtocol = lens _ipIPProtocol (\ s a -> s{_ipIPProtocol = a});
+
+instance FromXML IPPermission where
+        parseXML x
+          = IPPermission' <$>
+              (x .@? "fromPort") <*>
+                (x .@? "groups" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "prefixListIds" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "toPort")
+                <*>
+                (x .@? "ipRanges" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "ipProtocol")
+
+instance ToQuery IPPermission where
+        toQuery IPPermission'{..}
+          = mconcat
+              ["FromPort" =: _ipFromPort,
+               toQuery
+                 (toQueryList "Groups" <$> _ipUserIdGroupPairs),
+               toQuery
+                 (toQueryList "PrefixListIds" <$> _ipPrefixListIds),
+               "ToPort" =: _ipToPort,
+               toQuery (toQueryList "IpRanges" <$> _ipIPRanges),
+               "IpProtocol" =: _ipIPProtocol]
+
+-- | Describes an IP range.
+--
+-- /See:/ 'ipRange' smart constructor.
+newtype IPRange = IPRange'
+    { _irCIdRIP :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IPRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'irCIdRIP'
+ipRange
+    :: Text -- ^ 'irCIdRIP'
+    -> IPRange
+ipRange pCIdRIP_ =
+    IPRange'
+    { _irCIdRIP = pCIdRIP_
+    }
+
+-- | The CIDR range. You can either specify a CIDR range or a source security
+-- group, not both.
+irCIdRIP :: Lens' IPRange Text
+irCIdRIP = lens _irCIdRIP (\ s a -> s{_irCIdRIP = a});
+
+instance FromXML IPRange where
+        parseXML x = IPRange' <$> (x .@ "cidrIp")
+
+instance ToQuery IPRange where
+        toQuery IPRange'{..}
+          = mconcat ["CidrIp" =: _irCIdRIP]
+
+-- | Describes an image.
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image'
+    { _iPlatform            :: !(Maybe PlatformValues)
+    , _iImageOwnerAlias     :: !(Maybe Text)
+    , _iRAMDiskId           :: !(Maybe Text)
+    , _iKernelId            :: !(Maybe Text)
+    , _iRootDeviceName      :: !(Maybe Text)
+    , _iSRIOVNetSupport     :: !(Maybe Text)
+    , _iName                :: !(Maybe Text)
+    , _iCreationDate        :: !(Maybe Text)
+    , _iProductCodes        :: !(Maybe [ProductCode])
+    , _iStateReason         :: !(Maybe StateReason)
+    , _iDescription         :: !(Maybe Text)
+    , _iBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
+    , _iTags                :: !(Maybe [Tag])
+    , _iImageId             :: !Text
+    , _iImageLocation       :: !Text
+    , _iState               :: !ImageState
+    , _iOwnerId             :: !Text
+    , _iPublic              :: !Bool
+    , _iArchitecture        :: !ArchitectureValues
+    , _iImageType           :: !ImageTypeValues
+    , _iRootDeviceType      :: !DeviceType
+    , _iVirtualizationType  :: !VirtualizationType
+    , _iHypervisor          :: !HypervisorType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iPlatform'
+--
+-- * 'iImageOwnerAlias'
+--
+-- * 'iRAMDiskId'
+--
+-- * 'iKernelId'
+--
+-- * 'iRootDeviceName'
+--
+-- * 'iSRIOVNetSupport'
+--
+-- * 'iName'
+--
+-- * 'iCreationDate'
+--
+-- * 'iProductCodes'
+--
+-- * 'iStateReason'
+--
+-- * 'iDescription'
+--
+-- * 'iBlockDeviceMappings'
+--
+-- * 'iTags'
+--
+-- * 'iImageId'
+--
+-- * 'iImageLocation'
+--
+-- * 'iState'
+--
+-- * 'iOwnerId'
+--
+-- * 'iPublic'
+--
+-- * 'iArchitecture'
+--
+-- * 'iImageType'
+--
+-- * 'iRootDeviceType'
+--
+-- * 'iVirtualizationType'
+--
+-- * 'iHypervisor'
+image
+    :: Text -- ^ 'iImageId'
+    -> Text -- ^ 'iImageLocation'
+    -> ImageState -- ^ 'iState'
+    -> Text -- ^ 'iOwnerId'
+    -> Bool -- ^ 'iPublic'
+    -> ArchitectureValues -- ^ 'iArchitecture'
+    -> ImageTypeValues -- ^ 'iImageType'
+    -> DeviceType -- ^ 'iRootDeviceType'
+    -> VirtualizationType -- ^ 'iVirtualizationType'
+    -> HypervisorType -- ^ 'iHypervisor'
+    -> Image
+image pImageId_ pImageLocation_ pState_ pOwnerId_ pPublic_ pArchitecture_ pImageType_ pRootDeviceType_ pVirtualizationType_ pHypervisor_ =
+    Image'
+    { _iPlatform = Nothing
+    , _iImageOwnerAlias = Nothing
+    , _iRAMDiskId = Nothing
+    , _iKernelId = Nothing
+    , _iRootDeviceName = Nothing
+    , _iSRIOVNetSupport = Nothing
+    , _iName = Nothing
+    , _iCreationDate = Nothing
+    , _iProductCodes = Nothing
+    , _iStateReason = Nothing
+    , _iDescription = Nothing
+    , _iBlockDeviceMappings = Nothing
+    , _iTags = Nothing
+    , _iImageId = pImageId_
+    , _iImageLocation = pImageLocation_
+    , _iState = pState_
+    , _iOwnerId = pOwnerId_
+    , _iPublic = pPublic_
+    , _iArchitecture = pArchitecture_
+    , _iImageType = pImageType_
+    , _iRootDeviceType = pRootDeviceType_
+    , _iVirtualizationType = pVirtualizationType_
+    , _iHypervisor = pHypervisor_
+    }
+
+-- | The value is 'Windows' for Windows AMIs; otherwise blank.
+iPlatform :: Lens' Image (Maybe PlatformValues)
+iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
+
+-- | The AWS account alias (for example, 'amazon', 'self') or the AWS account
+-- ID of the AMI owner.
+iImageOwnerAlias :: Lens' Image (Maybe Text)
+iImageOwnerAlias = lens _iImageOwnerAlias (\ s a -> s{_iImageOwnerAlias = a});
+
+-- | The RAM disk associated with the image, if any. Only applicable for
+-- machine images.
+iRAMDiskId :: Lens' Image (Maybe Text)
+iRAMDiskId = lens _iRAMDiskId (\ s a -> s{_iRAMDiskId = a});
+
+-- | The kernel associated with the image, if any. Only applicable for
+-- machine images.
+iKernelId :: Lens' Image (Maybe Text)
+iKernelId = lens _iKernelId (\ s a -> s{_iKernelId = a});
+
+-- | The device name of the root device (for example, '\/dev\/sda1' or
+-- '\/dev\/xvda').
+iRootDeviceName :: Lens' Image (Maybe Text)
+iRootDeviceName = lens _iRootDeviceName (\ s a -> s{_iRootDeviceName = a});
+
+-- | Specifies whether enhanced networking is enabled.
+iSRIOVNetSupport :: Lens' Image (Maybe Text)
+iSRIOVNetSupport = lens _iSRIOVNetSupport (\ s a -> s{_iSRIOVNetSupport = a});
+
+-- | The name of the AMI that was provided during image creation.
+iName :: Lens' Image (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a});
+
+-- | The date and time the image was created.
+iCreationDate :: Lens' Image (Maybe Text)
+iCreationDate = lens _iCreationDate (\ s a -> s{_iCreationDate = a});
+
+-- | Any product codes associated with the AMI.
+iProductCodes :: Lens' Image [ProductCode]
+iProductCodes = lens _iProductCodes (\ s a -> s{_iProductCodes = a}) . _Default . _Coerce;
+
+-- | The reason for the state change.
+iStateReason :: Lens' Image (Maybe StateReason)
+iStateReason = lens _iStateReason (\ s a -> s{_iStateReason = a});
+
+-- | The description of the AMI that was provided during image creation.
+iDescription :: Lens' Image (Maybe Text)
+iDescription = lens _iDescription (\ s a -> s{_iDescription = a});
+
+-- | Any block device mapping entries.
+iBlockDeviceMappings :: Lens' Image [BlockDeviceMapping]
+iBlockDeviceMappings = lens _iBlockDeviceMappings (\ s a -> s{_iBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | Any tags assigned to the image.
+iTags :: Lens' Image [Tag]
+iTags = lens _iTags (\ s a -> s{_iTags = a}) . _Default . _Coerce;
+
+-- | The ID of the AMI.
+iImageId :: Lens' Image Text
+iImageId = lens _iImageId (\ s a -> s{_iImageId = a});
+
+-- | The location of the AMI.
+iImageLocation :: Lens' Image Text
+iImageLocation = lens _iImageLocation (\ s a -> s{_iImageLocation = a});
+
+-- | The current state of the AMI. If the state is 'available', the image is
+-- successfully registered and can be used to launch an instance.
+iState :: Lens' Image ImageState
+iState = lens _iState (\ s a -> s{_iState = a});
+
+-- | The AWS account ID of the image owner.
+iOwnerId :: Lens' Image Text
+iOwnerId = lens _iOwnerId (\ s a -> s{_iOwnerId = a});
+
+-- | Indicates whether the image has public launch permissions. The value is
+-- 'true' if this image has public launch permissions or 'false' if it has
+-- only implicit and explicit launch permissions.
+iPublic :: Lens' Image Bool
+iPublic = lens _iPublic (\ s a -> s{_iPublic = a});
+
+-- | The architecture of the image.
+iArchitecture :: Lens' Image ArchitectureValues
+iArchitecture = lens _iArchitecture (\ s a -> s{_iArchitecture = a});
+
+-- | The type of image.
+iImageType :: Lens' Image ImageTypeValues
+iImageType = lens _iImageType (\ s a -> s{_iImageType = a});
+
+-- | The type of root device used by the AMI. The AMI can use an EBS volume
+-- or an instance store volume.
+iRootDeviceType :: Lens' Image DeviceType
+iRootDeviceType = lens _iRootDeviceType (\ s a -> s{_iRootDeviceType = a});
+
+-- | The type of virtualization of the AMI.
+iVirtualizationType :: Lens' Image VirtualizationType
+iVirtualizationType = lens _iVirtualizationType (\ s a -> s{_iVirtualizationType = a});
+
+-- | The hypervisor type of the image.
+iHypervisor :: Lens' Image HypervisorType
+iHypervisor = lens _iHypervisor (\ s a -> s{_iHypervisor = a});
+
+instance FromXML Image where
+        parseXML x
+          = Image' <$>
+              (x .@? "platform") <*> (x .@? "imageOwnerAlias") <*>
+                (x .@? "ramdiskId")
+                <*> (x .@? "kernelId")
+                <*> (x .@? "rootDeviceName")
+                <*> (x .@? "sriovNetSupport")
+                <*> (x .@? "name")
+                <*> (x .@? "creationDate")
+                <*>
+                (x .@? "productCodes" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "stateReason")
+                <*> (x .@? "description")
+                <*>
+                (x .@? "blockDeviceMapping" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "imageId")
+                <*> (x .@ "imageLocation")
+                <*> (x .@ "imageState")
+                <*> (x .@ "imageOwnerId")
+                <*> (x .@ "isPublic")
+                <*> (x .@ "architecture")
+                <*> (x .@ "imageType")
+                <*> (x .@ "rootDeviceType")
+                <*> (x .@ "virtualizationType")
+                <*> (x .@ "hypervisor")
+
+-- | Describes the disk container object for an import image task.
+--
+-- /See:/ 'imageDiskContainer' smart constructor.
+data ImageDiskContainer = ImageDiskContainer'
+    { _idcFormat      :: !(Maybe Text)
+    , _idcURL         :: !(Maybe Text)
+    , _idcDeviceName  :: !(Maybe Text)
+    , _idcUserBucket  :: !(Maybe UserBucket)
+    , _idcDescription :: !(Maybe Text)
+    , _idcSnapshotId  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageDiskContainer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idcFormat'
+--
+-- * 'idcURL'
+--
+-- * 'idcDeviceName'
+--
+-- * 'idcUserBucket'
+--
+-- * 'idcDescription'
+--
+-- * 'idcSnapshotId'
+imageDiskContainer
+    :: ImageDiskContainer
+imageDiskContainer =
+    ImageDiskContainer'
+    { _idcFormat = Nothing
+    , _idcURL = Nothing
+    , _idcDeviceName = Nothing
+    , _idcUserBucket = Nothing
+    , _idcDescription = Nothing
+    , _idcSnapshotId = Nothing
+    }
+
+-- | The format of the disk image being imported.
+--
+-- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'
+idcFormat :: Lens' ImageDiskContainer (Maybe Text)
+idcFormat = lens _idcFormat (\ s a -> s{_idcFormat = a});
+
+-- | The URL to the Amazon S3-based disk image being imported. The URL can
+-- either be a https URL (https:\/\/..) or an Amazon S3 URL (s3:\/\/..)
+idcURL :: Lens' ImageDiskContainer (Maybe Text)
+idcURL = lens _idcURL (\ s a -> s{_idcURL = a});
+
+-- | The block device mapping for the disk.
+idcDeviceName :: Lens' ImageDiskContainer (Maybe Text)
+idcDeviceName = lens _idcDeviceName (\ s a -> s{_idcDeviceName = a});
+
+-- | The S3 bucket for the disk image.
+idcUserBucket :: Lens' ImageDiskContainer (Maybe UserBucket)
+idcUserBucket = lens _idcUserBucket (\ s a -> s{_idcUserBucket = a});
+
+-- | The description of the disk image.
+idcDescription :: Lens' ImageDiskContainer (Maybe Text)
+idcDescription = lens _idcDescription (\ s a -> s{_idcDescription = a});
+
+-- | The ID of the EBS snapshot to be used for importing the snapshot.
+idcSnapshotId :: Lens' ImageDiskContainer (Maybe Text)
+idcSnapshotId = lens _idcSnapshotId (\ s a -> s{_idcSnapshotId = a});
+
+instance ToQuery ImageDiskContainer where
+        toQuery ImageDiskContainer'{..}
+          = mconcat
+              ["Format" =: _idcFormat, "Url" =: _idcURL,
+               "DeviceName" =: _idcDeviceName,
+               "UserBucket" =: _idcUserBucket,
+               "Description" =: _idcDescription,
+               "SnapshotId" =: _idcSnapshotId]
+
+-- | Describes an import image task.
+--
+-- /See:/ 'importImageTask' smart constructor.
+data ImportImageTask = ImportImageTask'
+    { _iitStatus          :: !(Maybe Text)
+    , _iitHypervisor      :: !(Maybe Text)
+    , _iitPlatform        :: !(Maybe Text)
+    , _iitProgress        :: !(Maybe Text)
+    , _iitLicenseType     :: !(Maybe Text)
+    , _iitSnapshotDetails :: !(Maybe [SnapshotDetail])
+    , _iitStatusMessage   :: !(Maybe Text)
+    , _iitImageId         :: !(Maybe Text)
+    , _iitImportTaskId    :: !(Maybe Text)
+    , _iitArchitecture    :: !(Maybe Text)
+    , _iitDescription     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportImageTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iitStatus'
+--
+-- * 'iitHypervisor'
+--
+-- * 'iitPlatform'
+--
+-- * 'iitProgress'
+--
+-- * 'iitLicenseType'
+--
+-- * 'iitSnapshotDetails'
+--
+-- * 'iitStatusMessage'
+--
+-- * 'iitImageId'
+--
+-- * 'iitImportTaskId'
+--
+-- * 'iitArchitecture'
+--
+-- * 'iitDescription'
+importImageTask
+    :: ImportImageTask
+importImageTask =
+    ImportImageTask'
+    { _iitStatus = Nothing
+    , _iitHypervisor = Nothing
+    , _iitPlatform = Nothing
+    , _iitProgress = Nothing
+    , _iitLicenseType = Nothing
+    , _iitSnapshotDetails = Nothing
+    , _iitStatusMessage = Nothing
+    , _iitImageId = Nothing
+    , _iitImportTaskId = Nothing
+    , _iitArchitecture = Nothing
+    , _iitDescription = Nothing
+    }
+
+-- | A brief status for the import image task.
+iitStatus :: Lens' ImportImageTask (Maybe Text)
+iitStatus = lens _iitStatus (\ s a -> s{_iitStatus = a});
+
+-- | The target hypervisor for the import task.
+--
+-- Valid values: 'xen'
+iitHypervisor :: Lens' ImportImageTask (Maybe Text)
+iitHypervisor = lens _iitHypervisor (\ s a -> s{_iitHypervisor = a});
+
+-- | The description string for the import image task.
+iitPlatform :: Lens' ImportImageTask (Maybe Text)
+iitPlatform = lens _iitPlatform (\ s a -> s{_iitPlatform = a});
+
+-- | The percentage of progress of the import image task.
+iitProgress :: Lens' ImportImageTask (Maybe Text)
+iitProgress = lens _iitProgress (\ s a -> s{_iitProgress = a});
+
+-- | The license type of the virtual machine.
+iitLicenseType :: Lens' ImportImageTask (Maybe Text)
+iitLicenseType = lens _iitLicenseType (\ s a -> s{_iitLicenseType = a});
+
+-- | Information about the snapshots.
+iitSnapshotDetails :: Lens' ImportImageTask [SnapshotDetail]
+iitSnapshotDetails = lens _iitSnapshotDetails (\ s a -> s{_iitSnapshotDetails = a}) . _Default . _Coerce;
+
+-- | A descriptive status message for the import image task.
+iitStatusMessage :: Lens' ImportImageTask (Maybe Text)
+iitStatusMessage = lens _iitStatusMessage (\ s a -> s{_iitStatusMessage = a});
+
+-- | The ID of the Amazon Machine Image (AMI) of the imported virtual
+-- machine.
+iitImageId :: Lens' ImportImageTask (Maybe Text)
+iitImageId = lens _iitImageId (\ s a -> s{_iitImageId = a});
+
+-- | The ID of the import image task.
+iitImportTaskId :: Lens' ImportImageTask (Maybe Text)
+iitImportTaskId = lens _iitImportTaskId (\ s a -> s{_iitImportTaskId = a});
+
+-- | The architecture of the virtual machine.
+--
+-- Valid values: 'i386' | 'x86_64'
+iitArchitecture :: Lens' ImportImageTask (Maybe Text)
+iitArchitecture = lens _iitArchitecture (\ s a -> s{_iitArchitecture = a});
+
+-- | A description of the import task.
+iitDescription :: Lens' ImportImageTask (Maybe Text)
+iitDescription = lens _iitDescription (\ s a -> s{_iitDescription = a});
+
+instance FromXML ImportImageTask where
+        parseXML x
+          = ImportImageTask' <$>
+              (x .@? "status") <*> (x .@? "hypervisor") <*>
+                (x .@? "platform")
+                <*> (x .@? "progress")
+                <*> (x .@? "licenseType")
+                <*>
+                (x .@? "snapshotDetailSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "statusMessage")
+                <*> (x .@? "imageId")
+                <*> (x .@? "importTaskId")
+                <*> (x .@? "architecture")
+                <*> (x .@? "description")
+
+-- | Describes the launch specification for VM import.
+--
+-- /See:/ 'importInstanceLaunchSpecification' smart constructor.
+data ImportInstanceLaunchSpecification = ImportInstanceLaunchSpecification'
+    { _iilsAdditionalInfo                    :: !(Maybe Text)
+    , _iilsGroupNames                        :: !(Maybe [Text])
+    , _iilsSubnetId                          :: !(Maybe Text)
+    , _iilsInstanceType                      :: !(Maybe InstanceType)
+    , _iilsGroupIds                          :: !(Maybe [Text])
+    , _iilsUserData                          :: !(Maybe UserData)
+    , _iilsMonitoring                        :: !(Maybe Bool)
+    , _iilsPrivateIPAddress                  :: !(Maybe Text)
+    , _iilsInstanceInitiatedShutdownBehavior :: !(Maybe ShutdownBehavior)
+    , _iilsArchitecture                      :: !(Maybe ArchitectureValues)
+    , _iilsPlacement                         :: !(Maybe Placement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportInstanceLaunchSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iilsAdditionalInfo'
+--
+-- * 'iilsGroupNames'
+--
+-- * 'iilsSubnetId'
+--
+-- * 'iilsInstanceType'
+--
+-- * 'iilsGroupIds'
+--
+-- * 'iilsUserData'
+--
+-- * 'iilsMonitoring'
+--
+-- * 'iilsPrivateIPAddress'
+--
+-- * 'iilsInstanceInitiatedShutdownBehavior'
+--
+-- * 'iilsArchitecture'
+--
+-- * 'iilsPlacement'
+importInstanceLaunchSpecification
+    :: ImportInstanceLaunchSpecification
+importInstanceLaunchSpecification =
+    ImportInstanceLaunchSpecification'
+    { _iilsAdditionalInfo = Nothing
+    , _iilsGroupNames = Nothing
+    , _iilsSubnetId = Nothing
+    , _iilsInstanceType = Nothing
+    , _iilsGroupIds = Nothing
+    , _iilsUserData = Nothing
+    , _iilsMonitoring = Nothing
+    , _iilsPrivateIPAddress = Nothing
+    , _iilsInstanceInitiatedShutdownBehavior = Nothing
+    , _iilsArchitecture = Nothing
+    , _iilsPlacement = Nothing
+    }
+
+-- | Reserved.
+iilsAdditionalInfo :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
+iilsAdditionalInfo = lens _iilsAdditionalInfo (\ s a -> s{_iilsAdditionalInfo = a});
+
+-- | One or more security group names.
+iilsGroupNames :: Lens' ImportInstanceLaunchSpecification [Text]
+iilsGroupNames = lens _iilsGroupNames (\ s a -> s{_iilsGroupNames = a}) . _Default . _Coerce;
+
+-- | [EC2-VPC] The ID of the subnet in which to launch the instance.
+iilsSubnetId :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
+iilsSubnetId = lens _iilsSubnetId (\ s a -> s{_iilsSubnetId = a});
+
+-- | The instance type. For more information about the instance types that
+-- you can import, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html Before You Get Started>
+-- in the Amazon Elastic Compute Cloud User Guide.
+iilsInstanceType :: Lens' ImportInstanceLaunchSpecification (Maybe InstanceType)
+iilsInstanceType = lens _iilsInstanceType (\ s a -> s{_iilsInstanceType = a});
+
+-- | One or more security group IDs.
+iilsGroupIds :: Lens' ImportInstanceLaunchSpecification [Text]
+iilsGroupIds = lens _iilsGroupIds (\ s a -> s{_iilsGroupIds = a}) . _Default . _Coerce;
+
+-- | The Base64-encoded MIME user data to be made available to the instance.
+iilsUserData :: Lens' ImportInstanceLaunchSpecification (Maybe UserData)
+iilsUserData = lens _iilsUserData (\ s a -> s{_iilsUserData = a});
+
+-- | Indicates whether monitoring is enabled.
+iilsMonitoring :: Lens' ImportInstanceLaunchSpecification (Maybe Bool)
+iilsMonitoring = lens _iilsMonitoring (\ s a -> s{_iilsMonitoring = a});
+
+-- | [EC2-VPC] An available IP address from the IP address range of the
+-- subnet.
+iilsPrivateIPAddress :: Lens' ImportInstanceLaunchSpecification (Maybe Text)
+iilsPrivateIPAddress = lens _iilsPrivateIPAddress (\ s a -> s{_iilsPrivateIPAddress = a});
+
+-- | Indicates whether an instance stops or terminates when you initiate
+-- shutdown from the instance (using the operating system command for
+-- system shutdown).
+iilsInstanceInitiatedShutdownBehavior :: Lens' ImportInstanceLaunchSpecification (Maybe ShutdownBehavior)
+iilsInstanceInitiatedShutdownBehavior = lens _iilsInstanceInitiatedShutdownBehavior (\ s a -> s{_iilsInstanceInitiatedShutdownBehavior = a});
+
+-- | The architecture of the instance.
+iilsArchitecture :: Lens' ImportInstanceLaunchSpecification (Maybe ArchitectureValues)
+iilsArchitecture = lens _iilsArchitecture (\ s a -> s{_iilsArchitecture = a});
+
+-- | The placement information for the instance.
+iilsPlacement :: Lens' ImportInstanceLaunchSpecification (Maybe Placement)
+iilsPlacement = lens _iilsPlacement (\ s a -> s{_iilsPlacement = a});
+
+instance ToQuery ImportInstanceLaunchSpecification
+         where
+        toQuery ImportInstanceLaunchSpecification'{..}
+          = mconcat
+              ["AdditionalInfo" =: _iilsAdditionalInfo,
+               toQuery
+                 (toQueryList "GroupName" <$> _iilsGroupNames),
+               "SubnetId" =: _iilsSubnetId,
+               "InstanceType" =: _iilsInstanceType,
+               toQuery (toQueryList "GroupId" <$> _iilsGroupIds),
+               "UserData" =: _iilsUserData,
+               "Monitoring" =: _iilsMonitoring,
+               "PrivateIpAddress" =: _iilsPrivateIPAddress,
+               "InstanceInitiatedShutdownBehavior" =:
+                 _iilsInstanceInitiatedShutdownBehavior,
+               "Architecture" =: _iilsArchitecture,
+               "Placement" =: _iilsPlacement]
+
+-- | Describes an import instance task.
+--
+-- /See:/ 'importInstanceTaskDetails' smart constructor.
+data ImportInstanceTaskDetails = ImportInstanceTaskDetails'
+    { _iitdInstanceId  :: !(Maybe Text)
+    , _iitdPlatform    :: !(Maybe PlatformValues)
+    , _iitdDescription :: !(Maybe Text)
+    , _iitdVolumes     :: ![ImportInstanceVolumeDetailItem]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportInstanceTaskDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iitdInstanceId'
+--
+-- * 'iitdPlatform'
+--
+-- * 'iitdDescription'
+--
+-- * 'iitdVolumes'
+importInstanceTaskDetails
+    :: ImportInstanceTaskDetails
+importInstanceTaskDetails =
+    ImportInstanceTaskDetails'
+    { _iitdInstanceId = Nothing
+    , _iitdPlatform = Nothing
+    , _iitdDescription = Nothing
+    , _iitdVolumes = mempty
+    }
+
+-- | The ID of the instance.
+iitdInstanceId :: Lens' ImportInstanceTaskDetails (Maybe Text)
+iitdInstanceId = lens _iitdInstanceId (\ s a -> s{_iitdInstanceId = a});
+
+-- | The instance operating system.
+iitdPlatform :: Lens' ImportInstanceTaskDetails (Maybe PlatformValues)
+iitdPlatform = lens _iitdPlatform (\ s a -> s{_iitdPlatform = a});
+
+-- | A description of the task.
+iitdDescription :: Lens' ImportInstanceTaskDetails (Maybe Text)
+iitdDescription = lens _iitdDescription (\ s a -> s{_iitdDescription = a});
+
+-- | One or more volumes.
+iitdVolumes :: Lens' ImportInstanceTaskDetails [ImportInstanceVolumeDetailItem]
+iitdVolumes = lens _iitdVolumes (\ s a -> s{_iitdVolumes = a}) . _Coerce;
+
+instance FromXML ImportInstanceTaskDetails where
+        parseXML x
+          = ImportInstanceTaskDetails' <$>
+              (x .@? "instanceId") <*> (x .@? "platform") <*>
+                (x .@? "description")
+                <*>
+                (x .@? "volumes" .!@ mempty >>= parseXMLList "item")
+
+-- | Describes an import volume task.
+--
+-- /See:/ 'importInstanceVolumeDetailItem' smart constructor.
+data ImportInstanceVolumeDetailItem = ImportInstanceVolumeDetailItem'
+    { _iivdiStatusMessage    :: !(Maybe Text)
+    , _iivdiDescription      :: !(Maybe Text)
+    , _iivdiBytesConverted   :: !Integer
+    , _iivdiAvailabilityZone :: !Text
+    , _iivdiImage            :: !DiskImageDescription
+    , _iivdiVolume           :: !DiskImageVolumeDescription
+    , _iivdiStatus           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportInstanceVolumeDetailItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iivdiStatusMessage'
+--
+-- * 'iivdiDescription'
+--
+-- * 'iivdiBytesConverted'
+--
+-- * 'iivdiAvailabilityZone'
+--
+-- * 'iivdiImage'
+--
+-- * 'iivdiVolume'
+--
+-- * 'iivdiStatus'
+importInstanceVolumeDetailItem
+    :: Integer -- ^ 'iivdiBytesConverted'
+    -> Text -- ^ 'iivdiAvailabilityZone'
+    -> DiskImageDescription -- ^ 'iivdiImage'
+    -> DiskImageVolumeDescription -- ^ 'iivdiVolume'
+    -> Text -- ^ 'iivdiStatus'
+    -> ImportInstanceVolumeDetailItem
+importInstanceVolumeDetailItem pBytesConverted_ pAvailabilityZone_ pImage_ pVolume_ pStatus_ =
+    ImportInstanceVolumeDetailItem'
+    { _iivdiStatusMessage = Nothing
+    , _iivdiDescription = Nothing
+    , _iivdiBytesConverted = pBytesConverted_
+    , _iivdiAvailabilityZone = pAvailabilityZone_
+    , _iivdiImage = pImage_
+    , _iivdiVolume = pVolume_
+    , _iivdiStatus = pStatus_
+    }
+
+-- | The status information or errors related to the disk image.
+iivdiStatusMessage :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)
+iivdiStatusMessage = lens _iivdiStatusMessage (\ s a -> s{_iivdiStatusMessage = a});
+
+-- | A description of the task.
+iivdiDescription :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)
+iivdiDescription = lens _iivdiDescription (\ s a -> s{_iivdiDescription = a});
+
+-- | The number of bytes converted so far.
+iivdiBytesConverted :: Lens' ImportInstanceVolumeDetailItem Integer
+iivdiBytesConverted = lens _iivdiBytesConverted (\ s a -> s{_iivdiBytesConverted = a});
+
+-- | The Availability Zone where the resulting instance will reside.
+iivdiAvailabilityZone :: Lens' ImportInstanceVolumeDetailItem Text
+iivdiAvailabilityZone = lens _iivdiAvailabilityZone (\ s a -> s{_iivdiAvailabilityZone = a});
+
+-- | The image.
+iivdiImage :: Lens' ImportInstanceVolumeDetailItem DiskImageDescription
+iivdiImage = lens _iivdiImage (\ s a -> s{_iivdiImage = a});
+
+-- | The volume.
+iivdiVolume :: Lens' ImportInstanceVolumeDetailItem DiskImageVolumeDescription
+iivdiVolume = lens _iivdiVolume (\ s a -> s{_iivdiVolume = a});
+
+-- | The status of the import of this particular disk image.
+iivdiStatus :: Lens' ImportInstanceVolumeDetailItem Text
+iivdiStatus = lens _iivdiStatus (\ s a -> s{_iivdiStatus = a});
+
+instance FromXML ImportInstanceVolumeDetailItem where
+        parseXML x
+          = ImportInstanceVolumeDetailItem' <$>
+              (x .@? "statusMessage") <*> (x .@? "description") <*>
+                (x .@ "bytesConverted")
+                <*> (x .@ "availabilityZone")
+                <*> (x .@ "image")
+                <*> (x .@ "volume")
+                <*> (x .@ "status")
+
+-- | Describes an import snapshot task.
+--
+-- /See:/ 'importSnapshotTask' smart constructor.
+data ImportSnapshotTask = ImportSnapshotTask'
+    { _istSnapshotTaskDetail :: !(Maybe SnapshotTaskDetail)
+    , _istImportTaskId       :: !(Maybe Text)
+    , _istDescription        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportSnapshotTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'istSnapshotTaskDetail'
+--
+-- * 'istImportTaskId'
+--
+-- * 'istDescription'
+importSnapshotTask
+    :: ImportSnapshotTask
+importSnapshotTask =
+    ImportSnapshotTask'
+    { _istSnapshotTaskDetail = Nothing
+    , _istImportTaskId = Nothing
+    , _istDescription = Nothing
+    }
+
+-- | Describes an import snapshot task.
+istSnapshotTaskDetail :: Lens' ImportSnapshotTask (Maybe SnapshotTaskDetail)
+istSnapshotTaskDetail = lens _istSnapshotTaskDetail (\ s a -> s{_istSnapshotTaskDetail = a});
+
+-- | The ID of the import snapshot task.
+istImportTaskId :: Lens' ImportSnapshotTask (Maybe Text)
+istImportTaskId = lens _istImportTaskId (\ s a -> s{_istImportTaskId = a});
+
+-- | A description of the import snapshot task.
+istDescription :: Lens' ImportSnapshotTask (Maybe Text)
+istDescription = lens _istDescription (\ s a -> s{_istDescription = a});
+
+instance FromXML ImportSnapshotTask where
+        parseXML x
+          = ImportSnapshotTask' <$>
+              (x .@? "snapshotTaskDetail") <*>
+                (x .@? "importTaskId")
+                <*> (x .@? "description")
+
+-- | Describes an import volume task.
+--
+-- /See:/ 'importVolumeTaskDetails' smart constructor.
+data ImportVolumeTaskDetails = ImportVolumeTaskDetails'
+    { _ivtdDescription      :: !(Maybe Text)
+    , _ivtdBytesConverted   :: !Integer
+    , _ivtdAvailabilityZone :: !Text
+    , _ivtdImage            :: !DiskImageDescription
+    , _ivtdVolume           :: !DiskImageVolumeDescription
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportVolumeTaskDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ivtdDescription'
+--
+-- * 'ivtdBytesConverted'
+--
+-- * 'ivtdAvailabilityZone'
+--
+-- * 'ivtdImage'
+--
+-- * 'ivtdVolume'
+importVolumeTaskDetails
+    :: Integer -- ^ 'ivtdBytesConverted'
+    -> Text -- ^ 'ivtdAvailabilityZone'
+    -> DiskImageDescription -- ^ 'ivtdImage'
+    -> DiskImageVolumeDescription -- ^ 'ivtdVolume'
+    -> ImportVolumeTaskDetails
+importVolumeTaskDetails pBytesConverted_ pAvailabilityZone_ pImage_ pVolume_ =
+    ImportVolumeTaskDetails'
+    { _ivtdDescription = Nothing
+    , _ivtdBytesConverted = pBytesConverted_
+    , _ivtdAvailabilityZone = pAvailabilityZone_
+    , _ivtdImage = pImage_
+    , _ivtdVolume = pVolume_
+    }
+
+-- | The description you provided when starting the import volume task.
+ivtdDescription :: Lens' ImportVolumeTaskDetails (Maybe Text)
+ivtdDescription = lens _ivtdDescription (\ s a -> s{_ivtdDescription = a});
+
+-- | The number of bytes converted so far.
+ivtdBytesConverted :: Lens' ImportVolumeTaskDetails Integer
+ivtdBytesConverted = lens _ivtdBytesConverted (\ s a -> s{_ivtdBytesConverted = a});
+
+-- | The Availability Zone where the resulting volume will reside.
+ivtdAvailabilityZone :: Lens' ImportVolumeTaskDetails Text
+ivtdAvailabilityZone = lens _ivtdAvailabilityZone (\ s a -> s{_ivtdAvailabilityZone = a});
+
+-- | The image.
+ivtdImage :: Lens' ImportVolumeTaskDetails DiskImageDescription
+ivtdImage = lens _ivtdImage (\ s a -> s{_ivtdImage = a});
+
+-- | The volume.
+ivtdVolume :: Lens' ImportVolumeTaskDetails DiskImageVolumeDescription
+ivtdVolume = lens _ivtdVolume (\ s a -> s{_ivtdVolume = a});
+
+instance FromXML ImportVolumeTaskDetails where
+        parseXML x
+          = ImportVolumeTaskDetails' <$>
+              (x .@? "description") <*> (x .@ "bytesConverted") <*>
+                (x .@ "availabilityZone")
+                <*> (x .@ "image")
+                <*> (x .@ "volume")
+
+-- | Describes an instance.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+    { _insPublicDNSName         :: !(Maybe Text)
+    , _insPlatform              :: !(Maybe PlatformValues)
+    , _insSecurityGroups        :: !(Maybe [GroupIdentifier])
+    , _insClientToken           :: !(Maybe Text)
+    , _insSourceDestCheck       :: !(Maybe Bool)
+    , _insVPCId                 :: !(Maybe Text)
+    , _insKeyName               :: !(Maybe Text)
+    , _insNetworkInterfaces     :: !(Maybe [InstanceNetworkInterface])
+    , _insRAMDiskId             :: !(Maybe Text)
+    , _insSubnetId              :: !(Maybe Text)
+    , _insKernelId              :: !(Maybe Text)
+    , _insRootDeviceName        :: !(Maybe Text)
+    , _insSRIOVNetSupport       :: !(Maybe Text)
+    , _insEBSOptimized          :: !(Maybe Bool)
+    , _insStateTransitionReason :: !(Maybe Text)
+    , _insInstanceLifecycle     :: !(Maybe InstanceLifecycleType)
+    , _insIAMInstanceProfile    :: !(Maybe IAMInstanceProfile)
+    , _insPrivateIPAddress      :: !(Maybe Text)
+    , _insProductCodes          :: !(Maybe [ProductCode])
+    , _insSpotInstanceRequestId :: !(Maybe Text)
+    , _insPrivateDNSName        :: !(Maybe Text)
+    , _insStateReason           :: !(Maybe StateReason)
+    , _insBlockDeviceMappings   :: !(Maybe [InstanceBlockDeviceMapping])
+    , _insPublicIPAddress       :: !(Maybe Text)
+    , _insTags                  :: !(Maybe [Tag])
+    , _insInstanceId            :: !Text
+    , _insImageId               :: !Text
+    , _insAMILaunchIndex        :: !Int
+    , _insInstanceType          :: !InstanceType
+    , _insLaunchTime            :: !ISO8601
+    , _insPlacement             :: !Placement
+    , _insMonitoring            :: !Monitoring
+    , _insArchitecture          :: !ArchitectureValues
+    , _insRootDeviceType        :: !DeviceType
+    , _insVirtualizationType    :: !VirtualizationType
+    , _insHypervisor            :: !HypervisorType
+    , _insState                 :: !InstanceState
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Instance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insPublicDNSName'
+--
+-- * 'insPlatform'
+--
+-- * 'insSecurityGroups'
+--
+-- * 'insClientToken'
+--
+-- * 'insSourceDestCheck'
+--
+-- * 'insVPCId'
+--
+-- * 'insKeyName'
+--
+-- * 'insNetworkInterfaces'
+--
+-- * 'insRAMDiskId'
+--
+-- * 'insSubnetId'
+--
+-- * 'insKernelId'
+--
+-- * 'insRootDeviceName'
+--
+-- * 'insSRIOVNetSupport'
+--
+-- * 'insEBSOptimized'
+--
+-- * 'insStateTransitionReason'
+--
+-- * 'insInstanceLifecycle'
+--
+-- * 'insIAMInstanceProfile'
+--
+-- * 'insPrivateIPAddress'
+--
+-- * 'insProductCodes'
+--
+-- * 'insSpotInstanceRequestId'
+--
+-- * 'insPrivateDNSName'
+--
+-- * 'insStateReason'
+--
+-- * 'insBlockDeviceMappings'
+--
+-- * 'insPublicIPAddress'
+--
+-- * 'insTags'
+--
+-- * 'insInstanceId'
+--
+-- * 'insImageId'
+--
+-- * 'insAMILaunchIndex'
+--
+-- * 'insInstanceType'
+--
+-- * 'insLaunchTime'
+--
+-- * 'insPlacement'
+--
+-- * 'insMonitoring'
+--
+-- * 'insArchitecture'
+--
+-- * 'insRootDeviceType'
+--
+-- * 'insVirtualizationType'
+--
+-- * 'insHypervisor'
+--
+-- * 'insState'
+instance'
+    :: Text -- ^ 'insInstanceId'
+    -> Text -- ^ 'insImageId'
+    -> Int -- ^ 'insAMILaunchIndex'
+    -> InstanceType -- ^ 'insInstanceType'
+    -> UTCTime -- ^ 'insLaunchTime'
+    -> Placement -- ^ 'insPlacement'
+    -> Monitoring -- ^ 'insMonitoring'
+    -> ArchitectureValues -- ^ 'insArchitecture'
+    -> DeviceType -- ^ 'insRootDeviceType'
+    -> VirtualizationType -- ^ 'insVirtualizationType'
+    -> HypervisorType -- ^ 'insHypervisor'
+    -> InstanceState -- ^ 'insState'
+    -> Instance
+instance' pInstanceId_ pImageId_ pAMILaunchIndex_ pInstanceType_ pLaunchTime_ pPlacement_ pMonitoring_ pArchitecture_ pRootDeviceType_ pVirtualizationType_ pHypervisor_ pState_ =
+    Instance'
+    { _insPublicDNSName = Nothing
+    , _insPlatform = Nothing
+    , _insSecurityGroups = Nothing
+    , _insClientToken = Nothing
+    , _insSourceDestCheck = Nothing
+    , _insVPCId = Nothing
+    , _insKeyName = Nothing
+    , _insNetworkInterfaces = Nothing
+    , _insRAMDiskId = Nothing
+    , _insSubnetId = Nothing
+    , _insKernelId = Nothing
+    , _insRootDeviceName = Nothing
+    , _insSRIOVNetSupport = Nothing
+    , _insEBSOptimized = Nothing
+    , _insStateTransitionReason = Nothing
+    , _insInstanceLifecycle = Nothing
+    , _insIAMInstanceProfile = Nothing
+    , _insPrivateIPAddress = Nothing
+    , _insProductCodes = Nothing
+    , _insSpotInstanceRequestId = Nothing
+    , _insPrivateDNSName = Nothing
+    , _insStateReason = Nothing
+    , _insBlockDeviceMappings = Nothing
+    , _insPublicIPAddress = Nothing
+    , _insTags = Nothing
+    , _insInstanceId = pInstanceId_
+    , _insImageId = pImageId_
+    , _insAMILaunchIndex = pAMILaunchIndex_
+    , _insInstanceType = pInstanceType_
+    , _insLaunchTime = _Time # pLaunchTime_
+    , _insPlacement = pPlacement_
+    , _insMonitoring = pMonitoring_
+    , _insArchitecture = pArchitecture_
+    , _insRootDeviceType = pRootDeviceType_
+    , _insVirtualizationType = pVirtualizationType_
+    , _insHypervisor = pHypervisor_
+    , _insState = pState_
+    }
+
+-- | The public DNS name assigned to the instance. This name is not available
+-- until the instance enters the 'running' state.
+insPublicDNSName :: Lens' Instance (Maybe Text)
+insPublicDNSName = lens _insPublicDNSName (\ s a -> s{_insPublicDNSName = a});
+
+-- | The value is 'Windows' for Windows instances; otherwise blank.
+insPlatform :: Lens' Instance (Maybe PlatformValues)
+insPlatform = lens _insPlatform (\ s a -> s{_insPlatform = a});
+
+-- | One or more security groups for the instance.
+insSecurityGroups :: Lens' Instance [GroupIdentifier]
+insSecurityGroups = lens _insSecurityGroups (\ s a -> s{_insSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The idempotency token you provided when you launched the instance.
+insClientToken :: Lens' Instance (Maybe Text)
+insClientToken = lens _insClientToken (\ s a -> s{_insClientToken = a});
+
+-- | Specifies whether to enable an instance launched in a VPC to perform
+-- NAT. This controls whether source\/destination checking is enabled on
+-- the instance. A value of 'true' means checking is enabled, and 'false'
+-- means checking is disabled. The value must be 'false' for the instance
+-- to perform NAT. For more information, see
+-- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html NAT Instances>
+-- in the /Amazon Virtual Private Cloud User Guide/.
+insSourceDestCheck :: Lens' Instance (Maybe Bool)
+insSourceDestCheck = lens _insSourceDestCheck (\ s a -> s{_insSourceDestCheck = a});
+
+-- | The ID of the VPC in which the instance is running.
+insVPCId :: Lens' Instance (Maybe Text)
+insVPCId = lens _insVPCId (\ s a -> s{_insVPCId = a});
+
+-- | The name of the key pair, if this instance was launched with an
+-- associated key pair.
+insKeyName :: Lens' Instance (Maybe Text)
+insKeyName = lens _insKeyName (\ s a -> s{_insKeyName = a});
+
+-- | [EC2-VPC] One or more network interfaces for the instance.
+insNetworkInterfaces :: Lens' Instance [InstanceNetworkInterface]
+insNetworkInterfaces = lens _insNetworkInterfaces (\ s a -> s{_insNetworkInterfaces = a}) . _Default . _Coerce;
+
+-- | The RAM disk associated with this instance.
+insRAMDiskId :: Lens' Instance (Maybe Text)
+insRAMDiskId = lens _insRAMDiskId (\ s a -> s{_insRAMDiskId = a});
+
+-- | The ID of the subnet in which the instance is running.
+insSubnetId :: Lens' Instance (Maybe Text)
+insSubnetId = lens _insSubnetId (\ s a -> s{_insSubnetId = a});
+
+-- | The kernel associated with this instance.
+insKernelId :: Lens' Instance (Maybe Text)
+insKernelId = lens _insKernelId (\ s a -> s{_insKernelId = a});
+
+-- | The root device name (for example, '\/dev\/sda1' or '\/dev\/xvda').
+insRootDeviceName :: Lens' Instance (Maybe Text)
+insRootDeviceName = lens _insRootDeviceName (\ s a -> s{_insRootDeviceName = a});
+
+-- | Specifies whether enhanced networking is enabled.
+insSRIOVNetSupport :: Lens' Instance (Maybe Text)
+insSRIOVNetSupport = lens _insSRIOVNetSupport (\ s a -> s{_insSRIOVNetSupport = a});
+
+-- | Indicates whether the instance is optimized for EBS I\/O. This
+-- optimization provides dedicated throughput to Amazon EBS and an
+-- optimized configuration stack to provide optimal I\/O performance. This
+-- optimization isn\'t available with all instance types. Additional usage
+-- charges apply when using an EBS Optimized instance.
+insEBSOptimized :: Lens' Instance (Maybe Bool)
+insEBSOptimized = lens _insEBSOptimized (\ s a -> s{_insEBSOptimized = a});
+
+-- | The reason for the most recent state transition. This might be an empty
+-- string.
+insStateTransitionReason :: Lens' Instance (Maybe Text)
+insStateTransitionReason = lens _insStateTransitionReason (\ s a -> s{_insStateTransitionReason = a});
+
+-- | Indicates whether this is a Spot Instance.
+insInstanceLifecycle :: Lens' Instance (Maybe InstanceLifecycleType)
+insInstanceLifecycle = lens _insInstanceLifecycle (\ s a -> s{_insInstanceLifecycle = a});
+
+-- | The IAM instance profile associated with the instance.
+insIAMInstanceProfile :: Lens' Instance (Maybe IAMInstanceProfile)
+insIAMInstanceProfile = lens _insIAMInstanceProfile (\ s a -> s{_insIAMInstanceProfile = a});
+
+-- | The private IP address assigned to the instance.
+insPrivateIPAddress :: Lens' Instance (Maybe Text)
+insPrivateIPAddress = lens _insPrivateIPAddress (\ s a -> s{_insPrivateIPAddress = a});
+
+-- | The product codes attached to this instance.
+insProductCodes :: Lens' Instance [ProductCode]
+insProductCodes = lens _insProductCodes (\ s a -> s{_insProductCodes = a}) . _Default . _Coerce;
+
+-- | The ID of the Spot Instance request.
+insSpotInstanceRequestId :: Lens' Instance (Maybe Text)
+insSpotInstanceRequestId = lens _insSpotInstanceRequestId (\ s a -> s{_insSpotInstanceRequestId = a});
+
+-- | The private DNS name assigned to the instance. This DNS name can only be
+-- used inside the Amazon EC2 network. This name is not available until the
+-- instance enters the 'running' state.
+insPrivateDNSName :: Lens' Instance (Maybe Text)
+insPrivateDNSName = lens _insPrivateDNSName (\ s a -> s{_insPrivateDNSName = a});
+
+-- | The reason for the most recent state transition.
+insStateReason :: Lens' Instance (Maybe StateReason)
+insStateReason = lens _insStateReason (\ s a -> s{_insStateReason = a});
+
+-- | Any block device mapping entries for the instance.
+insBlockDeviceMappings :: Lens' Instance [InstanceBlockDeviceMapping]
+insBlockDeviceMappings = lens _insBlockDeviceMappings (\ s a -> s{_insBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The public IP address assigned to the instance.
+insPublicIPAddress :: Lens' Instance (Maybe Text)
+insPublicIPAddress = lens _insPublicIPAddress (\ s a -> s{_insPublicIPAddress = a});
+
+-- | Any tags assigned to the instance.
+insTags :: Lens' Instance [Tag]
+insTags = lens _insTags (\ s a -> s{_insTags = a}) . _Default . _Coerce;
+
+-- | The ID of the instance.
+insInstanceId :: Lens' Instance Text
+insInstanceId = lens _insInstanceId (\ s a -> s{_insInstanceId = a});
+
+-- | The ID of the AMI used to launch the instance.
+insImageId :: Lens' Instance Text
+insImageId = lens _insImageId (\ s a -> s{_insImageId = a});
+
+-- | The AMI launch index, which can be used to find this instance in the
+-- launch group.
+insAMILaunchIndex :: Lens' Instance Int
+insAMILaunchIndex = lens _insAMILaunchIndex (\ s a -> s{_insAMILaunchIndex = a});
+
+-- | The instance type.
+insInstanceType :: Lens' Instance InstanceType
+insInstanceType = lens _insInstanceType (\ s a -> s{_insInstanceType = a});
+
+-- | The time the instance was launched.
+insLaunchTime :: Lens' Instance UTCTime
+insLaunchTime = lens _insLaunchTime (\ s a -> s{_insLaunchTime = a}) . _Time;
+
+-- | The location where the instance launched.
+insPlacement :: Lens' Instance Placement
+insPlacement = lens _insPlacement (\ s a -> s{_insPlacement = a});
+
+-- | The monitoring information for the instance.
+insMonitoring :: Lens' Instance Monitoring
+insMonitoring = lens _insMonitoring (\ s a -> s{_insMonitoring = a});
+
+-- | The architecture of the image.
+insArchitecture :: Lens' Instance ArchitectureValues
+insArchitecture = lens _insArchitecture (\ s a -> s{_insArchitecture = a});
+
+-- | The root device type used by the AMI. The AMI can use an EBS volume or
+-- an instance store volume.
+insRootDeviceType :: Lens' Instance DeviceType
+insRootDeviceType = lens _insRootDeviceType (\ s a -> s{_insRootDeviceType = a});
+
+-- | The virtualization type of the instance.
+insVirtualizationType :: Lens' Instance VirtualizationType
+insVirtualizationType = lens _insVirtualizationType (\ s a -> s{_insVirtualizationType = a});
+
+-- | The hypervisor type of the instance.
+insHypervisor :: Lens' Instance HypervisorType
+insHypervisor = lens _insHypervisor (\ s a -> s{_insHypervisor = a});
+
+-- | The current state of the instance.
+insState :: Lens' Instance InstanceState
+insState = lens _insState (\ s a -> s{_insState = a});
+
+instance FromXML Instance where
+        parseXML x
+          = Instance' <$>
+              (x .@? "dnsName") <*> (x .@? "platform") <*>
+                (x .@? "groupSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "clientToken")
+                <*> (x .@? "sourceDestCheck")
+                <*> (x .@? "vpcId")
+                <*> (x .@? "keyName")
+                <*>
+                (x .@? "networkInterfaceSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "ramdiskId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "kernelId")
+                <*> (x .@? "rootDeviceName")
+                <*> (x .@? "sriovNetSupport")
+                <*> (x .@? "ebsOptimized")
+                <*> (x .@? "reason")
+                <*> (x .@? "instanceLifecycle")
+                <*> (x .@? "iamInstanceProfile")
+                <*> (x .@? "privateIpAddress")
+                <*>
+                (x .@? "productCodes" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "spotInstanceRequestId")
+                <*> (x .@? "privateDnsName")
+                <*> (x .@? "stateReason")
+                <*>
+                (x .@? "blockDeviceMapping" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "ipAddress")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "instanceId")
+                <*> (x .@ "imageId")
+                <*> (x .@ "amiLaunchIndex")
+                <*> (x .@ "instanceType")
+                <*> (x .@ "launchTime")
+                <*> (x .@ "placement")
+                <*> (x .@ "monitoring")
+                <*> (x .@ "architecture")
+                <*> (x .@ "rootDeviceType")
+                <*> (x .@ "virtualizationType")
+                <*> (x .@ "hypervisor")
+                <*> (x .@ "instanceState")
+
+-- | Describes a block device mapping.
+--
+-- /See:/ 'instanceBlockDeviceMapping' smart constructor.
+data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping'
+    { _ibdmEBS        :: !(Maybe EBSInstanceBlockDevice)
+    , _ibdmDeviceName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceBlockDeviceMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ibdmEBS'
+--
+-- * 'ibdmDeviceName'
+instanceBlockDeviceMapping
+    :: InstanceBlockDeviceMapping
+instanceBlockDeviceMapping =
+    InstanceBlockDeviceMapping'
+    { _ibdmEBS = Nothing
+    , _ibdmDeviceName = Nothing
+    }
+
+-- | Parameters used to automatically set up EBS volumes when the instance is
+-- launched.
+ibdmEBS :: Lens' InstanceBlockDeviceMapping (Maybe EBSInstanceBlockDevice)
+ibdmEBS = lens _ibdmEBS (\ s a -> s{_ibdmEBS = a});
+
+-- | The device name exposed to the instance (for example, '\/dev\/sdh' or
+-- 'xvdh').
+ibdmDeviceName :: Lens' InstanceBlockDeviceMapping (Maybe Text)
+ibdmDeviceName = lens _ibdmDeviceName (\ s a -> s{_ibdmDeviceName = a});
+
+instance FromXML InstanceBlockDeviceMapping where
+        parseXML x
+          = InstanceBlockDeviceMapping' <$>
+              (x .@? "ebs") <*> (x .@? "deviceName")
+
+-- | Describes a block device mapping entry.
+--
+-- /See:/ 'instanceBlockDeviceMappingSpecification' smart constructor.
+data InstanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification'
+    { _ibdmsVirtualName :: !(Maybe Text)
+    , _ibdmsNoDevice    :: !(Maybe Text)
+    , _ibdmsEBS         :: !(Maybe EBSInstanceBlockDeviceSpecification)
+    , _ibdmsDeviceName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceBlockDeviceMappingSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ibdmsVirtualName'
+--
+-- * 'ibdmsNoDevice'
+--
+-- * 'ibdmsEBS'
+--
+-- * 'ibdmsDeviceName'
+instanceBlockDeviceMappingSpecification
+    :: InstanceBlockDeviceMappingSpecification
+instanceBlockDeviceMappingSpecification =
+    InstanceBlockDeviceMappingSpecification'
+    { _ibdmsVirtualName = Nothing
+    , _ibdmsNoDevice = Nothing
+    , _ibdmsEBS = Nothing
+    , _ibdmsDeviceName = Nothing
+    }
+
+-- | The virtual device name.
+ibdmsVirtualName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
+ibdmsVirtualName = lens _ibdmsVirtualName (\ s a -> s{_ibdmsVirtualName = a});
+
+-- | suppress the specified device included in the block device mapping.
+ibdmsNoDevice :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
+ibdmsNoDevice = lens _ibdmsNoDevice (\ s a -> s{_ibdmsNoDevice = a});
+
+-- | Parameters used to automatically set up EBS volumes when the instance is
+-- launched.
+ibdmsEBS :: Lens' InstanceBlockDeviceMappingSpecification (Maybe EBSInstanceBlockDeviceSpecification)
+ibdmsEBS = lens _ibdmsEBS (\ s a -> s{_ibdmsEBS = a});
+
+-- | The device name exposed to the instance (for example, '\/dev\/sdh' or
+-- 'xvdh').
+ibdmsDeviceName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)
+ibdmsDeviceName = lens _ibdmsDeviceName (\ s a -> s{_ibdmsDeviceName = a});
+
+instance ToQuery
+         InstanceBlockDeviceMappingSpecification where
+        toQuery InstanceBlockDeviceMappingSpecification'{..}
+          = mconcat
+              ["VirtualName" =: _ibdmsVirtualName,
+               "NoDevice" =: _ibdmsNoDevice, "Ebs" =: _ibdmsEBS,
+               "DeviceName" =: _ibdmsDeviceName]
+
+-- | Describes a Reserved Instance listing state.
+--
+-- /See:/ 'instanceCount' smart constructor.
+data InstanceCount = InstanceCount'
+    { _icState         :: !(Maybe ListingState)
+    , _icInstanceCount :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceCount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icState'
+--
+-- * 'icInstanceCount'
+instanceCount
+    :: InstanceCount
+instanceCount =
+    InstanceCount'
+    { _icState = Nothing
+    , _icInstanceCount = Nothing
+    }
+
+-- | 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
+-- 'state'.
+icInstanceCount :: Lens' InstanceCount (Maybe Int)
+icInstanceCount = lens _icInstanceCount (\ s a -> s{_icInstanceCount = a});
+
+instance FromXML InstanceCount where
+        parseXML x
+          = InstanceCount' <$>
+              (x .@? "state") <*> (x .@? "instanceCount")
+
+-- | Describes an instance to export.
+--
+-- /See:/ 'instanceExportDetails' smart constructor.
+data InstanceExportDetails = InstanceExportDetails'
+    { _iedTargetEnvironment :: !(Maybe ExportEnvironment)
+    , _iedInstanceId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceExportDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iedTargetEnvironment'
+--
+-- * 'iedInstanceId'
+instanceExportDetails
+    :: InstanceExportDetails
+instanceExportDetails =
+    InstanceExportDetails'
+    { _iedTargetEnvironment = Nothing
+    , _iedInstanceId = Nothing
+    }
+
+-- | The target virtualization environment.
+iedTargetEnvironment :: Lens' InstanceExportDetails (Maybe ExportEnvironment)
+iedTargetEnvironment = lens _iedTargetEnvironment (\ s a -> s{_iedTargetEnvironment = a});
+
+-- | The ID of the resource being exported.
+iedInstanceId :: Lens' InstanceExportDetails (Maybe Text)
+iedInstanceId = lens _iedInstanceId (\ s a -> s{_iedInstanceId = a});
+
+instance FromXML InstanceExportDetails where
+        parseXML x
+          = InstanceExportDetails' <$>
+              (x .@? "targetEnvironment") <*> (x .@? "instanceId")
+
+-- | Describes the monitoring information of the instance.
+--
+-- /See:/ 'instanceMonitoring' smart constructor.
+data InstanceMonitoring = InstanceMonitoring'
+    { _imInstanceId :: !(Maybe Text)
+    , _imMonitoring :: !(Maybe Monitoring)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceMonitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imInstanceId'
+--
+-- * 'imMonitoring'
+instanceMonitoring
+    :: InstanceMonitoring
+instanceMonitoring =
+    InstanceMonitoring'
+    { _imInstanceId = Nothing
+    , _imMonitoring = Nothing
+    }
+
+-- | The ID of the instance.
+imInstanceId :: Lens' InstanceMonitoring (Maybe Text)
+imInstanceId = lens _imInstanceId (\ s a -> s{_imInstanceId = a});
+
+-- | The monitoring information.
+imMonitoring :: Lens' InstanceMonitoring (Maybe Monitoring)
+imMonitoring = lens _imMonitoring (\ s a -> s{_imMonitoring = a});
+
+instance FromXML InstanceMonitoring where
+        parseXML x
+          = InstanceMonitoring' <$>
+              (x .@? "instanceId") <*> (x .@? "monitoring")
+
+-- | Describes a network interface.
+--
+-- /See:/ 'instanceNetworkInterface' smart constructor.
+data InstanceNetworkInterface = InstanceNetworkInterface'
+    { _iniGroups             :: !(Maybe [GroupIdentifier])
+    , _iniStatus             :: !(Maybe NetworkInterfaceStatus)
+    , _iniPrivateIPAddresses :: !(Maybe [InstancePrivateIPAddress])
+    , _iniSourceDestCheck    :: !(Maybe Bool)
+    , _iniVPCId              :: !(Maybe Text)
+    , _iniNetworkInterfaceId :: !(Maybe Text)
+    , _iniSubnetId           :: !(Maybe Text)
+    , _iniMACAddress         :: !(Maybe Text)
+    , _iniAttachment         :: !(Maybe InstanceNetworkInterfaceAttachment)
+    , _iniOwnerId            :: !(Maybe Text)
+    , _iniPrivateIPAddress   :: !(Maybe Text)
+    , _iniPrivateDNSName     :: !(Maybe Text)
+    , _iniDescription        :: !(Maybe Text)
+    , _iniAssociation        :: !(Maybe InstanceNetworkInterfaceAssociation)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceNetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iniGroups'
+--
+-- * 'iniStatus'
+--
+-- * 'iniPrivateIPAddresses'
+--
+-- * 'iniSourceDestCheck'
+--
+-- * 'iniVPCId'
+--
+-- * 'iniNetworkInterfaceId'
+--
+-- * 'iniSubnetId'
+--
+-- * 'iniMACAddress'
+--
+-- * 'iniAttachment'
+--
+-- * 'iniOwnerId'
+--
+-- * 'iniPrivateIPAddress'
+--
+-- * 'iniPrivateDNSName'
+--
+-- * 'iniDescription'
+--
+-- * 'iniAssociation'
+instanceNetworkInterface
+    :: InstanceNetworkInterface
+instanceNetworkInterface =
+    InstanceNetworkInterface'
+    { _iniGroups = Nothing
+    , _iniStatus = Nothing
+    , _iniPrivateIPAddresses = Nothing
+    , _iniSourceDestCheck = Nothing
+    , _iniVPCId = Nothing
+    , _iniNetworkInterfaceId = Nothing
+    , _iniSubnetId = Nothing
+    , _iniMACAddress = Nothing
+    , _iniAttachment = Nothing
+    , _iniOwnerId = Nothing
+    , _iniPrivateIPAddress = Nothing
+    , _iniPrivateDNSName = Nothing
+    , _iniDescription = Nothing
+    , _iniAssociation = Nothing
+    }
+
+-- | One or more security groups.
+iniGroups :: Lens' InstanceNetworkInterface [GroupIdentifier]
+iniGroups = lens _iniGroups (\ s a -> s{_iniGroups = a}) . _Default . _Coerce;
+
+-- | The status of the network interface.
+iniStatus :: Lens' InstanceNetworkInterface (Maybe NetworkInterfaceStatus)
+iniStatus = lens _iniStatus (\ s a -> s{_iniStatus = a});
+
+-- | The private IP addresses associated with the network interface.
+iniPrivateIPAddresses :: Lens' InstanceNetworkInterface [InstancePrivateIPAddress]
+iniPrivateIPAddresses = lens _iniPrivateIPAddresses (\ s a -> s{_iniPrivateIPAddresses = a}) . _Default . _Coerce;
+
+-- | Indicates whether to validate network traffic to or from this network
+-- interface.
+iniSourceDestCheck :: Lens' InstanceNetworkInterface (Maybe Bool)
+iniSourceDestCheck = lens _iniSourceDestCheck (\ s a -> s{_iniSourceDestCheck = a});
+
+-- | The ID of the VPC.
+iniVPCId :: Lens' InstanceNetworkInterface (Maybe Text)
+iniVPCId = lens _iniVPCId (\ s a -> s{_iniVPCId = a});
+
+-- | The ID of the network interface.
+iniNetworkInterfaceId :: Lens' InstanceNetworkInterface (Maybe Text)
+iniNetworkInterfaceId = lens _iniNetworkInterfaceId (\ s a -> s{_iniNetworkInterfaceId = a});
+
+-- | The ID of the subnet.
+iniSubnetId :: Lens' InstanceNetworkInterface (Maybe Text)
+iniSubnetId = lens _iniSubnetId (\ s a -> s{_iniSubnetId = a});
+
+-- | The MAC address.
+iniMACAddress :: Lens' InstanceNetworkInterface (Maybe Text)
+iniMACAddress = lens _iniMACAddress (\ s a -> s{_iniMACAddress = a});
+
+-- | The network interface attachment.
+iniAttachment :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAttachment)
+iniAttachment = lens _iniAttachment (\ s a -> s{_iniAttachment = a});
+
+-- | The ID of the AWS account that created the network interface.
+iniOwnerId :: Lens' InstanceNetworkInterface (Maybe Text)
+iniOwnerId = lens _iniOwnerId (\ s a -> s{_iniOwnerId = a});
+
+-- | The IP address of the network interface within the subnet.
+iniPrivateIPAddress :: Lens' InstanceNetworkInterface (Maybe Text)
+iniPrivateIPAddress = lens _iniPrivateIPAddress (\ s a -> s{_iniPrivateIPAddress = a});
+
+-- | The private DNS name.
+iniPrivateDNSName :: Lens' InstanceNetworkInterface (Maybe Text)
+iniPrivateDNSName = lens _iniPrivateDNSName (\ s a -> s{_iniPrivateDNSName = a});
+
+-- | The description.
+iniDescription :: Lens' InstanceNetworkInterface (Maybe Text)
+iniDescription = lens _iniDescription (\ s a -> s{_iniDescription = a});
+
+-- | The association information for an Elastic IP associated with the
+-- network interface.
+iniAssociation :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAssociation)
+iniAssociation = lens _iniAssociation (\ s a -> s{_iniAssociation = a});
+
+instance FromXML InstanceNetworkInterface where
+        parseXML x
+          = InstanceNetworkInterface' <$>
+              (x .@? "groupSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "status")
+                <*>
+                (x .@? "privateIpAddressesSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "sourceDestCheck")
+                <*> (x .@? "vpcId")
+                <*> (x .@? "networkInterfaceId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "macAddress")
+                <*> (x .@? "attachment")
+                <*> (x .@? "ownerId")
+                <*> (x .@? "privateIpAddress")
+                <*> (x .@? "privateDnsName")
+                <*> (x .@? "description")
+                <*> (x .@? "association")
+
+-- | Describes association information for an Elastic IP address.
+--
+-- /See:/ 'instanceNetworkInterfaceAssociation' smart constructor.
+data InstanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation'
+    { _iniaPublicDNSName :: !(Maybe Text)
+    , _iniaIPOwnerId     :: !(Maybe Text)
+    , _iniaPublicIP      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceNetworkInterfaceAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iniaPublicDNSName'
+--
+-- * 'iniaIPOwnerId'
+--
+-- * 'iniaPublicIP'
+instanceNetworkInterfaceAssociation
+    :: InstanceNetworkInterfaceAssociation
+instanceNetworkInterfaceAssociation =
+    InstanceNetworkInterfaceAssociation'
+    { _iniaPublicDNSName = Nothing
+    , _iniaIPOwnerId = Nothing
+    , _iniaPublicIP = Nothing
+    }
+
+-- | The public DNS name.
+iniaPublicDNSName :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
+iniaPublicDNSName = lens _iniaPublicDNSName (\ s a -> s{_iniaPublicDNSName = a});
+
+-- | The ID of the owner of the Elastic IP address.
+iniaIPOwnerId :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
+iniaIPOwnerId = lens _iniaIPOwnerId (\ s a -> s{_iniaIPOwnerId = a});
+
+-- | The public IP address or Elastic IP address bound to the network
+-- interface.
+iniaPublicIP :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)
+iniaPublicIP = lens _iniaPublicIP (\ s a -> s{_iniaPublicIP = a});
+
+instance FromXML InstanceNetworkInterfaceAssociation
+         where
+        parseXML x
+          = InstanceNetworkInterfaceAssociation' <$>
+              (x .@? "publicDnsName") <*> (x .@? "ipOwnerId") <*>
+                (x .@? "publicIp")
+
+-- | Describes a network interface attachment.
+--
+-- /See:/ 'instanceNetworkInterfaceAttachment' smart constructor.
+data InstanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment'
+    { _iniaStatus              :: !(Maybe AttachmentStatus)
+    , _iniaDeleteOnTermination :: !(Maybe Bool)
+    , _iniaAttachmentId        :: !(Maybe Text)
+    , _iniaAttachTime          :: !(Maybe ISO8601)
+    , _iniaDeviceIndex         :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceNetworkInterfaceAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iniaStatus'
+--
+-- * 'iniaDeleteOnTermination'
+--
+-- * 'iniaAttachmentId'
+--
+-- * 'iniaAttachTime'
+--
+-- * 'iniaDeviceIndex'
+instanceNetworkInterfaceAttachment
+    :: InstanceNetworkInterfaceAttachment
+instanceNetworkInterfaceAttachment =
+    InstanceNetworkInterfaceAttachment'
+    { _iniaStatus = Nothing
+    , _iniaDeleteOnTermination = Nothing
+    , _iniaAttachmentId = Nothing
+    , _iniaAttachTime = Nothing
+    , _iniaDeviceIndex = Nothing
+    }
+
+-- | The attachment state.
+iniaStatus :: Lens' InstanceNetworkInterfaceAttachment (Maybe AttachmentStatus)
+iniaStatus = lens _iniaStatus (\ s a -> s{_iniaStatus = a});
+
+-- | Indicates whether the network interface is deleted when the instance is
+-- terminated.
+iniaDeleteOnTermination :: Lens' InstanceNetworkInterfaceAttachment (Maybe Bool)
+iniaDeleteOnTermination = lens _iniaDeleteOnTermination (\ s a -> s{_iniaDeleteOnTermination = a});
+
+-- | The ID of the network interface attachment.
+iniaAttachmentId :: Lens' InstanceNetworkInterfaceAttachment (Maybe Text)
+iniaAttachmentId = lens _iniaAttachmentId (\ s a -> s{_iniaAttachmentId = a});
+
+-- | The time stamp when the attachment initiated.
+iniaAttachTime :: Lens' InstanceNetworkInterfaceAttachment (Maybe UTCTime)
+iniaAttachTime = lens _iniaAttachTime (\ s a -> s{_iniaAttachTime = a}) . mapping _Time;
+
+-- | The index of the device on the instance for the network interface
+-- attachment.
+iniaDeviceIndex :: Lens' InstanceNetworkInterfaceAttachment (Maybe Int)
+iniaDeviceIndex = lens _iniaDeviceIndex (\ s a -> s{_iniaDeviceIndex = a});
+
+instance FromXML InstanceNetworkInterfaceAttachment
+         where
+        parseXML x
+          = InstanceNetworkInterfaceAttachment' <$>
+              (x .@? "status") <*> (x .@? "deleteOnTermination")
+                <*> (x .@? "attachmentId")
+                <*> (x .@? "attachTime")
+                <*> (x .@? "deviceIndex")
+
+-- | Describes a network interface.
+--
+-- /See:/ 'instanceNetworkInterfaceSpecification' smart constructor.
+data InstanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification'
+    { _inisGroups                         :: !(Maybe [Text])
+    , _inisPrivateIPAddresses             :: !(Maybe [PrivateIPAddressSpecification])
+    , _inisDeleteOnTermination            :: !(Maybe Bool)
+    , _inisAssociatePublicIPAddress       :: !(Maybe Bool)
+    , _inisNetworkInterfaceId             :: !(Maybe Text)
+    , _inisSubnetId                       :: !(Maybe Text)
+    , _inisPrivateIPAddress               :: !(Maybe Text)
+    , _inisSecondaryPrivateIPAddressCount :: !(Maybe Int)
+    , _inisDescription                    :: !(Maybe Text)
+    , _inisDeviceIndex                    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceNetworkInterfaceSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'inisGroups'
+--
+-- * 'inisPrivateIPAddresses'
+--
+-- * 'inisDeleteOnTermination'
+--
+-- * 'inisAssociatePublicIPAddress'
+--
+-- * 'inisNetworkInterfaceId'
+--
+-- * 'inisSubnetId'
+--
+-- * 'inisPrivateIPAddress'
+--
+-- * 'inisSecondaryPrivateIPAddressCount'
+--
+-- * 'inisDescription'
+--
+-- * 'inisDeviceIndex'
+instanceNetworkInterfaceSpecification
+    :: InstanceNetworkInterfaceSpecification
+instanceNetworkInterfaceSpecification =
+    InstanceNetworkInterfaceSpecification'
+    { _inisGroups = Nothing
+    , _inisPrivateIPAddresses = Nothing
+    , _inisDeleteOnTermination = Nothing
+    , _inisAssociatePublicIPAddress = Nothing
+    , _inisNetworkInterfaceId = Nothing
+    , _inisSubnetId = Nothing
+    , _inisPrivateIPAddress = Nothing
+    , _inisSecondaryPrivateIPAddressCount = Nothing
+    , _inisDescription = Nothing
+    , _inisDeviceIndex = Nothing
+    }
+
+-- | The IDs of the security groups for the network interface. Applies only
+-- if creating a network interface when launching an instance.
+inisGroups :: Lens' InstanceNetworkInterfaceSpecification [Text]
+inisGroups = lens _inisGroups (\ s a -> s{_inisGroups = a}) . _Default . _Coerce;
+
+-- | One or more private IP addresses to assign to the network interface.
+-- Only one private IP address can be designated as primary.
+inisPrivateIPAddresses :: Lens' InstanceNetworkInterfaceSpecification [PrivateIPAddressSpecification]
+inisPrivateIPAddresses = lens _inisPrivateIPAddresses (\ s a -> s{_inisPrivateIPAddresses = a}) . _Default . _Coerce;
+
+-- | If set to 'true', the interface is deleted when the instance is
+-- terminated. You can specify 'true' only if creating a new network
+-- interface when launching an instance.
+inisDeleteOnTermination :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)
+inisDeleteOnTermination = lens _inisDeleteOnTermination (\ s a -> s{_inisDeleteOnTermination = a});
+
+-- | Indicates whether to assign a public IP address to an instance you
+-- launch in a VPC. The public IP address can only be assigned to a network
+-- interface for eth0, and can only be assigned to a new network interface,
+-- not an existing one. You cannot specify more than one network interface
+-- in the request. If launching into a default subnet, the default value is
+-- 'true'.
+inisAssociatePublicIPAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)
+inisAssociatePublicIPAddress = lens _inisAssociatePublicIPAddress (\ s a -> s{_inisAssociatePublicIPAddress = a});
+
+-- | The ID of the network interface.
+inisNetworkInterfaceId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
+inisNetworkInterfaceId = lens _inisNetworkInterfaceId (\ s a -> s{_inisNetworkInterfaceId = a});
+
+-- | The ID of the subnet associated with the network string. Applies only if
+-- creating a network interface when launching an instance.
+inisSubnetId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
+inisSubnetId = lens _inisSubnetId (\ s a -> s{_inisSubnetId = a});
+
+-- | The private IP address of the network interface. Applies only if
+-- creating a network interface when launching an instance.
+inisPrivateIPAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
+inisPrivateIPAddress = lens _inisPrivateIPAddress (\ s a -> s{_inisPrivateIPAddress = a});
+
+-- | The number of secondary private IP addresses. You can\'t specify this
+-- option and specify more than one private IP address using the private IP
+-- addresses option.
+inisSecondaryPrivateIPAddressCount :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)
+inisSecondaryPrivateIPAddressCount = lens _inisSecondaryPrivateIPAddressCount (\ s a -> s{_inisSecondaryPrivateIPAddressCount = a});
+
+-- | The description of the network interface. Applies only if creating a
+-- network interface when launching an instance.
+inisDescription :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)
+inisDescription = lens _inisDescription (\ s a -> s{_inisDescription = a});
+
+-- | The index of the device on the instance for the network interface
+-- attachment. If you are specifying a network interface in a RunInstances
+-- request, you must provide the device index.
+inisDeviceIndex :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)
+inisDeviceIndex = lens _inisDeviceIndex (\ s a -> s{_inisDeviceIndex = a});
+
+instance FromXML
+         InstanceNetworkInterfaceSpecification where
+        parseXML x
+          = InstanceNetworkInterfaceSpecification' <$>
+              (x .@? "SecurityGroupId" .!@ mempty >>=
+                 may (parseXMLList "SecurityGroupId"))
+                <*>
+                (x .@? "privateIpAddressesSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "deleteOnTermination")
+                <*> (x .@? "associatePublicIpAddress")
+                <*> (x .@? "networkInterfaceId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "privateIpAddress")
+                <*> (x .@? "secondaryPrivateIpAddressCount")
+                <*> (x .@? "description")
+                <*> (x .@? "deviceIndex")
+
+instance ToQuery
+         InstanceNetworkInterfaceSpecification where
+        toQuery InstanceNetworkInterfaceSpecification'{..}
+          = mconcat
+              [toQuery
+                 (toQueryList "SecurityGroupId" <$> _inisGroups),
+               toQuery
+                 (toQueryList "PrivateIpAddresses" <$>
+                    _inisPrivateIPAddresses),
+               "DeleteOnTermination" =: _inisDeleteOnTermination,
+               "AssociatePublicIpAddress" =:
+                 _inisAssociatePublicIPAddress,
+               "NetworkInterfaceId" =: _inisNetworkInterfaceId,
+               "SubnetId" =: _inisSubnetId,
+               "PrivateIpAddress" =: _inisPrivateIPAddress,
+               "SecondaryPrivateIpAddressCount" =:
+                 _inisSecondaryPrivateIPAddressCount,
+               "Description" =: _inisDescription,
+               "DeviceIndex" =: _inisDeviceIndex]
+
+-- | Describes a private IP address.
+--
+-- /See:/ 'instancePrivateIPAddress' smart constructor.
+data InstancePrivateIPAddress = InstancePrivateIPAddress'
+    { _ipiaPrimary          :: !(Maybe Bool)
+    , _ipiaPrivateIPAddress :: !(Maybe Text)
+    , _ipiaPrivateDNSName   :: !(Maybe Text)
+    , _ipiaAssociation      :: !(Maybe InstanceNetworkInterfaceAssociation)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancePrivateIPAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipiaPrimary'
+--
+-- * 'ipiaPrivateIPAddress'
+--
+-- * 'ipiaPrivateDNSName'
+--
+-- * 'ipiaAssociation'
+instancePrivateIPAddress
+    :: InstancePrivateIPAddress
+instancePrivateIPAddress =
+    InstancePrivateIPAddress'
+    { _ipiaPrimary = Nothing
+    , _ipiaPrivateIPAddress = Nothing
+    , _ipiaPrivateDNSName = Nothing
+    , _ipiaAssociation = Nothing
+    }
+
+-- | Indicates whether this IP address is the primary private IP address of
+-- the network interface.
+ipiaPrimary :: Lens' InstancePrivateIPAddress (Maybe Bool)
+ipiaPrimary = lens _ipiaPrimary (\ s a -> s{_ipiaPrimary = a});
+
+-- | The private IP address of the network interface.
+ipiaPrivateIPAddress :: Lens' InstancePrivateIPAddress (Maybe Text)
+ipiaPrivateIPAddress = lens _ipiaPrivateIPAddress (\ s a -> s{_ipiaPrivateIPAddress = a});
+
+-- | The private DNS name.
+ipiaPrivateDNSName :: Lens' InstancePrivateIPAddress (Maybe Text)
+ipiaPrivateDNSName = lens _ipiaPrivateDNSName (\ s a -> s{_ipiaPrivateDNSName = a});
+
+-- | The association information for an Elastic IP address for the network
+-- interface.
+ipiaAssociation :: Lens' InstancePrivateIPAddress (Maybe InstanceNetworkInterfaceAssociation)
+ipiaAssociation = lens _ipiaAssociation (\ s a -> s{_ipiaAssociation = a});
+
+instance FromXML InstancePrivateIPAddress where
+        parseXML x
+          = InstancePrivateIPAddress' <$>
+              (x .@? "primary") <*> (x .@? "privateIpAddress") <*>
+                (x .@? "privateDnsName")
+                <*> (x .@? "association")
+
+-- | Describes the current state of the instance.
+--
+-- /See:/ 'instanceState' smart constructor.
+data InstanceState = InstanceState'
+    { _isName :: !InstanceStateName
+    , _isCode :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isName'
+--
+-- * 'isCode'
+instanceState
+    :: InstanceStateName -- ^ 'isName'
+    -> Int -- ^ 'isCode'
+    -> InstanceState
+instanceState pName_ pCode_ =
+    InstanceState'
+    { _isName = pName_
+    , _isCode = pCode_
+    }
+
+-- | The current state of the instance.
+isName :: Lens' InstanceState InstanceStateName
+isName = lens _isName (\ s a -> s{_isName = a});
+
+-- | The low byte represents the state. The high byte is an opaque internal
+-- value and should be ignored.
+--
+-- -   '0' : 'pending'
+--
+-- -   '16' : 'running'
+--
+-- -   '32' : 'shutting-down'
+--
+-- -   '48' : 'terminated'
+--
+-- -   '64' : 'stopping'
+--
+-- -   '80' : 'stopped'
+--
+isCode :: Lens' InstanceState Int
+isCode = lens _isCode (\ s a -> s{_isCode = a});
+
+instance FromXML InstanceState where
+        parseXML x
+          = InstanceState' <$> (x .@ "name") <*> (x .@ "code")
+
+-- | Describes an instance state change.
+--
+-- /See:/ 'instanceStateChange' smart constructor.
+data InstanceStateChange = InstanceStateChange'
+    { _iscInstanceId    :: !(Maybe Text)
+    , _iscCurrentState  :: !(Maybe InstanceState)
+    , _iscPreviousState :: !(Maybe InstanceState)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceStateChange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iscInstanceId'
+--
+-- * 'iscCurrentState'
+--
+-- * 'iscPreviousState'
+instanceStateChange
+    :: InstanceStateChange
+instanceStateChange =
+    InstanceStateChange'
+    { _iscInstanceId = Nothing
+    , _iscCurrentState = Nothing
+    , _iscPreviousState = Nothing
+    }
+
+-- | The ID of the instance.
+iscInstanceId :: Lens' InstanceStateChange (Maybe Text)
+iscInstanceId = lens _iscInstanceId (\ s a -> s{_iscInstanceId = a});
+
+-- | The current state of the instance.
+iscCurrentState :: Lens' InstanceStateChange (Maybe InstanceState)
+iscCurrentState = lens _iscCurrentState (\ s a -> s{_iscCurrentState = a});
+
+-- | The previous state of the instance.
+iscPreviousState :: Lens' InstanceStateChange (Maybe InstanceState)
+iscPreviousState = lens _iscPreviousState (\ s a -> s{_iscPreviousState = a});
+
+instance FromXML InstanceStateChange where
+        parseXML x
+          = InstanceStateChange' <$>
+              (x .@? "instanceId") <*> (x .@? "currentState") <*>
+                (x .@? "previousState")
+
+-- | Describes the status of an instance.
+--
+-- /See:/ 'instanceStatus' smart constructor.
+data InstanceStatus = InstanceStatus'
+    { _isInstanceId       :: !(Maybe Text)
+    , _isSystemStatus     :: !(Maybe InstanceStatusSummary)
+    , _isEvents           :: !(Maybe [InstanceStatusEvent])
+    , _isAvailabilityZone :: !(Maybe Text)
+    , _isInstanceStatus   :: !(Maybe InstanceStatusSummary)
+    , _isInstanceState    :: !(Maybe InstanceState)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isInstanceId'
+--
+-- * 'isSystemStatus'
+--
+-- * 'isEvents'
+--
+-- * 'isAvailabilityZone'
+--
+-- * 'isInstanceStatus'
+--
+-- * 'isInstanceState'
+instanceStatus
+    :: InstanceStatus
+instanceStatus =
+    InstanceStatus'
+    { _isInstanceId = Nothing
+    , _isSystemStatus = Nothing
+    , _isEvents = Nothing
+    , _isAvailabilityZone = Nothing
+    , _isInstanceStatus = Nothing
+    , _isInstanceState = Nothing
+    }
+
+-- | The ID of the instance.
+isInstanceId :: Lens' InstanceStatus (Maybe Text)
+isInstanceId = lens _isInstanceId (\ s a -> s{_isInstanceId = a});
+
+-- | Reports impaired functionality that stems from issues related to the
+-- systems that support an instance, such as hardware failures and network
+-- connectivity problems.
+isSystemStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)
+isSystemStatus = lens _isSystemStatus (\ s a -> s{_isSystemStatus = a});
+
+-- | Any scheduled events associated with the instance.
+isEvents :: Lens' InstanceStatus [InstanceStatusEvent]
+isEvents = lens _isEvents (\ s a -> s{_isEvents = a}) . _Default . _Coerce;
+
+-- | The Availability Zone of the instance.
+isAvailabilityZone :: Lens' InstanceStatus (Maybe Text)
+isAvailabilityZone = lens _isAvailabilityZone (\ s a -> s{_isAvailabilityZone = a});
+
+-- | Reports impaired functionality that stems from issues internal to the
+-- instance, such as impaired reachability.
+isInstanceStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)
+isInstanceStatus = lens _isInstanceStatus (\ s a -> s{_isInstanceStatus = a});
+
+-- | The intended state of the instance. DescribeInstanceStatus requires that
+-- an instance be in the 'running' state.
+isInstanceState :: Lens' InstanceStatus (Maybe InstanceState)
+isInstanceState = lens _isInstanceState (\ s a -> s{_isInstanceState = a});
+
+instance FromXML InstanceStatus where
+        parseXML x
+          = InstanceStatus' <$>
+              (x .@? "instanceId") <*> (x .@? "systemStatus") <*>
+                (x .@? "eventsSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "availabilityZone")
+                <*> (x .@? "instanceStatus")
+                <*> (x .@? "instanceState")
+
+-- | Describes the instance status.
+--
+-- /See:/ 'instanceStatusDetails' smart constructor.
+data InstanceStatusDetails = InstanceStatusDetails'
+    { _isdStatus        :: !(Maybe StatusType)
+    , _isdImpairedSince :: !(Maybe ISO8601)
+    , _isdName          :: !(Maybe StatusName)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceStatusDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isdStatus'
+--
+-- * 'isdImpairedSince'
+--
+-- * 'isdName'
+instanceStatusDetails
+    :: InstanceStatusDetails
+instanceStatusDetails =
+    InstanceStatusDetails'
+    { _isdStatus = Nothing
+    , _isdImpairedSince = Nothing
+    , _isdName = Nothing
+    }
+
+-- | The status.
+isdStatus :: Lens' InstanceStatusDetails (Maybe StatusType)
+isdStatus = lens _isdStatus (\ s a -> s{_isdStatus = a});
+
+-- | The time when a status check failed. For an instance that was launched
+-- and impaired, this is the time when the instance was launched.
+isdImpairedSince :: Lens' InstanceStatusDetails (Maybe UTCTime)
+isdImpairedSince = lens _isdImpairedSince (\ s a -> s{_isdImpairedSince = a}) . mapping _Time;
+
+-- | The type of instance status.
+isdName :: Lens' InstanceStatusDetails (Maybe StatusName)
+isdName = lens _isdName (\ s a -> s{_isdName = a});
+
+instance FromXML InstanceStatusDetails where
+        parseXML x
+          = InstanceStatusDetails' <$>
+              (x .@? "status") <*> (x .@? "impairedSince") <*>
+                (x .@? "name")
+
+-- | Describes a scheduled event for an instance.
+--
+-- /See:/ 'instanceStatusEvent' smart constructor.
+data InstanceStatusEvent = InstanceStatusEvent'
+    { _iseNotBefore   :: !(Maybe ISO8601)
+    , _iseCode        :: !(Maybe EventCode)
+    , _iseDescription :: !(Maybe Text)
+    , _iseNotAfter    :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceStatusEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iseNotBefore'
+--
+-- * 'iseCode'
+--
+-- * 'iseDescription'
+--
+-- * 'iseNotAfter'
+instanceStatusEvent
+    :: InstanceStatusEvent
+instanceStatusEvent =
+    InstanceStatusEvent'
+    { _iseNotBefore = Nothing
+    , _iseCode = Nothing
+    , _iseDescription = Nothing
+    , _iseNotAfter = Nothing
+    }
+
+-- | The earliest scheduled start time for the event.
+iseNotBefore :: Lens' InstanceStatusEvent (Maybe UTCTime)
+iseNotBefore = lens _iseNotBefore (\ s a -> s{_iseNotBefore = a}) . mapping _Time;
+
+-- | The event code.
+iseCode :: Lens' InstanceStatusEvent (Maybe EventCode)
+iseCode = lens _iseCode (\ s a -> s{_iseCode = a});
+
+-- | A description of the event.
+--
+-- After a scheduled event is completed, it can still be described for up
+-- to a week. If the event has been completed, this description starts with
+-- the following text: [Completed].
+iseDescription :: Lens' InstanceStatusEvent (Maybe Text)
+iseDescription = lens _iseDescription (\ s a -> s{_iseDescription = a});
+
+-- | The latest scheduled end time for the event.
+iseNotAfter :: Lens' InstanceStatusEvent (Maybe UTCTime)
+iseNotAfter = lens _iseNotAfter (\ s a -> s{_iseNotAfter = a}) . mapping _Time;
+
+instance FromXML InstanceStatusEvent where
+        parseXML x
+          = InstanceStatusEvent' <$>
+              (x .@? "notBefore") <*> (x .@? "code") <*>
+                (x .@? "description")
+                <*> (x .@? "notAfter")
+
+-- | Describes the status of an instance.
+--
+-- /See:/ 'instanceStatusSummary' smart constructor.
+data InstanceStatusSummary = InstanceStatusSummary'
+    { _issDetails :: !(Maybe [InstanceStatusDetails])
+    , _issStatus  :: !SummaryStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceStatusSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'issDetails'
+--
+-- * 'issStatus'
+instanceStatusSummary
+    :: SummaryStatus -- ^ 'issStatus'
+    -> InstanceStatusSummary
+instanceStatusSummary pStatus_ =
+    InstanceStatusSummary'
+    { _issDetails = Nothing
+    , _issStatus = pStatus_
+    }
+
+-- | The system instance health or application instance health.
+issDetails :: Lens' InstanceStatusSummary [InstanceStatusDetails]
+issDetails = lens _issDetails (\ s a -> s{_issDetails = a}) . _Default . _Coerce;
+
+-- | The status.
+issStatus :: Lens' InstanceStatusSummary SummaryStatus
+issStatus = lens _issStatus (\ s a -> s{_issStatus = a});
+
+instance FromXML InstanceStatusSummary where
+        parseXML x
+          = InstanceStatusSummary' <$>
+              (x .@? "details" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@ "status")
+
+-- | Describes an Internet gateway.
+--
+-- /See:/ 'internetGateway' smart constructor.
+data InternetGateway = InternetGateway'
+    { _igAttachments       :: !(Maybe [InternetGatewayAttachment])
+    , _igTags              :: !(Maybe [Tag])
+    , _igInternetGatewayId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InternetGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igAttachments'
+--
+-- * 'igTags'
+--
+-- * 'igInternetGatewayId'
+internetGateway
+    :: Text -- ^ 'igInternetGatewayId'
+    -> InternetGateway
+internetGateway pInternetGatewayId_ =
+    InternetGateway'
+    { _igAttachments = Nothing
+    , _igTags = Nothing
+    , _igInternetGatewayId = pInternetGatewayId_
+    }
+
+-- | Any VPCs attached to the Internet gateway.
+igAttachments :: Lens' InternetGateway [InternetGatewayAttachment]
+igAttachments = lens _igAttachments (\ s a -> s{_igAttachments = a}) . _Default . _Coerce;
+
+-- | Any tags assigned to the Internet gateway.
+igTags :: Lens' InternetGateway [Tag]
+igTags = lens _igTags (\ s a -> s{_igTags = a}) . _Default . _Coerce;
+
+-- | The ID of the Internet gateway.
+igInternetGatewayId :: Lens' InternetGateway Text
+igInternetGatewayId = lens _igInternetGatewayId (\ s a -> s{_igInternetGatewayId = a});
+
+instance FromXML InternetGateway where
+        parseXML x
+          = InternetGateway' <$>
+              (x .@? "attachmentSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "internetGatewayId")
+
+-- | Describes the attachment of a VPC to an Internet gateway.
+--
+-- /See:/ 'internetGatewayAttachment' smart constructor.
+data InternetGatewayAttachment = InternetGatewayAttachment'
+    { _igaState :: !AttachmentStatus
+    , _igaVPCId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InternetGatewayAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igaState'
+--
+-- * 'igaVPCId'
+internetGatewayAttachment
+    :: AttachmentStatus -- ^ 'igaState'
+    -> Text -- ^ 'igaVPCId'
+    -> InternetGatewayAttachment
+internetGatewayAttachment pState_ pVPCId_ =
+    InternetGatewayAttachment'
+    { _igaState = pState_
+    , _igaVPCId = pVPCId_
+    }
+
+-- | The current state of the attachment.
+igaState :: Lens' InternetGatewayAttachment AttachmentStatus
+igaState = lens _igaState (\ s a -> s{_igaState = a});
+
+-- | The ID of the VPC.
+igaVPCId :: Lens' InternetGatewayAttachment Text
+igaVPCId = lens _igaVPCId (\ s a -> s{_igaVPCId = a});
+
+instance FromXML InternetGatewayAttachment where
+        parseXML x
+          = InternetGatewayAttachment' <$>
+              (x .@ "state") <*> (x .@ "vpcId")
+
+-- | Describes a key pair.
+--
+-- /See:/ 'keyPairInfo' smart constructor.
+data KeyPairInfo = KeyPairInfo'
+    { _kpiKeyFingerprint :: !(Maybe Text)
+    , _kpiKeyName        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'KeyPairInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'kpiKeyFingerprint'
+--
+-- * 'kpiKeyName'
+keyPairInfo
+    :: KeyPairInfo
+keyPairInfo =
+    KeyPairInfo'
+    { _kpiKeyFingerprint = Nothing
+    , _kpiKeyName = Nothing
+    }
+
+-- | If you used CreateKeyPair to create the key pair, this is the SHA-1
+-- digest of the DER encoded private key. If you used ImportKeyPair to
+-- provide AWS the public key, this is the MD5 public key fingerprint as
+-- specified in section 4 of RFC4716.
+kpiKeyFingerprint :: Lens' KeyPairInfo (Maybe Text)
+kpiKeyFingerprint = lens _kpiKeyFingerprint (\ s a -> s{_kpiKeyFingerprint = a});
+
+-- | The name of the key pair.
+kpiKeyName :: Lens' KeyPairInfo (Maybe Text)
+kpiKeyName = lens _kpiKeyName (\ s a -> s{_kpiKeyName = a});
+
+instance FromXML KeyPairInfo where
+        parseXML x
+          = KeyPairInfo' <$>
+              (x .@? "keyFingerprint") <*> (x .@? "keyName")
+
+-- | Describes a launch permission.
+--
+-- /See:/ 'launchPermission' smart constructor.
+data LaunchPermission = LaunchPermission'
+    { _lpGroup  :: !(Maybe PermissionGroup)
+    , _lpUserId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LaunchPermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpGroup'
+--
+-- * 'lpUserId'
+launchPermission
+    :: LaunchPermission
+launchPermission =
+    LaunchPermission'
+    { _lpGroup = Nothing
+    , _lpUserId = Nothing
+    }
+
+-- | The name of the group.
+lpGroup :: Lens' LaunchPermission (Maybe PermissionGroup)
+lpGroup = lens _lpGroup (\ s a -> s{_lpGroup = a});
+
+-- | The AWS account ID.
+lpUserId :: Lens' LaunchPermission (Maybe Text)
+lpUserId = lens _lpUserId (\ s a -> s{_lpUserId = a});
+
+instance FromXML LaunchPermission where
+        parseXML x
+          = LaunchPermission' <$>
+              (x .@? "group") <*> (x .@? "userId")
+
+instance ToQuery LaunchPermission where
+        toQuery LaunchPermission'{..}
+          = mconcat
+              ["Group" =: _lpGroup, "UserId" =: _lpUserId]
+
+-- | Describes a launch permission modification.
+--
+-- /See:/ 'launchPermissionModifications' smart constructor.
+data LaunchPermissionModifications = LaunchPermissionModifications'
+    { _lpmRemove :: !(Maybe [LaunchPermission])
+    , _lpmAdd    :: !(Maybe [LaunchPermission])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LaunchPermissionModifications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpmRemove'
+--
+-- * 'lpmAdd'
+launchPermissionModifications
+    :: LaunchPermissionModifications
+launchPermissionModifications =
+    LaunchPermissionModifications'
+    { _lpmRemove = Nothing
+    , _lpmAdd = Nothing
+    }
+
+-- | The AWS account ID to remove from the list of launch permissions for the
+-- AMI.
+lpmRemove :: Lens' LaunchPermissionModifications [LaunchPermission]
+lpmRemove = lens _lpmRemove (\ s a -> s{_lpmRemove = a}) . _Default . _Coerce;
+
+-- | The AWS account ID to add to the list of launch permissions for the AMI.
+lpmAdd :: Lens' LaunchPermissionModifications [LaunchPermission]
+lpmAdd = lens _lpmAdd (\ s a -> s{_lpmAdd = a}) . _Default . _Coerce;
+
+instance ToQuery LaunchPermissionModifications where
+        toQuery LaunchPermissionModifications'{..}
+          = mconcat
+              [toQuery (toQueryList "Remove" <$> _lpmRemove),
+               toQuery (toQueryList "Add" <$> _lpmAdd)]
+
+-- | Describes the launch specification for an instance.
+--
+-- /See:/ 'launchSpecification' smart constructor.
+data LaunchSpecification = LaunchSpecification'
+    { _lsSecurityGroups      :: !(Maybe [GroupIdentifier])
+    , _lsKeyName             :: !(Maybe Text)
+    , _lsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
+    , _lsRAMDiskId           :: !(Maybe Text)
+    , _lsSubnetId            :: !(Maybe Text)
+    , _lsKernelId            :: !(Maybe Text)
+    , _lsInstanceType        :: !(Maybe InstanceType)
+    , _lsEBSOptimized        :: !(Maybe Bool)
+    , _lsUserData            :: !(Maybe Text)
+    , _lsMonitoring          :: !(Maybe RunInstancesMonitoringEnabled)
+    , _lsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
+    , _lsImageId             :: !(Maybe Text)
+    , _lsAddressingType      :: !(Maybe Text)
+    , _lsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
+    , _lsPlacement           :: !(Maybe SpotPlacement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LaunchSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsSecurityGroups'
+--
+-- * 'lsKeyName'
+--
+-- * 'lsNetworkInterfaces'
+--
+-- * 'lsRAMDiskId'
+--
+-- * 'lsSubnetId'
+--
+-- * 'lsKernelId'
+--
+-- * 'lsInstanceType'
+--
+-- * 'lsEBSOptimized'
+--
+-- * 'lsUserData'
+--
+-- * 'lsMonitoring'
+--
+-- * 'lsIAMInstanceProfile'
+--
+-- * 'lsImageId'
+--
+-- * 'lsAddressingType'
+--
+-- * 'lsBlockDeviceMappings'
+--
+-- * 'lsPlacement'
+launchSpecification
+    :: LaunchSpecification
+launchSpecification =
+    LaunchSpecification'
+    { _lsSecurityGroups = Nothing
+    , _lsKeyName = Nothing
+    , _lsNetworkInterfaces = Nothing
+    , _lsRAMDiskId = Nothing
+    , _lsSubnetId = Nothing
+    , _lsKernelId = Nothing
+    , _lsInstanceType = Nothing
+    , _lsEBSOptimized = Nothing
+    , _lsUserData = Nothing
+    , _lsMonitoring = Nothing
+    , _lsIAMInstanceProfile = Nothing
+    , _lsImageId = Nothing
+    , _lsAddressingType = Nothing
+    , _lsBlockDeviceMappings = Nothing
+    , _lsPlacement = Nothing
+    }
+
+-- | One or more security groups. To request an instance in a nondefault VPC,
+-- you must specify the ID of the security group. To request an instance in
+-- EC2-Classic or a default VPC, you can specify the name or the ID of the
+-- security group.
+lsSecurityGroups :: Lens' LaunchSpecification [GroupIdentifier]
+lsSecurityGroups = lens _lsSecurityGroups (\ s a -> s{_lsSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The name of the key pair.
+lsKeyName :: Lens' LaunchSpecification (Maybe Text)
+lsKeyName = lens _lsKeyName (\ s a -> s{_lsKeyName = a});
+
+-- | One or more network interfaces.
+lsNetworkInterfaces :: Lens' LaunchSpecification [InstanceNetworkInterfaceSpecification]
+lsNetworkInterfaces = lens _lsNetworkInterfaces (\ s a -> s{_lsNetworkInterfaces = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk.
+lsRAMDiskId :: Lens' LaunchSpecification (Maybe Text)
+lsRAMDiskId = lens _lsRAMDiskId (\ s a -> s{_lsRAMDiskId = a});
+
+-- | The ID of the subnet in which to launch the instance.
+lsSubnetId :: Lens' LaunchSpecification (Maybe Text)
+lsSubnetId = lens _lsSubnetId (\ s a -> s{_lsSubnetId = a});
+
+-- | The ID of the kernel.
+lsKernelId :: Lens' LaunchSpecification (Maybe Text)
+lsKernelId = lens _lsKernelId (\ s a -> s{_lsKernelId = a});
+
+-- | The instance type.
+lsInstanceType :: Lens' LaunchSpecification (Maybe InstanceType)
+lsInstanceType = lens _lsInstanceType (\ s a -> s{_lsInstanceType = a});
+
+-- | Indicates whether the instance is optimized for EBS I\/O. This
+-- optimization provides dedicated throughput to Amazon EBS and an
+-- optimized configuration stack to provide optimal EBS I\/O performance.
+-- This optimization isn\'t available with all instance types. Additional
+-- usage charges apply when using an EBS Optimized instance.
+--
+-- Default: 'false'
+lsEBSOptimized :: Lens' LaunchSpecification (Maybe Bool)
+lsEBSOptimized = lens _lsEBSOptimized (\ s a -> s{_lsEBSOptimized = a});
+
+-- | The Base64-encoded MIME user data to make available to the instances.
+lsUserData :: Lens' LaunchSpecification (Maybe Text)
+lsUserData = lens _lsUserData (\ s a -> s{_lsUserData = a});
+
+-- | Undocumented member.
+lsMonitoring :: Lens' LaunchSpecification (Maybe RunInstancesMonitoringEnabled)
+lsMonitoring = lens _lsMonitoring (\ s a -> s{_lsMonitoring = a});
+
+-- | The IAM instance profile.
+lsIAMInstanceProfile :: Lens' LaunchSpecification (Maybe IAMInstanceProfileSpecification)
+lsIAMInstanceProfile = lens _lsIAMInstanceProfile (\ s a -> s{_lsIAMInstanceProfile = a});
+
+-- | The ID of the AMI.
+lsImageId :: Lens' LaunchSpecification (Maybe Text)
+lsImageId = lens _lsImageId (\ s a -> s{_lsImageId = a});
+
+-- | Deprecated.
+lsAddressingType :: Lens' LaunchSpecification (Maybe Text)
+lsAddressingType = lens _lsAddressingType (\ s a -> s{_lsAddressingType = a});
+
+-- | One or more block device mapping entries.
+lsBlockDeviceMappings :: Lens' LaunchSpecification [BlockDeviceMapping]
+lsBlockDeviceMappings = lens _lsBlockDeviceMappings (\ s a -> s{_lsBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The placement information for the instance.
+lsPlacement :: Lens' LaunchSpecification (Maybe SpotPlacement)
+lsPlacement = lens _lsPlacement (\ s a -> s{_lsPlacement = a});
+
+instance FromXML LaunchSpecification where
+        parseXML x
+          = LaunchSpecification' <$>
+              (x .@? "groupSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "keyName")
+                <*>
+                (x .@? "networkInterfaceSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "ramdiskId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "kernelId")
+                <*> (x .@? "instanceType")
+                <*> (x .@? "ebsOptimized")
+                <*> (x .@? "userData")
+                <*> (x .@? "monitoring")
+                <*> (x .@? "iamInstanceProfile")
+                <*> (x .@? "imageId")
+                <*> (x .@? "addressingType")
+                <*>
+                (x .@? "blockDeviceMapping" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "placement")
+
+-- | Describes the monitoring for the instance.
+--
+-- /See:/ 'monitoring' smart constructor.
+newtype Monitoring = Monitoring'
+    { _mState :: Maybe MonitoringState
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Monitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mState'
+monitoring
+    :: Monitoring
+monitoring =
+    Monitoring'
+    { _mState = Nothing
+    }
+
+-- | Indicates whether monitoring is enabled for the instance.
+mState :: Lens' Monitoring (Maybe MonitoringState)
+mState = lens _mState (\ s a -> s{_mState = a});
+
+instance FromXML Monitoring where
+        parseXML x = Monitoring' <$> (x .@? "state")
+
+-- | Describes the status of a moving Elastic IP address.
+--
+-- /See:/ 'movingAddressStatus' smart constructor.
+data MovingAddressStatus = MovingAddressStatus'
+    { _masMoveStatus :: !(Maybe MoveStatus)
+    , _masPublicIP   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MovingAddressStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'masMoveStatus'
+--
+-- * 'masPublicIP'
+movingAddressStatus
+    :: MovingAddressStatus
+movingAddressStatus =
+    MovingAddressStatus'
+    { _masMoveStatus = Nothing
+    , _masPublicIP = Nothing
+    }
+
+-- | The status of the Elastic IP address that\'s being moved to the EC2-VPC
+-- platform, or restored to the EC2-Classic platform.
+masMoveStatus :: Lens' MovingAddressStatus (Maybe MoveStatus)
+masMoveStatus = lens _masMoveStatus (\ s a -> s{_masMoveStatus = a});
+
+-- | The Elastic IP address.
+masPublicIP :: Lens' MovingAddressStatus (Maybe Text)
+masPublicIP = lens _masPublicIP (\ s a -> s{_masPublicIP = a});
+
+instance FromXML MovingAddressStatus where
+        parseXML x
+          = MovingAddressStatus' <$>
+              (x .@? "moveStatus") <*> (x .@? "publicIp")
+
+-- | Describes a network ACL.
+--
+-- /See:/ 'networkACL' smart constructor.
+data NetworkACL = NetworkACL'
+    { _naEntries      :: !(Maybe [NetworkACLEntry])
+    , _naNetworkACLId :: !(Maybe Text)
+    , _naVPCId        :: !(Maybe Text)
+    , _naAssociations :: !(Maybe [NetworkACLAssociation])
+    , _naTags         :: !(Maybe [Tag])
+    , _naIsDefault    :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkACL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'naEntries'
+--
+-- * 'naNetworkACLId'
+--
+-- * 'naVPCId'
+--
+-- * 'naAssociations'
+--
+-- * 'naTags'
+--
+-- * 'naIsDefault'
+networkACL
+    :: NetworkACL
+networkACL =
+    NetworkACL'
+    { _naEntries = Nothing
+    , _naNetworkACLId = Nothing
+    , _naVPCId = Nothing
+    , _naAssociations = Nothing
+    , _naTags = Nothing
+    , _naIsDefault = Nothing
+    }
+
+-- | One or more entries (rules) in the network ACL.
+naEntries :: Lens' NetworkACL [NetworkACLEntry]
+naEntries = lens _naEntries (\ s a -> s{_naEntries = a}) . _Default . _Coerce;
+
+-- | The ID of the network ACL.
+naNetworkACLId :: Lens' NetworkACL (Maybe Text)
+naNetworkACLId = lens _naNetworkACLId (\ s a -> s{_naNetworkACLId = a});
+
+-- | The ID of the VPC for the network ACL.
+naVPCId :: Lens' NetworkACL (Maybe Text)
+naVPCId = lens _naVPCId (\ s a -> s{_naVPCId = a});
+
+-- | Any associations between the network ACL and one or more subnets
+naAssociations :: Lens' NetworkACL [NetworkACLAssociation]
+naAssociations = lens _naAssociations (\ s a -> s{_naAssociations = a}) . _Default . _Coerce;
+
+-- | Any tags assigned to the network ACL.
+naTags :: Lens' NetworkACL [Tag]
+naTags = lens _naTags (\ s a -> s{_naTags = a}) . _Default . _Coerce;
+
+-- | Indicates whether this is the default network ACL for the VPC.
+naIsDefault :: Lens' NetworkACL (Maybe Bool)
+naIsDefault = lens _naIsDefault (\ s a -> s{_naIsDefault = a});
+
+instance FromXML NetworkACL where
+        parseXML x
+          = NetworkACL' <$>
+              (x .@? "entrySet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "networkAclId")
+                <*> (x .@? "vpcId")
+                <*>
+                (x .@? "associationSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "default")
+
+-- | Describes an association between a network ACL and a subnet.
+--
+-- /See:/ 'networkACLAssociation' smart constructor.
+data NetworkACLAssociation = NetworkACLAssociation'
+    { _naaNetworkACLId            :: !(Maybe Text)
+    , _naaSubnetId                :: !(Maybe Text)
+    , _naaNetworkACLAssociationId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkACLAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'naaNetworkACLId'
+--
+-- * 'naaSubnetId'
+--
+-- * 'naaNetworkACLAssociationId'
+networkACLAssociation
+    :: NetworkACLAssociation
+networkACLAssociation =
+    NetworkACLAssociation'
+    { _naaNetworkACLId = Nothing
+    , _naaSubnetId = Nothing
+    , _naaNetworkACLAssociationId = Nothing
+    }
+
+-- | The ID of the network ACL.
+naaNetworkACLId :: Lens' NetworkACLAssociation (Maybe Text)
+naaNetworkACLId = lens _naaNetworkACLId (\ s a -> s{_naaNetworkACLId = a});
+
+-- | The ID of the subnet.
+naaSubnetId :: Lens' NetworkACLAssociation (Maybe Text)
+naaSubnetId = lens _naaSubnetId (\ s a -> s{_naaSubnetId = a});
+
+-- | The ID of the association between a network ACL and a subnet.
+naaNetworkACLAssociationId :: Lens' NetworkACLAssociation (Maybe Text)
+naaNetworkACLAssociationId = lens _naaNetworkACLAssociationId (\ s a -> s{_naaNetworkACLAssociationId = a});
+
+instance FromXML NetworkACLAssociation where
+        parseXML x
+          = NetworkACLAssociation' <$>
+              (x .@? "networkAclId") <*> (x .@? "subnetId") <*>
+                (x .@? "networkAclAssociationId")
+
+-- | Describes an entry in a network ACL.
+--
+-- /See:/ 'networkACLEntry' smart constructor.
+data NetworkACLEntry = NetworkACLEntry'
+    { _naeICMPTypeCode :: !(Maybe ICMPTypeCode)
+    , _naeRuleNumber   :: !(Maybe Int)
+    , _naeRuleAction   :: !(Maybe RuleAction)
+    , _naeProtocol     :: !(Maybe Text)
+    , _naePortRange    :: !(Maybe PortRange)
+    , _naeCIdRBlock    :: !(Maybe Text)
+    , _naeEgress       :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkACLEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'naeICMPTypeCode'
+--
+-- * 'naeRuleNumber'
+--
+-- * 'naeRuleAction'
+--
+-- * 'naeProtocol'
+--
+-- * 'naePortRange'
+--
+-- * 'naeCIdRBlock'
+--
+-- * 'naeEgress'
+networkACLEntry
+    :: NetworkACLEntry
+networkACLEntry =
+    NetworkACLEntry'
+    { _naeICMPTypeCode = Nothing
+    , _naeRuleNumber = Nothing
+    , _naeRuleAction = Nothing
+    , _naeProtocol = Nothing
+    , _naePortRange = Nothing
+    , _naeCIdRBlock = Nothing
+    , _naeEgress = Nothing
+    }
+
+-- | ICMP protocol: The ICMP type and code.
+naeICMPTypeCode :: Lens' NetworkACLEntry (Maybe ICMPTypeCode)
+naeICMPTypeCode = lens _naeICMPTypeCode (\ s a -> s{_naeICMPTypeCode = a});
+
+-- | The rule number for the entry. ACL entries are processed in ascending
+-- order by rule number.
+naeRuleNumber :: Lens' NetworkACLEntry (Maybe Int)
+naeRuleNumber = lens _naeRuleNumber (\ s a -> s{_naeRuleNumber = a});
+
+-- | Indicates whether to allow or deny the traffic that matches the rule.
+naeRuleAction :: Lens' NetworkACLEntry (Maybe RuleAction)
+naeRuleAction = lens _naeRuleAction (\ s a -> s{_naeRuleAction = a});
+
+-- | The protocol. A value of '-1' means all protocols.
+naeProtocol :: Lens' NetworkACLEntry (Maybe Text)
+naeProtocol = lens _naeProtocol (\ s a -> s{_naeProtocol = a});
+
+-- | TCP or UDP protocols: The range of ports the rule applies to.
+naePortRange :: Lens' NetworkACLEntry (Maybe PortRange)
+naePortRange = lens _naePortRange (\ s a -> s{_naePortRange = a});
+
+-- | The network range to allow or deny, in CIDR notation.
+naeCIdRBlock :: Lens' NetworkACLEntry (Maybe Text)
+naeCIdRBlock = lens _naeCIdRBlock (\ s a -> s{_naeCIdRBlock = a});
+
+-- | Indicates whether the rule is an egress rule (applied to traffic leaving
+-- the subnet).
+naeEgress :: Lens' NetworkACLEntry (Maybe Bool)
+naeEgress = lens _naeEgress (\ s a -> s{_naeEgress = a});
+
+instance FromXML NetworkACLEntry where
+        parseXML x
+          = NetworkACLEntry' <$>
+              (x .@? "icmpTypeCode") <*> (x .@? "ruleNumber") <*>
+                (x .@? "ruleAction")
+                <*> (x .@? "protocol")
+                <*> (x .@? "portRange")
+                <*> (x .@? "cidrBlock")
+                <*> (x .@? "egress")
+
+-- | Describes a network interface.
+--
+-- /See:/ 'networkInterface' smart constructor.
+data NetworkInterface = NetworkInterface'
+    { _niGroups             :: !(Maybe [GroupIdentifier])
+    , _niStatus             :: !(Maybe NetworkInterfaceStatus)
+    , _niPrivateIPAddresses :: !(Maybe [NetworkInterfacePrivateIPAddress])
+    , _niSourceDestCheck    :: !(Maybe Bool)
+    , _niVPCId              :: !(Maybe Text)
+    , _niTagSet             :: !(Maybe [Tag])
+    , _niRequesterManaged   :: !(Maybe Bool)
+    , _niNetworkInterfaceId :: !(Maybe Text)
+    , _niSubnetId           :: !(Maybe Text)
+    , _niMACAddress         :: !(Maybe Text)
+    , _niAttachment         :: !(Maybe NetworkInterfaceAttachment)
+    , _niOwnerId            :: !(Maybe Text)
+    , _niAvailabilityZone   :: !(Maybe Text)
+    , _niPrivateIPAddress   :: !(Maybe Text)
+    , _niPrivateDNSName     :: !(Maybe Text)
+    , _niRequesterId        :: !(Maybe Text)
+    , _niDescription        :: !(Maybe Text)
+    , _niAssociation        :: !(Maybe NetworkInterfaceAssociation)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niGroups'
+--
+-- * 'niStatus'
+--
+-- * 'niPrivateIPAddresses'
+--
+-- * 'niSourceDestCheck'
+--
+-- * 'niVPCId'
+--
+-- * 'niTagSet'
+--
+-- * 'niRequesterManaged'
+--
+-- * 'niNetworkInterfaceId'
+--
+-- * 'niSubnetId'
+--
+-- * 'niMACAddress'
+--
+-- * 'niAttachment'
+--
+-- * 'niOwnerId'
+--
+-- * 'niAvailabilityZone'
+--
+-- * 'niPrivateIPAddress'
+--
+-- * 'niPrivateDNSName'
+--
+-- * 'niRequesterId'
+--
+-- * 'niDescription'
+--
+-- * 'niAssociation'
+networkInterface
+    :: NetworkInterface
+networkInterface =
+    NetworkInterface'
+    { _niGroups = Nothing
+    , _niStatus = Nothing
+    , _niPrivateIPAddresses = Nothing
+    , _niSourceDestCheck = Nothing
+    , _niVPCId = Nothing
+    , _niTagSet = Nothing
+    , _niRequesterManaged = Nothing
+    , _niNetworkInterfaceId = Nothing
+    , _niSubnetId = Nothing
+    , _niMACAddress = Nothing
+    , _niAttachment = Nothing
+    , _niOwnerId = Nothing
+    , _niAvailabilityZone = Nothing
+    , _niPrivateIPAddress = Nothing
+    , _niPrivateDNSName = Nothing
+    , _niRequesterId = Nothing
+    , _niDescription = Nothing
+    , _niAssociation = Nothing
+    }
+
+-- | Any security groups for the network interface.
+niGroups :: Lens' NetworkInterface [GroupIdentifier]
+niGroups = lens _niGroups (\ s a -> s{_niGroups = a}) . _Default . _Coerce;
+
+-- | The status of the network interface.
+niStatus :: Lens' NetworkInterface (Maybe NetworkInterfaceStatus)
+niStatus = lens _niStatus (\ s a -> s{_niStatus = a});
+
+-- | The private IP addresses associated with the network interface.
+niPrivateIPAddresses :: Lens' NetworkInterface [NetworkInterfacePrivateIPAddress]
+niPrivateIPAddresses = lens _niPrivateIPAddresses (\ s a -> s{_niPrivateIPAddresses = a}) . _Default . _Coerce;
+
+-- | Indicates whether traffic to or from the instance is validated.
+niSourceDestCheck :: Lens' NetworkInterface (Maybe Bool)
+niSourceDestCheck = lens _niSourceDestCheck (\ s a -> s{_niSourceDestCheck = a});
+
+-- | The ID of the VPC.
+niVPCId :: Lens' NetworkInterface (Maybe Text)
+niVPCId = lens _niVPCId (\ s a -> s{_niVPCId = a});
+
+-- | Any tags assigned to the network interface.
+niTagSet :: Lens' NetworkInterface [Tag]
+niTagSet = lens _niTagSet (\ s a -> s{_niTagSet = a}) . _Default . _Coerce;
+
+-- | Indicates whether the network interface is being managed by AWS.
+niRequesterManaged :: Lens' NetworkInterface (Maybe Bool)
+niRequesterManaged = lens _niRequesterManaged (\ s a -> s{_niRequesterManaged = a});
+
+-- | The ID of the network interface.
+niNetworkInterfaceId :: Lens' NetworkInterface (Maybe Text)
+niNetworkInterfaceId = lens _niNetworkInterfaceId (\ s a -> s{_niNetworkInterfaceId = a});
+
+-- | The ID of the subnet.
+niSubnetId :: Lens' NetworkInterface (Maybe Text)
+niSubnetId = lens _niSubnetId (\ s a -> s{_niSubnetId = a});
+
+-- | The MAC address.
+niMACAddress :: Lens' NetworkInterface (Maybe Text)
+niMACAddress = lens _niMACAddress (\ s a -> s{_niMACAddress = a});
+
+-- | The network interface attachment.
+niAttachment :: Lens' NetworkInterface (Maybe NetworkInterfaceAttachment)
+niAttachment = lens _niAttachment (\ s a -> s{_niAttachment = a});
+
+-- | The AWS account ID of the owner of the network interface.
+niOwnerId :: Lens' NetworkInterface (Maybe Text)
+niOwnerId = lens _niOwnerId (\ s a -> s{_niOwnerId = a});
+
+-- | The Availability Zone.
+niAvailabilityZone :: Lens' NetworkInterface (Maybe Text)
+niAvailabilityZone = lens _niAvailabilityZone (\ s a -> s{_niAvailabilityZone = a});
+
+-- | The IP address of the network interface within the subnet.
+niPrivateIPAddress :: Lens' NetworkInterface (Maybe Text)
+niPrivateIPAddress = lens _niPrivateIPAddress (\ s a -> s{_niPrivateIPAddress = a});
+
+-- | The private DNS name.
+niPrivateDNSName :: Lens' NetworkInterface (Maybe Text)
+niPrivateDNSName = lens _niPrivateDNSName (\ s a -> s{_niPrivateDNSName = a});
+
+-- | The ID of the entity that launched the instance on your behalf (for
+-- example, AWS Management Console or Auto Scaling).
+niRequesterId :: Lens' NetworkInterface (Maybe Text)
+niRequesterId = lens _niRequesterId (\ s a -> s{_niRequesterId = a});
+
+-- | A description.
+niDescription :: Lens' NetworkInterface (Maybe Text)
+niDescription = lens _niDescription (\ s a -> s{_niDescription = a});
+
+-- | The association information for an Elastic IP associated with the
+-- network interface.
+niAssociation :: Lens' NetworkInterface (Maybe NetworkInterfaceAssociation)
+niAssociation = lens _niAssociation (\ s a -> s{_niAssociation = a});
+
+instance FromXML NetworkInterface where
+        parseXML x
+          = NetworkInterface' <$>
+              (x .@? "groupSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "status")
+                <*>
+                (x .@? "privateIpAddressesSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "sourceDestCheck")
+                <*> (x .@? "vpcId")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "requesterManaged")
+                <*> (x .@? "networkInterfaceId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "macAddress")
+                <*> (x .@? "attachment")
+                <*> (x .@? "ownerId")
+                <*> (x .@? "availabilityZone")
+                <*> (x .@? "privateIpAddress")
+                <*> (x .@? "privateDnsName")
+                <*> (x .@? "requesterId")
+                <*> (x .@? "description")
+                <*> (x .@? "association")
+
+-- | Describes association information for an Elastic IP address.
+--
+-- /See:/ 'networkInterfaceAssociation' smart constructor.
+data NetworkInterfaceAssociation = NetworkInterfaceAssociation'
+    { _niaAssociationId :: !(Maybe Text)
+    , _niaPublicDNSName :: !(Maybe Text)
+    , _niaAllocationId  :: !(Maybe Text)
+    , _niaIPOwnerId     :: !(Maybe Text)
+    , _niaPublicIP      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterfaceAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niaAssociationId'
+--
+-- * 'niaPublicDNSName'
+--
+-- * 'niaAllocationId'
+--
+-- * 'niaIPOwnerId'
+--
+-- * 'niaPublicIP'
+networkInterfaceAssociation
+    :: NetworkInterfaceAssociation
+networkInterfaceAssociation =
+    NetworkInterfaceAssociation'
+    { _niaAssociationId = Nothing
+    , _niaPublicDNSName = Nothing
+    , _niaAllocationId = Nothing
+    , _niaIPOwnerId = Nothing
+    , _niaPublicIP = Nothing
+    }
+
+-- | The association ID.
+niaAssociationId :: Lens' NetworkInterfaceAssociation (Maybe Text)
+niaAssociationId = lens _niaAssociationId (\ s a -> s{_niaAssociationId = a});
+
+-- | The public DNS name.
+niaPublicDNSName :: Lens' NetworkInterfaceAssociation (Maybe Text)
+niaPublicDNSName = lens _niaPublicDNSName (\ s a -> s{_niaPublicDNSName = a});
+
+-- | The allocation ID.
+niaAllocationId :: Lens' NetworkInterfaceAssociation (Maybe Text)
+niaAllocationId = lens _niaAllocationId (\ s a -> s{_niaAllocationId = a});
+
+-- | The ID of the Elastic IP address owner.
+niaIPOwnerId :: Lens' NetworkInterfaceAssociation (Maybe Text)
+niaIPOwnerId = lens _niaIPOwnerId (\ s a -> s{_niaIPOwnerId = a});
+
+-- | The address of the Elastic IP address bound to the network interface.
+niaPublicIP :: Lens' NetworkInterfaceAssociation (Maybe Text)
+niaPublicIP = lens _niaPublicIP (\ s a -> s{_niaPublicIP = a});
+
+instance FromXML NetworkInterfaceAssociation where
+        parseXML x
+          = NetworkInterfaceAssociation' <$>
+              (x .@? "associationId") <*> (x .@? "publicDnsName")
+                <*> (x .@? "allocationId")
+                <*> (x .@? "ipOwnerId")
+                <*> (x .@? "publicIp")
+
+-- | Describes a network interface attachment.
+--
+-- /See:/ 'networkInterfaceAttachment' smart constructor.
+data NetworkInterfaceAttachment = NetworkInterfaceAttachment'
+    { _niaInstanceId          :: !(Maybe Text)
+    , _niaStatus              :: !(Maybe AttachmentStatus)
+    , _niaDeleteOnTermination :: !(Maybe Bool)
+    , _niaAttachmentId        :: !(Maybe Text)
+    , _niaInstanceOwnerId     :: !(Maybe Text)
+    , _niaAttachTime          :: !(Maybe ISO8601)
+    , _niaDeviceIndex         :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterfaceAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niaInstanceId'
+--
+-- * 'niaStatus'
+--
+-- * 'niaDeleteOnTermination'
+--
+-- * 'niaAttachmentId'
+--
+-- * 'niaInstanceOwnerId'
+--
+-- * 'niaAttachTime'
+--
+-- * 'niaDeviceIndex'
+networkInterfaceAttachment
+    :: NetworkInterfaceAttachment
+networkInterfaceAttachment =
+    NetworkInterfaceAttachment'
+    { _niaInstanceId = Nothing
+    , _niaStatus = Nothing
+    , _niaDeleteOnTermination = Nothing
+    , _niaAttachmentId = Nothing
+    , _niaInstanceOwnerId = Nothing
+    , _niaAttachTime = Nothing
+    , _niaDeviceIndex = Nothing
+    }
+
+-- | The ID of the instance.
+niaInstanceId :: Lens' NetworkInterfaceAttachment (Maybe Text)
+niaInstanceId = lens _niaInstanceId (\ s a -> s{_niaInstanceId = a});
+
+-- | The attachment state.
+niaStatus :: Lens' NetworkInterfaceAttachment (Maybe AttachmentStatus)
+niaStatus = lens _niaStatus (\ s a -> s{_niaStatus = a});
+
+-- | Indicates whether the network interface is deleted when the instance is
+-- terminated.
+niaDeleteOnTermination :: Lens' NetworkInterfaceAttachment (Maybe Bool)
+niaDeleteOnTermination = lens _niaDeleteOnTermination (\ s a -> s{_niaDeleteOnTermination = a});
+
+-- | The ID of the network interface attachment.
+niaAttachmentId :: Lens' NetworkInterfaceAttachment (Maybe Text)
+niaAttachmentId = lens _niaAttachmentId (\ s a -> s{_niaAttachmentId = a});
+
+-- | The AWS account ID of the owner of the instance.
+niaInstanceOwnerId :: Lens' NetworkInterfaceAttachment (Maybe Text)
+niaInstanceOwnerId = lens _niaInstanceOwnerId (\ s a -> s{_niaInstanceOwnerId = a});
+
+-- | The timestamp indicating when the attachment initiated.
+niaAttachTime :: Lens' NetworkInterfaceAttachment (Maybe UTCTime)
+niaAttachTime = lens _niaAttachTime (\ s a -> s{_niaAttachTime = a}) . mapping _Time;
+
+-- | The device index of the network interface attachment on the instance.
+niaDeviceIndex :: Lens' NetworkInterfaceAttachment (Maybe Int)
+niaDeviceIndex = lens _niaDeviceIndex (\ s a -> s{_niaDeviceIndex = a});
+
+instance FromXML NetworkInterfaceAttachment where
+        parseXML x
+          = NetworkInterfaceAttachment' <$>
+              (x .@? "instanceId") <*> (x .@? "status") <*>
+                (x .@? "deleteOnTermination")
+                <*> (x .@? "attachmentId")
+                <*> (x .@? "instanceOwnerId")
+                <*> (x .@? "attachTime")
+                <*> (x .@? "deviceIndex")
+
+-- | Describes an attachment change.
+--
+-- /See:/ 'networkInterfaceAttachmentChanges' smart constructor.
+data NetworkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges'
+    { _niacDeleteOnTermination :: !(Maybe Bool)
+    , _niacAttachmentId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterfaceAttachmentChanges' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niacDeleteOnTermination'
+--
+-- * 'niacAttachmentId'
+networkInterfaceAttachmentChanges
+    :: NetworkInterfaceAttachmentChanges
+networkInterfaceAttachmentChanges =
+    NetworkInterfaceAttachmentChanges'
+    { _niacDeleteOnTermination = Nothing
+    , _niacAttachmentId = Nothing
+    }
+
+-- | Indicates whether the network interface is deleted when the instance is
+-- terminated.
+niacDeleteOnTermination :: Lens' NetworkInterfaceAttachmentChanges (Maybe Bool)
+niacDeleteOnTermination = lens _niacDeleteOnTermination (\ s a -> s{_niacDeleteOnTermination = a});
+
+-- | The ID of the network interface attachment.
+niacAttachmentId :: Lens' NetworkInterfaceAttachmentChanges (Maybe Text)
+niacAttachmentId = lens _niacAttachmentId (\ s a -> s{_niacAttachmentId = a});
+
+instance ToQuery NetworkInterfaceAttachmentChanges
+         where
+        toQuery NetworkInterfaceAttachmentChanges'{..}
+          = mconcat
+              ["DeleteOnTermination" =: _niacDeleteOnTermination,
+               "AttachmentId" =: _niacAttachmentId]
+
+-- | Describes the private IP address of a network interface.
+--
+-- /See:/ 'networkInterfacePrivateIPAddress' smart constructor.
+data NetworkInterfacePrivateIPAddress = NetworkInterfacePrivateIPAddress'
+    { _nipiaPrimary          :: !(Maybe Bool)
+    , _nipiaPrivateIPAddress :: !(Maybe Text)
+    , _nipiaPrivateDNSName   :: !(Maybe Text)
+    , _nipiaAssociation      :: !(Maybe NetworkInterfaceAssociation)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterfacePrivateIPAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nipiaPrimary'
+--
+-- * 'nipiaPrivateIPAddress'
+--
+-- * 'nipiaPrivateDNSName'
+--
+-- * 'nipiaAssociation'
+networkInterfacePrivateIPAddress
+    :: NetworkInterfacePrivateIPAddress
+networkInterfacePrivateIPAddress =
+    NetworkInterfacePrivateIPAddress'
+    { _nipiaPrimary = Nothing
+    , _nipiaPrivateIPAddress = Nothing
+    , _nipiaPrivateDNSName = Nothing
+    , _nipiaAssociation = Nothing
+    }
+
+-- | Indicates whether this IP address is the primary private IP address of
+-- the network interface.
+nipiaPrimary :: Lens' NetworkInterfacePrivateIPAddress (Maybe Bool)
+nipiaPrimary = lens _nipiaPrimary (\ s a -> s{_nipiaPrimary = a});
+
+-- | The private IP address.
+nipiaPrivateIPAddress :: Lens' NetworkInterfacePrivateIPAddress (Maybe Text)
+nipiaPrivateIPAddress = lens _nipiaPrivateIPAddress (\ s a -> s{_nipiaPrivateIPAddress = a});
+
+-- | The private DNS name.
+nipiaPrivateDNSName :: Lens' NetworkInterfacePrivateIPAddress (Maybe Text)
+nipiaPrivateDNSName = lens _nipiaPrivateDNSName (\ s a -> s{_nipiaPrivateDNSName = a});
+
+-- | The association information for an Elastic IP address associated with
+-- the network interface.
+nipiaAssociation :: Lens' NetworkInterfacePrivateIPAddress (Maybe NetworkInterfaceAssociation)
+nipiaAssociation = lens _nipiaAssociation (\ s a -> s{_nipiaAssociation = a});
+
+instance FromXML NetworkInterfacePrivateIPAddress
+         where
+        parseXML x
+          = NetworkInterfacePrivateIPAddress' <$>
+              (x .@? "primary") <*> (x .@? "privateIpAddress") <*>
+                (x .@? "privateDnsName")
+                <*> (x .@? "association")
+
+-- | /See:/ 'newDHCPConfiguration' smart constructor.
+data NewDHCPConfiguration = NewDHCPConfiguration'
+    { _ndcValues :: !(Maybe [Text])
+    , _ndcKey    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NewDHCPConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ndcValues'
+--
+-- * 'ndcKey'
+newDHCPConfiguration
+    :: NewDHCPConfiguration
+newDHCPConfiguration =
+    NewDHCPConfiguration'
+    { _ndcValues = Nothing
+    , _ndcKey = Nothing
+    }
+
+-- | Undocumented member.
+ndcValues :: Lens' NewDHCPConfiguration [Text]
+ndcValues = lens _ndcValues (\ s a -> s{_ndcValues = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+ndcKey :: Lens' NewDHCPConfiguration (Maybe Text)
+ndcKey = lens _ndcKey (\ s a -> s{_ndcKey = a});
+
+instance ToQuery NewDHCPConfiguration where
+        toQuery NewDHCPConfiguration'{..}
+          = mconcat
+              [toQuery (toQueryList "Value" <$> _ndcValues),
+               "Key" =: _ndcKey]
+
+-- | Describes the placement for the instance.
+--
+-- /See:/ 'placement' smart constructor.
+data Placement = Placement'
+    { _pAvailabilityZone :: !(Maybe Text)
+    , _pTenancy          :: !(Maybe Tenancy)
+    , _pGroupName        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Placement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pAvailabilityZone'
+--
+-- * 'pTenancy'
+--
+-- * 'pGroupName'
+placement
+    :: Placement
+placement =
+    Placement'
+    { _pAvailabilityZone = Nothing
+    , _pTenancy = Nothing
+    , _pGroupName = Nothing
+    }
+
+-- | 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.
+pTenancy :: Lens' Placement (Maybe Tenancy)
+pTenancy = lens _pTenancy (\ s a -> s{_pTenancy = a});
+
+-- | The name of the placement group the instance is in (for cluster compute
+-- instances).
+pGroupName :: Lens' Placement (Maybe Text)
+pGroupName = lens _pGroupName (\ s a -> s{_pGroupName = a});
+
+instance FromXML Placement where
+        parseXML x
+          = Placement' <$>
+              (x .@? "availabilityZone") <*> (x .@? "tenancy") <*>
+                (x .@? "groupName")
+
+instance ToQuery Placement where
+        toQuery Placement'{..}
+          = mconcat
+              ["AvailabilityZone" =: _pAvailabilityZone,
+               "Tenancy" =: _pTenancy, "GroupName" =: _pGroupName]
+
+-- | Describes a placement group.
+--
+-- /See:/ 'placementGroup' smart constructor.
+data PlacementGroup = PlacementGroup'
+    { _pgState     :: !(Maybe PlacementGroupState)
+    , _pgStrategy  :: !(Maybe PlacementStrategy)
+    , _pgGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PlacementGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgState'
+--
+-- * 'pgStrategy'
+--
+-- * 'pgGroupName'
+placementGroup
+    :: PlacementGroup
+placementGroup =
+    PlacementGroup'
+    { _pgState = Nothing
+    , _pgStrategy = Nothing
+    , _pgGroupName = Nothing
+    }
+
+-- | The state of the placement group.
+pgState :: Lens' PlacementGroup (Maybe PlacementGroupState)
+pgState = lens _pgState (\ s a -> s{_pgState = a});
+
+-- | The placement strategy.
+pgStrategy :: Lens' PlacementGroup (Maybe PlacementStrategy)
+pgStrategy = lens _pgStrategy (\ s a -> s{_pgStrategy = a});
+
+-- | The name of the placement group.
+pgGroupName :: Lens' PlacementGroup (Maybe Text)
+pgGroupName = lens _pgGroupName (\ s a -> s{_pgGroupName = a});
+
+instance FromXML PlacementGroup where
+        parseXML x
+          = PlacementGroup' <$>
+              (x .@? "state") <*> (x .@? "strategy") <*>
+                (x .@? "groupName")
+
+-- | Describes a range of ports.
+--
+-- /See:/ 'portRange' smart constructor.
+data PortRange = PortRange'
+    { _prTo   :: !(Maybe Int)
+    , _prFrom :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PortRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prTo'
+--
+-- * 'prFrom'
+portRange
+    :: PortRange
+portRange =
+    PortRange'
+    { _prTo = Nothing
+    , _prFrom = Nothing
+    }
+
+-- | The last port in the range.
+prTo :: Lens' PortRange (Maybe Int)
+prTo = lens _prTo (\ s a -> s{_prTo = a});
+
+-- | The first port in the range.
+prFrom :: Lens' PortRange (Maybe Int)
+prFrom = lens _prFrom (\ s a -> s{_prFrom = a});
+
+instance FromXML PortRange where
+        parseXML x
+          = PortRange' <$> (x .@? "to") <*> (x .@? "from")
+
+instance ToQuery PortRange where
+        toQuery PortRange'{..}
+          = mconcat ["To" =: _prTo, "From" =: _prFrom]
+
+-- | Describes prefixes for AWS services.
+--
+-- /See:/ 'prefixList' smart constructor.
+data PrefixList = PrefixList'
+    { _plCIdRs          :: !(Maybe [Text])
+    , _plPrefixListId   :: !(Maybe Text)
+    , _plPrefixListName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PrefixList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plCIdRs'
+--
+-- * 'plPrefixListId'
+--
+-- * 'plPrefixListName'
+prefixList
+    :: PrefixList
+prefixList =
+    PrefixList'
+    { _plCIdRs = Nothing
+    , _plPrefixListId = Nothing
+    , _plPrefixListName = Nothing
+    }
+
+-- | The IP address range of the AWS service.
+plCIdRs :: Lens' PrefixList [Text]
+plCIdRs = lens _plCIdRs (\ s a -> s{_plCIdRs = a}) . _Default . _Coerce;
+
+-- | The ID of the prefix.
+plPrefixListId :: Lens' PrefixList (Maybe Text)
+plPrefixListId = lens _plPrefixListId (\ s a -> s{_plPrefixListId = a});
+
+-- | The name of the prefix.
+plPrefixListName :: Lens' PrefixList (Maybe Text)
+plPrefixListName = lens _plPrefixListName (\ s a -> s{_plPrefixListName = a});
+
+instance FromXML PrefixList where
+        parseXML x
+          = PrefixList' <$>
+              (x .@? "cidrSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "prefixListId")
+                <*> (x .@? "prefixListName")
+
+-- | The ID of the prefix.
+--
+-- /See:/ 'prefixListId' smart constructor.
+newtype PrefixListId = PrefixListId'
+    { _pliPrefixListId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PrefixListId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pliPrefixListId'
+prefixListId
+    :: PrefixListId
+prefixListId =
+    PrefixListId'
+    { _pliPrefixListId = Nothing
+    }
+
+-- | The ID of the prefix.
+pliPrefixListId :: Lens' PrefixListId (Maybe Text)
+pliPrefixListId = lens _pliPrefixListId (\ s a -> s{_pliPrefixListId = a});
+
+instance FromXML PrefixListId where
+        parseXML x = PrefixListId' <$> (x .@? "prefixListId")
+
+instance ToQuery PrefixListId where
+        toQuery PrefixListId'{..}
+          = mconcat ["PrefixListId" =: _pliPrefixListId]
+
+-- | Describes the price for a Reserved Instance.
+--
+-- /See:/ 'priceSchedule' smart constructor.
+data PriceSchedule = PriceSchedule'
+    { _psCurrencyCode :: !(Maybe CurrencyCodeValues)
+    , _psTerm         :: !(Maybe Integer)
+    , _psActive       :: !(Maybe Bool)
+    , _psPrice        :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PriceSchedule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psCurrencyCode'
+--
+-- * 'psTerm'
+--
+-- * 'psActive'
+--
+-- * 'psPrice'
+priceSchedule
+    :: PriceSchedule
+priceSchedule =
+    PriceSchedule'
+    { _psCurrencyCode = Nothing
+    , _psTerm = Nothing
+    , _psActive = Nothing
+    , _psPrice = Nothing
+    }
+
+-- | 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});
+
+-- | The number of months remaining in the reservation. For example, 2 is the
+-- second to the last month before the capacity reservation expires.
+psTerm :: Lens' PriceSchedule (Maybe Integer)
+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.
+--
+-- 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
+-- 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
+-- two months of the term, will be active for months 2 and 1.
+psActive :: Lens' PriceSchedule (Maybe Bool)
+psActive = lens _psActive (\ s a -> s{_psActive = a});
+
+-- | The fixed price for the term.
+psPrice :: Lens' PriceSchedule (Maybe Double)
+psPrice = lens _psPrice (\ s a -> s{_psPrice = a});
+
+instance FromXML PriceSchedule where
+        parseXML x
+          = PriceSchedule' <$>
+              (x .@? "currencyCode") <*> (x .@? "term") <*>
+                (x .@? "active")
+                <*> (x .@? "price")
+
+-- | Describes the price for a Reserved Instance.
+--
+-- /See:/ 'priceScheduleSpecification' smart constructor.
+data PriceScheduleSpecification = PriceScheduleSpecification'
+    { _pssCurrencyCode :: !(Maybe CurrencyCodeValues)
+    , _pssTerm         :: !(Maybe Integer)
+    , _pssPrice        :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PriceScheduleSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pssCurrencyCode'
+--
+-- * 'pssTerm'
+--
+-- * 'pssPrice'
+priceScheduleSpecification
+    :: PriceScheduleSpecification
+priceScheduleSpecification =
+    PriceScheduleSpecification'
+    { _pssCurrencyCode = Nothing
+    , _pssTerm = Nothing
+    , _pssPrice = Nothing
+    }
+
+-- | 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});
+
+-- | The number of months remaining in the reservation. For example, 2 is the
+-- second to the last month before the capacity reservation expires.
+pssTerm :: Lens' PriceScheduleSpecification (Maybe Integer)
+pssTerm = lens _pssTerm (\ s a -> s{_pssTerm = a});
+
+-- | The fixed price for the term.
+pssPrice :: Lens' PriceScheduleSpecification (Maybe Double)
+pssPrice = lens _pssPrice (\ s a -> s{_pssPrice = a});
+
+instance ToQuery PriceScheduleSpecification where
+        toQuery PriceScheduleSpecification'{..}
+          = mconcat
+              ["CurrencyCode" =: _pssCurrencyCode,
+               "Term" =: _pssTerm, "Price" =: _pssPrice]
+
+-- | Describes a Reserved Instance offering.
+--
+-- /See:/ 'pricingDetail' smart constructor.
+data PricingDetail = PricingDetail'
+    { _pdCount :: !(Maybe Int)
+    , _pdPrice :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PricingDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdCount'
+--
+-- * 'pdPrice'
+pricingDetail
+    :: PricingDetail
+pricingDetail =
+    PricingDetail'
+    { _pdCount = Nothing
+    , _pdPrice = Nothing
+    }
+
+-- | The number of instances available for the price.
+pdCount :: Lens' PricingDetail (Maybe Int)
+pdCount = lens _pdCount (\ s a -> s{_pdCount = a});
+
+-- | The price per instance.
+pdPrice :: Lens' PricingDetail (Maybe Double)
+pdPrice = lens _pdPrice (\ s a -> s{_pdPrice = a});
+
+instance FromXML PricingDetail where
+        parseXML x
+          = PricingDetail' <$>
+              (x .@? "count") <*> (x .@? "price")
+
+-- | Describes a secondary private IP address for a network interface.
+--
+-- /See:/ 'privateIPAddressSpecification' smart constructor.
+data PrivateIPAddressSpecification = PrivateIPAddressSpecification'
+    { _piasPrimary          :: !(Maybe Bool)
+    , _piasPrivateIPAddress :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PrivateIPAddressSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piasPrimary'
+--
+-- * 'piasPrivateIPAddress'
+privateIPAddressSpecification
+    :: Text -- ^ 'piasPrivateIPAddress'
+    -> PrivateIPAddressSpecification
+privateIPAddressSpecification pPrivateIPAddress_ =
+    PrivateIPAddressSpecification'
+    { _piasPrimary = Nothing
+    , _piasPrivateIPAddress = pPrivateIPAddress_
+    }
+
+-- | Indicates whether the private IP address is the primary private IP
+-- address. Only one IP address can be designated as primary.
+piasPrimary :: Lens' PrivateIPAddressSpecification (Maybe Bool)
+piasPrimary = lens _piasPrimary (\ s a -> s{_piasPrimary = a});
+
+-- | The private IP addresses.
+piasPrivateIPAddress :: Lens' PrivateIPAddressSpecification Text
+piasPrivateIPAddress = lens _piasPrivateIPAddress (\ s a -> s{_piasPrivateIPAddress = a});
+
+instance FromXML PrivateIPAddressSpecification where
+        parseXML x
+          = PrivateIPAddressSpecification' <$>
+              (x .@? "primary") <*> (x .@ "privateIpAddress")
+
+instance ToQuery PrivateIPAddressSpecification where
+        toQuery PrivateIPAddressSpecification'{..}
+          = mconcat
+              ["Primary" =: _piasPrimary,
+               "PrivateIpAddress" =: _piasPrivateIPAddress]
+
+-- | Describes a product code.
+--
+-- /See:/ 'productCode' smart constructor.
+data ProductCode = ProductCode'
+    { _pcProductCodeType :: !(Maybe ProductCodeValues)
+    , _pcProductCodeId   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProductCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pcProductCodeType'
+--
+-- * 'pcProductCodeId'
+productCode
+    :: ProductCode
+productCode =
+    ProductCode'
+    { _pcProductCodeType = Nothing
+    , _pcProductCodeId = Nothing
+    }
+
+-- | The type of product code.
+pcProductCodeType :: Lens' ProductCode (Maybe ProductCodeValues)
+pcProductCodeType = lens _pcProductCodeType (\ s a -> s{_pcProductCodeType = a});
+
+-- | The product code.
+pcProductCodeId :: Lens' ProductCode (Maybe Text)
+pcProductCodeId = lens _pcProductCodeId (\ s a -> s{_pcProductCodeId = a});
+
+instance FromXML ProductCode where
+        parseXML x
+          = ProductCode' <$>
+              (x .@? "type") <*> (x .@? "productCode")
+
+-- | Describes a virtual private gateway propagating route.
+--
+-- /See:/ 'propagatingVGW' smart constructor.
+newtype PropagatingVGW = PropagatingVGW'
+    { _pvGatewayId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PropagatingVGW' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pvGatewayId'
+propagatingVGW
+    :: PropagatingVGW
+propagatingVGW =
+    PropagatingVGW'
+    { _pvGatewayId = Nothing
+    }
+
+-- | The ID of the virtual private gateway (VGW).
+pvGatewayId :: Lens' PropagatingVGW (Maybe Text)
+pvGatewayId = lens _pvGatewayId (\ s a -> s{_pvGatewayId = a});
+
+instance FromXML PropagatingVGW where
+        parseXML x = PropagatingVGW' <$> (x .@? "gatewayId")
+
+-- | Describes a recurring charge.
+--
+-- /See:/ 'recurringCharge' smart constructor.
+data RecurringCharge = RecurringCharge'
+    { _rcAmount    :: !(Maybe Double)
+    , _rcFrequency :: !(Maybe RecurringChargeFrequency)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecurringCharge' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcAmount'
+--
+-- * 'rcFrequency'
+recurringCharge
+    :: RecurringCharge
+recurringCharge =
+    RecurringCharge'
+    { _rcAmount = Nothing
+    , _rcFrequency = Nothing
+    }
+
+-- | The amount of the recurring charge.
+rcAmount :: Lens' RecurringCharge (Maybe Double)
+rcAmount = lens _rcAmount (\ s a -> s{_rcAmount = a});
+
+-- | The frequency of the recurring charge.
+rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)
+rcFrequency = lens _rcFrequency (\ s a -> s{_rcFrequency = a});
+
+instance FromXML RecurringCharge where
+        parseXML x
+          = RecurringCharge' <$>
+              (x .@? "amount") <*> (x .@? "frequency")
+
+-- | Describes a region.
+--
+-- /See:/ 'regionInfo' smart constructor.
+data RegionInfo = RegionInfo'
+    { _riRegionName :: !(Maybe Text)
+    , _riEndpoint   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riRegionName'
+--
+-- * 'riEndpoint'
+regionInfo
+    :: RegionInfo
+regionInfo =
+    RegionInfo'
+    { _riRegionName = Nothing
+    , _riEndpoint = Nothing
+    }
+
+-- | The name of the region.
+riRegionName :: Lens' RegionInfo (Maybe Text)
+riRegionName = lens _riRegionName (\ s a -> s{_riRegionName = a});
+
+-- | The region service endpoint.
+riEndpoint :: Lens' RegionInfo (Maybe Text)
+riEndpoint = lens _riEndpoint (\ s a -> s{_riEndpoint = a});
+
+instance FromXML RegionInfo where
+        parseXML x
+          = RegionInfo' <$>
+              (x .@? "regionName") <*> (x .@? "regionEndpoint")
+
+-- | Describes the launch specification for an instance.
+--
+-- /See:/ 'requestSpotLaunchSpecification' smart constructor.
+data RequestSpotLaunchSpecification = RequestSpotLaunchSpecification'
+    { _rslsSecurityGroupIds    :: !(Maybe [Text])
+    , _rslsSecurityGroups      :: !(Maybe [Text])
+    , _rslsKeyName             :: !(Maybe Text)
+    , _rslsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
+    , _rslsRAMDiskId           :: !(Maybe Text)
+    , _rslsSubnetId            :: !(Maybe Text)
+    , _rslsKernelId            :: !(Maybe Text)
+    , _rslsInstanceType        :: !(Maybe InstanceType)
+    , _rslsEBSOptimized        :: !(Maybe Bool)
+    , _rslsUserData            :: !(Maybe Text)
+    , _rslsMonitoring          :: !(Maybe RunInstancesMonitoringEnabled)
+    , _rslsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
+    , _rslsImageId             :: !(Maybe Text)
+    , _rslsAddressingType      :: !(Maybe Text)
+    , _rslsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
+    , _rslsPlacement           :: !(Maybe SpotPlacement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RequestSpotLaunchSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslsSecurityGroupIds'
+--
+-- * 'rslsSecurityGroups'
+--
+-- * 'rslsKeyName'
+--
+-- * 'rslsNetworkInterfaces'
+--
+-- * 'rslsRAMDiskId'
+--
+-- * 'rslsSubnetId'
+--
+-- * 'rslsKernelId'
+--
+-- * 'rslsInstanceType'
+--
+-- * 'rslsEBSOptimized'
+--
+-- * 'rslsUserData'
+--
+-- * 'rslsMonitoring'
+--
+-- * 'rslsIAMInstanceProfile'
+--
+-- * 'rslsImageId'
+--
+-- * 'rslsAddressingType'
+--
+-- * 'rslsBlockDeviceMappings'
+--
+-- * 'rslsPlacement'
+requestSpotLaunchSpecification
+    :: RequestSpotLaunchSpecification
+requestSpotLaunchSpecification =
+    RequestSpotLaunchSpecification'
+    { _rslsSecurityGroupIds = Nothing
+    , _rslsSecurityGroups = Nothing
+    , _rslsKeyName = Nothing
+    , _rslsNetworkInterfaces = Nothing
+    , _rslsRAMDiskId = Nothing
+    , _rslsSubnetId = Nothing
+    , _rslsKernelId = Nothing
+    , _rslsInstanceType = Nothing
+    , _rslsEBSOptimized = Nothing
+    , _rslsUserData = Nothing
+    , _rslsMonitoring = Nothing
+    , _rslsIAMInstanceProfile = Nothing
+    , _rslsImageId = Nothing
+    , _rslsAddressingType = Nothing
+    , _rslsBlockDeviceMappings = Nothing
+    , _rslsPlacement = Nothing
+    }
+
+-- | Undocumented member.
+rslsSecurityGroupIds :: Lens' RequestSpotLaunchSpecification [Text]
+rslsSecurityGroupIds = lens _rslsSecurityGroupIds (\ s a -> s{_rslsSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+rslsSecurityGroups :: Lens' RequestSpotLaunchSpecification [Text]
+rslsSecurityGroups = lens _rslsSecurityGroups (\ s a -> s{_rslsSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The name of the key pair.
+rslsKeyName :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsKeyName = lens _rslsKeyName (\ s a -> s{_rslsKeyName = a});
+
+-- | One or more network interfaces.
+rslsNetworkInterfaces :: Lens' RequestSpotLaunchSpecification [InstanceNetworkInterfaceSpecification]
+rslsNetworkInterfaces = lens _rslsNetworkInterfaces (\ s a -> s{_rslsNetworkInterfaces = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk.
+rslsRAMDiskId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsRAMDiskId = lens _rslsRAMDiskId (\ s a -> s{_rslsRAMDiskId = a});
+
+-- | The ID of the subnet in which to launch the instance.
+rslsSubnetId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsSubnetId = lens _rslsSubnetId (\ s a -> s{_rslsSubnetId = a});
+
+-- | The ID of the kernel.
+rslsKernelId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsKernelId = lens _rslsKernelId (\ s a -> s{_rslsKernelId = a});
+
+-- | The instance type.
+rslsInstanceType :: Lens' RequestSpotLaunchSpecification (Maybe InstanceType)
+rslsInstanceType = lens _rslsInstanceType (\ s a -> s{_rslsInstanceType = a});
+
+-- | Indicates whether the instance is optimized for EBS I\/O. This
+-- optimization provides dedicated throughput to Amazon EBS and an
+-- optimized configuration stack to provide optimal EBS I\/O performance.
+-- This optimization isn\'t available with all instance types. Additional
+-- usage charges apply when using an EBS Optimized instance.
+--
+-- Default: 'false'
+rslsEBSOptimized :: Lens' RequestSpotLaunchSpecification (Maybe Bool)
+rslsEBSOptimized = lens _rslsEBSOptimized (\ s a -> s{_rslsEBSOptimized = a});
+
+-- | The Base64-encoded MIME user data to make available to the instances.
+rslsUserData :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsUserData = lens _rslsUserData (\ s a -> s{_rslsUserData = a});
+
+-- | Undocumented member.
+rslsMonitoring :: Lens' RequestSpotLaunchSpecification (Maybe RunInstancesMonitoringEnabled)
+rslsMonitoring = lens _rslsMonitoring (\ s a -> s{_rslsMonitoring = a});
+
+-- | The IAM instance profile.
+rslsIAMInstanceProfile :: Lens' RequestSpotLaunchSpecification (Maybe IAMInstanceProfileSpecification)
+rslsIAMInstanceProfile = lens _rslsIAMInstanceProfile (\ s a -> s{_rslsIAMInstanceProfile = a});
+
+-- | The ID of the AMI.
+rslsImageId :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsImageId = lens _rslsImageId (\ s a -> s{_rslsImageId = a});
+
+-- | Deprecated.
+rslsAddressingType :: Lens' RequestSpotLaunchSpecification (Maybe Text)
+rslsAddressingType = lens _rslsAddressingType (\ s a -> s{_rslsAddressingType = a});
+
+-- | One or more block device mapping entries.
+rslsBlockDeviceMappings :: Lens' RequestSpotLaunchSpecification [BlockDeviceMapping]
+rslsBlockDeviceMappings = lens _rslsBlockDeviceMappings (\ s a -> s{_rslsBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The placement information for the instance.
+rslsPlacement :: Lens' RequestSpotLaunchSpecification (Maybe SpotPlacement)
+rslsPlacement = lens _rslsPlacement (\ s a -> s{_rslsPlacement = a});
+
+instance ToQuery RequestSpotLaunchSpecification where
+        toQuery RequestSpotLaunchSpecification'{..}
+          = mconcat
+              [toQuery
+                 (toQueryList "SecurityGroupId" <$>
+                    _rslsSecurityGroupIds),
+               toQuery
+                 (toQueryList "SecurityGroup" <$>
+                    _rslsSecurityGroups),
+               "KeyName" =: _rslsKeyName,
+               toQuery
+                 (toQueryList "NetworkInterface" <$>
+                    _rslsNetworkInterfaces),
+               "RamdiskId" =: _rslsRAMDiskId,
+               "SubnetId" =: _rslsSubnetId,
+               "KernelId" =: _rslsKernelId,
+               "InstanceType" =: _rslsInstanceType,
+               "EbsOptimized" =: _rslsEBSOptimized,
+               "UserData" =: _rslsUserData,
+               "Monitoring" =: _rslsMonitoring,
+               "IamInstanceProfile" =: _rslsIAMInstanceProfile,
+               "ImageId" =: _rslsImageId,
+               "AddressingType" =: _rslsAddressingType,
+               toQuery
+                 (toQueryList "BlockDeviceMapping" <$>
+                    _rslsBlockDeviceMappings),
+               "Placement" =: _rslsPlacement]
+
+-- | Describes a reservation.
+--
+-- /See:/ 'reservation' smart constructor.
+data Reservation = Reservation'
+    { _rGroups        :: !(Maybe [GroupIdentifier])
+    , _rInstances     :: !(Maybe [Instance])
+    , _rRequesterId   :: !(Maybe Text)
+    , _rReservationId :: !Text
+    , _rOwnerId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Reservation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rGroups'
+--
+-- * 'rInstances'
+--
+-- * 'rRequesterId'
+--
+-- * 'rReservationId'
+--
+-- * 'rOwnerId'
+reservation
+    :: Text -- ^ 'rReservationId'
+    -> Text -- ^ 'rOwnerId'
+    -> Reservation
+reservation pReservationId_ pOwnerId_ =
+    Reservation'
+    { _rGroups = Nothing
+    , _rInstances = Nothing
+    , _rRequesterId = Nothing
+    , _rReservationId = pReservationId_
+    , _rOwnerId = pOwnerId_
+    }
+
+-- | One or more security groups.
+rGroups :: Lens' Reservation [GroupIdentifier]
+rGroups = lens _rGroups (\ s a -> s{_rGroups = a}) . _Default . _Coerce;
+
+-- | One or more instances.
+rInstances :: Lens' Reservation [Instance]
+rInstances = lens _rInstances (\ s a -> s{_rInstances = a}) . _Default . _Coerce;
+
+-- | The ID of the requester that launched the instances on your behalf (for
+-- example, AWS Management Console or Auto Scaling).
+rRequesterId :: Lens' Reservation (Maybe Text)
+rRequesterId = lens _rRequesterId (\ s a -> s{_rRequesterId = a});
+
+-- | The ID of the reservation.
+rReservationId :: Lens' Reservation Text
+rReservationId = lens _rReservationId (\ s a -> s{_rReservationId = a});
+
+-- | The ID of the AWS account that owns the reservation.
+rOwnerId :: Lens' Reservation Text
+rOwnerId = lens _rOwnerId (\ s a -> s{_rOwnerId = a});
+
+instance FromXML Reservation where
+        parseXML x
+          = Reservation' <$>
+              (x .@? "groupSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*>
+                (x .@? "instancesSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "requesterId")
+                <*> (x .@ "reservationId")
+                <*> (x .@ "ownerId")
+
+-- | Describes the limit price of a Reserved Instance offering.
+--
+-- /See:/ 'reservedInstanceLimitPrice' smart constructor.
+data ReservedInstanceLimitPrice = ReservedInstanceLimitPrice'
+    { _rilpAmount       :: !(Maybe Double)
+    , _rilpCurrencyCode :: !(Maybe CurrencyCodeValues)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstanceLimitPrice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rilpAmount'
+--
+-- * 'rilpCurrencyCode'
+reservedInstanceLimitPrice
+    :: ReservedInstanceLimitPrice
+reservedInstanceLimitPrice =
+    ReservedInstanceLimitPrice'
+    { _rilpAmount = Nothing
+    , _rilpCurrencyCode = Nothing
+    }
+
+-- | Used for Reserved Instance Marketplace offerings. Specifies the limit
+-- price on the total order (instanceCount * price).
+rilpAmount :: Lens' ReservedInstanceLimitPrice (Maybe Double)
+rilpAmount = lens _rilpAmount (\ s a -> s{_rilpAmount = a});
+
+-- | The currency in which the 'limitPrice' amount is specified. At this
+-- time, the only supported currency is 'USD'.
+rilpCurrencyCode :: Lens' ReservedInstanceLimitPrice (Maybe CurrencyCodeValues)
+rilpCurrencyCode = lens _rilpCurrencyCode (\ s a -> s{_rilpCurrencyCode = a});
+
+instance ToQuery ReservedInstanceLimitPrice where
+        toQuery ReservedInstanceLimitPrice'{..}
+          = mconcat
+              ["Amount" =: _rilpAmount,
+               "CurrencyCode" =: _rilpCurrencyCode]
+
+-- | Describes a Reserved Instance.
+--
+-- /See:/ 'reservedInstances' smart constructor.
+data ReservedInstances = ReservedInstances'
+    { _riState               :: !(Maybe ReservedInstanceState)
+    , _riCurrencyCode        :: !(Maybe CurrencyCodeValues)
+    , _riInstanceCount       :: !(Maybe Int)
+    , _riProductDescription  :: !(Maybe RIProductDescription)
+    , _riStart               :: !(Maybe ISO8601)
+    , _riInstanceType        :: !(Maybe InstanceType)
+    , _riEnd                 :: !(Maybe ISO8601)
+    , _riAvailabilityZone    :: !(Maybe Text)
+    , _riRecurringCharges    :: !(Maybe [RecurringCharge])
+    , _riOfferingType        :: !(Maybe OfferingTypeValues)
+    , _riUsagePrice          :: !(Maybe Double)
+    , _riFixedPrice          :: !(Maybe Double)
+    , _riReservedInstancesId :: !(Maybe Text)
+    , _riInstanceTenancy     :: !(Maybe Tenancy)
+    , _riDuration            :: !(Maybe Integer)
+    , _riTags                :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riState'
+--
+-- * 'riCurrencyCode'
+--
+-- * 'riInstanceCount'
+--
+-- * 'riProductDescription'
+--
+-- * 'riStart'
+--
+-- * 'riInstanceType'
+--
+-- * 'riEnd'
+--
+-- * 'riAvailabilityZone'
+--
+-- * 'riRecurringCharges'
+--
+-- * 'riOfferingType'
+--
+-- * 'riUsagePrice'
+--
+-- * 'riFixedPrice'
+--
+-- * 'riReservedInstancesId'
+--
+-- * 'riInstanceTenancy'
+--
+-- * 'riDuration'
+--
+-- * 'riTags'
+reservedInstances
+    :: ReservedInstances
+reservedInstances =
+    ReservedInstances'
+    { _riState = Nothing
+    , _riCurrencyCode = Nothing
+    , _riInstanceCount = Nothing
+    , _riProductDescription = Nothing
+    , _riStart = Nothing
+    , _riInstanceType = Nothing
+    , _riEnd = Nothing
+    , _riAvailabilityZone = Nothing
+    , _riRecurringCharges = Nothing
+    , _riOfferingType = Nothing
+    , _riUsagePrice = Nothing
+    , _riFixedPrice = Nothing
+    , _riReservedInstancesId = Nothing
+    , _riInstanceTenancy = Nothing
+    , _riDuration = Nothing
+    , _riTags = Nothing
+    }
+
+-- | 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
+-- 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.
+riInstanceCount :: Lens' ReservedInstances (Maybe Int)
+riInstanceCount = lens _riInstanceCount (\ s a -> s{_riInstanceCount = a});
+
+-- | 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.
+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.
+riInstanceType :: Lens' ReservedInstances (Maybe InstanceType)
+riInstanceType = lens _riInstanceType (\ s a -> s{_riInstanceType = a});
+
+-- | 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.
+riAvailabilityZone :: Lens' ReservedInstances (Maybe Text)
+riAvailabilityZone = lens _riAvailabilityZone (\ s a -> s{_riAvailabilityZone = a});
+
+-- | The recurring charge tag assigned to the resource.
+riRecurringCharges :: Lens' ReservedInstances [RecurringCharge]
+riRecurringCharges = lens _riRecurringCharges (\ s a -> s{_riRecurringCharges = a}) . _Default . _Coerce;
+
+-- | 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.
+riUsagePrice :: Lens' ReservedInstances (Maybe Double)
+riUsagePrice = lens _riUsagePrice (\ s a -> s{_riUsagePrice = a});
+
+-- | 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.
+riReservedInstancesId :: Lens' ReservedInstances (Maybe Text)
+riReservedInstancesId = lens _riReservedInstancesId (\ s a -> s{_riReservedInstancesId = a});
+
+-- | The tenancy of the reserved instance.
+riInstanceTenancy :: Lens' ReservedInstances (Maybe Tenancy)
+riInstanceTenancy = lens _riInstanceTenancy (\ s a -> s{_riInstanceTenancy = a});
+
+-- | The duration of the Reserved Instance, in seconds.
+riDuration :: Lens' ReservedInstances (Maybe Integer)
+riDuration = lens _riDuration (\ s a -> s{_riDuration = a});
+
+-- | Any tags assigned to the resource.
+riTags :: Lens' ReservedInstances [Tag]
+riTags = lens _riTags (\ s a -> s{_riTags = a}) . _Default . _Coerce;
+
+instance FromXML ReservedInstances where
+        parseXML x
+          = ReservedInstances' <$>
+              (x .@? "state") <*> (x .@? "currencyCode") <*>
+                (x .@? "instanceCount")
+                <*> (x .@? "productDescription")
+                <*> (x .@? "start")
+                <*> (x .@? "instanceType")
+                <*> (x .@? "end")
+                <*> (x .@? "availabilityZone")
+                <*>
+                (x .@? "recurringCharges" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "offeringType")
+                <*> (x .@? "usagePrice")
+                <*> (x .@? "fixedPrice")
+                <*> (x .@? "reservedInstancesId")
+                <*> (x .@? "instanceTenancy")
+                <*> (x .@? "duration")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes the configuration settings for the modified Reserved
+-- Instances.
+--
+-- /See:/ 'reservedInstancesConfiguration' smart constructor.
+data ReservedInstancesConfiguration = ReservedInstancesConfiguration'
+    { _ricPlatform         :: !(Maybe Text)
+    , _ricInstanceCount    :: !(Maybe Int)
+    , _ricInstanceType     :: !(Maybe InstanceType)
+    , _ricAvailabilityZone :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ricPlatform'
+--
+-- * 'ricInstanceCount'
+--
+-- * 'ricInstanceType'
+--
+-- * 'ricAvailabilityZone'
+reservedInstancesConfiguration
+    :: ReservedInstancesConfiguration
+reservedInstancesConfiguration =
+    ReservedInstancesConfiguration'
+    { _ricPlatform = Nothing
+    , _ricInstanceCount = Nothing
+    , _ricInstanceType = Nothing
+    , _ricAvailabilityZone = Nothing
+    }
+
+-- | 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.
+ricInstanceCount :: Lens' ReservedInstancesConfiguration (Maybe Int)
+ricInstanceCount = lens _ricInstanceCount (\ s a -> s{_ricInstanceCount = a});
+
+-- | 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.
+ricAvailabilityZone :: Lens' ReservedInstancesConfiguration (Maybe Text)
+ricAvailabilityZone = lens _ricAvailabilityZone (\ s a -> s{_ricAvailabilityZone = a});
+
+instance FromXML ReservedInstancesConfiguration where
+        parseXML x
+          = ReservedInstancesConfiguration' <$>
+              (x .@? "platform") <*> (x .@? "instanceCount") <*>
+                (x .@? "instanceType")
+                <*> (x .@? "availabilityZone")
+
+instance ToQuery ReservedInstancesConfiguration where
+        toQuery ReservedInstancesConfiguration'{..}
+          = mconcat
+              ["Platform" =: _ricPlatform,
+               "InstanceCount" =: _ricInstanceCount,
+               "InstanceType" =: _ricInstanceType,
+               "AvailabilityZone" =: _ricAvailabilityZone]
+
+-- | Describes the ID of a Reserved Instance.
+--
+-- /See:/ 'reservedInstancesId' smart constructor.
+newtype ReservedInstancesId = ReservedInstancesId'
+    { _riiReservedInstancesId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riiReservedInstancesId'
+reservedInstancesId
+    :: ReservedInstancesId
+reservedInstancesId =
+    ReservedInstancesId'
+    { _riiReservedInstancesId = Nothing
+    }
+
+-- | The ID of the Reserved Instance.
+riiReservedInstancesId :: Lens' ReservedInstancesId (Maybe Text)
+riiReservedInstancesId = lens _riiReservedInstancesId (\ s a -> s{_riiReservedInstancesId = a});
+
+instance FromXML ReservedInstancesId where
+        parseXML x
+          = ReservedInstancesId' <$>
+              (x .@? "reservedInstancesId")
+
+-- | Describes a Reserved Instance listing.
+--
+-- /See:/ 'reservedInstancesListing' smart constructor.
+data ReservedInstancesListing = ReservedInstancesListing'
+    { _rilStatus                     :: !(Maybe ListingStatus)
+    , _rilClientToken                :: !(Maybe Text)
+    , _rilUpdateDate                 :: !(Maybe ISO8601)
+    , _rilCreateDate                 :: !(Maybe ISO8601)
+    , _rilPriceSchedules             :: !(Maybe [PriceSchedule])
+    , _rilStatusMessage              :: !(Maybe Text)
+    , _rilReservedInstancesId        :: !(Maybe Text)
+    , _rilTags                       :: !(Maybe [Tag])
+    , _rilInstanceCounts             :: !(Maybe [InstanceCount])
+    , _rilReservedInstancesListingId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesListing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rilStatus'
+--
+-- * 'rilClientToken'
+--
+-- * 'rilUpdateDate'
+--
+-- * 'rilCreateDate'
+--
+-- * 'rilPriceSchedules'
+--
+-- * 'rilStatusMessage'
+--
+-- * 'rilReservedInstancesId'
+--
+-- * 'rilTags'
+--
+-- * 'rilInstanceCounts'
+--
+-- * 'rilReservedInstancesListingId'
+reservedInstancesListing
+    :: ReservedInstancesListing
+reservedInstancesListing =
+    ReservedInstancesListing'
+    { _rilStatus = Nothing
+    , _rilClientToken = Nothing
+    , _rilUpdateDate = Nothing
+    , _rilCreateDate = Nothing
+    , _rilPriceSchedules = Nothing
+    , _rilStatusMessage = Nothing
+    , _rilReservedInstancesId = Nothing
+    , _rilTags = Nothing
+    , _rilInstanceCounts = Nothing
+    , _rilReservedInstancesListingId = Nothing
+    }
+
+-- | The status of the Reserved Instance listing.
+rilStatus :: Lens' ReservedInstancesListing (Maybe ListingStatus)
+rilStatus = lens _rilStatus (\ s a -> s{_rilStatus = a});
+
+-- | A unique, case-sensitive key supplied by the client to ensure that the
+-- request is idempotent. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
+rilClientToken :: Lens' ReservedInstancesListing (Maybe Text)
+rilClientToken = lens _rilClientToken (\ s a -> s{_rilClientToken = a});
+
+-- | The last modified timestamp of the listing.
+rilUpdateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)
+rilUpdateDate = lens _rilUpdateDate (\ s a -> s{_rilUpdateDate = a}) . mapping _Time;
+
+-- | The time the listing was created.
+rilCreateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)
+rilCreateDate = lens _rilCreateDate (\ s a -> s{_rilCreateDate = a}) . mapping _Time;
+
+-- | 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
+-- response can be blank.
+rilStatusMessage :: Lens' ReservedInstancesListing (Maybe Text)
+rilStatusMessage = lens _rilStatusMessage (\ s a -> s{_rilStatusMessage = a});
+
+-- | The ID of the Reserved Instance.
+rilReservedInstancesId :: Lens' ReservedInstancesListing (Maybe Text)
+rilReservedInstancesId = lens _rilReservedInstancesId (\ s a -> s{_rilReservedInstancesId = a});
+
+-- | Any tags assigned to the resource.
+rilTags :: Lens' ReservedInstancesListing [Tag]
+rilTags = lens _rilTags (\ s a -> s{_rilTags = a}) . _Default . _Coerce;
+
+-- | The number of instances in this state.
+rilInstanceCounts :: Lens' ReservedInstancesListing [InstanceCount]
+rilInstanceCounts = lens _rilInstanceCounts (\ s a -> s{_rilInstanceCounts = a}) . _Default . _Coerce;
+
+-- | The ID of the Reserved Instance listing.
+rilReservedInstancesListingId :: Lens' ReservedInstancesListing (Maybe Text)
+rilReservedInstancesListingId = lens _rilReservedInstancesListingId (\ s a -> s{_rilReservedInstancesListingId = a});
+
+instance FromXML ReservedInstancesListing where
+        parseXML x
+          = ReservedInstancesListing' <$>
+              (x .@? "status") <*> (x .@? "clientToken") <*>
+                (x .@? "updateDate")
+                <*> (x .@? "createDate")
+                <*>
+                (x .@? "priceSchedules" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "statusMessage")
+                <*> (x .@? "reservedInstancesId")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "instanceCounts" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "reservedInstancesListingId")
+
+-- | Describes a Reserved Instance modification.
+--
+-- /See:/ 'reservedInstancesModification' smart constructor.
+data ReservedInstancesModification = ReservedInstancesModification'
+    { _rimModificationResults             :: !(Maybe [ReservedInstancesModificationResult])
+    , _rimStatus                          :: !(Maybe Text)
+    , _rimClientToken                     :: !(Maybe Text)
+    , _rimUpdateDate                      :: !(Maybe ISO8601)
+    , _rimCreateDate                      :: !(Maybe ISO8601)
+    , _rimEffectiveDate                   :: !(Maybe ISO8601)
+    , _rimStatusMessage                   :: !(Maybe Text)
+    , _rimReservedInstancesModificationId :: !(Maybe Text)
+    , _rimReservedInstancesIds            :: !(Maybe [ReservedInstancesId])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesModification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rimModificationResults'
+--
+-- * 'rimStatus'
+--
+-- * 'rimClientToken'
+--
+-- * 'rimUpdateDate'
+--
+-- * 'rimCreateDate'
+--
+-- * 'rimEffectiveDate'
+--
+-- * 'rimStatusMessage'
+--
+-- * 'rimReservedInstancesModificationId'
+--
+-- * 'rimReservedInstancesIds'
+reservedInstancesModification
+    :: ReservedInstancesModification
+reservedInstancesModification =
+    ReservedInstancesModification'
+    { _rimModificationResults = Nothing
+    , _rimStatus = Nothing
+    , _rimClientToken = Nothing
+    , _rimUpdateDate = Nothing
+    , _rimCreateDate = Nothing
+    , _rimEffectiveDate = Nothing
+    , _rimStatusMessage = Nothing
+    , _rimReservedInstancesModificationId = Nothing
+    , _rimReservedInstancesIds = Nothing
+    }
+
+-- | Contains target configurations along with their corresponding new
+-- 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.
+rimStatus :: Lens' ReservedInstancesModification (Maybe Text)
+rimStatus = lens _rimStatus (\ s a -> s{_rimStatus = a});
+
+-- | A unique, case-sensitive key supplied by the client to ensure that the
+-- request is idempotent. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
+rimClientToken :: Lens' ReservedInstancesModification (Maybe Text)
+rimClientToken = lens _rimClientToken (\ s a -> s{_rimClientToken = a});
+
+-- | The time when the modification request was last updated.
+rimUpdateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
+rimUpdateDate = lens _rimUpdateDate (\ s a -> s{_rimUpdateDate = a}) . mapping _Time;
+
+-- | The time when the modification request was created.
+rimCreateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
+rimCreateDate = lens _rimCreateDate (\ s a -> s{_rimCreateDate = a}) . mapping _Time;
+
+-- | The time for the modification to become effective.
+rimEffectiveDate :: Lens' ReservedInstancesModification (Maybe UTCTime)
+rimEffectiveDate = lens _rimEffectiveDate (\ s a -> s{_rimEffectiveDate = a}) . mapping _Time;
+
+-- | The reason for the status.
+rimStatusMessage :: Lens' ReservedInstancesModification (Maybe Text)
+rimStatusMessage = lens _rimStatusMessage (\ s a -> s{_rimStatusMessage = a});
+
+-- | 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.
+rimReservedInstancesIds :: Lens' ReservedInstancesModification [ReservedInstancesId]
+rimReservedInstancesIds = lens _rimReservedInstancesIds (\ s a -> s{_rimReservedInstancesIds = a}) . _Default . _Coerce;
+
+instance FromXML ReservedInstancesModification where
+        parseXML x
+          = ReservedInstancesModification' <$>
+              (x .@? "modificationResultSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "status")
+                <*> (x .@? "clientToken")
+                <*> (x .@? "updateDate")
+                <*> (x .@? "createDate")
+                <*> (x .@? "effectiveDate")
+                <*> (x .@? "statusMessage")
+                <*> (x .@? "reservedInstancesModificationId")
+                <*>
+                (x .@? "reservedInstancesSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | /See:/ 'reservedInstancesModificationResult' smart constructor.
+data ReservedInstancesModificationResult = ReservedInstancesModificationResult'
+    { _rimrReservedInstancesId :: !(Maybe Text)
+    , _rimrTargetConfiguration :: !(Maybe ReservedInstancesConfiguration)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesModificationResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rimrReservedInstancesId'
+--
+-- * 'rimrTargetConfiguration'
+reservedInstancesModificationResult
+    :: ReservedInstancesModificationResult
+reservedInstancesModificationResult =
+    ReservedInstancesModificationResult'
+    { _rimrReservedInstancesId = Nothing
+    , _rimrTargetConfiguration = Nothing
+    }
+
+-- | 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
+-- modification request.
+rimrTargetConfiguration :: Lens' ReservedInstancesModificationResult (Maybe ReservedInstancesConfiguration)
+rimrTargetConfiguration = lens _rimrTargetConfiguration (\ s a -> s{_rimrTargetConfiguration = a});
+
+instance FromXML ReservedInstancesModificationResult
+         where
+        parseXML x
+          = ReservedInstancesModificationResult' <$>
+              (x .@? "reservedInstancesId") <*>
+                (x .@? "targetConfiguration")
+
+-- | Describes a Reserved Instance offering.
+--
+-- /See:/ 'reservedInstancesOffering' smart constructor.
+data ReservedInstancesOffering = ReservedInstancesOffering'
+    { _rioMarketplace                 :: !(Maybe Bool)
+    , _rioCurrencyCode                :: !(Maybe CurrencyCodeValues)
+    , _rioProductDescription          :: !(Maybe RIProductDescription)
+    , _rioInstanceType                :: !(Maybe InstanceType)
+    , _rioAvailabilityZone            :: !(Maybe Text)
+    , _rioPricingDetails              :: !(Maybe [PricingDetail])
+    , _rioRecurringCharges            :: !(Maybe [RecurringCharge])
+    , _rioOfferingType                :: !(Maybe OfferingTypeValues)
+    , _rioUsagePrice                  :: !(Maybe Double)
+    , _rioFixedPrice                  :: !(Maybe Double)
+    , _rioInstanceTenancy             :: !(Maybe Tenancy)
+    , _rioReservedInstancesOfferingId :: !(Maybe Text)
+    , _rioDuration                    :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedInstancesOffering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rioMarketplace'
+--
+-- * 'rioCurrencyCode'
+--
+-- * 'rioProductDescription'
+--
+-- * 'rioInstanceType'
+--
+-- * 'rioAvailabilityZone'
+--
+-- * 'rioPricingDetails'
+--
+-- * 'rioRecurringCharges'
+--
+-- * 'rioOfferingType'
+--
+-- * 'rioUsagePrice'
+--
+-- * 'rioFixedPrice'
+--
+-- * 'rioInstanceTenancy'
+--
+-- * 'rioReservedInstancesOfferingId'
+--
+-- * 'rioDuration'
+reservedInstancesOffering
+    :: ReservedInstancesOffering
+reservedInstancesOffering =
+    ReservedInstancesOffering'
+    { _rioMarketplace = Nothing
+    , _rioCurrencyCode = Nothing
+    , _rioProductDescription = Nothing
+    , _rioInstanceType = Nothing
+    , _rioAvailabilityZone = Nothing
+    , _rioPricingDetails = Nothing
+    , _rioRecurringCharges = Nothing
+    , _rioOfferingType = Nothing
+    , _rioUsagePrice = Nothing
+    , _rioFixedPrice = Nothing
+    , _rioInstanceTenancy = Nothing
+    , _rioReservedInstancesOfferingId = Nothing
+    , _rioDuration = Nothing
+    }
+
+-- | Indicates whether the offering is available through the Reserved
+-- Instance Marketplace (resale) or AWS. If it\'s a Reserved Instance
+-- Marketplace offering, this is 'true'.
+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
+-- 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.
+rioProductDescription :: Lens' ReservedInstancesOffering (Maybe RIProductDescription)
+rioProductDescription = lens _rioProductDescription (\ s a -> s{_rioProductDescription = a});
+
+-- | 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.
+rioAvailabilityZone :: Lens' ReservedInstancesOffering (Maybe Text)
+rioAvailabilityZone = lens _rioAvailabilityZone (\ s a -> s{_rioAvailabilityZone = a});
+
+-- | The pricing details of the Reserved Instance offering.
+rioPricingDetails :: Lens' ReservedInstancesOffering [PricingDetail]
+rioPricingDetails = lens _rioPricingDetails (\ s a -> s{_rioPricingDetails = a}) . _Default . _Coerce;
+
+-- | The recurring charge tag assigned to the resource.
+rioRecurringCharges :: Lens' ReservedInstancesOffering [RecurringCharge]
+rioRecurringCharges = lens _rioRecurringCharges (\ s a -> s{_rioRecurringCharges = a}) . _Default . _Coerce;
+
+-- | 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.
+rioUsagePrice :: Lens' ReservedInstancesOffering (Maybe Double)
+rioUsagePrice = lens _rioUsagePrice (\ s a -> s{_rioUsagePrice = a});
+
+-- | The purchase price of the Reserved Instance.
+rioFixedPrice :: Lens' ReservedInstancesOffering (Maybe Double)
+rioFixedPrice = lens _rioFixedPrice (\ s a -> s{_rioFixedPrice = a});
+
+-- | The tenancy of the reserved instance.
+rioInstanceTenancy :: Lens' ReservedInstancesOffering (Maybe Tenancy)
+rioInstanceTenancy = lens _rioInstanceTenancy (\ s a -> s{_rioInstanceTenancy = a});
+
+-- | 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.
+rioDuration :: Lens' ReservedInstancesOffering (Maybe Integer)
+rioDuration = lens _rioDuration (\ s a -> s{_rioDuration = a});
+
+instance FromXML ReservedInstancesOffering where
+        parseXML x
+          = ReservedInstancesOffering' <$>
+              (x .@? "marketplace") <*> (x .@? "currencyCode") <*>
+                (x .@? "productDescription")
+                <*> (x .@? "instanceType")
+                <*> (x .@? "availabilityZone")
+                <*>
+                (x .@? "pricingDetailsSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "recurringCharges" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "offeringType")
+                <*> (x .@? "usagePrice")
+                <*> (x .@? "fixedPrice")
+                <*> (x .@? "instanceTenancy")
+                <*> (x .@? "reservedInstancesOfferingId")
+                <*> (x .@? "duration")
+
+-- | Describes a route in a route table.
+--
+-- /See:/ 'route' smart constructor.
+data Route = Route'
+    { _rVPCPeeringConnectionId  :: !(Maybe Text)
+    , _rInstanceId              :: !(Maybe Text)
+    , _rOrigin                  :: !(Maybe RouteOrigin)
+    , _rState                   :: !(Maybe RouteState)
+    , _rNetworkInterfaceId      :: !(Maybe Text)
+    , _rGatewayId               :: !(Maybe Text)
+    , _rInstanceOwnerId         :: !(Maybe Text)
+    , _rDestinationPrefixListId :: !(Maybe Text)
+    , _rDestinationCIdRBlock    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Route' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rVPCPeeringConnectionId'
+--
+-- * 'rInstanceId'
+--
+-- * 'rOrigin'
+--
+-- * 'rState'
+--
+-- * 'rNetworkInterfaceId'
+--
+-- * 'rGatewayId'
+--
+-- * 'rInstanceOwnerId'
+--
+-- * 'rDestinationPrefixListId'
+--
+-- * 'rDestinationCIdRBlock'
+route
+    :: Route
+route =
+    Route'
+    { _rVPCPeeringConnectionId = Nothing
+    , _rInstanceId = Nothing
+    , _rOrigin = Nothing
+    , _rState = Nothing
+    , _rNetworkInterfaceId = Nothing
+    , _rGatewayId = Nothing
+    , _rInstanceOwnerId = Nothing
+    , _rDestinationPrefixListId = Nothing
+    , _rDestinationCIdRBlock = Nothing
+    }
+
+-- | The ID of the VPC peering connection.
+rVPCPeeringConnectionId :: Lens' Route (Maybe Text)
+rVPCPeeringConnectionId = lens _rVPCPeeringConnectionId (\ s a -> s{_rVPCPeeringConnectionId = a});
+
+-- | The ID of a NAT instance in your VPC.
+rInstanceId :: Lens' Route (Maybe Text)
+rInstanceId = lens _rInstanceId (\ s a -> s{_rInstanceId = a});
+
+-- | Describes how the route was created.
+--
+-- -   'CreateRouteTable' indicates that route was automatically created
+--     when the route table was created.
+-- -   'CreateRoute' indicates that the route was manually added to the
+--     route table.
+-- -   'EnableVgwRoutePropagation' indicates that the route was propagated
+--     by route propagation.
+rOrigin :: Lens' Route (Maybe RouteOrigin)
+rOrigin = lens _rOrigin (\ s a -> s{_rOrigin = a});
+
+-- | The state of the route. The 'blackhole' state indicates that the
+-- route\'s target isn\'t available (for example, the specified gateway
+-- isn\'t attached to the VPC, or the specified NAT instance has been
+-- terminated).
+rState :: Lens' Route (Maybe RouteState)
+rState = lens _rState (\ s a -> s{_rState = a});
+
+-- | The ID of the network interface.
+rNetworkInterfaceId :: Lens' Route (Maybe Text)
+rNetworkInterfaceId = lens _rNetworkInterfaceId (\ s a -> s{_rNetworkInterfaceId = a});
+
+-- | The ID of a gateway attached to your VPC.
+rGatewayId :: Lens' Route (Maybe Text)
+rGatewayId = lens _rGatewayId (\ s a -> s{_rGatewayId = a});
+
+-- | The AWS account ID of the owner of the instance.
+rInstanceOwnerId :: Lens' Route (Maybe Text)
+rInstanceOwnerId = lens _rInstanceOwnerId (\ s a -> s{_rInstanceOwnerId = a});
+
+-- | The prefix of the AWS service.
+rDestinationPrefixListId :: Lens' Route (Maybe Text)
+rDestinationPrefixListId = lens _rDestinationPrefixListId (\ s a -> s{_rDestinationPrefixListId = a});
+
+-- | The CIDR block used for the destination match.
+rDestinationCIdRBlock :: Lens' Route (Maybe Text)
+rDestinationCIdRBlock = lens _rDestinationCIdRBlock (\ s a -> s{_rDestinationCIdRBlock = a});
+
+instance FromXML Route where
+        parseXML x
+          = Route' <$>
+              (x .@? "vpcPeeringConnectionId") <*>
+                (x .@? "instanceId")
+                <*> (x .@? "origin")
+                <*> (x .@? "state")
+                <*> (x .@? "networkInterfaceId")
+                <*> (x .@? "gatewayId")
+                <*> (x .@? "instanceOwnerId")
+                <*> (x .@? "destinationPrefixListId")
+                <*> (x .@? "destinationCidrBlock")
+
+-- | Describes a route table.
+--
+-- /See:/ 'routeTable' smart constructor.
+data RouteTable = RouteTable'
+    { _rtRouteTableId    :: !(Maybe Text)
+    , _rtRoutes          :: !(Maybe [Route])
+    , _rtVPCId           :: !(Maybe Text)
+    , _rtPropagatingVGWs :: !(Maybe [PropagatingVGW])
+    , _rtAssociations    :: !(Maybe [RouteTableAssociation])
+    , _rtTags            :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteTable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtRouteTableId'
+--
+-- * 'rtRoutes'
+--
+-- * 'rtVPCId'
+--
+-- * 'rtPropagatingVGWs'
+--
+-- * 'rtAssociations'
+--
+-- * 'rtTags'
+routeTable
+    :: RouteTable
+routeTable =
+    RouteTable'
+    { _rtRouteTableId = Nothing
+    , _rtRoutes = Nothing
+    , _rtVPCId = Nothing
+    , _rtPropagatingVGWs = Nothing
+    , _rtAssociations = Nothing
+    , _rtTags = Nothing
+    }
+
+-- | The ID of the route table.
+rtRouteTableId :: Lens' RouteTable (Maybe Text)
+rtRouteTableId = lens _rtRouteTableId (\ s a -> s{_rtRouteTableId = a});
+
+-- | The routes in the route table.
+rtRoutes :: Lens' RouteTable [Route]
+rtRoutes = lens _rtRoutes (\ s a -> s{_rtRoutes = a}) . _Default . _Coerce;
+
+-- | The ID of the VPC.
+rtVPCId :: Lens' RouteTable (Maybe Text)
+rtVPCId = lens _rtVPCId (\ s a -> s{_rtVPCId = a});
+
+-- | Any virtual private gateway (VGW) propagating routes.
+rtPropagatingVGWs :: Lens' RouteTable [PropagatingVGW]
+rtPropagatingVGWs = lens _rtPropagatingVGWs (\ s a -> s{_rtPropagatingVGWs = a}) . _Default . _Coerce;
+
+-- | The associations between the route table and one or more subnets.
+rtAssociations :: Lens' RouteTable [RouteTableAssociation]
+rtAssociations = lens _rtAssociations (\ s a -> s{_rtAssociations = a}) . _Default . _Coerce;
+
+-- | Any tags assigned to the route table.
+rtTags :: Lens' RouteTable [Tag]
+rtTags = lens _rtTags (\ s a -> s{_rtTags = a}) . _Default . _Coerce;
+
+instance FromXML RouteTable where
+        parseXML x
+          = RouteTable' <$>
+              (x .@? "routeTableId") <*>
+                (x .@? "routeSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "vpcId")
+                <*>
+                (x .@? "propagatingVgwSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "associationSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes an association between a route table and a subnet.
+--
+-- /See:/ 'routeTableAssociation' smart constructor.
+data RouteTableAssociation = RouteTableAssociation'
+    { _rtaRouteTableId            :: !(Maybe Text)
+    , _rtaRouteTableAssociationId :: !(Maybe Text)
+    , _rtaMain                    :: !(Maybe Bool)
+    , _rtaSubnetId                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteTableAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtaRouteTableId'
+--
+-- * 'rtaRouteTableAssociationId'
+--
+-- * 'rtaMain'
+--
+-- * 'rtaSubnetId'
+routeTableAssociation
+    :: RouteTableAssociation
+routeTableAssociation =
+    RouteTableAssociation'
+    { _rtaRouteTableId = Nothing
+    , _rtaRouteTableAssociationId = Nothing
+    , _rtaMain = Nothing
+    , _rtaSubnetId = Nothing
+    }
+
+-- | The ID of the route table.
+rtaRouteTableId :: Lens' RouteTableAssociation (Maybe Text)
+rtaRouteTableId = lens _rtaRouteTableId (\ s a -> s{_rtaRouteTableId = a});
+
+-- | The ID of the association between a route table and a subnet.
+rtaRouteTableAssociationId :: Lens' RouteTableAssociation (Maybe Text)
+rtaRouteTableAssociationId = lens _rtaRouteTableAssociationId (\ s a -> s{_rtaRouteTableAssociationId = a});
+
+-- | Indicates whether this is the main route table.
+rtaMain :: Lens' RouteTableAssociation (Maybe Bool)
+rtaMain = lens _rtaMain (\ s a -> s{_rtaMain = a});
+
+-- | The ID of the subnet. A subnet ID is not returned for an implicit
+-- association.
+rtaSubnetId :: Lens' RouteTableAssociation (Maybe Text)
+rtaSubnetId = lens _rtaSubnetId (\ s a -> s{_rtaSubnetId = a});
+
+instance FromXML RouteTableAssociation where
+        parseXML x
+          = RouteTableAssociation' <$>
+              (x .@? "routeTableId") <*>
+                (x .@? "routeTableAssociationId")
+                <*> (x .@? "main")
+                <*> (x .@? "subnetId")
+
+-- | Describes the monitoring for the instance.
+--
+-- /See:/ 'runInstancesMonitoringEnabled' smart constructor.
+newtype RunInstancesMonitoringEnabled = RunInstancesMonitoringEnabled'
+    { _rimeEnabled :: Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RunInstancesMonitoringEnabled' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rimeEnabled'
+runInstancesMonitoringEnabled
+    :: Bool -- ^ 'rimeEnabled'
+    -> RunInstancesMonitoringEnabled
+runInstancesMonitoringEnabled pEnabled_ =
+    RunInstancesMonitoringEnabled'
+    { _rimeEnabled = pEnabled_
+    }
+
+-- | Indicates whether monitoring is enabled for the instance.
+rimeEnabled :: Lens' RunInstancesMonitoringEnabled Bool
+rimeEnabled = lens _rimeEnabled (\ s a -> s{_rimeEnabled = a});
+
+instance FromXML RunInstancesMonitoringEnabled where
+        parseXML x
+          = RunInstancesMonitoringEnabled' <$> (x .@ "enabled")
+
+instance ToQuery RunInstancesMonitoringEnabled where
+        toQuery RunInstancesMonitoringEnabled'{..}
+          = mconcat ["Enabled" =: _rimeEnabled]
+
+-- | Describes the storage parameters for S3 and S3 buckets for an instance
+-- store-backed AMI.
+--
+-- /See:/ 's3Storage' smart constructor.
+data S3Storage = S3Storage'
+    { _ssPrefix                :: !(Maybe Text)
+    , _ssUploadPolicy          :: !(Maybe Base64)
+    , _ssBucket                :: !(Maybe Text)
+    , _ssUploadPolicySignature :: !(Maybe Text)
+    , _ssAWSAccessKeyId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'S3Storage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssPrefix'
+--
+-- * 'ssUploadPolicy'
+--
+-- * 'ssBucket'
+--
+-- * 'ssUploadPolicySignature'
+--
+-- * 'ssAWSAccessKeyId'
+s3Storage
+    :: S3Storage
+s3Storage =
+    S3Storage'
+    { _ssPrefix = Nothing
+    , _ssUploadPolicy = Nothing
+    , _ssBucket = Nothing
+    , _ssUploadPolicySignature = Nothing
+    , _ssAWSAccessKeyId = Nothing
+    }
+
+-- | The beginning of the file name of the AMI.
+ssPrefix :: Lens' S3Storage (Maybe Text)
+ssPrefix = lens _ssPrefix (\ s a -> s{_ssPrefix = a});
+
+-- | A Base64-encoded Amazon S3 upload policy that gives Amazon EC2
+-- permission to upload items into Amazon S3 on your behalf.
+--
+-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
+-- despite what the AWS documentation might say.
+-- The underlying isomorphism will encode to Base64 representation during
+-- serialisation, and decode from Base64 representation during deserialisation.
+-- This 'Lens' accepts and returns only raw unencoded data.
+ssUploadPolicy :: Lens' S3Storage (Maybe ByteString)
+ssUploadPolicy = lens _ssUploadPolicy (\ s a -> s{_ssUploadPolicy = a}) . mapping _Base64;
+
+-- | The bucket in which to store the AMI. You can specify a bucket that you
+-- already own or a new bucket that Amazon EC2 creates on your behalf. If
+-- you specify a bucket that belongs to someone else, Amazon EC2 returns an
+-- error.
+ssBucket :: Lens' S3Storage (Maybe Text)
+ssBucket = lens _ssBucket (\ s a -> s{_ssBucket = a});
+
+-- | The signature of the Base64 encoded JSON document.
+ssUploadPolicySignature :: Lens' S3Storage (Maybe Text)
+ssUploadPolicySignature = lens _ssUploadPolicySignature (\ s a -> s{_ssUploadPolicySignature = a});
+
+-- | The access key ID of the owner of the bucket. Before you specify a value
+-- for your access key ID, review and follow the guidance in
+-- <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html Best Practices for Managing AWS Access Keys>.
+ssAWSAccessKeyId :: Lens' S3Storage (Maybe Text)
+ssAWSAccessKeyId = lens _ssAWSAccessKeyId (\ s a -> s{_ssAWSAccessKeyId = a});
+
+instance FromXML S3Storage where
+        parseXML x
+          = S3Storage' <$>
+              (x .@? "prefix") <*> (x .@? "uploadPolicy") <*>
+                (x .@? "bucket")
+                <*> (x .@? "uploadPolicySignature")
+                <*> (x .@? "AWSAccessKeyId")
+
+instance ToQuery S3Storage where
+        toQuery S3Storage'{..}
+          = mconcat
+              ["Prefix" =: _ssPrefix,
+               "UploadPolicy" =: _ssUploadPolicy,
+               "Bucket" =: _ssBucket,
+               "UploadPolicySignature" =: _ssUploadPolicySignature,
+               "AWSAccessKeyId" =: _ssAWSAccessKeyId]
+
+-- | Describes a security group
+--
+-- /See:/ 'securityGroup' smart constructor.
+data SecurityGroup = SecurityGroup'
+    { _sgVPCId               :: !(Maybe Text)
+    , _sgIPPermissions       :: !(Maybe [IPPermission])
+    , _sgIPPermissionsEgress :: !(Maybe [IPPermission])
+    , _sgTags                :: !(Maybe [Tag])
+    , _sgOwnerId             :: !Text
+    , _sgGroupId             :: !Text
+    , _sgGroupName           :: !Text
+    , _sgDescription         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgVPCId'
+--
+-- * 'sgIPPermissions'
+--
+-- * 'sgIPPermissionsEgress'
+--
+-- * 'sgTags'
+--
+-- * 'sgOwnerId'
+--
+-- * 'sgGroupId'
+--
+-- * 'sgGroupName'
+--
+-- * 'sgDescription'
+securityGroup
+    :: Text -- ^ 'sgOwnerId'
+    -> Text -- ^ 'sgGroupId'
+    -> Text -- ^ 'sgGroupName'
+    -> Text -- ^ 'sgDescription'
+    -> SecurityGroup
+securityGroup pOwnerId_ pGroupId_ pGroupName_ pDescription_ =
+    SecurityGroup'
+    { _sgVPCId = Nothing
+    , _sgIPPermissions = Nothing
+    , _sgIPPermissionsEgress = Nothing
+    , _sgTags = Nothing
+    , _sgOwnerId = pOwnerId_
+    , _sgGroupId = pGroupId_
+    , _sgGroupName = pGroupName_
+    , _sgDescription = pDescription_
+    }
+
+-- | [EC2-VPC] The ID of the VPC for the security group.
+sgVPCId :: Lens' SecurityGroup (Maybe Text)
+sgVPCId = lens _sgVPCId (\ s a -> s{_sgVPCId = a});
+
+-- | One or more inbound rules associated with the security group.
+sgIPPermissions :: Lens' SecurityGroup [IPPermission]
+sgIPPermissions = lens _sgIPPermissions (\ s a -> s{_sgIPPermissions = a}) . _Default . _Coerce;
+
+-- | [EC2-VPC] One or more outbound rules associated with the security group.
+sgIPPermissionsEgress :: Lens' SecurityGroup [IPPermission]
+sgIPPermissionsEgress = lens _sgIPPermissionsEgress (\ s a -> s{_sgIPPermissionsEgress = a}) . _Default . _Coerce;
+
+-- | Any tags assigned to the security group.
+sgTags :: Lens' SecurityGroup [Tag]
+sgTags = lens _sgTags (\ s a -> s{_sgTags = a}) . _Default . _Coerce;
+
+-- | The AWS account ID of the owner of the security group.
+sgOwnerId :: Lens' SecurityGroup Text
+sgOwnerId = lens _sgOwnerId (\ s a -> s{_sgOwnerId = a});
+
+-- | The ID of the security group.
+sgGroupId :: Lens' SecurityGroup Text
+sgGroupId = lens _sgGroupId (\ s a -> s{_sgGroupId = a});
+
+-- | The name of the security group.
+sgGroupName :: Lens' SecurityGroup Text
+sgGroupName = lens _sgGroupName (\ s a -> s{_sgGroupName = a});
+
+-- | A description of the security group.
+sgDescription :: Lens' SecurityGroup Text
+sgDescription = lens _sgDescription (\ s a -> s{_sgDescription = a});
+
+instance FromXML SecurityGroup where
+        parseXML x
+          = SecurityGroup' <$>
+              (x .@? "vpcId") <*>
+                (x .@? "ipPermissions" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "ipPermissionsEgress" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "ownerId")
+                <*> (x .@ "groupId")
+                <*> (x .@ "groupName")
+                <*> (x .@ "groupDescription")
+
+-- | Describes a snapshot.
+--
+-- /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
+    } 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:
+--
+-- * 'sOwnerAlias'
+--
+-- * 'sKMSKeyId'
+--
+-- * 'sTags'
+--
+-- * 'sSnapshotId'
+--
+-- * 'sOwnerId'
+--
+-- * 'sVolumeId'
+--
+-- * 'sVolumeSize'
+--
+-- * 'sDescription'
+--
+-- * 'sStartTime'
+--
+-- * 'sProgress'
+--
+-- * 'sState'
+--
+-- * 'sEncrypted'
+snapshot
+    :: Text -- ^ 'sSnapshotId'
+    -> Text -- ^ 'sOwnerId'
+    -> Text -- ^ 'sVolumeId'
+    -> Int -- ^ 'sVolumeSize'
+    -> Text -- ^ 'sDescription'
+    -> UTCTime -- ^ 'sStartTime'
+    -> Text -- ^ 'sProgress'
+    -> SnapshotState -- ^ 'sState'
+    -> Bool -- ^ 'sEncrypted'
+    -> Snapshot
+snapshot pSnapshotId_ pOwnerId_ pVolumeId_ pVolumeSize_ pDescription_ pStartTime_ pProgress_ pState_ pEncrypted_ =
+    Snapshot'
+    { _sOwnerAlias = Nothing
+    , _sKMSKeyId = Nothing
+    , _sTags = Nothing
+    , _sSnapshotId = pSnapshotId_
+    , _sOwnerId = pOwnerId_
+    , _sVolumeId = pVolumeId_
+    , _sVolumeSize = pVolumeSize_
+    , _sDescription = pDescription_
+    , _sStartTime = _Time # pStartTime_
+    , _sProgress = pProgress_
+    , _sState = pState_
+    , _sEncrypted = pEncrypted_
+    }
+
+-- | 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 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.
+sKMSKeyId :: Lens' Snapshot (Maybe Text)
+sKMSKeyId = lens _sKMSKeyId (\ s a -> s{_sKMSKeyId = a});
+
+-- | Any tags assigned to the snapshot.
+sTags :: Lens' Snapshot [Tag]
+sTags = lens _sTags (\ s a -> s{_sTags = a}) . _Default . _Coerce;
+
+-- | The ID of the snapshot.
+sSnapshotId :: Lens' Snapshot Text
+sSnapshotId = lens _sSnapshotId (\ s a -> s{_sSnapshotId = a});
+
+-- | The AWS account ID of the EBS snapshot owner.
+sOwnerId :: Lens' Snapshot Text
+sOwnerId = lens _sOwnerId (\ s a -> s{_sOwnerId = a});
+
+-- | The ID of the volume.
+sVolumeId :: Lens' Snapshot Text
+sVolumeId = lens _sVolumeId (\ s a -> s{_sVolumeId = a});
+
+-- | The size of the volume, in GiB.
+sVolumeSize :: Lens' Snapshot Int
+sVolumeSize = lens _sVolumeSize (\ s a -> s{_sVolumeSize = a});
+
+-- | The description for the snapshot.
+sDescription :: Lens' Snapshot Text
+sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
+
+-- | The time stamp when the snapshot was initiated.
+sStartTime :: Lens' Snapshot UTCTime
+sStartTime = lens _sStartTime (\ s a -> s{_sStartTime = a}) . _Time;
+
+-- | The progress of the snapshot, as a percentage.
+sProgress :: Lens' Snapshot Text
+sProgress = lens _sProgress (\ s a -> s{_sProgress = a});
+
+-- | The snapshot state.
+sState :: Lens' Snapshot SnapshotState
+sState = lens _sState (\ s a -> s{_sState = a});
+
+-- | Indicates whether the snapshot is encrypted.
+sEncrypted :: Lens' Snapshot Bool
+sEncrypted = lens _sEncrypted (\ s a -> s{_sEncrypted = a});
+
+instance FromXML Snapshot where
+        parseXML x
+          = Snapshot' <$>
+              (x .@? "ownerAlias") <*> (x .@? "kmsKeyId") <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "snapshotId")
+                <*> (x .@ "ownerId")
+                <*> (x .@ "volumeId")
+                <*> (x .@ "volumeSize")
+                <*> (x .@ "description")
+                <*> (x .@ "startTime")
+                <*> (x .@ "progress")
+                <*> (x .@ "status")
+                <*> (x .@ "encrypted")
+
+-- | Describes the snapshot created from the imported disk.
+--
+-- /See:/ 'snapshotDetail' smart constructor.
+data SnapshotDetail = SnapshotDetail'
+    { _sdStatus        :: !(Maybe Text)
+    , _sdProgress      :: !(Maybe Text)
+    , _sdFormat        :: !(Maybe Text)
+    , _sdURL           :: !(Maybe Text)
+    , _sdDeviceName    :: !(Maybe Text)
+    , _sdStatusMessage :: !(Maybe Text)
+    , _sdUserBucket    :: !(Maybe UserBucketDetails)
+    , _sdDiskImageSize :: !(Maybe Double)
+    , _sdDescription   :: !(Maybe Text)
+    , _sdSnapshotId    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdStatus'
+--
+-- * 'sdProgress'
+--
+-- * 'sdFormat'
+--
+-- * 'sdURL'
+--
+-- * 'sdDeviceName'
+--
+-- * 'sdStatusMessage'
+--
+-- * 'sdUserBucket'
+--
+-- * 'sdDiskImageSize'
+--
+-- * 'sdDescription'
+--
+-- * 'sdSnapshotId'
+snapshotDetail
+    :: SnapshotDetail
+snapshotDetail =
+    SnapshotDetail'
+    { _sdStatus = Nothing
+    , _sdProgress = Nothing
+    , _sdFormat = Nothing
+    , _sdURL = Nothing
+    , _sdDeviceName = Nothing
+    , _sdStatusMessage = Nothing
+    , _sdUserBucket = Nothing
+    , _sdDiskImageSize = Nothing
+    , _sdDescription = Nothing
+    , _sdSnapshotId = Nothing
+    }
+
+-- | A brief status of the snapshot creation.
+sdStatus :: Lens' SnapshotDetail (Maybe Text)
+sdStatus = lens _sdStatus (\ s a -> s{_sdStatus = a});
+
+-- | The percentage of progress for the task.
+sdProgress :: Lens' SnapshotDetail (Maybe Text)
+sdProgress = lens _sdProgress (\ s a -> s{_sdProgress = a});
+
+-- | The format of the disk image from which the snapshot is created.
+sdFormat :: Lens' SnapshotDetail (Maybe Text)
+sdFormat = lens _sdFormat (\ s a -> s{_sdFormat = a});
+
+-- | The URL used to access the disk image.
+sdURL :: Lens' SnapshotDetail (Maybe Text)
+sdURL = lens _sdURL (\ s a -> s{_sdURL = a});
+
+-- | The block device mapping for the snapshot.
+sdDeviceName :: Lens' SnapshotDetail (Maybe Text)
+sdDeviceName = lens _sdDeviceName (\ s a -> s{_sdDeviceName = a});
+
+-- | A detailed status message for the snapshot creation.
+sdStatusMessage :: Lens' SnapshotDetail (Maybe Text)
+sdStatusMessage = lens _sdStatusMessage (\ s a -> s{_sdStatusMessage = a});
+
+-- | Undocumented member.
+sdUserBucket :: Lens' SnapshotDetail (Maybe UserBucketDetails)
+sdUserBucket = lens _sdUserBucket (\ s a -> s{_sdUserBucket = a});
+
+-- | The size of the disk in the snapshot, in GiB.
+sdDiskImageSize :: Lens' SnapshotDetail (Maybe Double)
+sdDiskImageSize = lens _sdDiskImageSize (\ s a -> s{_sdDiskImageSize = a});
+
+-- | A description for the snapshot.
+sdDescription :: Lens' SnapshotDetail (Maybe Text)
+sdDescription = lens _sdDescription (\ s a -> s{_sdDescription = a});
+
+-- | The snapshot ID of the disk being imported.
+sdSnapshotId :: Lens' SnapshotDetail (Maybe Text)
+sdSnapshotId = lens _sdSnapshotId (\ s a -> s{_sdSnapshotId = a});
+
+instance FromXML SnapshotDetail where
+        parseXML x
+          = SnapshotDetail' <$>
+              (x .@? "status") <*> (x .@? "progress") <*>
+                (x .@? "format")
+                <*> (x .@? "url")
+                <*> (x .@? "deviceName")
+                <*> (x .@? "statusMessage")
+                <*> (x .@? "userBucket")
+                <*> (x .@? "diskImageSize")
+                <*> (x .@? "description")
+                <*> (x .@? "snapshotId")
+
+-- | The disk container object for the import snapshot request.
+--
+-- /See:/ 'snapshotDiskContainer' smart constructor.
+data SnapshotDiskContainer = SnapshotDiskContainer'
+    { _sdcFormat      :: !(Maybe Text)
+    , _sdcURL         :: !(Maybe Text)
+    , _sdcUserBucket  :: !(Maybe UserBucket)
+    , _sdcDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotDiskContainer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdcFormat'
+--
+-- * 'sdcURL'
+--
+-- * 'sdcUserBucket'
+--
+-- * 'sdcDescription'
+snapshotDiskContainer
+    :: SnapshotDiskContainer
+snapshotDiskContainer =
+    SnapshotDiskContainer'
+    { _sdcFormat = Nothing
+    , _sdcURL = Nothing
+    , _sdcUserBucket = Nothing
+    , _sdcDescription = Nothing
+    }
+
+-- | The format of the disk image being imported.
+--
+-- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'
+sdcFormat :: Lens' SnapshotDiskContainer (Maybe Text)
+sdcFormat = lens _sdcFormat (\ s a -> s{_sdcFormat = a});
+
+-- | The URL to the Amazon S3-based disk image being imported. It can either
+-- be a https URL (https:\/\/..) or an Amazon S3 URL (s3:\/\/..).
+sdcURL :: Lens' SnapshotDiskContainer (Maybe Text)
+sdcURL = lens _sdcURL (\ s a -> s{_sdcURL = a});
+
+-- | Undocumented member.
+sdcUserBucket :: Lens' SnapshotDiskContainer (Maybe UserBucket)
+sdcUserBucket = lens _sdcUserBucket (\ s a -> s{_sdcUserBucket = a});
+
+-- | The description of the disk image being imported.
+sdcDescription :: Lens' SnapshotDiskContainer (Maybe Text)
+sdcDescription = lens _sdcDescription (\ s a -> s{_sdcDescription = a});
+
+instance ToQuery SnapshotDiskContainer where
+        toQuery SnapshotDiskContainer'{..}
+          = mconcat
+              ["Format" =: _sdcFormat, "Url" =: _sdcURL,
+               "UserBucket" =: _sdcUserBucket,
+               "Description" =: _sdcDescription]
+
+-- | Details about the import snapshot task.
+--
+-- /See:/ 'snapshotTaskDetail' smart constructor.
+data SnapshotTaskDetail = SnapshotTaskDetail'
+    { _stdStatus        :: !(Maybe Text)
+    , _stdProgress      :: !(Maybe Text)
+    , _stdFormat        :: !(Maybe Text)
+    , _stdURL           :: !(Maybe Text)
+    , _stdStatusMessage :: !(Maybe Text)
+    , _stdUserBucket    :: !(Maybe UserBucketDetails)
+    , _stdDiskImageSize :: !(Maybe Double)
+    , _stdDescription   :: !(Maybe Text)
+    , _stdSnapshotId    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotTaskDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stdStatus'
+--
+-- * 'stdProgress'
+--
+-- * 'stdFormat'
+--
+-- * 'stdURL'
+--
+-- * 'stdStatusMessage'
+--
+-- * 'stdUserBucket'
+--
+-- * 'stdDiskImageSize'
+--
+-- * 'stdDescription'
+--
+-- * 'stdSnapshotId'
+snapshotTaskDetail
+    :: SnapshotTaskDetail
+snapshotTaskDetail =
+    SnapshotTaskDetail'
+    { _stdStatus = Nothing
+    , _stdProgress = Nothing
+    , _stdFormat = Nothing
+    , _stdURL = Nothing
+    , _stdStatusMessage = Nothing
+    , _stdUserBucket = Nothing
+    , _stdDiskImageSize = Nothing
+    , _stdDescription = Nothing
+    , _stdSnapshotId = Nothing
+    }
+
+-- | A brief status for the import snapshot task.
+stdStatus :: Lens' SnapshotTaskDetail (Maybe Text)
+stdStatus = lens _stdStatus (\ s a -> s{_stdStatus = a});
+
+-- | The percentage of completion for the import snapshot task.
+stdProgress :: Lens' SnapshotTaskDetail (Maybe Text)
+stdProgress = lens _stdProgress (\ s a -> s{_stdProgress = a});
+
+-- | The format of the disk image from which the snapshot is created.
+stdFormat :: Lens' SnapshotTaskDetail (Maybe Text)
+stdFormat = lens _stdFormat (\ s a -> s{_stdFormat = a});
+
+-- | The URL of the disk image from which the snapshot is created.
+stdURL :: Lens' SnapshotTaskDetail (Maybe Text)
+stdURL = lens _stdURL (\ s a -> s{_stdURL = a});
+
+-- | A detailed status message for the import snapshot task.
+stdStatusMessage :: Lens' SnapshotTaskDetail (Maybe Text)
+stdStatusMessage = lens _stdStatusMessage (\ s a -> s{_stdStatusMessage = a});
+
+-- | The S3 bucket for the disk image.
+stdUserBucket :: Lens' SnapshotTaskDetail (Maybe UserBucketDetails)
+stdUserBucket = lens _stdUserBucket (\ s a -> s{_stdUserBucket = a});
+
+-- | The size of the disk in the snapshot, in GiB.
+stdDiskImageSize :: Lens' SnapshotTaskDetail (Maybe Double)
+stdDiskImageSize = lens _stdDiskImageSize (\ s a -> s{_stdDiskImageSize = a});
+
+-- | The description of the snapshot.
+stdDescription :: Lens' SnapshotTaskDetail (Maybe Text)
+stdDescription = lens _stdDescription (\ s a -> s{_stdDescription = a});
+
+-- | The snapshot ID of the disk being imported.
+stdSnapshotId :: Lens' SnapshotTaskDetail (Maybe Text)
+stdSnapshotId = lens _stdSnapshotId (\ s a -> s{_stdSnapshotId = a});
+
+instance FromXML SnapshotTaskDetail where
+        parseXML x
+          = SnapshotTaskDetail' <$>
+              (x .@? "status") <*> (x .@? "progress") <*>
+                (x .@? "format")
+                <*> (x .@? "url")
+                <*> (x .@? "statusMessage")
+                <*> (x .@? "userBucket")
+                <*> (x .@? "diskImageSize")
+                <*> (x .@? "description")
+                <*> (x .@? "snapshotId")
+
+-- | Describes the data feed for a Spot Instance.
+--
+-- /See:/ 'spotDatafeedSubscription' smart constructor.
+data SpotDatafeedSubscription = SpotDatafeedSubscription'
+    { _sdsState   :: !(Maybe DatafeedSubscriptionState)
+    , _sdsPrefix  :: !(Maybe Text)
+    , _sdsBucket  :: !(Maybe Text)
+    , _sdsOwnerId :: !(Maybe Text)
+    , _sdsFault   :: !(Maybe SpotInstanceStateFault)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotDatafeedSubscription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdsState'
+--
+-- * 'sdsPrefix'
+--
+-- * 'sdsBucket'
+--
+-- * 'sdsOwnerId'
+--
+-- * 'sdsFault'
+spotDatafeedSubscription
+    :: SpotDatafeedSubscription
+spotDatafeedSubscription =
+    SpotDatafeedSubscription'
+    { _sdsState = Nothing
+    , _sdsPrefix = Nothing
+    , _sdsBucket = Nothing
+    , _sdsOwnerId = Nothing
+    , _sdsFault = Nothing
+    }
+
+-- | The state of the Spot Instance data feed subscription.
+sdsState :: Lens' SpotDatafeedSubscription (Maybe DatafeedSubscriptionState)
+sdsState = lens _sdsState (\ s a -> s{_sdsState = a});
+
+-- | The prefix that is prepended to data feed files.
+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.
+sdsBucket :: Lens' SpotDatafeedSubscription (Maybe Text)
+sdsBucket = lens _sdsBucket (\ s a -> s{_sdsBucket = a});
+
+-- | The AWS account ID of the account.
+sdsOwnerId :: Lens' SpotDatafeedSubscription (Maybe Text)
+sdsOwnerId = lens _sdsOwnerId (\ s a -> s{_sdsOwnerId = a});
+
+-- | The fault codes for the Spot Instance request, if any.
+sdsFault :: Lens' SpotDatafeedSubscription (Maybe SpotInstanceStateFault)
+sdsFault = lens _sdsFault (\ s a -> s{_sdsFault = a});
+
+instance FromXML SpotDatafeedSubscription where
+        parseXML x
+          = SpotDatafeedSubscription' <$>
+              (x .@? "state") <*> (x .@? "prefix") <*>
+                (x .@? "bucket")
+                <*> (x .@? "ownerId")
+                <*> (x .@? "fault")
+
+-- | Describes the launch specification for one or more Spot Instances.
+--
+-- /See:/ 'spotFleetLaunchSpecification' smart constructor.
+data SpotFleetLaunchSpecification = SpotFleetLaunchSpecification'
+    { _sflsSecurityGroups      :: !(Maybe [GroupIdentifier])
+    , _sflsSpotPrice           :: !(Maybe Text)
+    , _sflsWeightedCapacity    :: !(Maybe Double)
+    , _sflsKeyName             :: !(Maybe Text)
+    , _sflsNetworkInterfaces   :: !(Maybe [InstanceNetworkInterfaceSpecification])
+    , _sflsRAMDiskId           :: !(Maybe Text)
+    , _sflsSubnetId            :: !(Maybe Text)
+    , _sflsKernelId            :: !(Maybe Text)
+    , _sflsInstanceType        :: !(Maybe InstanceType)
+    , _sflsEBSOptimized        :: !(Maybe Bool)
+    , _sflsUserData            :: !(Maybe Text)
+    , _sflsMonitoring          :: !(Maybe SpotFleetMonitoring)
+    , _sflsIAMInstanceProfile  :: !(Maybe IAMInstanceProfileSpecification)
+    , _sflsImageId             :: !(Maybe Text)
+    , _sflsAddressingType      :: !(Maybe Text)
+    , _sflsBlockDeviceMappings :: !(Maybe [BlockDeviceMapping])
+    , _sflsPlacement           :: !(Maybe SpotPlacement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotFleetLaunchSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sflsSecurityGroups'
+--
+-- * 'sflsSpotPrice'
+--
+-- * 'sflsWeightedCapacity'
+--
+-- * 'sflsKeyName'
+--
+-- * 'sflsNetworkInterfaces'
+--
+-- * 'sflsRAMDiskId'
+--
+-- * 'sflsSubnetId'
+--
+-- * 'sflsKernelId'
+--
+-- * 'sflsInstanceType'
+--
+-- * 'sflsEBSOptimized'
+--
+-- * 'sflsUserData'
+--
+-- * 'sflsMonitoring'
+--
+-- * 'sflsIAMInstanceProfile'
+--
+-- * 'sflsImageId'
+--
+-- * 'sflsAddressingType'
+--
+-- * 'sflsBlockDeviceMappings'
+--
+-- * 'sflsPlacement'
+spotFleetLaunchSpecification
+    :: SpotFleetLaunchSpecification
+spotFleetLaunchSpecification =
+    SpotFleetLaunchSpecification'
+    { _sflsSecurityGroups = Nothing
+    , _sflsSpotPrice = Nothing
+    , _sflsWeightedCapacity = Nothing
+    , _sflsKeyName = Nothing
+    , _sflsNetworkInterfaces = Nothing
+    , _sflsRAMDiskId = Nothing
+    , _sflsSubnetId = Nothing
+    , _sflsKernelId = Nothing
+    , _sflsInstanceType = Nothing
+    , _sflsEBSOptimized = Nothing
+    , _sflsUserData = Nothing
+    , _sflsMonitoring = Nothing
+    , _sflsIAMInstanceProfile = Nothing
+    , _sflsImageId = Nothing
+    , _sflsAddressingType = Nothing
+    , _sflsBlockDeviceMappings = Nothing
+    , _sflsPlacement = Nothing
+    }
+
+-- | One or more security groups. To request an instance in a nondefault VPC,
+-- you must specify the ID of the security group. To request an instance in
+-- EC2-Classic or a default VPC, you can specify the name or the ID of the
+-- security group.
+sflsSecurityGroups :: Lens' SpotFleetLaunchSpecification [GroupIdentifier]
+sflsSecurityGroups = lens _sflsSecurityGroups (\ s a -> s{_sflsSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The bid price per unit hour for the specified instance type. If this
+-- value is not specified, the default is the Spot bid price specified for
+-- the fleet. To determine the bid price per unit hour, divide the Spot bid
+-- price by the value of 'WeightedCapacity'.
+sflsSpotPrice :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsSpotPrice = lens _sflsSpotPrice (\ s a -> s{_sflsSpotPrice = a});
+
+-- | The number of units provided by the specified instance type. These are
+-- the same units that you chose to set the target capacity in terms
+-- (instances or a performance characteristic such as vCPUs, memory, or
+-- I\/O).
+--
+-- If the target capacity divided by this value is not a whole number, we
+-- round the number of instances to the next whole number. If this value is
+-- not specified, the default is 1.
+sflsWeightedCapacity :: Lens' SpotFleetLaunchSpecification (Maybe Double)
+sflsWeightedCapacity = lens _sflsWeightedCapacity (\ s a -> s{_sflsWeightedCapacity = a});
+
+-- | The name of the key pair.
+sflsKeyName :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsKeyName = lens _sflsKeyName (\ s a -> s{_sflsKeyName = a});
+
+-- | One or more network interfaces.
+sflsNetworkInterfaces :: Lens' SpotFleetLaunchSpecification [InstanceNetworkInterfaceSpecification]
+sflsNetworkInterfaces = lens _sflsNetworkInterfaces (\ s a -> s{_sflsNetworkInterfaces = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk.
+sflsRAMDiskId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsRAMDiskId = lens _sflsRAMDiskId (\ s a -> s{_sflsRAMDiskId = a});
+
+-- | The ID of the subnet in which to launch the instances.
+sflsSubnetId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsSubnetId = lens _sflsSubnetId (\ s a -> s{_sflsSubnetId = a});
+
+-- | The ID of the kernel.
+sflsKernelId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsKernelId = lens _sflsKernelId (\ s a -> s{_sflsKernelId = a});
+
+-- | The instance type.
+sflsInstanceType :: Lens' SpotFleetLaunchSpecification (Maybe InstanceType)
+sflsInstanceType = lens _sflsInstanceType (\ s a -> s{_sflsInstanceType = a});
+
+-- | Indicates whether the instances are optimized for EBS I\/O. This
+-- optimization provides dedicated throughput to Amazon EBS and an
+-- optimized configuration stack to provide optimal EBS I\/O performance.
+-- This optimization isn\'t available with all instance types. Additional
+-- usage charges apply when using an EBS Optimized instance.
+--
+-- Default: 'false'
+sflsEBSOptimized :: Lens' SpotFleetLaunchSpecification (Maybe Bool)
+sflsEBSOptimized = lens _sflsEBSOptimized (\ s a -> s{_sflsEBSOptimized = a});
+
+-- | The Base64-encoded MIME user data to make available to the instances.
+sflsUserData :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsUserData = lens _sflsUserData (\ s a -> s{_sflsUserData = a});
+
+-- | Enable or disable monitoring for the instances.
+sflsMonitoring :: Lens' SpotFleetLaunchSpecification (Maybe SpotFleetMonitoring)
+sflsMonitoring = lens _sflsMonitoring (\ s a -> s{_sflsMonitoring = a});
+
+-- | The IAM instance profile.
+sflsIAMInstanceProfile :: Lens' SpotFleetLaunchSpecification (Maybe IAMInstanceProfileSpecification)
+sflsIAMInstanceProfile = lens _sflsIAMInstanceProfile (\ s a -> s{_sflsIAMInstanceProfile = a});
+
+-- | The ID of the AMI.
+sflsImageId :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsImageId = lens _sflsImageId (\ s a -> s{_sflsImageId = a});
+
+-- | Deprecated.
+sflsAddressingType :: Lens' SpotFleetLaunchSpecification (Maybe Text)
+sflsAddressingType = lens _sflsAddressingType (\ s a -> s{_sflsAddressingType = a});
+
+-- | One or more block device mapping entries.
+sflsBlockDeviceMappings :: Lens' SpotFleetLaunchSpecification [BlockDeviceMapping]
+sflsBlockDeviceMappings = lens _sflsBlockDeviceMappings (\ s a -> s{_sflsBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The placement information.
+sflsPlacement :: Lens' SpotFleetLaunchSpecification (Maybe SpotPlacement)
+sflsPlacement = lens _sflsPlacement (\ s a -> s{_sflsPlacement = a});
+
+instance FromXML SpotFleetLaunchSpecification where
+        parseXML x
+          = SpotFleetLaunchSpecification' <$>
+              (x .@? "groupSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "spotPrice")
+                <*> (x .@? "weightedCapacity")
+                <*> (x .@? "keyName")
+                <*>
+                (x .@? "networkInterfaceSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "ramdiskId")
+                <*> (x .@? "subnetId")
+                <*> (x .@? "kernelId")
+                <*> (x .@? "instanceType")
+                <*> (x .@? "ebsOptimized")
+                <*> (x .@? "userData")
+                <*> (x .@? "monitoring")
+                <*> (x .@? "iamInstanceProfile")
+                <*> (x .@? "imageId")
+                <*> (x .@? "addressingType")
+                <*>
+                (x .@? "blockDeviceMapping" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "placement")
+
+instance ToQuery SpotFleetLaunchSpecification where
+        toQuery SpotFleetLaunchSpecification'{..}
+          = mconcat
+              [toQuery
+                 (toQueryList "GroupSet" <$> _sflsSecurityGroups),
+               "SpotPrice" =: _sflsSpotPrice,
+               "WeightedCapacity" =: _sflsWeightedCapacity,
+               "KeyName" =: _sflsKeyName,
+               toQuery
+                 (toQueryList "NetworkInterfaceSet" <$>
+                    _sflsNetworkInterfaces),
+               "RamdiskId" =: _sflsRAMDiskId,
+               "SubnetId" =: _sflsSubnetId,
+               "KernelId" =: _sflsKernelId,
+               "InstanceType" =: _sflsInstanceType,
+               "EbsOptimized" =: _sflsEBSOptimized,
+               "UserData" =: _sflsUserData,
+               "Monitoring" =: _sflsMonitoring,
+               "IamInstanceProfile" =: _sflsIAMInstanceProfile,
+               "ImageId" =: _sflsImageId,
+               "AddressingType" =: _sflsAddressingType,
+               toQuery
+                 (toQueryList "BlockDeviceMapping" <$>
+                    _sflsBlockDeviceMappings),
+               "Placement" =: _sflsPlacement]
+
+-- | Describes whether monitoring is enabled.
+--
+-- /See:/ 'spotFleetMonitoring' smart constructor.
+newtype SpotFleetMonitoring = SpotFleetMonitoring'
+    { _sfmEnabled :: Maybe Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotFleetMonitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfmEnabled'
+spotFleetMonitoring
+    :: SpotFleetMonitoring
+spotFleetMonitoring =
+    SpotFleetMonitoring'
+    { _sfmEnabled = Nothing
+    }
+
+-- | Enables monitoring for the instance.
+--
+-- Default: 'false'
+sfmEnabled :: Lens' SpotFleetMonitoring (Maybe Bool)
+sfmEnabled = lens _sfmEnabled (\ s a -> s{_sfmEnabled = a});
+
+instance FromXML SpotFleetMonitoring where
+        parseXML x
+          = SpotFleetMonitoring' <$> (x .@? "enabled")
+
+instance ToQuery SpotFleetMonitoring where
+        toQuery SpotFleetMonitoring'{..}
+          = mconcat ["Enabled" =: _sfmEnabled]
+
+-- | Describes a Spot fleet request.
+--
+-- /See:/ 'spotFleetRequestConfig' smart constructor.
+data SpotFleetRequestConfig = SpotFleetRequestConfig'
+    { _sfrcSpotFleetRequestId     :: !Text
+    , _sfrcSpotFleetRequestState  :: !BatchState
+    , _sfrcSpotFleetRequestConfig :: !SpotFleetRequestConfigData
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotFleetRequestConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfrcSpotFleetRequestId'
+--
+-- * 'sfrcSpotFleetRequestState'
+--
+-- * 'sfrcSpotFleetRequestConfig'
+spotFleetRequestConfig
+    :: Text -- ^ 'sfrcSpotFleetRequestId'
+    -> BatchState -- ^ 'sfrcSpotFleetRequestState'
+    -> SpotFleetRequestConfigData -- ^ 'sfrcSpotFleetRequestConfig'
+    -> SpotFleetRequestConfig
+spotFleetRequestConfig pSpotFleetRequestId_ pSpotFleetRequestState_ pSpotFleetRequestConfig_ =
+    SpotFleetRequestConfig'
+    { _sfrcSpotFleetRequestId = pSpotFleetRequestId_
+    , _sfrcSpotFleetRequestState = pSpotFleetRequestState_
+    , _sfrcSpotFleetRequestConfig = pSpotFleetRequestConfig_
+    }
+
+-- | The ID of the Spot fleet request.
+sfrcSpotFleetRequestId :: Lens' SpotFleetRequestConfig Text
+sfrcSpotFleetRequestId = lens _sfrcSpotFleetRequestId (\ s a -> s{_sfrcSpotFleetRequestId = a});
+
+-- | The state of the Spot fleet request.
+sfrcSpotFleetRequestState :: Lens' SpotFleetRequestConfig BatchState
+sfrcSpotFleetRequestState = lens _sfrcSpotFleetRequestState (\ s a -> s{_sfrcSpotFleetRequestState = a});
+
+-- | Information about the configuration of the Spot fleet request.
+sfrcSpotFleetRequestConfig :: Lens' SpotFleetRequestConfig SpotFleetRequestConfigData
+sfrcSpotFleetRequestConfig = lens _sfrcSpotFleetRequestConfig (\ s a -> s{_sfrcSpotFleetRequestConfig = a});
+
+instance FromXML SpotFleetRequestConfig where
+        parseXML x
+          = SpotFleetRequestConfig' <$>
+              (x .@ "spotFleetRequestId") <*>
+                (x .@ "spotFleetRequestState")
+                <*> (x .@ "spotFleetRequestConfig")
+
+-- | Describes the configuration of a Spot fleet request.
+--
+-- /See:/ 'spotFleetRequestConfigData' smart constructor.
+data SpotFleetRequestConfigData = SpotFleetRequestConfigData'
+    { _sfrcdClientToken                      :: !(Maybe Text)
+    , _sfrcdValidUntil                       :: !(Maybe ISO8601)
+    , _sfrcdTerminateInstancesWithExpiration :: !(Maybe Bool)
+    , _sfrcdValidFrom                        :: !(Maybe ISO8601)
+    , _sfrcdSpotPrice                        :: !Text
+    , _sfrcdTargetCapacity                   :: !Int
+    , _sfrcdIAMFleetRole                     :: !Text
+    , _sfrcdLaunchSpecifications             :: !(List1 SpotFleetLaunchSpecification)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotFleetRequestConfigData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfrcdClientToken'
+--
+-- * 'sfrcdValidUntil'
+--
+-- * 'sfrcdTerminateInstancesWithExpiration'
+--
+-- * 'sfrcdValidFrom'
+--
+-- * 'sfrcdSpotPrice'
+--
+-- * 'sfrcdTargetCapacity'
+--
+-- * 'sfrcdIAMFleetRole'
+--
+-- * 'sfrcdLaunchSpecifications'
+spotFleetRequestConfigData
+    :: Text -- ^ 'sfrcdSpotPrice'
+    -> Int -- ^ 'sfrcdTargetCapacity'
+    -> Text -- ^ 'sfrcdIAMFleetRole'
+    -> NonEmpty SpotFleetLaunchSpecification -- ^ 'sfrcdLaunchSpecifications'
+    -> SpotFleetRequestConfigData
+spotFleetRequestConfigData pSpotPrice_ pTargetCapacity_ pIAMFleetRole_ pLaunchSpecifications_ =
+    SpotFleetRequestConfigData'
+    { _sfrcdClientToken = Nothing
+    , _sfrcdValidUntil = Nothing
+    , _sfrcdTerminateInstancesWithExpiration = Nothing
+    , _sfrcdValidFrom = Nothing
+    , _sfrcdSpotPrice = pSpotPrice_
+    , _sfrcdTargetCapacity = pTargetCapacity_
+    , _sfrcdIAMFleetRole = pIAMFleetRole_
+    , _sfrcdLaunchSpecifications = _List1 # pLaunchSpecifications_
+    }
+
+-- | A unique, case-sensitive identifier you provide to ensure idempotency of
+-- your listings. This helps avoid duplicate listings. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
+sfrcdClientToken :: Lens' SpotFleetRequestConfigData (Maybe Text)
+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
+-- 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.
+sfrcdTerminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)
+sfrcdTerminateInstancesWithExpiration = lens _sfrcdTerminateInstancesWithExpiration (\ s a -> s{_sfrcdTerminateInstancesWithExpiration = a});
+
+-- | The start date and time of the request, in UTC format (for example,
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). The default is to start fulfilling
+-- the request immediately.
+sfrcdValidFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
+sfrcdValidFrom = lens _sfrcdValidFrom (\ s a -> s{_sfrcdValidFrom = a}) . mapping _Time;
+
+-- | The bid price per unit hour.
+sfrcdSpotPrice :: Lens' SpotFleetRequestConfigData Text
+sfrcdSpotPrice = lens _sfrcdSpotPrice (\ s a -> s{_sfrcdSpotPrice = a});
+
+-- | The number of units to request. You can choose to set the target
+-- capacity in terms of instances or a performance characteristic that is
+-- important to your application workload, such as vCPUs, memory, or I\/O.
+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
+-- 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.
+sfrcdLaunchSpecifications :: Lens' SpotFleetRequestConfigData (NonEmpty SpotFleetLaunchSpecification)
+sfrcdLaunchSpecifications = lens _sfrcdLaunchSpecifications (\ s a -> s{_sfrcdLaunchSpecifications = a}) . _List1;
+
+instance FromXML SpotFleetRequestConfigData where
+        parseXML x
+          = SpotFleetRequestConfigData' <$>
+              (x .@? "clientToken") <*> (x .@? "validUntil") <*>
+                (x .@? "terminateInstancesWithExpiration")
+                <*> (x .@? "validFrom")
+                <*> (x .@ "spotPrice")
+                <*> (x .@ "targetCapacity")
+                <*> (x .@ "iamFleetRole")
+                <*>
+                (x .@? "launchSpecifications" .!@ mempty >>=
+                   parseXMLList1 "item")
+
+instance ToQuery SpotFleetRequestConfigData where
+        toQuery SpotFleetRequestConfigData'{..}
+          = mconcat
+              ["ClientToken" =: _sfrcdClientToken,
+               "ValidUntil" =: _sfrcdValidUntil,
+               "TerminateInstancesWithExpiration" =:
+                 _sfrcdTerminateInstancesWithExpiration,
+               "ValidFrom" =: _sfrcdValidFrom,
+               "SpotPrice" =: _sfrcdSpotPrice,
+               "TargetCapacity" =: _sfrcdTargetCapacity,
+               "IamFleetRole" =: _sfrcdIAMFleetRole,
+               toQueryList "LaunchSpecifications"
+                 _sfrcdLaunchSpecifications]
+
+-- | Describe a Spot Instance request.
+--
+-- /See:/ 'spotInstanceRequest' smart constructor.
+data SpotInstanceRequest = SpotInstanceRequest'
+    { _sirInstanceId               :: !(Maybe Text)
+    , _sirStatus                   :: !(Maybe SpotInstanceStatus)
+    , _sirState                    :: !(Maybe SpotInstanceState)
+    , _sirProductDescription       :: !(Maybe RIProductDescription)
+    , _sirSpotPrice                :: !(Maybe Text)
+    , _sirLaunchSpecification      :: !(Maybe LaunchSpecification)
+    , _sirAvailabilityZoneGroup    :: !(Maybe Text)
+    , _sirLaunchedAvailabilityZone :: !(Maybe Text)
+    , _sirValidUntil               :: !(Maybe ISO8601)
+    , _sirLaunchGroup              :: !(Maybe Text)
+    , _sirFault                    :: !(Maybe SpotInstanceStateFault)
+    , _sirSpotInstanceRequestId    :: !(Maybe Text)
+    , _sirType                     :: !(Maybe SpotInstanceType)
+    , _sirValidFrom                :: !(Maybe ISO8601)
+    , _sirCreateTime               :: !(Maybe ISO8601)
+    , _sirTags                     :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sirInstanceId'
+--
+-- * 'sirStatus'
+--
+-- * 'sirState'
+--
+-- * 'sirProductDescription'
+--
+-- * 'sirSpotPrice'
+--
+-- * 'sirLaunchSpecification'
+--
+-- * 'sirAvailabilityZoneGroup'
+--
+-- * 'sirLaunchedAvailabilityZone'
+--
+-- * 'sirValidUntil'
+--
+-- * 'sirLaunchGroup'
+--
+-- * 'sirFault'
+--
+-- * 'sirSpotInstanceRequestId'
+--
+-- * 'sirType'
+--
+-- * 'sirValidFrom'
+--
+-- * 'sirCreateTime'
+--
+-- * 'sirTags'
+spotInstanceRequest
+    :: SpotInstanceRequest
+spotInstanceRequest =
+    SpotInstanceRequest'
+    { _sirInstanceId = Nothing
+    , _sirStatus = Nothing
+    , _sirState = Nothing
+    , _sirProductDescription = Nothing
+    , _sirSpotPrice = Nothing
+    , _sirLaunchSpecification = Nothing
+    , _sirAvailabilityZoneGroup = Nothing
+    , _sirLaunchedAvailabilityZone = Nothing
+    , _sirValidUntil = Nothing
+    , _sirLaunchGroup = Nothing
+    , _sirFault = Nothing
+    , _sirSpotInstanceRequestId = Nothing
+    , _sirType = Nothing
+    , _sirValidFrom = Nothing
+    , _sirCreateTime = Nothing
+    , _sirTags = Nothing
+    }
+
+-- | The instance ID, if an instance has been launched to fulfill the Spot
+-- 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.
+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
+-- <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.
+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 request.
+sirSpotPrice :: Lens' SpotInstanceRequest (Maybe Text)
+sirSpotPrice = lens _sirSpotPrice (\ s a -> s{_sirSpotPrice = a});
+
+-- | Additional information for launching instances.
+sirLaunchSpecification :: Lens' SpotInstanceRequest (Maybe LaunchSpecification)
+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
+-- the same Availability Zone.
+sirAvailabilityZoneGroup :: Lens' SpotInstanceRequest (Maybe Text)
+sirAvailabilityZoneGroup = lens _sirAvailabilityZoneGroup (\ s a -> s{_sirAvailabilityZoneGroup = a});
+
+-- | The Availability Zone in which the bid is launched.
+sirLaunchedAvailabilityZone :: Lens' SpotInstanceRequest (Maybe Text)
+sirLaunchedAvailabilityZone = lens _sirLaunchedAvailabilityZone (\ s a -> s{_sirLaunchedAvailabilityZone = a});
+
+-- | The end date of the request, in UTC format (for example,
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). If this is a one-time request, the
+-- request remains active until all instances launch, the request is
+-- canceled, or this date is reached. If the request is persistent, it
+-- remains active until it is canceled or this date is reached.
+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
+-- 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.
+sirFault :: Lens' SpotInstanceRequest (Maybe SpotInstanceStateFault)
+sirFault = lens _sirFault (\ s a -> s{_sirFault = a});
+
+-- | 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.
+sirType :: Lens' SpotInstanceRequest (Maybe SpotInstanceType)
+sirType = lens _sirType (\ s a -> s{_sirType = a});
+
+-- | The start date of the request, in UTC format (for example,
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). If this is a one-time request, the
+-- request becomes active at this date and time and remains active until
+-- all instances launch, the request expires, or the request is canceled.
+-- If the request is persistent, the request becomes active at this date
+-- and time and remains active until it expires or is canceled.
+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
+-- 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;
+
+-- | Any tags assigned to the resource.
+sirTags :: Lens' SpotInstanceRequest [Tag]
+sirTags = lens _sirTags (\ s a -> s{_sirTags = a}) . _Default . _Coerce;
+
+instance FromXML SpotInstanceRequest where
+        parseXML x
+          = SpotInstanceRequest' <$>
+              (x .@? "instanceId") <*> (x .@? "status") <*>
+                (x .@? "state")
+                <*> (x .@? "productDescription")
+                <*> (x .@? "spotPrice")
+                <*> (x .@? "launchSpecification")
+                <*> (x .@? "availabilityZoneGroup")
+                <*> (x .@? "launchedAvailabilityZone")
+                <*> (x .@? "validUntil")
+                <*> (x .@? "launchGroup")
+                <*> (x .@? "fault")
+                <*> (x .@? "spotInstanceRequestId")
+                <*> (x .@? "type")
+                <*> (x .@? "validFrom")
+                <*> (x .@? "createTime")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes a Spot Instance state change.
+--
+-- /See:/ 'spotInstanceStateFault' smart constructor.
+data SpotInstanceStateFault = SpotInstanceStateFault'
+    { _sisfCode    :: !(Maybe Text)
+    , _sisfMessage :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotInstanceStateFault' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sisfCode'
+--
+-- * 'sisfMessage'
+spotInstanceStateFault
+    :: SpotInstanceStateFault
+spotInstanceStateFault =
+    SpotInstanceStateFault'
+    { _sisfCode = Nothing
+    , _sisfMessage = Nothing
+    }
+
+-- | 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.
+sisfMessage :: Lens' SpotInstanceStateFault (Maybe Text)
+sisfMessage = lens _sisfMessage (\ s a -> s{_sisfMessage = a});
+
+instance FromXML SpotInstanceStateFault where
+        parseXML x
+          = SpotInstanceStateFault' <$>
+              (x .@? "code") <*> (x .@? "message")
+
+-- | Describes the status of a Spot Instance request.
+--
+-- /See:/ 'spotInstanceStatus' smart constructor.
+data SpotInstanceStatus = SpotInstanceStatus'
+    { _sisUpdateTime :: !(Maybe ISO8601)
+    , _sisCode       :: !(Maybe Text)
+    , _sisMessage    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotInstanceStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sisUpdateTime'
+--
+-- * 'sisCode'
+--
+-- * 'sisMessage'
+spotInstanceStatus
+    :: SpotInstanceStatus
+spotInstanceStatus =
+    SpotInstanceStatus'
+    { _sisUpdateTime = Nothing
+    , _sisCode = Nothing
+    , _sisMessage = Nothing
+    }
+
+-- | The date and time of the most recent status update, in UTC format (for
+-- example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
+sisUpdateTime :: Lens' SpotInstanceStatus (Maybe UTCTime)
+sisUpdateTime = lens _sisUpdateTime (\ s a -> s{_sisUpdateTime = a}) . mapping _Time;
+
+-- | The status code.
+sisCode :: Lens' SpotInstanceStatus (Maybe Text)
+sisCode = lens _sisCode (\ s a -> s{_sisCode = a});
+
+-- | The description for the status code.
+sisMessage :: Lens' SpotInstanceStatus (Maybe Text)
+sisMessage = lens _sisMessage (\ s a -> s{_sisMessage = a});
+
+instance FromXML SpotInstanceStatus where
+        parseXML x
+          = SpotInstanceStatus' <$>
+              (x .@? "updateTime") <*> (x .@? "code") <*>
+                (x .@? "message")
+
+-- | Describes Spot Instance placement.
+--
+-- /See:/ 'spotPlacement' smart constructor.
+data SpotPlacement = SpotPlacement'
+    { _spAvailabilityZone :: !(Maybe Text)
+    , _spGroupName        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotPlacement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spAvailabilityZone'
+--
+-- * 'spGroupName'
+spotPlacement
+    :: SpotPlacement
+spotPlacement =
+    SpotPlacement'
+    { _spAvailabilityZone = Nothing
+    , _spGroupName = Nothing
+    }
+
+-- | The Availability Zone.
+spAvailabilityZone :: Lens' SpotPlacement (Maybe Text)
+spAvailabilityZone = lens _spAvailabilityZone (\ s a -> s{_spAvailabilityZone = a});
+
+-- | The name of the placement group (for cluster instances).
+spGroupName :: Lens' SpotPlacement (Maybe Text)
+spGroupName = lens _spGroupName (\ s a -> s{_spGroupName = a});
+
+instance FromXML SpotPlacement where
+        parseXML x
+          = SpotPlacement' <$>
+              (x .@? "availabilityZone") <*> (x .@? "groupName")
+
+instance ToQuery SpotPlacement where
+        toQuery SpotPlacement'{..}
+          = mconcat
+              ["AvailabilityZone" =: _spAvailabilityZone,
+               "GroupName" =: _spGroupName]
+
+-- | Describes the maximum hourly price (bid) for any Spot Instance launched
+-- to fulfill the request.
+--
+-- /See:/ 'spotPrice' smart constructor.
+data SpotPrice = SpotPrice'
+    { _sProductDescription :: !(Maybe RIProductDescription)
+    , _sSpotPrice          :: !(Maybe Text)
+    , _sInstanceType       :: !(Maybe InstanceType)
+    , _sAvailabilityZone   :: !(Maybe Text)
+    , _sTimestamp          :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SpotPrice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sProductDescription'
+--
+-- * 'sSpotPrice'
+--
+-- * 'sInstanceType'
+--
+-- * 'sAvailabilityZone'
+--
+-- * 'sTimestamp'
+spotPrice
+    :: SpotPrice
+spotPrice =
+    SpotPrice'
+    { _sProductDescription = Nothing
+    , _sSpotPrice = Nothing
+    , _sInstanceType = Nothing
+    , _sAvailabilityZone = Nothing
+    , _sTimestamp = Nothing
+    }
+
+-- | A general description of the AMI.
+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.
+sSpotPrice :: Lens' SpotPrice (Maybe Text)
+sSpotPrice = lens _sSpotPrice (\ s a -> s{_sSpotPrice = a});
+
+-- | The instance type.
+sInstanceType :: Lens' SpotPrice (Maybe InstanceType)
+sInstanceType = lens _sInstanceType (\ s a -> s{_sInstanceType = a});
+
+-- | The Availability Zone.
+sAvailabilityZone :: Lens' SpotPrice (Maybe Text)
+sAvailabilityZone = lens _sAvailabilityZone (\ s a -> s{_sAvailabilityZone = a});
+
+-- | The date and time the request was created, in UTC format (for example,
+-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
+sTimestamp :: Lens' SpotPrice (Maybe UTCTime)
+sTimestamp = lens _sTimestamp (\ s a -> s{_sTimestamp = a}) . mapping _Time;
+
+instance FromXML SpotPrice where
+        parseXML x
+          = SpotPrice' <$>
+              (x .@? "productDescription") <*> (x .@? "spotPrice")
+                <*> (x .@? "instanceType")
+                <*> (x .@? "availabilityZone")
+                <*> (x .@? "timestamp")
+
+-- | Describes a state change.
+--
+-- /See:/ 'stateReason' smart constructor.
+data StateReason = StateReason'
+    { _srCode    :: !(Maybe Text)
+    , _srMessage :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StateReason' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srCode'
+--
+-- * 'srMessage'
+stateReason
+    :: StateReason
+stateReason =
+    StateReason'
+    { _srCode = Nothing
+    , _srMessage = Nothing
+    }
+
+-- | The reason code for the state change.
+srCode :: Lens' StateReason (Maybe Text)
+srCode = lens _srCode (\ s a -> s{_srCode = a});
+
+-- | The message for the state change.
+--
+-- -   'Server.SpotInstanceTermination': A Spot Instance was terminated due
+--     to an increase in the market price.
+--
+-- -   'Server.InternalError': An internal error occurred during instance
+--     launch, resulting in termination.
+--
+-- -   'Server.InsufficientInstanceCapacity': There was insufficient
+--     instance capacity to satisfy the launch request.
+--
+-- -   'Client.InternalError': A client error caused the instance to
+--     terminate on launch.
+--
+-- -   'Client.InstanceInitiatedShutdown': The instance was shut down using
+--     the 'shutdown -h' command from the instance.
+--
+-- -   'Client.UserInitiatedShutdown': The instance was shut down using the
+--     Amazon EC2 API.
+--
+-- -   'Client.VolumeLimitExceeded': The volume limit was exceeded.
+--
+-- -   'Client.InvalidSnapshot.NotFound': The specified snapshot was not
+--     found.
+--
+srMessage :: Lens' StateReason (Maybe Text)
+srMessage = lens _srMessage (\ s a -> s{_srMessage = a});
+
+instance FromXML StateReason where
+        parseXML x
+          = StateReason' <$>
+              (x .@? "code") <*> (x .@? "message")
+
+-- | Describes the storage location for an instance store-backed AMI.
+--
+-- /See:/ 'storage' smart constructor.
+newtype Storage = Storage'
+    { _sS3 :: Maybe S3Storage
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Storage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sS3'
+storage
+    :: Storage
+storage =
+    Storage'
+    { _sS3 = Nothing
+    }
+
+-- | An Amazon S3 storage location.
+sS3 :: Lens' Storage (Maybe S3Storage)
+sS3 = lens _sS3 (\ s a -> s{_sS3 = a});
+
+instance FromXML Storage where
+        parseXML x = Storage' <$> (x .@? "S3")
+
+instance ToQuery Storage where
+        toQuery Storage'{..} = mconcat ["S3" =: _sS3]
+
+-- | Describes a subnet.
+--
+-- /See:/ 'subnet' smart constructor.
+data Subnet = Subnet'
+    { _subTags                    :: !(Maybe [Tag])
+    , _subAvailabilityZone        :: !Text
+    , _subAvailableIPAddressCount :: !Int
+    , _subCIdRBlock               :: !Text
+    , _subDefaultForAz            :: !Bool
+    , _subMapPublicIPOnLaunch     :: !Bool
+    , _subState                   :: !SubnetState
+    , _subSubnetId                :: !Text
+    , _subVPCId                   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Subnet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'subTags'
+--
+-- * 'subAvailabilityZone'
+--
+-- * 'subAvailableIPAddressCount'
+--
+-- * 'subCIdRBlock'
+--
+-- * 'subDefaultForAz'
+--
+-- * 'subMapPublicIPOnLaunch'
+--
+-- * 'subState'
+--
+-- * 'subSubnetId'
+--
+-- * 'subVPCId'
+subnet
+    :: 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'
+    { _subTags = Nothing
+    , _subAvailabilityZone = pAvailabilityZone_
+    , _subAvailableIPAddressCount = pAvailableIPAddressCount_
+    , _subCIdRBlock = pCIdRBlock_
+    , _subDefaultForAz = pDefaultForAz_
+    , _subMapPublicIPOnLaunch = pMapPublicIPOnLaunch_
+    , _subState = pState_
+    , _subSubnetId = pSubnetId_
+    , _subVPCId = pVPCId_
+    }
+
+-- | Any tags assigned to the subnet.
+subTags :: Lens' Subnet [Tag]
+subTags = lens _subTags (\ s a -> s{_subTags = a}) . _Default . _Coerce;
+
+-- | The Availability Zone of the subnet.
+subAvailabilityZone :: Lens' Subnet Text
+subAvailabilityZone = lens _subAvailabilityZone (\ s a -> s{_subAvailabilityZone = a});
+
+-- | The number of unused IP addresses in the subnet. Note that the IP
+-- addresses for any stopped instances are considered unavailable.
+subAvailableIPAddressCount :: Lens' Subnet Int
+subAvailableIPAddressCount = lens _subAvailableIPAddressCount (\ s a -> s{_subAvailableIPAddressCount = a});
+
+-- | The CIDR block assigned to the subnet.
+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});
+
+-- | The ID of the subnet.
+subSubnetId :: Lens' Subnet Text
+subSubnetId = lens _subSubnetId (\ s a -> s{_subSubnetId = a});
+
+-- | The ID of the VPC the subnet is in.
+subVPCId :: Lens' Subnet Text
+subVPCId = lens _subVPCId (\ s a -> s{_subVPCId = a});
+
+instance FromXML Subnet where
+        parseXML x
+          = Subnet' <$>
+              (x .@? "tagSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@ "availabilityZone")
+                <*> (x .@ "availableIpAddressCount")
+                <*> (x .@ "cidrBlock")
+                <*> (x .@ "defaultForAz")
+                <*> (x .@ "mapPublicIpOnLaunch")
+                <*> (x .@ "state")
+                <*> (x .@ "subnetId")
+                <*> (x .@ "vpcId")
+
+-- | Describes a tag.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagKey   :: !Text
+    , _tagValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagKey'
+--
+-- * 'tagValue'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Text -- ^ 'tagValue'
+    -> Tag
+tag pKey_ pValue_ =
+    Tag'
+    { _tagKey = pKey_
+    , _tagValue = pValue_
+    }
+
+-- | The key of the tag.
+--
+-- Constraints: Tag keys are case-sensitive and accept a maximum of 127
+-- Unicode characters. May not begin with 'aws:'
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | The value of the tag.
+--
+-- Constraints: Tag values are case-sensitive and accept a maximum of 255
+-- Unicode characters.
+tagValue :: Lens' Tag Text
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+instance FromXML Tag where
+        parseXML x = Tag' <$> (x .@ "key") <*> (x .@ "value")
+
+instance ToQuery Tag where
+        toQuery Tag'{..}
+          = mconcat ["Key" =: _tagKey, "Value" =: _tagValue]
+
+-- | Describes a tag.
+--
+-- /See:/ 'tagDescription' smart constructor.
+data TagDescription = TagDescription'
+    { _tdResourceId   :: !Text
+    , _tdResourceType :: !ResourceType
+    , _tdKey          :: !Text
+    , _tdValue        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdResourceId'
+--
+-- * 'tdResourceType'
+--
+-- * 'tdKey'
+--
+-- * 'tdValue'
+tagDescription
+    :: Text -- ^ 'tdResourceId'
+    -> ResourceType -- ^ 'tdResourceType'
+    -> Text -- ^ 'tdKey'
+    -> Text -- ^ 'tdValue'
+    -> TagDescription
+tagDescription pResourceId_ pResourceType_ pKey_ pValue_ =
+    TagDescription'
+    { _tdResourceId = pResourceId_
+    , _tdResourceType = pResourceType_
+    , _tdKey = pKey_
+    , _tdValue = pValue_
+    }
+
+-- | The ID of the resource. For example, 'ami-1a2b3c4d'.
+tdResourceId :: Lens' TagDescription Text
+tdResourceId = lens _tdResourceId (\ s a -> s{_tdResourceId = a});
+
+-- | The resource type.
+tdResourceType :: Lens' TagDescription ResourceType
+tdResourceType = lens _tdResourceType (\ s a -> s{_tdResourceType = a});
+
+-- | The tag key.
+tdKey :: Lens' TagDescription Text
+tdKey = lens _tdKey (\ s a -> s{_tdKey = a});
+
+-- | The tag value.
+tdValue :: Lens' TagDescription Text
+tdValue = lens _tdValue (\ s a -> s{_tdValue = a});
+
+instance FromXML TagDescription where
+        parseXML x
+          = TagDescription' <$>
+              (x .@ "resourceId") <*> (x .@ "resourceType") <*>
+                (x .@ "key")
+                <*> (x .@ "value")
+
+-- | Information about items that were not successfully processed in a batch
+-- call.
+--
+-- /See:/ 'unsuccessfulItem' smart constructor.
+data UnsuccessfulItem = UnsuccessfulItem'
+    { _uiResourceId :: !(Maybe Text)
+    , _uiError      :: !UnsuccessfulItemError
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnsuccessfulItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiResourceId'
+--
+-- * 'uiError'
+unsuccessfulItem
+    :: UnsuccessfulItemError -- ^ 'uiError'
+    -> UnsuccessfulItem
+unsuccessfulItem pError_ =
+    UnsuccessfulItem'
+    { _uiResourceId = Nothing
+    , _uiError = pError_
+    }
+
+-- | The ID of the resource.
+uiResourceId :: Lens' UnsuccessfulItem (Maybe Text)
+uiResourceId = lens _uiResourceId (\ s a -> s{_uiResourceId = a});
+
+-- | Information about the error.
+uiError :: Lens' UnsuccessfulItem UnsuccessfulItemError
+uiError = lens _uiError (\ s a -> s{_uiError = a});
+
+instance FromXML UnsuccessfulItem where
+        parseXML x
+          = UnsuccessfulItem' <$>
+              (x .@? "resourceId") <*> (x .@ "error")
+
+-- | Information about the error that occurred. For more information about
+-- errors, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html Error Codes>.
+--
+-- /See:/ 'unsuccessfulItemError' smart constructor.
+data UnsuccessfulItemError = UnsuccessfulItemError'
+    { _uieCode    :: !Text
+    , _uieMessage :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnsuccessfulItemError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uieCode'
+--
+-- * 'uieMessage'
+unsuccessfulItemError
+    :: Text -- ^ 'uieCode'
+    -> Text -- ^ 'uieMessage'
+    -> UnsuccessfulItemError
+unsuccessfulItemError pCode_ pMessage_ =
+    UnsuccessfulItemError'
+    { _uieCode = pCode_
+    , _uieMessage = pMessage_
+    }
+
+-- | The error code.
+uieCode :: Lens' UnsuccessfulItemError Text
+uieCode = lens _uieCode (\ s a -> s{_uieCode = a});
+
+-- | The error message accompanying the error code.
+uieMessage :: Lens' UnsuccessfulItemError Text
+uieMessage = lens _uieMessage (\ s a -> s{_uieMessage = a});
+
+instance FromXML UnsuccessfulItemError where
+        parseXML x
+          = UnsuccessfulItemError' <$>
+              (x .@ "code") <*> (x .@ "message")
+
+-- | Describes the S3 bucket for the disk image.
+--
+-- /See:/ 'userBucket' smart constructor.
+data UserBucket = UserBucket'
+    { _ubS3Key    :: !(Maybe Text)
+    , _ubS3Bucket :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserBucket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ubS3Key'
+--
+-- * 'ubS3Bucket'
+userBucket
+    :: UserBucket
+userBucket =
+    UserBucket'
+    { _ubS3Key = Nothing
+    , _ubS3Bucket = Nothing
+    }
+
+-- | The key for the disk image.
+ubS3Key :: Lens' UserBucket (Maybe Text)
+ubS3Key = lens _ubS3Key (\ s a -> s{_ubS3Key = a});
+
+-- | The name of the S3 bucket where the disk image is located.
+ubS3Bucket :: Lens' UserBucket (Maybe Text)
+ubS3Bucket = lens _ubS3Bucket (\ s a -> s{_ubS3Bucket = a});
+
+instance ToQuery UserBucket where
+        toQuery UserBucket'{..}
+          = mconcat
+              ["S3Key" =: _ubS3Key, "S3Bucket" =: _ubS3Bucket]
+
+-- | Describes the S3 bucket for the disk image.
+--
+-- /See:/ 'userBucketDetails' smart constructor.
+data UserBucketDetails = UserBucketDetails'
+    { _ubdS3Key    :: !(Maybe Text)
+    , _ubdS3Bucket :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserBucketDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ubdS3Key'
+--
+-- * 'ubdS3Bucket'
+userBucketDetails
+    :: UserBucketDetails
+userBucketDetails =
+    UserBucketDetails'
+    { _ubdS3Key = Nothing
+    , _ubdS3Bucket = Nothing
+    }
+
+-- | The key from which the disk image was created.
+ubdS3Key :: Lens' UserBucketDetails (Maybe Text)
+ubdS3Key = lens _ubdS3Key (\ s a -> s{_ubdS3Key = a});
+
+-- | The S3 bucket from which the disk image was created.
+ubdS3Bucket :: Lens' UserBucketDetails (Maybe Text)
+ubdS3Bucket = lens _ubdS3Bucket (\ s a -> s{_ubdS3Bucket = a});
+
+instance FromXML UserBucketDetails where
+        parseXML x
+          = UserBucketDetails' <$>
+              (x .@? "s3Key") <*> (x .@? "s3Bucket")
+
+-- | Describes the user data to be made available to an instance.
+--
+-- /See:/ 'userData' smart constructor.
+newtype UserData = UserData'
+    { _udData :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udData'
+userData
+    :: UserData
+userData =
+    UserData'
+    { _udData = Nothing
+    }
+
+-- | The Base64-encoded MIME user data for the instance.
+udData :: Lens' UserData (Maybe Text)
+udData = lens _udData (\ s a -> s{_udData = a});
+
+instance ToQuery UserData where
+        toQuery UserData'{..} = mconcat ["Data" =: _udData]
+
+-- | Describes a security group and AWS account ID pair.
+--
+-- /See:/ 'userIdGroupPair' smart constructor.
+data UserIdGroupPair = UserIdGroupPair'
+    { _uigpUserId    :: !(Maybe Text)
+    , _uigpGroupId   :: !(Maybe Text)
+    , _uigpGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserIdGroupPair' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uigpUserId'
+--
+-- * 'uigpGroupId'
+--
+-- * 'uigpGroupName'
+userIdGroupPair
+    :: UserIdGroupPair
+userIdGroupPair =
+    UserIdGroupPair'
+    { _uigpUserId = Nothing
+    , _uigpGroupId = Nothing
+    , _uigpGroupName = Nothing
+    }
+
+-- | The ID of an AWS account. EC2-Classic only.
+uigpUserId :: Lens' UserIdGroupPair (Maybe Text)
+uigpUserId = lens _uigpUserId (\ s a -> s{_uigpUserId = a});
+
+-- | The ID of the security group.
+uigpGroupId :: Lens' UserIdGroupPair (Maybe Text)
+uigpGroupId = lens _uigpGroupId (\ s a -> s{_uigpGroupId = a});
+
+-- | The name of the security group. In a request, use this parameter for a
+-- security group in EC2-Classic or a default VPC only. For a security
+-- group in a nondefault VPC, use 'GroupId'.
+uigpGroupName :: Lens' UserIdGroupPair (Maybe Text)
+uigpGroupName = lens _uigpGroupName (\ s a -> s{_uigpGroupName = a});
+
+instance FromXML UserIdGroupPair where
+        parseXML x
+          = UserIdGroupPair' <$>
+              (x .@? "userId") <*> (x .@? "groupId") <*>
+                (x .@? "groupName")
+
+instance ToQuery UserIdGroupPair where
+        toQuery UserIdGroupPair'{..}
+          = mconcat
+              ["UserId" =: _uigpUserId, "GroupId" =: _uigpGroupId,
+               "GroupName" =: _uigpGroupName]
+
+-- | Describes telemetry for a VPN tunnel.
+--
+-- /See:/ 'vgwTelemetry' smart constructor.
+data VGWTelemetry = VGWTelemetry'
+    { _vtStatus             :: !(Maybe TelemetryStatus)
+    , _vtOutsideIPAddress   :: !(Maybe Text)
+    , _vtLastStatusChange   :: !(Maybe ISO8601)
+    , _vtAcceptedRouteCount :: !(Maybe Int)
+    , _vtStatusMessage      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VGWTelemetry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtStatus'
+--
+-- * 'vtOutsideIPAddress'
+--
+-- * 'vtLastStatusChange'
+--
+-- * 'vtAcceptedRouteCount'
+--
+-- * 'vtStatusMessage'
+vgwTelemetry
+    :: VGWTelemetry
+vgwTelemetry =
+    VGWTelemetry'
+    { _vtStatus = Nothing
+    , _vtOutsideIPAddress = Nothing
+    , _vtLastStatusChange = Nothing
+    , _vtAcceptedRouteCount = Nothing
+    , _vtStatusMessage = Nothing
+    }
+
+-- | The status of the VPN tunnel.
+vtStatus :: Lens' VGWTelemetry (Maybe TelemetryStatus)
+vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a});
+
+-- | The Internet-routable IP address of the virtual private gateway\'s
+-- outside interface.
+vtOutsideIPAddress :: Lens' VGWTelemetry (Maybe Text)
+vtOutsideIPAddress = lens _vtOutsideIPAddress (\ s a -> s{_vtOutsideIPAddress = a});
+
+-- | The date and time of the last change in status.
+vtLastStatusChange :: Lens' VGWTelemetry (Maybe UTCTime)
+vtLastStatusChange = lens _vtLastStatusChange (\ s a -> s{_vtLastStatusChange = a}) . mapping _Time;
+
+-- | The number of accepted routes.
+vtAcceptedRouteCount :: Lens' VGWTelemetry (Maybe Int)
+vtAcceptedRouteCount = lens _vtAcceptedRouteCount (\ s a -> s{_vtAcceptedRouteCount = a});
+
+-- | If an error occurs, a description of the error.
+vtStatusMessage :: Lens' VGWTelemetry (Maybe Text)
+vtStatusMessage = lens _vtStatusMessage (\ s a -> s{_vtStatusMessage = a});
+
+instance FromXML VGWTelemetry where
+        parseXML x
+          = VGWTelemetry' <$>
+              (x .@? "status") <*> (x .@? "outsideIpAddress") <*>
+                (x .@? "lastStatusChange")
+                <*> (x .@? "acceptedRouteCount")
+                <*> (x .@? "statusMessage")
+
+-- | Describes a VPC.
+--
+-- /See:/ 'vpc' smart constructor.
+data VPC = VPC'
+    { _vpcTags            :: !(Maybe [Tag])
+    , _vpcCIdRBlock       :: !Text
+    , _vpcDHCPOptionsId   :: !Text
+    , _vpcInstanceTenancy :: !Tenancy
+    , _vpcIsDefault       :: !Bool
+    , _vpcState           :: !VPCState
+    , _vpcVPCId           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPC' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vpcTags'
+--
+-- * 'vpcCIdRBlock'
+--
+-- * 'vpcDHCPOptionsId'
+--
+-- * 'vpcInstanceTenancy'
+--
+-- * 'vpcIsDefault'
+--
+-- * 'vpcState'
+--
+-- * 'vpcVPCId'
+vpc
+    :: Text -- ^ 'vpcCIdRBlock'
+    -> Text -- ^ 'vpcDHCPOptionsId'
+    -> Tenancy -- ^ 'vpcInstanceTenancy'
+    -> Bool -- ^ 'vpcIsDefault'
+    -> VPCState -- ^ 'vpcState'
+    -> Text -- ^ 'vpcVPCId'
+    -> VPC
+vpc pCIdRBlock_ pDHCPOptionsId_ pInstanceTenancy_ pIsDefault_ pState_ pVPCId_ =
+    VPC'
+    { _vpcTags = Nothing
+    , _vpcCIdRBlock = pCIdRBlock_
+    , _vpcDHCPOptionsId = pDHCPOptionsId_
+    , _vpcInstanceTenancy = pInstanceTenancy_
+    , _vpcIsDefault = pIsDefault_
+    , _vpcState = pState_
+    , _vpcVPCId = pVPCId_
+    }
+
+-- | Any tags assigned to the VPC.
+vpcTags :: Lens' VPC [Tag]
+vpcTags = lens _vpcTags (\ s a -> s{_vpcTags = a}) . _Default . _Coerce;
+
+-- | The CIDR block for the VPC.
+vpcCIdRBlock :: Lens' VPC Text
+vpcCIdRBlock = lens _vpcCIdRBlock (\ s a -> s{_vpcCIdRBlock = a});
+
+-- | The ID of the set of DHCP options you\'ve associated with the VPC (or
+-- 'default' if the default options are associated with the VPC).
+vpcDHCPOptionsId :: Lens' VPC Text
+vpcDHCPOptionsId = lens _vpcDHCPOptionsId (\ s a -> s{_vpcDHCPOptionsId = a});
+
+-- | The allowed tenancy of instances launched into the VPC.
+vpcInstanceTenancy :: Lens' VPC Tenancy
+vpcInstanceTenancy = lens _vpcInstanceTenancy (\ s a -> s{_vpcInstanceTenancy = a});
+
+-- | Indicates whether the VPC is the default VPC.
+vpcIsDefault :: Lens' VPC Bool
+vpcIsDefault = lens _vpcIsDefault (\ s a -> s{_vpcIsDefault = a});
+
+-- | The current state of the VPC.
+vpcState :: Lens' VPC VPCState
+vpcState = lens _vpcState (\ s a -> s{_vpcState = a});
+
+-- | The ID of the VPC.
+vpcVPCId :: Lens' VPC Text
+vpcVPCId = lens _vpcVPCId (\ s a -> s{_vpcVPCId = a});
+
+instance FromXML VPC where
+        parseXML x
+          = VPC' <$>
+              (x .@? "tagSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@ "cidrBlock")
+                <*> (x .@ "dhcpOptionsId")
+                <*> (x .@ "instanceTenancy")
+                <*> (x .@ "isDefault")
+                <*> (x .@ "state")
+                <*> (x .@ "vpcId")
+
+-- | Describes an attachment between a virtual private gateway and a VPC.
+--
+-- /See:/ 'vpcAttachment' smart constructor.
+data VPCAttachment = VPCAttachment'
+    { _vaState :: !(Maybe AttachmentStatus)
+    , _vaVPCId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vaState'
+--
+-- * 'vaVPCId'
+vpcAttachment
+    :: VPCAttachment
+vpcAttachment =
+    VPCAttachment'
+    { _vaState = Nothing
+    , _vaVPCId = Nothing
+    }
+
+-- | The current state of the attachment.
+vaState :: Lens' VPCAttachment (Maybe AttachmentStatus)
+vaState = lens _vaState (\ s a -> s{_vaState = a});
+
+-- | The ID of the VPC.
+vaVPCId :: Lens' VPCAttachment (Maybe Text)
+vaVPCId = lens _vaVPCId (\ s a -> s{_vaVPCId = a});
+
+instance FromXML VPCAttachment where
+        parseXML x
+          = VPCAttachment' <$>
+              (x .@? "state") <*> (x .@? "vpcId")
+
+-- | Describes whether a VPC is enabled for ClassicLink.
+--
+-- /See:/ 'vpcClassicLink' smart constructor.
+data VPCClassicLink = VPCClassicLink'
+    { _vclVPCId              :: !(Maybe Text)
+    , _vclTags               :: !(Maybe [Tag])
+    , _vclClassicLinkEnabled :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCClassicLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vclVPCId'
+--
+-- * 'vclTags'
+--
+-- * 'vclClassicLinkEnabled'
+vpcClassicLink
+    :: VPCClassicLink
+vpcClassicLink =
+    VPCClassicLink'
+    { _vclVPCId = Nothing
+    , _vclTags = Nothing
+    , _vclClassicLinkEnabled = Nothing
+    }
+
+-- | The ID of the VPC.
+vclVPCId :: Lens' VPCClassicLink (Maybe Text)
+vclVPCId = lens _vclVPCId (\ s a -> s{_vclVPCId = a});
+
+-- | Any tags assigned to the VPC.
+vclTags :: Lens' VPCClassicLink [Tag]
+vclTags = lens _vclTags (\ s a -> s{_vclTags = a}) . _Default . _Coerce;
+
+-- | Indicates whether the VPC is enabled for ClassicLink.
+vclClassicLinkEnabled :: Lens' VPCClassicLink (Maybe Bool)
+vclClassicLinkEnabled = lens _vclClassicLinkEnabled (\ s a -> s{_vclClassicLinkEnabled = a});
+
+instance FromXML VPCClassicLink where
+        parseXML x
+          = VPCClassicLink' <$>
+              (x .@? "vpcId") <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "classicLinkEnabled")
+
+-- | Describes a VPC endpoint.
+--
+-- /See:/ 'vpcEndpoint' smart constructor.
+data VPCEndpoint = VPCEndpoint'
+    { _veState             :: !(Maybe State)
+    , _vePolicyDocument    :: !(Maybe Text)
+    , _veVPCId             :: !(Maybe Text)
+    , _veCreationTimestamp :: !(Maybe ISO8601)
+    , _veServiceName       :: !(Maybe Text)
+    , _veVPCEndpointId     :: !(Maybe Text)
+    , _veRouteTableIds     :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCEndpoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'veState'
+--
+-- * 'vePolicyDocument'
+--
+-- * 'veVPCId'
+--
+-- * 'veCreationTimestamp'
+--
+-- * 'veServiceName'
+--
+-- * 'veVPCEndpointId'
+--
+-- * 'veRouteTableIds'
+vpcEndpoint
+    :: VPCEndpoint
+vpcEndpoint =
+    VPCEndpoint'
+    { _veState = Nothing
+    , _vePolicyDocument = Nothing
+    , _veVPCId = Nothing
+    , _veCreationTimestamp = Nothing
+    , _veServiceName = Nothing
+    , _veVPCEndpointId = Nothing
+    , _veRouteTableIds = Nothing
+    }
+
+-- | The state of the VPC endpoint.
+veState :: Lens' VPCEndpoint (Maybe State)
+veState = lens _veState (\ s a -> s{_veState = a});
+
+-- | The policy document associated with the endpoint.
+vePolicyDocument :: Lens' VPCEndpoint (Maybe Text)
+vePolicyDocument = lens _vePolicyDocument (\ s a -> s{_vePolicyDocument = a});
+
+-- | The ID of the VPC to which the endpoint is associated.
+veVPCId :: Lens' VPCEndpoint (Maybe Text)
+veVPCId = lens _veVPCId (\ s a -> s{_veVPCId = a});
+
+-- | The date and time the VPC endpoint was created.
+veCreationTimestamp :: Lens' VPCEndpoint (Maybe UTCTime)
+veCreationTimestamp = lens _veCreationTimestamp (\ s a -> s{_veCreationTimestamp = a}) . mapping _Time;
+
+-- | The name of the AWS service to which the endpoint is associated.
+veServiceName :: Lens' VPCEndpoint (Maybe Text)
+veServiceName = lens _veServiceName (\ s a -> s{_veServiceName = a});
+
+-- | The ID of the VPC endpoint.
+veVPCEndpointId :: Lens' VPCEndpoint (Maybe Text)
+veVPCEndpointId = lens _veVPCEndpointId (\ s a -> s{_veVPCEndpointId = a});
+
+-- | One or more route tables associated with the endpoint.
+veRouteTableIds :: Lens' VPCEndpoint [Text]
+veRouteTableIds = lens _veRouteTableIds (\ s a -> s{_veRouteTableIds = a}) . _Default . _Coerce;
+
+instance FromXML VPCEndpoint where
+        parseXML x
+          = VPCEndpoint' <$>
+              (x .@? "state") <*> (x .@? "policyDocument") <*>
+                (x .@? "vpcId")
+                <*> (x .@? "creationTimestamp")
+                <*> (x .@? "serviceName")
+                <*> (x .@? "vpcEndpointId")
+                <*>
+                (x .@? "routeTableIdSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes a VPC peering connection.
+--
+-- /See:/ 'vpcPeeringConnection' smart constructor.
+data VPCPeeringConnection = VPCPeeringConnection'
+    { _vpcpcVPCPeeringConnectionId :: !(Maybe Text)
+    , _vpcpcStatus                 :: !(Maybe VPCPeeringConnectionStateReason)
+    , _vpcpcAccepterVPCInfo        :: !(Maybe VPCPeeringConnectionVPCInfo)
+    , _vpcpcRequesterVPCInfo       :: !(Maybe VPCPeeringConnectionVPCInfo)
+    , _vpcpcExpirationTime         :: !(Maybe ISO8601)
+    , _vpcpcTags                   :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCPeeringConnection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vpcpcVPCPeeringConnectionId'
+--
+-- * 'vpcpcStatus'
+--
+-- * 'vpcpcAccepterVPCInfo'
+--
+-- * 'vpcpcRequesterVPCInfo'
+--
+-- * 'vpcpcExpirationTime'
+--
+-- * 'vpcpcTags'
+vpcPeeringConnection
+    :: VPCPeeringConnection
+vpcPeeringConnection =
+    VPCPeeringConnection'
+    { _vpcpcVPCPeeringConnectionId = Nothing
+    , _vpcpcStatus = Nothing
+    , _vpcpcAccepterVPCInfo = Nothing
+    , _vpcpcRequesterVPCInfo = Nothing
+    , _vpcpcExpirationTime = Nothing
+    , _vpcpcTags = Nothing
+    }
+
+-- | The ID of the VPC peering connection.
+vpcpcVPCPeeringConnectionId :: Lens' VPCPeeringConnection (Maybe Text)
+vpcpcVPCPeeringConnectionId = lens _vpcpcVPCPeeringConnectionId (\ s a -> s{_vpcpcVPCPeeringConnectionId = a});
+
+-- | The status of the VPC peering connection.
+vpcpcStatus :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionStateReason)
+vpcpcStatus = lens _vpcpcStatus (\ s a -> s{_vpcpcStatus = a});
+
+-- | The information of the peer VPC.
+vpcpcAccepterVPCInfo :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionVPCInfo)
+vpcpcAccepterVPCInfo = lens _vpcpcAccepterVPCInfo (\ s a -> s{_vpcpcAccepterVPCInfo = a});
+
+-- | The information of the requester VPC.
+vpcpcRequesterVPCInfo :: Lens' VPCPeeringConnection (Maybe VPCPeeringConnectionVPCInfo)
+vpcpcRequesterVPCInfo = lens _vpcpcRequesterVPCInfo (\ s a -> s{_vpcpcRequesterVPCInfo = a});
+
+-- | The time that an unaccepted VPC peering connection will expire.
+vpcpcExpirationTime :: Lens' VPCPeeringConnection (Maybe UTCTime)
+vpcpcExpirationTime = lens _vpcpcExpirationTime (\ s a -> s{_vpcpcExpirationTime = a}) . mapping _Time;
+
+-- | Any tags assigned to the resource.
+vpcpcTags :: Lens' VPCPeeringConnection [Tag]
+vpcpcTags = lens _vpcpcTags (\ s a -> s{_vpcpcTags = a}) . _Default . _Coerce;
+
+instance FromXML VPCPeeringConnection where
+        parseXML x
+          = VPCPeeringConnection' <$>
+              (x .@? "vpcPeeringConnectionId") <*> (x .@? "status")
+                <*> (x .@? "accepterVpcInfo")
+                <*> (x .@? "requesterVpcInfo")
+                <*> (x .@? "expirationTime")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes the status of a VPC peering connection.
+--
+-- /See:/ 'vpcPeeringConnectionStateReason' smart constructor.
+data VPCPeeringConnectionStateReason = VPCPeeringConnectionStateReason'
+    { _vpcsrCode    :: !(Maybe VPCPeeringConnectionStateReasonCode)
+    , _vpcsrMessage :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCPeeringConnectionStateReason' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vpcsrCode'
+--
+-- * 'vpcsrMessage'
+vpcPeeringConnectionStateReason
+    :: VPCPeeringConnectionStateReason
+vpcPeeringConnectionStateReason =
+    VPCPeeringConnectionStateReason'
+    { _vpcsrCode = Nothing
+    , _vpcsrMessage = Nothing
+    }
+
+-- | The status of the VPC peering connection.
+vpcsrCode :: Lens' VPCPeeringConnectionStateReason (Maybe VPCPeeringConnectionStateReasonCode)
+vpcsrCode = lens _vpcsrCode (\ s a -> s{_vpcsrCode = a});
+
+-- | A message that provides more information about the status, if
+-- applicable.
+vpcsrMessage :: Lens' VPCPeeringConnectionStateReason (Maybe Text)
+vpcsrMessage = lens _vpcsrMessage (\ s a -> s{_vpcsrMessage = a});
+
+instance FromXML VPCPeeringConnectionStateReason
+         where
+        parseXML x
+          = VPCPeeringConnectionStateReason' <$>
+              (x .@? "code") <*> (x .@? "message")
+
+-- | Describes a VPC in a VPC peering connection.
+--
+-- /See:/ 'vpcPeeringConnectionVPCInfo' smart constructor.
+data VPCPeeringConnectionVPCInfo = VPCPeeringConnectionVPCInfo'
+    { _vpcviVPCId     :: !(Maybe Text)
+    , _vpcviOwnerId   :: !(Maybe Text)
+    , _vpcviCIdRBlock :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCPeeringConnectionVPCInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vpcviVPCId'
+--
+-- * 'vpcviOwnerId'
+--
+-- * 'vpcviCIdRBlock'
+vpcPeeringConnectionVPCInfo
+    :: VPCPeeringConnectionVPCInfo
+vpcPeeringConnectionVPCInfo =
+    VPCPeeringConnectionVPCInfo'
+    { _vpcviVPCId = Nothing
+    , _vpcviOwnerId = Nothing
+    , _vpcviCIdRBlock = Nothing
+    }
+
+-- | The ID of the VPC.
+vpcviVPCId :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
+vpcviVPCId = lens _vpcviVPCId (\ s a -> s{_vpcviVPCId = a});
+
+-- | The AWS account ID of the VPC owner.
+vpcviOwnerId :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
+vpcviOwnerId = lens _vpcviOwnerId (\ s a -> s{_vpcviOwnerId = a});
+
+-- | The CIDR block for the VPC.
+vpcviCIdRBlock :: Lens' VPCPeeringConnectionVPCInfo (Maybe Text)
+vpcviCIdRBlock = lens _vpcviCIdRBlock (\ s a -> s{_vpcviCIdRBlock = a});
+
+instance FromXML VPCPeeringConnectionVPCInfo where
+        parseXML x
+          = VPCPeeringConnectionVPCInfo' <$>
+              (x .@? "vpcId") <*> (x .@? "ownerId") <*>
+                (x .@? "cidrBlock")
+
+-- | Describes a VPN connection.
+--
+-- /See:/ 'vpnConnection' smart constructor.
+data VPNConnection = VPNConnection'
+    { _vcCustomerGatewayConfiguration :: !(Maybe Text)
+    , _vcRoutes                       :: !(Maybe [VPNStaticRoute])
+    , _vcVPNGatewayId                 :: !(Maybe Text)
+    , _vcOptions                      :: !(Maybe VPNConnectionOptions)
+    , _vcTags                         :: !(Maybe [Tag])
+    , _vcVGWTelemetry                 :: !(Maybe [VGWTelemetry])
+    , _vcVPNConnectionId              :: !Text
+    , _vcCustomerGatewayId            :: !Text
+    , _vcState                        :: !VPNState
+    , _vcType                         :: !GatewayType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNConnection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcCustomerGatewayConfiguration'
+--
+-- * 'vcRoutes'
+--
+-- * 'vcVPNGatewayId'
+--
+-- * 'vcOptions'
+--
+-- * 'vcTags'
+--
+-- * 'vcVGWTelemetry'
+--
+-- * 'vcVPNConnectionId'
+--
+-- * 'vcCustomerGatewayId'
+--
+-- * 'vcState'
+--
+-- * 'vcType'
+vpnConnection
+    :: Text -- ^ 'vcVPNConnectionId'
+    -> Text -- ^ 'vcCustomerGatewayId'
+    -> VPNState -- ^ 'vcState'
+    -> GatewayType -- ^ 'vcType'
+    -> VPNConnection
+vpnConnection pVPNConnectionId_ pCustomerGatewayId_ pState_ pType_ =
+    VPNConnection'
+    { _vcCustomerGatewayConfiguration = Nothing
+    , _vcRoutes = Nothing
+    , _vcVPNGatewayId = Nothing
+    , _vcOptions = Nothing
+    , _vcTags = Nothing
+    , _vcVGWTelemetry = Nothing
+    , _vcVPNConnectionId = pVPNConnectionId_
+    , _vcCustomerGatewayId = pCustomerGatewayId_
+    , _vcState = pState_
+    , _vcType = pType_
+    }
+
+-- | The configuration information for the VPN connection\'s customer gateway
+-- (in the native XML format). This element is always present in the
+-- CreateVpnConnection response; however, it\'s present in the
+-- DescribeVpnConnections response only if the VPN connection is in the
+-- 'pending' or 'available' state.
+vcCustomerGatewayConfiguration :: Lens' VPNConnection (Maybe Text)
+vcCustomerGatewayConfiguration = lens _vcCustomerGatewayConfiguration (\ s a -> s{_vcCustomerGatewayConfiguration = a});
+
+-- | The static routes associated with the VPN connection.
+vcRoutes :: Lens' VPNConnection [VPNStaticRoute]
+vcRoutes = lens _vcRoutes (\ s a -> s{_vcRoutes = a}) . _Default . _Coerce;
+
+-- | The ID of the virtual private gateway at the AWS side of the VPN
+-- connection.
+vcVPNGatewayId :: Lens' VPNConnection (Maybe Text)
+vcVPNGatewayId = lens _vcVPNGatewayId (\ s a -> s{_vcVPNGatewayId = a});
+
+-- | The VPN connection options.
+vcOptions :: Lens' VPNConnection (Maybe VPNConnectionOptions)
+vcOptions = lens _vcOptions (\ s a -> s{_vcOptions = a});
+
+-- | Any tags assigned to the VPN connection.
+vcTags :: Lens' VPNConnection [Tag]
+vcTags = lens _vcTags (\ s a -> s{_vcTags = a}) . _Default . _Coerce;
+
+-- | Information about the VPN tunnel.
+vcVGWTelemetry :: Lens' VPNConnection [VGWTelemetry]
+vcVGWTelemetry = lens _vcVGWTelemetry (\ s a -> s{_vcVGWTelemetry = a}) . _Default . _Coerce;
+
+-- | The ID of the VPN connection.
+vcVPNConnectionId :: Lens' VPNConnection Text
+vcVPNConnectionId = lens _vcVPNConnectionId (\ s a -> s{_vcVPNConnectionId = a});
+
+-- | The ID of the customer gateway at your end of the VPN connection.
+vcCustomerGatewayId :: Lens' VPNConnection Text
+vcCustomerGatewayId = lens _vcCustomerGatewayId (\ s a -> s{_vcCustomerGatewayId = a});
+
+-- | The current state of the VPN connection.
+vcState :: Lens' VPNConnection VPNState
+vcState = lens _vcState (\ s a -> s{_vcState = a});
+
+-- | The type of VPN connection.
+vcType :: Lens' VPNConnection GatewayType
+vcType = lens _vcType (\ s a -> s{_vcType = a});
+
+instance FromXML VPNConnection where
+        parseXML x
+          = VPNConnection' <$>
+              (x .@? "customerGatewayConfiguration") <*>
+                (x .@? "routes" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "vpnGatewayId")
+                <*> (x .@? "options")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "vgwTelemetry" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "vpnConnectionId")
+                <*> (x .@ "customerGatewayId")
+                <*> (x .@ "state")
+                <*> (x .@ "type")
+
+-- | Describes VPN connection options.
+--
+-- /See:/ 'vpnConnectionOptions' smart constructor.
+newtype VPNConnectionOptions = VPNConnectionOptions'
+    { _vcoStaticRoutesOnly :: Maybe Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNConnectionOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcoStaticRoutesOnly'
+vpnConnectionOptions
+    :: VPNConnectionOptions
+vpnConnectionOptions =
+    VPNConnectionOptions'
+    { _vcoStaticRoutesOnly = Nothing
+    }
+
+-- | Indicates whether the VPN connection uses static routes only. Static
+-- routes must be used for devices that don\'t support BGP.
+vcoStaticRoutesOnly :: Lens' VPNConnectionOptions (Maybe Bool)
+vcoStaticRoutesOnly = lens _vcoStaticRoutesOnly (\ s a -> s{_vcoStaticRoutesOnly = a});
+
+instance FromXML VPNConnectionOptions where
+        parseXML x
+          = VPNConnectionOptions' <$>
+              (x .@? "staticRoutesOnly")
+
+-- | Describes VPN connection options.
+--
+-- /See:/ 'vpnConnectionOptionsSpecification' smart constructor.
+newtype VPNConnectionOptionsSpecification = VPNConnectionOptionsSpecification'
+    { _vcosStaticRoutesOnly :: Maybe Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNConnectionOptionsSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcosStaticRoutesOnly'
+vpnConnectionOptionsSpecification
+    :: VPNConnectionOptionsSpecification
+vpnConnectionOptionsSpecification =
+    VPNConnectionOptionsSpecification'
+    { _vcosStaticRoutesOnly = Nothing
+    }
+
+-- | Indicates whether the VPN connection uses static routes only. Static
+-- routes must be used for devices that don\'t support BGP.
+vcosStaticRoutesOnly :: Lens' VPNConnectionOptionsSpecification (Maybe Bool)
+vcosStaticRoutesOnly = lens _vcosStaticRoutesOnly (\ s a -> s{_vcosStaticRoutesOnly = a});
+
+instance ToQuery VPNConnectionOptionsSpecification
+         where
+        toQuery VPNConnectionOptionsSpecification'{..}
+          = mconcat
+              ["StaticRoutesOnly" =: _vcosStaticRoutesOnly]
+
+-- | Describes a virtual private gateway.
+--
+-- /See:/ 'vpnGateway' smart constructor.
+data VPNGateway = VPNGateway'
+    { _vgState            :: !(Maybe VPNState)
+    , _vgVPCAttachments   :: !(Maybe [VPCAttachment])
+    , _vgVPNGatewayId     :: !(Maybe Text)
+    , _vgAvailabilityZone :: !(Maybe Text)
+    , _vgType             :: !(Maybe GatewayType)
+    , _vgTags             :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vgState'
+--
+-- * 'vgVPCAttachments'
+--
+-- * 'vgVPNGatewayId'
+--
+-- * 'vgAvailabilityZone'
+--
+-- * 'vgType'
+--
+-- * 'vgTags'
+vpnGateway
+    :: VPNGateway
+vpnGateway =
+    VPNGateway'
+    { _vgState = Nothing
+    , _vgVPCAttachments = Nothing
+    , _vgVPNGatewayId = Nothing
+    , _vgAvailabilityZone = Nothing
+    , _vgType = Nothing
+    , _vgTags = Nothing
+    }
+
+-- | The current state of the virtual private gateway.
+vgState :: Lens' VPNGateway (Maybe VPNState)
+vgState = lens _vgState (\ s a -> s{_vgState = a});
+
+-- | Any VPCs attached to the virtual private gateway.
+vgVPCAttachments :: Lens' VPNGateway [VPCAttachment]
+vgVPCAttachments = lens _vgVPCAttachments (\ s a -> s{_vgVPCAttachments = a}) . _Default . _Coerce;
+
+-- | The ID of the virtual private gateway.
+vgVPNGatewayId :: Lens' VPNGateway (Maybe Text)
+vgVPNGatewayId = lens _vgVPNGatewayId (\ s a -> s{_vgVPNGatewayId = a});
+
+-- | The Availability Zone where the virtual private gateway was created.
+vgAvailabilityZone :: Lens' VPNGateway (Maybe Text)
+vgAvailabilityZone = lens _vgAvailabilityZone (\ s a -> s{_vgAvailabilityZone = a});
+
+-- | The type of VPN connection the virtual private gateway supports.
+vgType :: Lens' VPNGateway (Maybe GatewayType)
+vgType = lens _vgType (\ s a -> s{_vgType = a});
+
+-- | Any tags assigned to the virtual private gateway.
+vgTags :: Lens' VPNGateway [Tag]
+vgTags = lens _vgTags (\ s a -> s{_vgTags = a}) . _Default . _Coerce;
+
+instance FromXML VPNGateway where
+        parseXML x
+          = VPNGateway' <$>
+              (x .@? "state") <*>
+                (x .@? "attachments" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "vpnGatewayId")
+                <*> (x .@? "availabilityZone")
+                <*> (x .@? "type")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes a static route for a VPN connection.
+--
+-- /See:/ 'vpnStaticRoute' smart constructor.
+data VPNStaticRoute = VPNStaticRoute'
+    { _vsrState                :: !(Maybe VPNState)
+    , _vsrSource               :: !(Maybe VPNStaticRouteSource)
+    , _vsrDestinationCIdRBlock :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNStaticRoute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsrState'
+--
+-- * 'vsrSource'
+--
+-- * 'vsrDestinationCIdRBlock'
+vpnStaticRoute
+    :: VPNStaticRoute
+vpnStaticRoute =
+    VPNStaticRoute'
+    { _vsrState = Nothing
+    , _vsrSource = Nothing
+    , _vsrDestinationCIdRBlock = Nothing
+    }
+
+-- | The current state of the static route.
+vsrState :: Lens' VPNStaticRoute (Maybe VPNState)
+vsrState = lens _vsrState (\ s a -> s{_vsrState = a});
+
+-- | Indicates how the routes were provided.
+vsrSource :: Lens' VPNStaticRoute (Maybe VPNStaticRouteSource)
+vsrSource = lens _vsrSource (\ s a -> s{_vsrSource = a});
+
+-- | The CIDR block associated with the local subnet of the customer data
+-- center.
+vsrDestinationCIdRBlock :: Lens' VPNStaticRoute (Maybe Text)
+vsrDestinationCIdRBlock = lens _vsrDestinationCIdRBlock (\ s a -> s{_vsrDestinationCIdRBlock = a});
+
+instance FromXML VPNStaticRoute where
+        parseXML x
+          = VPNStaticRoute' <$>
+              (x .@? "state") <*> (x .@? "source") <*>
+                (x .@? "destinationCidrBlock")
+
+-- | Describes a volume.
+--
+-- /See:/ 'volume' smart constructor.
+data Volume = Volume'
+    { _vAttachments      :: !(Maybe [VolumeAttachment])
+    , _vIOPS             :: !(Maybe Int)
+    , _vKMSKeyId         :: !(Maybe Text)
+    , _vTags             :: !(Maybe [Tag])
+    , _vAvailabilityZone :: !Text
+    , _vCreateTime       :: !ISO8601
+    , _vEncrypted        :: !Bool
+    , _vSize             :: !Int
+    , _vSnapshotId       :: !Text
+    , _vState            :: !VolumeState
+    , _vVolumeId         :: !Text
+    , _vVolumeType       :: !VolumeType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Volume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vAttachments'
+--
+-- * 'vIOPS'
+--
+-- * 'vKMSKeyId'
+--
+-- * 'vTags'
+--
+-- * 'vAvailabilityZone'
+--
+-- * 'vCreateTime'
+--
+-- * 'vEncrypted'
+--
+-- * 'vSize'
+--
+-- * 'vSnapshotId'
+--
+-- * 'vState'
+--
+-- * 'vVolumeId'
+--
+-- * 'vVolumeType'
+volume
+    :: Text -- ^ 'vAvailabilityZone'
+    -> UTCTime -- ^ 'vCreateTime'
+    -> Bool -- ^ 'vEncrypted'
+    -> Int -- ^ 'vSize'
+    -> Text -- ^ 'vSnapshotId'
+    -> VolumeState -- ^ 'vState'
+    -> Text -- ^ 'vVolumeId'
+    -> VolumeType -- ^ 'vVolumeType'
+    -> Volume
+volume pAvailabilityZone_ pCreateTime_ pEncrypted_ pSize_ pSnapshotId_ pState_ pVolumeId_ pVolumeType_ =
+    Volume'
+    { _vAttachments = Nothing
+    , _vIOPS = Nothing
+    , _vKMSKeyId = Nothing
+    , _vTags = Nothing
+    , _vAvailabilityZone = pAvailabilityZone_
+    , _vCreateTime = _Time # pCreateTime_
+    , _vEncrypted = pEncrypted_
+    , _vSize = pSize_
+    , _vSnapshotId = pSnapshotId_
+    , _vState = pState_
+    , _vVolumeId = pVolumeId_
+    , _vVolumeType = pVolumeType_
+    }
+
+-- | Information about the volume attachments.
+vAttachments :: Lens' Volume [VolumeAttachment]
+vAttachments = lens _vAttachments (\ s a -> s{_vAttachments = a}) . _Default . _Coerce;
+
+-- | The number of I\/O operations per second (IOPS) that the volume
+-- supports. For Provisioned IOPS (SSD) volumes, this represents the number
+-- of IOPS that are provisioned for the volume. For General Purpose (SSD)
+-- volumes, this represents the baseline performance of the volume and the
+-- rate at which the volume accumulates I\/O credits for bursting. For more
+-- information on General Purpose (SSD) baseline performance, I\/O credits,
+-- and bursting, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+--
+-- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
+-- 3 to 10000 for General Purpose (SSD) volumes.
+--
+-- Condition: This parameter is required for requests to create 'io1'
+-- volumes; it is not used in requests to create 'standard' or 'gp2'
+-- volumes.
+vIOPS :: Lens' Volume (Maybe Int)
+vIOPS = lens _vIOPS (\ s a -> s{_vIOPS = 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
+-- volume.
+vKMSKeyId :: Lens' Volume (Maybe Text)
+vKMSKeyId = lens _vKMSKeyId (\ s a -> s{_vKMSKeyId = a});
+
+-- | Any tags assigned to the volume.
+vTags :: Lens' Volume [Tag]
+vTags = lens _vTags (\ s a -> s{_vTags = a}) . _Default . _Coerce;
+
+-- | The Availability Zone for the volume.
+vAvailabilityZone :: Lens' Volume Text
+vAvailabilityZone = lens _vAvailabilityZone (\ s a -> s{_vAvailabilityZone = a});
+
+-- | The time stamp when volume creation was initiated.
+vCreateTime :: Lens' Volume UTCTime
+vCreateTime = lens _vCreateTime (\ s a -> s{_vCreateTime = a}) . _Time;
+
+-- | Indicates whether the volume will be encrypted.
+vEncrypted :: Lens' Volume Bool
+vEncrypted = lens _vEncrypted (\ s a -> s{_vEncrypted = a});
+
+-- | The size of the volume, in GiBs.
+vSize :: Lens' Volume Int
+vSize = lens _vSize (\ s a -> s{_vSize = a});
+
+-- | The snapshot from which the volume was created, if applicable.
+vSnapshotId :: Lens' Volume Text
+vSnapshotId = lens _vSnapshotId (\ s a -> s{_vSnapshotId = a});
+
+-- | The volume state.
+vState :: Lens' Volume VolumeState
+vState = lens _vState (\ s a -> s{_vState = a});
+
+-- | The ID of the volume.
+vVolumeId :: Lens' Volume Text
+vVolumeId = lens _vVolumeId (\ s a -> s{_vVolumeId = a});
+
+-- | The volume type. This can be 'gp2' for General Purpose (SSD) volumes,
+-- 'io1' for Provisioned IOPS (SSD) volumes, or 'standard' for Magnetic
+-- volumes.
+vVolumeType :: Lens' Volume VolumeType
+vVolumeType = lens _vVolumeType (\ s a -> s{_vVolumeType = a});
+
+instance FromXML Volume where
+        parseXML x
+          = Volume' <$>
+              (x .@? "attachmentSet" .!@ mempty >>=
+                 may (parseXMLList "item"))
+                <*> (x .@? "iops")
+                <*> (x .@? "kmsKeyId")
+                <*>
+                (x .@? "tagSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@ "availabilityZone")
+                <*> (x .@ "createTime")
+                <*> (x .@ "encrypted")
+                <*> (x .@ "size")
+                <*> (x .@ "snapshotId")
+                <*> (x .@ "status")
+                <*> (x .@ "volumeId")
+                <*> (x .@ "volumeType")
+
+-- | Describes volume attachment details.
+--
+-- /See:/ 'volumeAttachment' smart constructor.
+data VolumeAttachment = VolumeAttachment'
+    { _volInstanceId          :: !(Maybe Text)
+    , _volDeleteOnTermination :: !(Maybe Bool)
+    , _volState               :: !(Maybe VolumeAttachmentState)
+    , _volDevice              :: !(Maybe Text)
+    , _volVolumeId            :: !(Maybe Text)
+    , _volAttachTime          :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'volInstanceId'
+--
+-- * 'volDeleteOnTermination'
+--
+-- * 'volState'
+--
+-- * 'volDevice'
+--
+-- * 'volVolumeId'
+--
+-- * 'volAttachTime'
+volumeAttachment
+    :: VolumeAttachment
+volumeAttachment =
+    VolumeAttachment'
+    { _volInstanceId = Nothing
+    , _volDeleteOnTermination = Nothing
+    , _volState = Nothing
+    , _volDevice = Nothing
+    , _volVolumeId = Nothing
+    , _volAttachTime = Nothing
+    }
+
+-- | The ID of the instance.
+volInstanceId :: Lens' VolumeAttachment (Maybe Text)
+volInstanceId = lens _volInstanceId (\ s a -> s{_volInstanceId = a});
+
+-- | Indicates whether the EBS volume is deleted on instance termination.
+volDeleteOnTermination :: Lens' VolumeAttachment (Maybe Bool)
+volDeleteOnTermination = lens _volDeleteOnTermination (\ s a -> s{_volDeleteOnTermination = a});
+
+-- | The attachment state of the volume.
+volState :: Lens' VolumeAttachment (Maybe VolumeAttachmentState)
+volState = lens _volState (\ s a -> s{_volState = a});
+
+-- | The device name.
+volDevice :: Lens' VolumeAttachment (Maybe Text)
+volDevice = lens _volDevice (\ s a -> s{_volDevice = a});
+
+-- | The ID of the volume.
+volVolumeId :: Lens' VolumeAttachment (Maybe Text)
+volVolumeId = lens _volVolumeId (\ s a -> s{_volVolumeId = a});
+
+-- | The time stamp when the attachment initiated.
+volAttachTime :: Lens' VolumeAttachment (Maybe UTCTime)
+volAttachTime = lens _volAttachTime (\ s a -> s{_volAttachTime = a}) . mapping _Time;
+
+instance FromXML VolumeAttachment where
+        parseXML x
+          = VolumeAttachment' <$>
+              (x .@? "instanceId") <*>
+                (x .@? "deleteOnTermination")
+                <*> (x .@? "status")
+                <*> (x .@? "device")
+                <*> (x .@? "volumeId")
+                <*> (x .@? "attachTime")
+
+-- | Describes an EBS volume.
+--
+-- /See:/ 'volumeDetail' smart constructor.
+newtype VolumeDetail = VolumeDetail'
+    { _vdSize :: Integer
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vdSize'
+volumeDetail
+    :: Integer -- ^ 'vdSize'
+    -> VolumeDetail
+volumeDetail pSize_ =
+    VolumeDetail'
+    { _vdSize = pSize_
+    }
+
+-- | The size of the volume, in GiB.
+vdSize :: Lens' VolumeDetail Integer
+vdSize = lens _vdSize (\ s a -> s{_vdSize = a});
+
+instance ToQuery VolumeDetail where
+        toQuery VolumeDetail'{..}
+          = mconcat ["Size" =: _vdSize]
+
+-- | Describes a volume status operation code.
+--
+-- /See:/ 'volumeStatusAction' smart constructor.
+data VolumeStatusAction = VolumeStatusAction'
+    { _vsaEventType   :: !(Maybe Text)
+    , _vsaCode        :: !(Maybe Text)
+    , _vsaDescription :: !(Maybe Text)
+    , _vsaEventId     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeStatusAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsaEventType'
+--
+-- * 'vsaCode'
+--
+-- * 'vsaDescription'
+--
+-- * 'vsaEventId'
+volumeStatusAction
+    :: VolumeStatusAction
+volumeStatusAction =
+    VolumeStatusAction'
+    { _vsaEventType = Nothing
+    , _vsaCode = Nothing
+    , _vsaDescription = Nothing
+    , _vsaEventId = Nothing
+    }
+
+-- | The event type associated with this operation.
+vsaEventType :: Lens' VolumeStatusAction (Maybe Text)
+vsaEventType = lens _vsaEventType (\ s a -> s{_vsaEventType = a});
+
+-- | The code identifying the operation, for example, 'enable-volume-io'.
+vsaCode :: Lens' VolumeStatusAction (Maybe Text)
+vsaCode = lens _vsaCode (\ s a -> s{_vsaCode = a});
+
+-- | A description of the operation.
+vsaDescription :: Lens' VolumeStatusAction (Maybe Text)
+vsaDescription = lens _vsaDescription (\ s a -> s{_vsaDescription = a});
+
+-- | The ID of the event associated with this operation.
+vsaEventId :: Lens' VolumeStatusAction (Maybe Text)
+vsaEventId = lens _vsaEventId (\ s a -> s{_vsaEventId = a});
+
+instance FromXML VolumeStatusAction where
+        parseXML x
+          = VolumeStatusAction' <$>
+              (x .@? "eventType") <*> (x .@? "code") <*>
+                (x .@? "description")
+                <*> (x .@? "eventId")
+
+-- | Describes a volume status.
+--
+-- /See:/ 'volumeStatusDetails' smart constructor.
+data VolumeStatusDetails = VolumeStatusDetails'
+    { _vsdStatus :: !(Maybe Text)
+    , _vsdName   :: !(Maybe VolumeStatusName)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeStatusDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsdStatus'
+--
+-- * 'vsdName'
+volumeStatusDetails
+    :: VolumeStatusDetails
+volumeStatusDetails =
+    VolumeStatusDetails'
+    { _vsdStatus = Nothing
+    , _vsdName = Nothing
+    }
+
+-- | The intended status of the volume status.
+vsdStatus :: Lens' VolumeStatusDetails (Maybe Text)
+vsdStatus = lens _vsdStatus (\ s a -> s{_vsdStatus = a});
+
+-- | The name of the volume status.
+vsdName :: Lens' VolumeStatusDetails (Maybe VolumeStatusName)
+vsdName = lens _vsdName (\ s a -> s{_vsdName = a});
+
+instance FromXML VolumeStatusDetails where
+        parseXML x
+          = VolumeStatusDetails' <$>
+              (x .@? "status") <*> (x .@? "name")
+
+-- | Describes a volume status event.
+--
+-- /See:/ 'volumeStatusEvent' smart constructor.
+data VolumeStatusEvent = VolumeStatusEvent'
+    { _vseNotBefore   :: !(Maybe ISO8601)
+    , _vseEventType   :: !(Maybe Text)
+    , _vseDescription :: !(Maybe Text)
+    , _vseNotAfter    :: !(Maybe ISO8601)
+    , _vseEventId     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeStatusEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vseNotBefore'
+--
+-- * 'vseEventType'
+--
+-- * 'vseDescription'
+--
+-- * 'vseNotAfter'
+--
+-- * 'vseEventId'
+volumeStatusEvent
+    :: VolumeStatusEvent
+volumeStatusEvent =
+    VolumeStatusEvent'
+    { _vseNotBefore = Nothing
+    , _vseEventType = Nothing
+    , _vseDescription = Nothing
+    , _vseNotAfter = Nothing
+    , _vseEventId = Nothing
+    }
+
+-- | The earliest start time of the event.
+vseNotBefore :: Lens' VolumeStatusEvent (Maybe UTCTime)
+vseNotBefore = lens _vseNotBefore (\ s a -> s{_vseNotBefore = a}) . mapping _Time;
+
+-- | The type of this event.
+vseEventType :: Lens' VolumeStatusEvent (Maybe Text)
+vseEventType = lens _vseEventType (\ s a -> s{_vseEventType = a});
+
+-- | A description of the event.
+vseDescription :: Lens' VolumeStatusEvent (Maybe Text)
+vseDescription = lens _vseDescription (\ s a -> s{_vseDescription = a});
+
+-- | The latest end time of the event.
+vseNotAfter :: Lens' VolumeStatusEvent (Maybe UTCTime)
+vseNotAfter = lens _vseNotAfter (\ s a -> s{_vseNotAfter = a}) . mapping _Time;
+
+-- | The ID of this event.
+vseEventId :: Lens' VolumeStatusEvent (Maybe Text)
+vseEventId = lens _vseEventId (\ s a -> s{_vseEventId = a});
+
+instance FromXML VolumeStatusEvent where
+        parseXML x
+          = VolumeStatusEvent' <$>
+              (x .@? "notBefore") <*> (x .@? "eventType") <*>
+                (x .@? "description")
+                <*> (x .@? "notAfter")
+                <*> (x .@? "eventId")
+
+-- | Describes the status of a volume.
+--
+-- /See:/ 'volumeStatusInfo' smart constructor.
+data VolumeStatusInfo = VolumeStatusInfo'
+    { _vsiStatus  :: !(Maybe VolumeStatusInfoStatus)
+    , _vsiDetails :: !(Maybe [VolumeStatusDetails])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeStatusInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsiStatus'
+--
+-- * 'vsiDetails'
+volumeStatusInfo
+    :: VolumeStatusInfo
+volumeStatusInfo =
+    VolumeStatusInfo'
+    { _vsiStatus = Nothing
+    , _vsiDetails = Nothing
+    }
+
+-- | The status of the volume.
+vsiStatus :: Lens' VolumeStatusInfo (Maybe VolumeStatusInfoStatus)
+vsiStatus = lens _vsiStatus (\ s a -> s{_vsiStatus = a});
+
+-- | The details of the volume status.
+vsiDetails :: Lens' VolumeStatusInfo [VolumeStatusDetails]
+vsiDetails = lens _vsiDetails (\ s a -> s{_vsiDetails = a}) . _Default . _Coerce;
+
+instance FromXML VolumeStatusInfo where
+        parseXML x
+          = VolumeStatusInfo' <$>
+              (x .@? "status") <*>
+                (x .@? "details" .!@ mempty >>=
+                   may (parseXMLList "item"))
+
+-- | Describes the volume status.
+--
+-- /See:/ 'volumeStatusItem' smart constructor.
+data VolumeStatusItem = VolumeStatusItem'
+    { _vsiVolumeStatus     :: !(Maybe VolumeStatusInfo)
+    , _vsiActions          :: !(Maybe [VolumeStatusAction])
+    , _vsiEvents           :: !(Maybe [VolumeStatusEvent])
+    , _vsiAvailabilityZone :: !(Maybe Text)
+    , _vsiVolumeId         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeStatusItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsiVolumeStatus'
+--
+-- * 'vsiActions'
+--
+-- * 'vsiEvents'
+--
+-- * 'vsiAvailabilityZone'
+--
+-- * 'vsiVolumeId'
+volumeStatusItem
+    :: VolumeStatusItem
+volumeStatusItem =
+    VolumeStatusItem'
+    { _vsiVolumeStatus = Nothing
+    , _vsiActions = Nothing
+    , _vsiEvents = Nothing
+    , _vsiAvailabilityZone = Nothing
+    , _vsiVolumeId = Nothing
+    }
+
+-- | The volume status.
+vsiVolumeStatus :: Lens' VolumeStatusItem (Maybe VolumeStatusInfo)
+vsiVolumeStatus = lens _vsiVolumeStatus (\ s a -> s{_vsiVolumeStatus = a});
+
+-- | The details of the operation.
+vsiActions :: Lens' VolumeStatusItem [VolumeStatusAction]
+vsiActions = lens _vsiActions (\ s a -> s{_vsiActions = a}) . _Default . _Coerce;
+
+-- | A list of events associated with the volume.
+vsiEvents :: Lens' VolumeStatusItem [VolumeStatusEvent]
+vsiEvents = lens _vsiEvents (\ s a -> s{_vsiEvents = a}) . _Default . _Coerce;
+
+-- | The Availability Zone of the volume.
+vsiAvailabilityZone :: Lens' VolumeStatusItem (Maybe Text)
+vsiAvailabilityZone = lens _vsiAvailabilityZone (\ s a -> s{_vsiAvailabilityZone = a});
+
+-- | The volume ID.
+vsiVolumeId :: Lens' VolumeStatusItem (Maybe Text)
+vsiVolumeId = lens _vsiVolumeId (\ s a -> s{_vsiVolumeId = a});
+
+instance FromXML VolumeStatusItem where
+        parseXML x
+          = VolumeStatusItem' <$>
+              (x .@? "volumeStatus") <*>
+                (x .@? "actionsSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*>
+                (x .@? "eventsSet" .!@ mempty >>=
+                   may (parseXMLList "item"))
+                <*> (x .@? "availabilityZone")
                 <*> (x .@? "volumeId")
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
@@ -1271,19 +1271,41 @@
 instance FromXML OfferingTypeValues where
     parseXML = parseXMLText "OfferingTypeValues"
 
+data OperationType
+    = Add
+    | Remove
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText OperationType where
+    parser = takeLowerText >>= \case
+        "add" -> pure Add
+        "remove" -> pure Remove
+        e -> fromTextError $ "Failure parsing OperationType from value: '" <> e
+           <> "'. Accepted values: add, remove"
+
+instance ToText OperationType where
+    toText = \case
+        Add -> "add"
+        Remove -> "remove"
+
+instance Hashable     OperationType
+instance ToByteString OperationType
+instance ToQuery      OperationType
+instance ToHeader     OperationType
+
 data PermissionGroup =
-    PGAll
+    All
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText PermissionGroup where
     parser = takeLowerText >>= \case
-        "all" -> pure PGAll
+        "all" -> pure All
         e -> fromTextError $ "Failure parsing PermissionGroup from value: '" <> e
            <> "'. Accepted values: all"
 
 instance ToText PermissionGroup where
     toText = \case
-        PGAll -> "all"
+        All -> "all"
 
 instance Hashable     PermissionGroup
 instance ToByteString PermissionGroup
@@ -1294,27 +1316,27 @@
     parseXML = parseXMLText "PermissionGroup"
 
 data PlacementGroupState
-    = PGSAvailable
-    | PGSDeleted
-    | PGSDeleting
-    | PGSPending
+    = Available
+    | Deleted
+    | Deleting
+    | Pending
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText PlacementGroupState where
     parser = takeLowerText >>= \case
-        "available" -> pure PGSAvailable
-        "deleted" -> pure PGSDeleted
-        "deleting" -> pure PGSDeleting
-        "pending" -> pure PGSPending
+        "available" -> pure Available
+        "deleted" -> pure Deleted
+        "deleting" -> pure Deleting
+        "pending" -> pure Pending
         e -> fromTextError $ "Failure parsing PlacementGroupState from value: '" <> e
            <> "'. Accepted values: available, deleted, deleting, pending"
 
 instance ToText PlacementGroupState where
     toText = \case
-        PGSAvailable -> "available"
-        PGSDeleted -> "deleted"
-        PGSDeleting -> "deleting"
-        PGSPending -> "pending"
+        Available -> "available"
+        Deleted -> "deleted"
+        Deleting -> "deleting"
+        Pending -> "pending"
 
 instance Hashable     PlacementGroupState
 instance ToByteString PlacementGroupState
@@ -1347,18 +1369,18 @@
     parseXML = parseXMLText "PlacementStrategy"
 
 data PlatformValues =
-    PVWindows
+    Windows
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText PlatformValues where
     parser = takeLowerText >>= \case
-        "windows" -> pure PVWindows
+        "windows" -> pure Windows
         e -> fromTextError $ "Failure parsing PlatformValues from value: '" <> e
            <> "'. Accepted values: Windows"
 
 instance ToText PlatformValues where
     toText = \case
-        PVWindows -> "Windows"
+        Windows -> "Windows"
 
 instance Hashable     PlatformValues
 instance ToByteString PlatformValues
@@ -1394,27 +1416,27 @@
     parseXML = parseXMLText "ProductCodeValues"
 
 data RIProductDescription
-    = LinuxUnix
-    | LinuxUnixAmazonVPC
-    | Windows
-    | WindowsAmazonVPC
+    = RIDLinuxUnix
+    | RIDLinuxUnixAmazonVPC
+    | RIDWindows
+    | RIDWindowsAmazonVPC
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText RIProductDescription where
     parser = takeLowerText >>= \case
-        "linux/unix" -> pure LinuxUnix
-        "linux/unix (amazon vpc)" -> pure LinuxUnixAmazonVPC
-        "windows" -> pure Windows
-        "windows (amazon vpc)" -> pure WindowsAmazonVPC
+        "linux/unix" -> pure RIDLinuxUnix
+        "linux/unix (amazon vpc)" -> pure RIDLinuxUnixAmazonVPC
+        "windows" -> pure RIDWindows
+        "windows (amazon vpc)" -> pure RIDWindowsAmazonVPC
         e -> fromTextError $ "Failure parsing RIProductDescription from value: '" <> e
            <> "'. Accepted values: Linux/UNIX, Linux/UNIX (Amazon VPC), Windows, Windows (Amazon VPC)"
 
 instance ToText RIProductDescription where
     toText = \case
-        LinuxUnix -> "Linux/UNIX"
-        LinuxUnixAmazonVPC -> "Linux/UNIX (Amazon VPC)"
-        Windows -> "Windows"
-        WindowsAmazonVPC -> "Windows (Amazon VPC)"
+        RIDLinuxUnix -> "Linux/UNIX"
+        RIDLinuxUnixAmazonVPC -> "Linux/UNIX (Amazon VPC)"
+        RIDWindows -> "Windows"
+        RIDWindowsAmazonVPC -> "Windows (Amazon VPC)"
 
 instance Hashable     RIProductDescription
 instance ToByteString RIProductDescription
@@ -1490,21 +1512,21 @@
 instance ToHeader     ReportInstanceReasonCodes
 
 data ReportStatusType
-    = Impaired
-    | OK
+    = RSTImpaired
+    | RSTOK
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText ReportStatusType where
     parser = takeLowerText >>= \case
-        "impaired" -> pure Impaired
-        "ok" -> pure OK
+        "impaired" -> pure RSTImpaired
+        "ok" -> pure RSTOK
         e -> fromTextError $ "Failure parsing ReportStatusType from value: '" <> e
            <> "'. Accepted values: impaired, ok"
 
 instance ToText ReportStatusType where
     toText = \case
-        Impaired -> "impaired"
-        OK -> "ok"
+        RSTImpaired -> "impaired"
+        RSTOK -> "ok"
 
 instance Hashable     ReportStatusType
 instance ToByteString ReportStatusType
@@ -1841,27 +1863,27 @@
     parseXML = parseXMLText "SpotInstanceType"
 
 data State
-    = Available
-    | Deleted
-    | Deleting
-    | Pending
+    = SAvailable
+    | SDeleted
+    | SDeleting
+    | SPending
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText State where
     parser = takeLowerText >>= \case
-        "available" -> pure Available
-        "deleted" -> pure Deleted
-        "deleting" -> pure Deleting
-        "pending" -> pure Pending
+        "available" -> pure SAvailable
+        "deleted" -> pure SDeleted
+        "deleting" -> pure SDeleting
+        "pending" -> pure SPending
         e -> fromTextError $ "Failure parsing State from value: '" <> e
            <> "'. Accepted values: Available, Deleted, Deleting, Pending"
 
 instance ToText State where
     toText = \case
-        Available -> "Available"
-        Deleted -> "Deleted"
-        Deleting -> "Deleting"
-        Pending -> "Pending"
+        SAvailable -> "Available"
+        SDeleted -> "Deleted"
+        SDeleting -> "Deleting"
+        SPending -> "Pending"
 
 instance Hashable     State
 instance ToByteString State
@@ -1894,27 +1916,27 @@
     parseXML = parseXMLText "StatusName"
 
 data StatusType
-    = Failed
-    | Initializing
-    | InsufficientData
-    | Passed
+    = STFailed
+    | STInitializing
+    | STInsufficientData
+    | STPassed
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText StatusType where
     parser = takeLowerText >>= \case
-        "failed" -> pure Failed
-        "initializing" -> pure Initializing
-        "insufficient-data" -> pure InsufficientData
-        "passed" -> pure Passed
+        "failed" -> pure STFailed
+        "initializing" -> pure STInitializing
+        "insufficient-data" -> pure STInsufficientData
+        "passed" -> pure STPassed
         e -> fromTextError $ "Failure parsing StatusType from value: '" <> e
            <> "'. Accepted values: failed, initializing, insufficient-data, passed"
 
 instance ToText StatusType where
     toText = \case
-        Failed -> "failed"
-        Initializing -> "initializing"
-        InsufficientData -> "insufficient-data"
-        Passed -> "passed"
+        STFailed -> "failed"
+        STInitializing -> "initializing"
+        STInsufficientData -> "insufficient-data"
+        STPassed -> "passed"
 
 instance Hashable     StatusType
 instance ToByteString StatusType
@@ -1925,21 +1947,21 @@
     parseXML = parseXMLText "StatusType"
 
 data SubnetState
-    = SAvailable
-    | SPending
+    = SubAvailable
+    | SubPending
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText SubnetState where
     parser = takeLowerText >>= \case
-        "available" -> pure SAvailable
-        "pending" -> pure SPending
+        "available" -> pure SubAvailable
+        "pending" -> pure SubPending
         e -> fromTextError $ "Failure parsing SubnetState from value: '" <> e
            <> "'. Accepted values: available, pending"
 
 instance ToText SubnetState where
     toText = \case
-        SAvailable -> "available"
-        SPending -> "pending"
+        SubAvailable -> "available"
+        SubPending -> "pending"
 
 instance Hashable     SubnetState
 instance ToByteString SubnetState
@@ -2034,24 +2056,24 @@
     parseXML = parseXMLText "Tenancy"
 
 data TrafficType
-    = Accept
-    | All
-    | Reject
+    = TTAccept
+    | TTAll
+    | TTReject
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText TrafficType where
     parser = takeLowerText >>= \case
-        "accept" -> pure Accept
-        "all" -> pure All
-        "reject" -> pure Reject
+        "accept" -> pure TTAccept
+        "all" -> pure TTAll
+        "reject" -> pure TTReject
         e -> fromTextError $ "Failure parsing TrafficType from value: '" <> e
            <> "'. Accepted values: ACCEPT, ALL, REJECT"
 
 instance ToText TrafficType where
     toText = \case
-        Accept -> "ACCEPT"
-        All -> "ALL"
-        Reject -> "REJECT"
+        TTAccept -> "ACCEPT"
+        TTAll -> "ALL"
+        TTReject -> "REJECT"
 
 instance Hashable     TrafficType
 instance ToByteString TrafficType
@@ -2323,24 +2345,24 @@
     parseXML = parseXMLText "VolumeState"
 
 data VolumeStatusInfoStatus
-    = VSISImpaired
-    | VSISInsufficientData
-    | VSISOK
+    = Impaired
+    | InsufficientData
+    | OK
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText VolumeStatusInfoStatus where
     parser = takeLowerText >>= \case
-        "impaired" -> pure VSISImpaired
-        "insufficient-data" -> pure VSISInsufficientData
-        "ok" -> pure VSISOK
+        "impaired" -> pure Impaired
+        "insufficient-data" -> pure InsufficientData
+        "ok" -> pure OK
         e -> fromTextError $ "Failure parsing VolumeStatusInfoStatus from value: '" <> e
            <> "'. Accepted values: impaired, insufficient-data, ok"
 
 instance ToText VolumeStatusInfoStatus where
     toText = \case
-        VSISImpaired -> "impaired"
-        VSISInsufficientData -> "insufficient-data"
-        VSISOK -> "ok"
+        Impaired -> "impaired"
+        InsufficientData -> "insufficient-data"
+        OK -> "ok"
 
 instance Hashable     VolumeStatusInfoStatus
 instance ToByteString VolumeStatusInfoStatus
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
@@ -38,7 +38,7 @@
     , UnmonitorInstancesResponse
     -- * Response Lenses
     , uirsInstanceMonitorings
-    , uirsStatus
+    , uirsResponseStatus
     ) where
 
 import           Network.AWS.EC2.Types
@@ -108,7 +108,7 @@
 -- | /See:/ 'unmonitorInstancesResponse' smart constructor.
 data UnmonitorInstancesResponse = UnmonitorInstancesResponse'
     { _uirsInstanceMonitorings :: !(Maybe [InstanceMonitoring])
-    , _uirsStatus              :: !Int
+    , _uirsResponseStatus      :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'UnmonitorInstancesResponse' with the minimum fields required to make a request.
@@ -117,14 +117,14 @@
 --
 -- * 'uirsInstanceMonitorings'
 --
--- * 'uirsStatus'
+-- * 'uirsResponseStatus'
 unmonitorInstancesResponse
-    :: Int -- ^ 'uirsStatus'
+    :: Int -- ^ 'uirsResponseStatus'
     -> UnmonitorInstancesResponse
-unmonitorInstancesResponse pStatus_ =
+unmonitorInstancesResponse pResponseStatus_ =
     UnmonitorInstancesResponse'
     { _uirsInstanceMonitorings = Nothing
-    , _uirsStatus = pStatus_
+    , _uirsResponseStatus = pResponseStatus_
     }
 
 -- | Monitoring information for one or more instances.
@@ -132,5 +132,5 @@
 uirsInstanceMonitorings = lens _uirsInstanceMonitorings (\ s a -> s{_uirsInstanceMonitorings = a}) . _Default . _Coerce;
 
 -- | The response status code.
-uirsStatus :: Lens' UnmonitorInstancesResponse Int
-uirsStatus = lens _uirsStatus (\ s a -> s{_uirsStatus = a});
+uirsResponseStatus :: Lens' UnmonitorInstancesResponse Int
+uirsResponseStatus = lens _uirsResponseStatus (\ s a -> s{_uirsResponseStatus = a});
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
@@ -171,21 +171,6 @@
                               ctState . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.EC2.DescribeConversionTasks' every 15 seconds until a
--- successful state is reached. An error is returned after 40 failed checks.
-conversionTaskDeleted :: Wait DescribeConversionTasks
-conversionTaskDeleted =
-    Wait
-    { _waitName = "ConversionTaskDeleted"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "deleted"
-                             AcceptSuccess
-                             (folding (concatOf dctrsConversionTasks) .
-                              ctState . to toTextCI)]
-    }
-
 -- | Polls 'Network.AWS.EC2.DescribeInstances' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
 instanceStopped :: Wait DescribeInstances
@@ -214,6 +199,21 @@
                               insState . isName . to toTextCI)]
     }
 
+-- | Polls 'Network.AWS.EC2.DescribeConversionTasks' every 15 seconds until a
+-- successful state is reached. An error is returned after 40 failed checks.
+conversionTaskDeleted :: Wait DescribeConversionTasks
+conversionTaskDeleted =
+    Wait
+    { _waitName = "ConversionTaskDeleted"
+    , _waitAttempts = 40
+    , _waitDelay = 15
+    , _waitAcceptors = [ matchAll
+                             "deleted"
+                             AcceptSuccess
+                             (folding (concatOf dctrsConversionTasks) .
+                              ctState . to toTextCI)]
+    }
+
 -- | Polls 'Network.AWS.EC2.GetPasswordData' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
 passwordDataAvailable :: Wait GetPasswordData
@@ -297,34 +297,34 @@
                               sirStatus . _Just . sisCode . _Just . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.EC2.DescribeExportTasks' every 15 seconds until a
+-- | Polls 'Network.AWS.EC2.DescribeVPCs' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
-exportTaskCompleted :: Wait DescribeExportTasks
-exportTaskCompleted =
+vpcAvailable :: Wait DescribeVPCs
+vpcAvailable =
     Wait
-    { _waitName = "ExportTaskCompleted"
+    { _waitName = "VpcAvailable"
     , _waitAttempts = 40
     , _waitDelay = 15
     , _waitAcceptors = [ matchAll
-                             "completed"
+                             "available"
                              AcceptSuccess
-                             (folding (concatOf detrsExportTasks) .
-                              etState . to toTextCI)]
+                             (folding (concatOf dvrsVPCs) .
+                              vpcState . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.EC2.DescribeVPCs' every 15 seconds until a
+-- | Polls 'Network.AWS.EC2.DescribeExportTasks' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
-vpcAvailable :: Wait DescribeVPCs
-vpcAvailable =
+exportTaskCompleted :: Wait DescribeExportTasks
+exportTaskCompleted =
     Wait
-    { _waitName = "VpcAvailable"
+    { _waitName = "ExportTaskCompleted"
     , _waitAttempts = 40
     , _waitDelay = 15
     , _waitAcceptors = [ matchAll
-                             "available"
+                             "completed"
                              AcceptSuccess
-                             (folding (concatOf dvrsVPCs) .
-                              vpcState . to toTextCI)]
+                             (folding (concatOf detrsExportTasks) .
+                              etState . to toTextCI)]
     }
 
 -- | Polls 'Network.AWS.EC2.DescribeVPNConnections' every 15 seconds until a
@@ -423,6 +423,21 @@
                               vcState . to toTextCI)]
     }
 
+-- | Polls 'Network.AWS.EC2.DescribeConversionTasks' every 15 seconds until a
+-- successful state is reached. An error is returned after 40 failed checks.
+conversionTaskCancelled :: Wait DescribeConversionTasks
+conversionTaskCancelled =
+    Wait
+    { _waitName = "ConversionTaskCancelled"
+    , _waitAttempts = 40
+    , _waitDelay = 15
+    , _waitAcceptors = [ matchAll
+                             "cancelled"
+                             AcceptSuccess
+                             (folding (concatOf dctrsConversionTasks) .
+                              ctState . to toTextCI)]
+    }
+
 -- | Polls 'Network.AWS.EC2.DescribeImages' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
 imageAvailable :: Wait DescribeImages
@@ -443,19 +458,19 @@
                               iState . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.EC2.DescribeConversionTasks' every 15 seconds until a
+-- | Polls 'Network.AWS.EC2.DescribeSnapshots' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
-conversionTaskCancelled :: Wait DescribeConversionTasks
-conversionTaskCancelled =
+snapshotCompleted :: Wait DescribeSnapshots
+snapshotCompleted =
     Wait
-    { _waitName = "ConversionTaskCancelled"
+    { _waitName = "SnapshotCompleted"
     , _waitAttempts = 40
     , _waitDelay = 15
     , _waitAcceptors = [ matchAll
-                             "cancelled"
+                             "completed"
                              AcceptSuccess
-                             (folding (concatOf dctrsConversionTasks) .
-                              ctState . to toTextCI)]
+                             (folding (concatOf dssrsSnapshots) .
+                              sState . to toTextCI)]
     }
 
 -- | Polls 'Network.AWS.EC2.DescribeInstances' every 5 seconds until a
@@ -470,6 +485,22 @@
                        , matchError "InvalidInstanceIDNotFound" AcceptRetry]
     }
 
+-- | Polls 'Network.AWS.EC2.DescribeInstanceStatus' every 15 seconds until a
+-- successful state is reached. An error is returned after 40 failed checks.
+instanceStatusOK :: Wait DescribeInstanceStatus
+instanceStatusOK =
+    Wait
+    { _waitName = "InstanceStatusOk"
+    , _waitAttempts = 40
+    , _waitDelay = 15
+    , _waitAcceptors = [ matchAll
+                             "ok"
+                             AcceptSuccess
+                             (folding (concatOf disrsInstanceStatuses) .
+                              isInstanceStatus .
+                              _Just . issStatus . to toTextCI)]
+    }
+
 -- | Polls 'Network.AWS.EC2.DescribeVolumes' every 15 seconds until a
 -- successful state is reached. An error is returned after 40 failed checks.
 volumeAvailable :: Wait DescribeVolumes
@@ -488,35 +519,4 @@
                              AcceptFailure
                              (folding (concatOf dvvrsVolumes) .
                               vState . to toTextCI)]
-    }
-
--- | Polls 'Network.AWS.EC2.DescribeSnapshots' every 15 seconds until a
--- successful state is reached. An error is returned after 40 failed checks.
-snapshotCompleted :: Wait DescribeSnapshots
-snapshotCompleted =
-    Wait
-    { _waitName = "SnapshotCompleted"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "completed"
-                             AcceptSuccess
-                             (folding (concatOf dssrsSnapshots) .
-                              sState . to toTextCI)]
-    }
-
--- | Polls 'Network.AWS.EC2.DescribeInstanceStatus' every 15 seconds until a
--- successful state is reached. An error is returned after 40 failed checks.
-instanceStatusOK :: Wait DescribeInstanceStatus
-instanceStatusOK =
-    Wait
-    { _waitName = "InstanceStatusOk"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "ok"
-                             AcceptSuccess
-                             (folding (concatOf disrsInstanceStatuses) .
-                              isInstanceStatus .
-                              _Just . issStatus . to toTextCI)]
     }
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
@@ -73,7 +73,7 @@
                             (monitoring & mState ?~ MSDisabled)
                             X86_64 EBS HVM Xen
                             (instanceState ISNRunning 16)
-                                & insPlatform            ?~ PVWindows
+                                & insPlatform            ?~ Windows
                                 & insClientToken         ?~ "ABCDE1234567890123"
                                 & insSourceDestCheck     ?~ True
                                 & insVPCId               ?~ "vpc-1a2b3c4d"
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
@@ -28,3288 +28,3288 @@
 -- fixtures :: TestTree
 -- fixtures =
 --     [ testGroup "request"
---         [ testDetachNetworkInterface $
---             detachNetworkInterface
---
---         , testDeleteVPCEndpoints $
---             deleteVPCEndpoints
---
---         , testDeleteKeyPair $
---             deleteKeyPair
---
---         , testDeleteFlowLogs $
---             deleteFlowLogs
---
---         , testDescribeTags $
---             describeTags
---
---         , testRevokeSecurityGroupEgress $
---             revokeSecurityGroupEgress
---
---         , testCreateVPNGateway $
---             createVPNGateway
---
---         , testDetachInternetGateway $
---             detachInternetGateway
---
---         , testCreateNetworkACL $
---             createNetworkACL
---
---         , testImportInstance $
---             importInstance
---
---         , testDescribeVPCClassicLink $
---             describeVPCClassicLink
---
---         , testDeleteVPNConnection $
---             deleteVPNConnection
---
---         , testAuthorizeSecurityGroupEgress $
---             authorizeSecurityGroupEgress
---
---         , testDescribeBundleTasks $
---             describeBundleTasks
---
---         , testCreateInternetGateway $
---             createInternetGateway
---
---         , testReleaseAddress $
---             releaseAddress
---
---         , testCancelBundleTask $
---             cancelBundleTask
---
---         , testModifyNetworkInterfaceAttribute $
---             modifyNetworkInterfaceAttribute
---
---         , testModifySubnetAttribute $
---             modifySubnetAttribute
---
---         , testDeregisterImage $
---             deregisterImage
---
---         , testDetachVolume $
---             detachVolume
---
---         , testCancelReservedInstancesListing $
---             cancelReservedInstancesListing
---
---         , testAttachClassicLinkVPC $
---             attachClassicLinkVPC
---
---         , testCancelSpotFleetRequests $
---             cancelSpotFleetRequests
---
---         , testDescribeDHCPOptions $
---             describeDHCPOptions
---
---         , testDescribeSpotPriceHistory $
---             describeSpotPriceHistory
---
---         , testStopInstances $
---             stopInstances
---
---         , testImportImage $
---             importImage
---
---         , testDeleteNetworkACLEntry $
---             deleteNetworkACLEntry
---
---         , testDisableVPCClassicLink $
---             disableVPCClassicLink
---
---         , testAuthorizeSecurityGroupIngress $
---             authorizeSecurityGroupIngress
---
---         , testBundleInstance $
---             bundleInstance
---
---         , testDescribeVPCEndpointServices $
---             describeVPCEndpointServices
---
---         , testReplaceNetworkACLAssociation $
---             replaceNetworkACLAssociation
---
---         , testCreateVPCPeeringConnection $
---             createVPCPeeringConnection
---
---         , testResetSnapshotAttribute $
---             resetSnapshotAttribute
---
---         , testDescribeAddresses $
---             describeAddresses
---
---         , testDescribeInternetGateways $
---             describeInternetGateways
---
---         , testReplaceRoute $
---             replaceRoute
---
---         , testCreateTags $
---             createTags
---
---         , testDescribeSubnets $
---             describeSubnets
---
---         , testDescribeNetworkInterfaces $
---             describeNetworkInterfaces
---
---         , testPurchaseReservedInstancesOffering $
---             purchaseReservedInstancesOffering
---
---         , testDescribeSnapshotAttribute $
---             describeSnapshotAttribute
---
---         , testCreateCustomerGateway $
---             createCustomerGateway
---
---         , testAttachInternetGateway $
---             attachInternetGateway
---
---         , testDeleteTags $
---             deleteTags
---
---         , testReplaceNetworkACLEntry $
---             replaceNetworkACLEntry
---
---         , testResetInstanceAttribute $
---             resetInstanceAttribute
---
---         , testDeleteRoute $
---             deleteRoute
---
---         , testDescribeVPNConnections $
---             describeVPNConnections
---
---         , testDescribeFlowLogs $
---             describeFlowLogs
---
---         , testDeleteSecurityGroup $
---             deleteSecurityGroup
---
---         , testDescribeReservedInstancesOfferings $
---             describeReservedInstancesOfferings
---
---         , testDeleteVPCPeeringConnection $
---             deleteVPCPeeringConnection
---
---         , testDescribeVPCEndpoints $
---             describeVPCEndpoints
---
---         , testDescribeInstanceAttribute $
---             describeInstanceAttribute
---
---         , testConfirmProductInstance $
---             confirmProductInstance
---
---         , testImportKeyPair $
---             importKeyPair
---
---         , testAttachNetworkInterface $
---             attachNetworkInterface
---
---         , testDescribeInstanceStatus $
---             describeInstanceStatus
---
---         , testCancelConversionTask $
---             cancelConversionTask
---
---         , testReportInstanceStatus $
---             reportInstanceStatus
---
---         , testAssociateDHCPOptions $
---             associateDHCPOptions
---
---         , testDescribeVPCs $
---             describeVPCs
---
---         , testRequestSpotInstances $
---             requestSpotInstances
---
---         , testModifyImageAttribute $
---             modifyImageAttribute
---
---         , testDescribeReservedInstances $
---             describeReservedInstances
---
---         , testAllocateAddress $
---             allocateAddress
---
---         , testRunInstances $
---             runInstances
---
---         , testCreateRouteTable $
---             createRouteTable
---
---         , testAttachVolume $
---             attachVolume
---
---         , testDescribeConversionTasks $
---             describeConversionTasks
---
---         , testRejectVPCPeeringConnection $
---             rejectVPCPeeringConnection
---
---         , testRevokeSecurityGroupIngress $
---             revokeSecurityGroupIngress
---
---         , testDescribeVolumes $
---             describeVolumes
---
---         , testDeleteVPNConnectionRoute $
---             deleteVPNConnectionRoute
---
---         , testModifyReservedInstances $
---             modifyReservedInstances
---
---         , testRegisterImage $
---             registerImage
---
---         , testModifyVPCEndpoint $
---             modifyVPCEndpoint
---
---         , testDeleteVPNGateway $
---             deleteVPNGateway
---
---         , testCreateVPC $
---             createVPC
---
---         , testDescribeMovingAddresses $
---             describeMovingAddresses
---
---         , testDescribeVolumeAttribute $
---             describeVolumeAttribute
---
---         , testMoveAddressToVPC $
---             moveAddressToVPC
---
---         , testGetPasswordData $
---             getPasswordData
---
---         , testCreateFlowLogs $
---             createFlowLogs
---
---         , testDescribeImportImageTasks $
---             describeImportImageTasks
---
---         , testDeleteNetworkACL $
---             deleteNetworkACL
---
---         , testDescribeSpotFleetRequests $
---             describeSpotFleetRequests
---
---         , testCopySnapshot $
---             copySnapshot
---
---         , testModifyVolumeAttribute $
---             modifyVolumeAttribute
---
---         , testDescribeVPCAttribute $
---             describeVPCAttribute
---
---         , testCreateVolume $
---             createVolume
---
---         , testDisassociateAddress $
---             disassociateAddress
---
---         , testDeleteVPC $
---             deleteVPC
---
---         , testDescribePrefixLists $
---             describePrefixLists
---
---         , testCreateInstanceExportTask $
---             createInstanceExportTask
---
---         , testDescribeSpotDatafeedSubscription $
---             describeSpotDatafeedSubscription
---
---         , testDetachVPNGateway $
---             detachVPNGateway
---
---         , testDescribeExportTasks $
---             describeExportTasks
---
---         , testDeletePlacementGroup $
---             deletePlacementGroup
---
---         , testCreateSubnet $
---             createSubnet
---
---         , testEnableVolumeIO $
---             enableVolumeIO
---
---         , testCancelExportTask $
---             cancelExportTask
---
---         , testRequestSpotFleet $
---             requestSpotFleet
---
---         , testDescribeInstances $
---             describeInstances
---
---         , testDescribeSecurityGroups $
---             describeSecurityGroups
---
---         , testDescribeVPCPeeringConnections $
---             describeVPCPeeringConnections
---
---         , testCreateNetworkInterface $
---             createNetworkInterface
---
---         , testAssociateAddress $
---             associateAddress
---
---         , testStartInstances $
---             startInstances
---
---         , testDescribeCustomerGateways $
---             describeCustomerGateways
---
---         , testResetNetworkInterfaceAttribute $
---             resetNetworkInterfaceAttribute
---
---         , testCreateVPNConnection $
---             createVPNConnection
---
---         , testDescribeSnapshots $
---             describeSnapshots
---
---         , testCreatePlacementGroup $
---             createPlacementGroup
---
---         , testReplaceRouteTableAssociation $
---             replaceRouteTableAssociation
---
---         , testDescribeNetworkInterfaceAttribute $
---             describeNetworkInterfaceAttribute
---
---         , testDescribeReservedInstancesListings $
---             describeReservedInstancesListings
---
---         , testDeleteNetworkInterface $
---             deleteNetworkInterface
---
---         , testDeleteInternetGateway $
---             deleteInternetGateway
---
---         , testDeleteSubnet $
---             deleteSubnet
---
---         , testCreateVPCEndpoint $
---             createVPCEndpoint
---
---         , testDescribeImportSnapshotTasks $
---             describeImportSnapshotTasks
---
---         , testCopyImage $
---             copyImage
---
---         , testDisassociateRouteTable $
---             disassociateRouteTable
---
---         , testUnmonitorInstances $
---             unmonitorInstances
---
---         , testImportVolume $
---             importVolume
---
---         , testDisableVGWRoutePropagation $
---             disableVGWRoutePropagation
---
---         , testCreateSpotDatafeedSubscription $
---             createSpotDatafeedSubscription
---
---         , testAssignPrivateIPAddresses $
---             assignPrivateIPAddresses
---
---         , testDeleteSnapshot $
---             deleteSnapshot
---
---         , testDeleteCustomerGateway $
---             deleteCustomerGateway
---
---         , testModifyInstanceAttribute $
---             modifyInstanceAttribute
---
---         , testCreateSecurityGroup $
---             createSecurityGroup
---
---         , testCancelSpotInstanceRequests $
---             cancelSpotInstanceRequests
---
---         , testCreateRoute $
---             createRoute
---
---         , testCreateNetworkACLEntry $
---             createNetworkACLEntry
---
---         , testModifySnapshotAttribute $
---             modifySnapshotAttribute
---
---         , testEnableVGWRoutePropagation $
---             enableVGWRoutePropagation
---
---         , testCreateSnapshot $
---             createSnapshot
---
---         , testDescribeSpotFleetRequestHistory $
---             describeSpotFleetRequestHistory
---
---         , testDeleteSpotDatafeedSubscription $
---             deleteSpotDatafeedSubscription
---
---         , testDescribePlacementGroups $
---             describePlacementGroups
---
---         , testCreateReservedInstancesListing $
---             createReservedInstancesListing
---
---         , testEnableVPCClassicLink $
---             enableVPCClassicLink
---
---         , testDescribeKeyPairs $
---             describeKeyPairs
---
---         , testRebootInstances $
---             rebootInstances
---
---         , testAttachVPNGateway $
---             attachVPNGateway
---
---         , testCreateVPNConnectionRoute $
---             createVPNConnectionRoute
---
---         , testDescribeClassicLinkInstances $
---             describeClassicLinkInstances
---
---         , testTerminateInstances $
---             terminateInstances
---
---         , testCreateDHCPOptions $
---             createDHCPOptions
---
---         , testAssociateRouteTable $
---             associateRouteTable
---
---         , testCreateImage $
---             createImage
---
---         , testDescribeAccountAttributes $
---             describeAccountAttributes
---
---         , testResetImageAttribute $
---             resetImageAttribute
---
---         , testDescribeNetworkACLs $
---             describeNetworkACLs
---
---         , testCancelImportTask $
---             cancelImportTask
---
---         , testGetConsoleOutput $
---             getConsoleOutput
---
---         , testUnassignPrivateIPAddresses $
---             unassignPrivateIPAddresses
---
---         , testDeleteRouteTable $
---             deleteRouteTable
---
---         , testDescribeImageAttribute $
---             describeImageAttribute
---
---         , testDeleteDHCPOptions $
---             deleteDHCPOptions
---
---         , testDescribeVPNGateways $
---             describeVPNGateways
---
---         , testDetachClassicLinkVPC $
---             detachClassicLinkVPC
---
---         , testDescribeReservedInstancesModifications $
---             describeReservedInstancesModifications
---
---         , testDescribeSpotInstanceRequests $
---             describeSpotInstanceRequests
---
---         , testMonitorInstances $
---             monitorInstances
---
---         , testDescribeRegions $
---             describeRegions
---
---         , testModifyVPCAttribute $
---             modifyVPCAttribute
---
---         , testDescribeSpotFleetInstances $
---             describeSpotFleetInstances
---
---         , testDescribeVolumeStatus $
---             describeVolumeStatus
---
---         , testDeleteVolume $
---             deleteVolume
---
---         , testDescribeImages $
---             describeImages
---
---         , testCreateKeyPair $
---             createKeyPair
---
---         , testRestoreAddressToClassic $
---             restoreAddressToClassic
---
---         , testDescribeAvailabilityZones $
---             describeAvailabilityZones
---
---         , testImportSnapshot $
---             importSnapshot
---
---         , testAcceptVPCPeeringConnection $
---             acceptVPCPeeringConnection
---
---         , testDescribeRouteTables $
---             describeRouteTables
---
---           ]
-
---     , testGroup "response"
---         [ testDetachNetworkInterfaceResponse $
---             detachNetworkInterfaceResponse
---
---         , testDeleteVPCEndpointsResponse $
---             deleteVPCEndpointsResponse
---
---         , testDeleteKeyPairResponse $
---             deleteKeyPairResponse
---
---         , testDeleteFlowLogsResponse $
---             deleteFlowLogsResponse
---
---         , testDescribeTagsResponse $
---             describeTagsResponse
---
---         , testRevokeSecurityGroupEgressResponse $
---             revokeSecurityGroupEgressResponse
---
---         , testCreateVPNGatewayResponse $
---             createVPNGatewayResponse
---
---         , testDetachInternetGatewayResponse $
---             detachInternetGatewayResponse
---
---         , testCreateNetworkACLResponse $
---             createNetworkACLResponse
---
---         , testImportInstanceResponse $
---             importInstanceResponse
---
---         , testDescribeVPCClassicLinkResponse $
---             describeVPCClassicLinkResponse
---
---         , testDeleteVPNConnectionResponse $
---             deleteVPNConnectionResponse
---
---         , testAuthorizeSecurityGroupEgressResponse $
---             authorizeSecurityGroupEgressResponse
---
---         , testDescribeBundleTasksResponse $
---             describeBundleTasksResponse
---
---         , testCreateInternetGatewayResponse $
---             createInternetGatewayResponse
---
---         , testReleaseAddressResponse $
---             releaseAddressResponse
---
---         , testCancelBundleTaskResponse $
---             cancelBundleTaskResponse
---
---         , testModifyNetworkInterfaceAttributeResponse $
---             modifyNetworkInterfaceAttributeResponse
---
---         , testModifySubnetAttributeResponse $
---             modifySubnetAttributeResponse
---
---         , testDeregisterImageResponse $
---             deregisterImageResponse
---
---         , testDetachVolumeResponse $
---             volumeAttachment
---
---         , testCancelReservedInstancesListingResponse $
---             cancelReservedInstancesListingResponse
---
---         , testAttachClassicLinkVPCResponse $
---             attachClassicLinkVPCResponse
---
---         , testCancelSpotFleetRequestsResponse $
---             cancelSpotFleetRequestsResponse
---
---         , testDescribeDHCPOptionsResponse $
---             describeDHCPOptionsResponse
---
---         , testDescribeSpotPriceHistoryResponse $
---             describeSpotPriceHistoryResponse
---
---         , testStopInstancesResponse $
---             stopInstancesResponse
---
---         , testImportImageResponse $
---             importImageResponse
---
---         , testDeleteNetworkACLEntryResponse $
---             deleteNetworkACLEntryResponse
---
---         , testDisableVPCClassicLinkResponse $
---             disableVPCClassicLinkResponse
---
---         , testAuthorizeSecurityGroupIngressResponse $
---             authorizeSecurityGroupIngressResponse
---
---         , testBundleInstanceResponse $
---             bundleInstanceResponse
---
---         , testDescribeVPCEndpointServicesResponse $
---             describeVPCEndpointServicesResponse
---
---         , testReplaceNetworkACLAssociationResponse $
---             replaceNetworkACLAssociationResponse
---
---         , testCreateVPCPeeringConnectionResponse $
---             createVPCPeeringConnectionResponse
---
---         , testResetSnapshotAttributeResponse $
---             resetSnapshotAttributeResponse
---
---         , testDescribeAddressesResponse $
---             describeAddressesResponse
---
---         , testDescribeInternetGatewaysResponse $
---             describeInternetGatewaysResponse
---
---         , testReplaceRouteResponse $
---             replaceRouteResponse
---
---         , testCreateTagsResponse $
---             createTagsResponse
---
---         , testDescribeSubnetsResponse $
---             describeSubnetsResponse
---
---         , testDescribeNetworkInterfacesResponse $
---             describeNetworkInterfacesResponse
---
---         , testPurchaseReservedInstancesOfferingResponse $
---             purchaseReservedInstancesOfferingResponse
---
---         , testDescribeSnapshotAttributeResponse $
---             describeSnapshotAttributeResponse
---
---         , testCreateCustomerGatewayResponse $
---             createCustomerGatewayResponse
---
---         , testAttachInternetGatewayResponse $
---             attachInternetGatewayResponse
---
---         , testDeleteTagsResponse $
---             deleteTagsResponse
---
---         , testReplaceNetworkACLEntryResponse $
---             replaceNetworkACLEntryResponse
---
---         , testResetInstanceAttributeResponse $
---             resetInstanceAttributeResponse
---
---         , testDeleteRouteResponse $
---             deleteRouteResponse
---
---         , testDescribeVPNConnectionsResponse $
---             describeVPNConnectionsResponse
---
---         , testDescribeFlowLogsResponse $
---             describeFlowLogsResponse
---
---         , testDeleteSecurityGroupResponse $
---             deleteSecurityGroupResponse
---
---         , testDescribeReservedInstancesOfferingsResponse $
---             describeReservedInstancesOfferingsResponse
---
---         , testDeleteVPCPeeringConnectionResponse $
---             deleteVPCPeeringConnectionResponse
---
---         , testDescribeVPCEndpointsResponse $
---             describeVPCEndpointsResponse
---
---         , testDescribeInstanceAttributeResponse $
---             describeInstanceAttributeResponse
---
---         , testConfirmProductInstanceResponse $
---             confirmProductInstanceResponse
---
---         , testImportKeyPairResponse $
---             importKeyPairResponse
---
---         , testAttachNetworkInterfaceResponse $
---             attachNetworkInterfaceResponse
---
---         , testDescribeInstanceStatusResponse $
---             describeInstanceStatusResponse
---
---         , testCancelConversionTaskResponse $
---             cancelConversionTaskResponse
---
---         , testReportInstanceStatusResponse $
---             reportInstanceStatusResponse
---
---         , testAssociateDHCPOptionsResponse $
---             associateDHCPOptionsResponse
---
---         , testDescribeVPCsResponse $
---             describeVPCsResponse
---
---         , testRequestSpotInstancesResponse $
---             requestSpotInstancesResponse
---
---         , testModifyImageAttributeResponse $
---             modifyImageAttributeResponse
---
---         , testDescribeReservedInstancesResponse $
---             describeReservedInstancesResponse
---
---         , testAllocateAddressResponse $
---             allocateAddressResponse
---
---         , testRunInstancesResponse $
---             reservation
---
---         , testCreateRouteTableResponse $
---             createRouteTableResponse
---
---         , testAttachVolumeResponse $
---             volumeAttachment
---
---         , testDescribeConversionTasksResponse $
---             describeConversionTasksResponse
---
---         , testRejectVPCPeeringConnectionResponse $
---             rejectVPCPeeringConnectionResponse
---
---         , testRevokeSecurityGroupIngressResponse $
---             revokeSecurityGroupIngressResponse
---
---         , testDescribeVolumesResponse $
---             describeVolumesResponse
---
---         , testDeleteVPNConnectionRouteResponse $
---             deleteVPNConnectionRouteResponse
---
---         , testModifyReservedInstancesResponse $
---             modifyReservedInstancesResponse
---
---         , testRegisterImageResponse $
---             registerImageResponse
---
---         , testModifyVPCEndpointResponse $
---             modifyVPCEndpointResponse
---
---         , testDeleteVPNGatewayResponse $
---             deleteVPNGatewayResponse
---
---         , testCreateVPCResponse $
---             createVPCResponse
---
---         , testDescribeMovingAddressesResponse $
---             describeMovingAddressesResponse
---
---         , testDescribeVolumeAttributeResponse $
---             describeVolumeAttributeResponse
---
---         , testMoveAddressToVPCResponse $
---             moveAddressToVPCResponse
---
---         , testGetPasswordDataResponse $
---             getPasswordDataResponse
---
---         , testCreateFlowLogsResponse $
---             createFlowLogsResponse
---
---         , testDescribeImportImageTasksResponse $
---             describeImportImageTasksResponse
---
---         , testDeleteNetworkACLResponse $
---             deleteNetworkACLResponse
---
---         , testDescribeSpotFleetRequestsResponse $
---             describeSpotFleetRequestsResponse
---
---         , testCopySnapshotResponse $
---             copySnapshotResponse
---
---         , testModifyVolumeAttributeResponse $
---             modifyVolumeAttributeResponse
---
---         , testDescribeVPCAttributeResponse $
---             describeVPCAttributeResponse
---
---         , testCreateVolumeResponse $
---             volume
---
---         , testDisassociateAddressResponse $
---             disassociateAddressResponse
---
---         , testDeleteVPCResponse $
---             deleteVPCResponse
---
---         , testDescribePrefixListsResponse $
---             describePrefixListsResponse
---
---         , testCreateInstanceExportTaskResponse $
---             createInstanceExportTaskResponse
---
---         , testDescribeSpotDatafeedSubscriptionResponse $
---             describeSpotDatafeedSubscriptionResponse
---
---         , testDetachVPNGatewayResponse $
---             detachVPNGatewayResponse
---
---         , testDescribeExportTasksResponse $
---             describeExportTasksResponse
---
---         , testDeletePlacementGroupResponse $
---             deletePlacementGroupResponse
---
---         , testCreateSubnetResponse $
---             createSubnetResponse
---
---         , testEnableVolumeIOResponse $
---             enableVolumeIOResponse
---
---         , testCancelExportTaskResponse $
---             cancelExportTaskResponse
---
---         , testRequestSpotFleetResponse $
---             requestSpotFleetResponse
---
---         , testDescribeInstancesResponse $
---             describeInstancesResponse
---
---         , testDescribeSecurityGroupsResponse $
---             describeSecurityGroupsResponse
---
---         , testDescribeVPCPeeringConnectionsResponse $
---             describeVPCPeeringConnectionsResponse
---
---         , testCreateNetworkInterfaceResponse $
---             createNetworkInterfaceResponse
---
---         , testAssociateAddressResponse $
---             associateAddressResponse
---
---         , testStartInstancesResponse $
---             startInstancesResponse
---
---         , testDescribeCustomerGatewaysResponse $
---             describeCustomerGatewaysResponse
---
---         , testResetNetworkInterfaceAttributeResponse $
---             resetNetworkInterfaceAttributeResponse
---
---         , testCreateVPNConnectionResponse $
---             createVPNConnectionResponse
---
---         , testDescribeSnapshotsResponse $
---             describeSnapshotsResponse
---
---         , testCreatePlacementGroupResponse $
---             createPlacementGroupResponse
---
---         , testReplaceRouteTableAssociationResponse $
---             replaceRouteTableAssociationResponse
---
---         , testDescribeNetworkInterfaceAttributeResponse $
---             describeNetworkInterfaceAttributeResponse
---
---         , testDescribeReservedInstancesListingsResponse $
---             describeReservedInstancesListingsResponse
---
---         , testDeleteNetworkInterfaceResponse $
---             deleteNetworkInterfaceResponse
---
---         , testDeleteInternetGatewayResponse $
---             deleteInternetGatewayResponse
---
---         , testDeleteSubnetResponse $
---             deleteSubnetResponse
---
---         , testCreateVPCEndpointResponse $
---             createVPCEndpointResponse
---
---         , testDescribeImportSnapshotTasksResponse $
---             describeImportSnapshotTasksResponse
---
---         , testCopyImageResponse $
---             copyImageResponse
---
---         , testDisassociateRouteTableResponse $
---             disassociateRouteTableResponse
---
---         , testUnmonitorInstancesResponse $
---             unmonitorInstancesResponse
---
---         , testImportVolumeResponse $
---             importVolumeResponse
---
---         , testDisableVGWRoutePropagationResponse $
---             disableVGWRoutePropagationResponse
---
---         , testCreateSpotDatafeedSubscriptionResponse $
---             createSpotDatafeedSubscriptionResponse
---
---         , testAssignPrivateIPAddressesResponse $
---             assignPrivateIPAddressesResponse
---
---         , testDeleteSnapshotResponse $
---             deleteSnapshotResponse
---
---         , testDeleteCustomerGatewayResponse $
---             deleteCustomerGatewayResponse
---
---         , testModifyInstanceAttributeResponse $
---             modifyInstanceAttributeResponse
---
---         , testCreateSecurityGroupResponse $
---             createSecurityGroupResponse
---
---         , testCancelSpotInstanceRequestsResponse $
---             cancelSpotInstanceRequestsResponse
---
---         , testCreateRouteResponse $
---             createRouteResponse
---
---         , testCreateNetworkACLEntryResponse $
---             createNetworkACLEntryResponse
---
---         , testModifySnapshotAttributeResponse $
---             modifySnapshotAttributeResponse
---
---         , testEnableVGWRoutePropagationResponse $
---             enableVGWRoutePropagationResponse
---
---         , testCreateSnapshotResponse $
---             snapshot
---
---         , testDescribeSpotFleetRequestHistoryResponse $
---             describeSpotFleetRequestHistoryResponse
---
---         , testDeleteSpotDatafeedSubscriptionResponse $
---             deleteSpotDatafeedSubscriptionResponse
---
---         , testDescribePlacementGroupsResponse $
---             describePlacementGroupsResponse
---
---         , testCreateReservedInstancesListingResponse $
---             createReservedInstancesListingResponse
---
---         , testEnableVPCClassicLinkResponse $
---             enableVPCClassicLinkResponse
---
---         , testDescribeKeyPairsResponse $
---             describeKeyPairsResponse
---
---         , testRebootInstancesResponse $
---             rebootInstancesResponse
---
---         , testAttachVPNGatewayResponse $
---             attachVPNGatewayResponse
---
---         , testCreateVPNConnectionRouteResponse $
---             createVPNConnectionRouteResponse
---
---         , testDescribeClassicLinkInstancesResponse $
---             describeClassicLinkInstancesResponse
---
---         , testTerminateInstancesResponse $
---             terminateInstancesResponse
---
---         , testCreateDHCPOptionsResponse $
---             createDHCPOptionsResponse
---
---         , testAssociateRouteTableResponse $
---             associateRouteTableResponse
---
---         , testCreateImageResponse $
---             createImageResponse
---
---         , testDescribeAccountAttributesResponse $
---             describeAccountAttributesResponse
---
---         , testResetImageAttributeResponse $
---             resetImageAttributeResponse
---
---         , testDescribeNetworkACLsResponse $
---             describeNetworkACLsResponse
---
---         , testCancelImportTaskResponse $
---             cancelImportTaskResponse
---
---         , testGetConsoleOutputResponse $
---             getConsoleOutputResponse
---
---         , testUnassignPrivateIPAddressesResponse $
---             unassignPrivateIPAddressesResponse
---
---         , testDeleteRouteTableResponse $
---             deleteRouteTableResponse
---
---         , testDescribeImageAttributeResponse $
---             describeImageAttributeResponse
---
---         , testDeleteDHCPOptionsResponse $
---             deleteDHCPOptionsResponse
---
---         , testDescribeVPNGatewaysResponse $
---             describeVPNGatewaysResponse
---
---         , testDetachClassicLinkVPCResponse $
---             detachClassicLinkVPCResponse
---
---         , testDescribeReservedInstancesModificationsResponse $
---             describeReservedInstancesModificationsResponse
---
---         , testDescribeSpotInstanceRequestsResponse $
---             describeSpotInstanceRequestsResponse
---
---         , testMonitorInstancesResponse $
---             monitorInstancesResponse
---
---         , testDescribeRegionsResponse $
---             describeRegionsResponse
---
---         , testModifyVPCAttributeResponse $
---             modifyVPCAttributeResponse
---
---         , testDescribeSpotFleetInstancesResponse $
---             describeSpotFleetInstancesResponse
---
---         , testDescribeVolumeStatusResponse $
---             describeVolumeStatusResponse
---
---         , testDeleteVolumeResponse $
---             deleteVolumeResponse
---
---         , testDescribeImagesResponse $
---             describeImagesResponse
---
---         , testCreateKeyPairResponse $
---             createKeyPairResponse
---
---         , testRestoreAddressToClassicResponse $
---             restoreAddressToClassicResponse
---
---         , testDescribeAvailabilityZonesResponse $
---             describeAvailabilityZonesResponse
---
---         , testImportSnapshotResponse $
---             importSnapshotResponse
---
---         , testAcceptVPCPeeringConnectionResponse $
---             acceptVPCPeeringConnectionResponse
---
---         , testDescribeRouteTablesResponse $
---             describeRouteTablesResponse
---
---           ]
---     ]
-
--- Requests
-
-testDetachNetworkInterface :: DetachNetworkInterface -> TestTree
-testDetachNetworkInterface = req
-    "DetachNetworkInterface"
-    "fixture/DetachNetworkInterface.yaml"
-
-testDeleteVPCEndpoints :: DeleteVPCEndpoints -> TestTree
-testDeleteVPCEndpoints = req
-    "DeleteVPCEndpoints"
-    "fixture/DeleteVPCEndpoints.yaml"
-
-testDeleteKeyPair :: DeleteKeyPair -> TestTree
-testDeleteKeyPair = req
-    "DeleteKeyPair"
-    "fixture/DeleteKeyPair.yaml"
-
-testDeleteFlowLogs :: DeleteFlowLogs -> TestTree
-testDeleteFlowLogs = req
-    "DeleteFlowLogs"
-    "fixture/DeleteFlowLogs.yaml"
-
-testDescribeTags :: DescribeTags -> TestTree
-testDescribeTags = req
-    "DescribeTags"
-    "fixture/DescribeTags.yaml"
-
-testRevokeSecurityGroupEgress :: RevokeSecurityGroupEgress -> TestTree
-testRevokeSecurityGroupEgress = req
-    "RevokeSecurityGroupEgress"
-    "fixture/RevokeSecurityGroupEgress.yaml"
-
-testCreateVPNGateway :: CreateVPNGateway -> TestTree
-testCreateVPNGateway = req
-    "CreateVPNGateway"
-    "fixture/CreateVPNGateway.yaml"
-
-testDetachInternetGateway :: DetachInternetGateway -> TestTree
-testDetachInternetGateway = req
-    "DetachInternetGateway"
-    "fixture/DetachInternetGateway.yaml"
-
-testCreateNetworkACL :: CreateNetworkACL -> TestTree
-testCreateNetworkACL = req
-    "CreateNetworkACL"
-    "fixture/CreateNetworkACL.yaml"
-
-testImportInstance :: ImportInstance -> TestTree
-testImportInstance = req
-    "ImportInstance"
-    "fixture/ImportInstance.yaml"
-
-testDescribeVPCClassicLink :: DescribeVPCClassicLink -> TestTree
-testDescribeVPCClassicLink = req
-    "DescribeVPCClassicLink"
-    "fixture/DescribeVPCClassicLink.yaml"
-
-testDeleteVPNConnection :: DeleteVPNConnection -> TestTree
-testDeleteVPNConnection = req
-    "DeleteVPNConnection"
-    "fixture/DeleteVPNConnection.yaml"
-
-testAuthorizeSecurityGroupEgress :: AuthorizeSecurityGroupEgress -> TestTree
-testAuthorizeSecurityGroupEgress = req
-    "AuthorizeSecurityGroupEgress"
-    "fixture/AuthorizeSecurityGroupEgress.yaml"
-
-testDescribeBundleTasks :: DescribeBundleTasks -> TestTree
-testDescribeBundleTasks = req
-    "DescribeBundleTasks"
-    "fixture/DescribeBundleTasks.yaml"
-
-testCreateInternetGateway :: CreateInternetGateway -> TestTree
-testCreateInternetGateway = req
-    "CreateInternetGateway"
-    "fixture/CreateInternetGateway.yaml"
-
-testReleaseAddress :: ReleaseAddress -> TestTree
-testReleaseAddress = req
-    "ReleaseAddress"
-    "fixture/ReleaseAddress.yaml"
-
-testCancelBundleTask :: CancelBundleTask -> TestTree
-testCancelBundleTask = req
-    "CancelBundleTask"
-    "fixture/CancelBundleTask.yaml"
-
-testModifyNetworkInterfaceAttribute :: ModifyNetworkInterfaceAttribute -> TestTree
-testModifyNetworkInterfaceAttribute = req
-    "ModifyNetworkInterfaceAttribute"
-    "fixture/ModifyNetworkInterfaceAttribute.yaml"
-
-testModifySubnetAttribute :: ModifySubnetAttribute -> TestTree
-testModifySubnetAttribute = req
-    "ModifySubnetAttribute"
-    "fixture/ModifySubnetAttribute.yaml"
-
-testDeregisterImage :: DeregisterImage -> TestTree
-testDeregisterImage = req
-    "DeregisterImage"
-    "fixture/DeregisterImage.yaml"
-
-testDetachVolume :: DetachVolume -> TestTree
-testDetachVolume = req
-    "DetachVolume"
-    "fixture/DetachVolume.yaml"
-
-testCancelReservedInstancesListing :: CancelReservedInstancesListing -> TestTree
-testCancelReservedInstancesListing = req
-    "CancelReservedInstancesListing"
-    "fixture/CancelReservedInstancesListing.yaml"
-
-testAttachClassicLinkVPC :: AttachClassicLinkVPC -> TestTree
-testAttachClassicLinkVPC = req
-    "AttachClassicLinkVPC"
-    "fixture/AttachClassicLinkVPC.yaml"
-
-testCancelSpotFleetRequests :: CancelSpotFleetRequests -> TestTree
-testCancelSpotFleetRequests = req
-    "CancelSpotFleetRequests"
-    "fixture/CancelSpotFleetRequests.yaml"
-
-testDescribeDHCPOptions :: DescribeDHCPOptions -> TestTree
-testDescribeDHCPOptions = req
-    "DescribeDHCPOptions"
-    "fixture/DescribeDHCPOptions.yaml"
-
-testDescribeSpotPriceHistory :: DescribeSpotPriceHistory -> TestTree
-testDescribeSpotPriceHistory = req
-    "DescribeSpotPriceHistory"
-    "fixture/DescribeSpotPriceHistory.yaml"
-
-testStopInstances :: StopInstances -> TestTree
-testStopInstances = req
-    "StopInstances"
-    "fixture/StopInstances.yaml"
-
-testImportImage :: ImportImage -> TestTree
-testImportImage = req
-    "ImportImage"
-    "fixture/ImportImage.yaml"
-
-testDeleteNetworkACLEntry :: DeleteNetworkACLEntry -> TestTree
-testDeleteNetworkACLEntry = req
-    "DeleteNetworkACLEntry"
-    "fixture/DeleteNetworkACLEntry.yaml"
-
-testDisableVPCClassicLink :: DisableVPCClassicLink -> TestTree
-testDisableVPCClassicLink = req
-    "DisableVPCClassicLink"
-    "fixture/DisableVPCClassicLink.yaml"
-
-testAuthorizeSecurityGroupIngress :: AuthorizeSecurityGroupIngress -> TestTree
-testAuthorizeSecurityGroupIngress = req
-    "AuthorizeSecurityGroupIngress"
-    "fixture/AuthorizeSecurityGroupIngress.yaml"
-
-testBundleInstance :: BundleInstance -> TestTree
-testBundleInstance = req
-    "BundleInstance"
-    "fixture/BundleInstance.yaml"
-
-testDescribeVPCEndpointServices :: DescribeVPCEndpointServices -> TestTree
-testDescribeVPCEndpointServices = req
-    "DescribeVPCEndpointServices"
-    "fixture/DescribeVPCEndpointServices.yaml"
-
-testReplaceNetworkACLAssociation :: ReplaceNetworkACLAssociation -> TestTree
-testReplaceNetworkACLAssociation = req
-    "ReplaceNetworkACLAssociation"
-    "fixture/ReplaceNetworkACLAssociation.yaml"
-
-testCreateVPCPeeringConnection :: CreateVPCPeeringConnection -> TestTree
-testCreateVPCPeeringConnection = req
-    "CreateVPCPeeringConnection"
-    "fixture/CreateVPCPeeringConnection.yaml"
-
-testResetSnapshotAttribute :: ResetSnapshotAttribute -> TestTree
-testResetSnapshotAttribute = req
-    "ResetSnapshotAttribute"
-    "fixture/ResetSnapshotAttribute.yaml"
-
-testDescribeAddresses :: DescribeAddresses -> TestTree
-testDescribeAddresses = req
-    "DescribeAddresses"
-    "fixture/DescribeAddresses.yaml"
-
-testDescribeInternetGateways :: DescribeInternetGateways -> TestTree
-testDescribeInternetGateways = req
-    "DescribeInternetGateways"
-    "fixture/DescribeInternetGateways.yaml"
-
-testReplaceRoute :: ReplaceRoute -> TestTree
-testReplaceRoute = req
-    "ReplaceRoute"
-    "fixture/ReplaceRoute.yaml"
-
-testCreateTags :: CreateTags -> TestTree
-testCreateTags = req
-    "CreateTags"
-    "fixture/CreateTags.yaml"
-
-testDescribeSubnets :: DescribeSubnets -> TestTree
-testDescribeSubnets = req
-    "DescribeSubnets"
-    "fixture/DescribeSubnets.yaml"
-
-testDescribeNetworkInterfaces :: DescribeNetworkInterfaces -> TestTree
-testDescribeNetworkInterfaces = req
-    "DescribeNetworkInterfaces"
-    "fixture/DescribeNetworkInterfaces.yaml"
-
-testPurchaseReservedInstancesOffering :: PurchaseReservedInstancesOffering -> TestTree
-testPurchaseReservedInstancesOffering = req
-    "PurchaseReservedInstancesOffering"
-    "fixture/PurchaseReservedInstancesOffering.yaml"
-
-testDescribeSnapshotAttribute :: DescribeSnapshotAttribute -> TestTree
-testDescribeSnapshotAttribute = req
-    "DescribeSnapshotAttribute"
-    "fixture/DescribeSnapshotAttribute.yaml"
-
-testCreateCustomerGateway :: CreateCustomerGateway -> TestTree
-testCreateCustomerGateway = req
-    "CreateCustomerGateway"
-    "fixture/CreateCustomerGateway.yaml"
-
-testAttachInternetGateway :: AttachInternetGateway -> TestTree
-testAttachInternetGateway = req
-    "AttachInternetGateway"
-    "fixture/AttachInternetGateway.yaml"
-
-testDeleteTags :: DeleteTags -> TestTree
-testDeleteTags = req
-    "DeleteTags"
-    "fixture/DeleteTags.yaml"
-
-testReplaceNetworkACLEntry :: ReplaceNetworkACLEntry -> TestTree
-testReplaceNetworkACLEntry = req
-    "ReplaceNetworkACLEntry"
-    "fixture/ReplaceNetworkACLEntry.yaml"
-
-testResetInstanceAttribute :: ResetInstanceAttribute -> TestTree
-testResetInstanceAttribute = req
-    "ResetInstanceAttribute"
-    "fixture/ResetInstanceAttribute.yaml"
-
-testDeleteRoute :: DeleteRoute -> TestTree
-testDeleteRoute = req
-    "DeleteRoute"
-    "fixture/DeleteRoute.yaml"
-
-testDescribeVPNConnections :: DescribeVPNConnections -> TestTree
-testDescribeVPNConnections = req
-    "DescribeVPNConnections"
-    "fixture/DescribeVPNConnections.yaml"
-
-testDescribeFlowLogs :: DescribeFlowLogs -> TestTree
-testDescribeFlowLogs = req
-    "DescribeFlowLogs"
-    "fixture/DescribeFlowLogs.yaml"
-
-testDeleteSecurityGroup :: DeleteSecurityGroup -> TestTree
-testDeleteSecurityGroup = req
-    "DeleteSecurityGroup"
-    "fixture/DeleteSecurityGroup.yaml"
-
-testDescribeReservedInstancesOfferings :: DescribeReservedInstancesOfferings -> TestTree
-testDescribeReservedInstancesOfferings = req
-    "DescribeReservedInstancesOfferings"
-    "fixture/DescribeReservedInstancesOfferings.yaml"
-
-testDeleteVPCPeeringConnection :: DeleteVPCPeeringConnection -> TestTree
-testDeleteVPCPeeringConnection = req
-    "DeleteVPCPeeringConnection"
-    "fixture/DeleteVPCPeeringConnection.yaml"
-
-testDescribeVPCEndpoints :: DescribeVPCEndpoints -> TestTree
-testDescribeVPCEndpoints = req
-    "DescribeVPCEndpoints"
-    "fixture/DescribeVPCEndpoints.yaml"
-
-testDescribeInstanceAttribute :: DescribeInstanceAttribute -> TestTree
-testDescribeInstanceAttribute = req
-    "DescribeInstanceAttribute"
-    "fixture/DescribeInstanceAttribute.yaml"
-
-testConfirmProductInstance :: ConfirmProductInstance -> TestTree
-testConfirmProductInstance = req
-    "ConfirmProductInstance"
-    "fixture/ConfirmProductInstance.yaml"
-
-testImportKeyPair :: ImportKeyPair -> TestTree
-testImportKeyPair = req
-    "ImportKeyPair"
-    "fixture/ImportKeyPair.yaml"
-
-testAttachNetworkInterface :: AttachNetworkInterface -> TestTree
-testAttachNetworkInterface = req
-    "AttachNetworkInterface"
-    "fixture/AttachNetworkInterface.yaml"
-
-testDescribeInstanceStatus :: DescribeInstanceStatus -> TestTree
-testDescribeInstanceStatus = req
-    "DescribeInstanceStatus"
-    "fixture/DescribeInstanceStatus.yaml"
-
-testCancelConversionTask :: CancelConversionTask -> TestTree
-testCancelConversionTask = req
-    "CancelConversionTask"
-    "fixture/CancelConversionTask.yaml"
-
-testReportInstanceStatus :: ReportInstanceStatus -> TestTree
-testReportInstanceStatus = req
-    "ReportInstanceStatus"
-    "fixture/ReportInstanceStatus.yaml"
-
-testAssociateDHCPOptions :: AssociateDHCPOptions -> TestTree
-testAssociateDHCPOptions = req
-    "AssociateDHCPOptions"
-    "fixture/AssociateDHCPOptions.yaml"
-
-testDescribeVPCs :: DescribeVPCs -> TestTree
-testDescribeVPCs = req
-    "DescribeVPCs"
-    "fixture/DescribeVPCs.yaml"
-
-testRequestSpotInstances :: RequestSpotInstances -> TestTree
-testRequestSpotInstances = req
-    "RequestSpotInstances"
-    "fixture/RequestSpotInstances.yaml"
-
-testModifyImageAttribute :: ModifyImageAttribute -> TestTree
-testModifyImageAttribute = req
-    "ModifyImageAttribute"
-    "fixture/ModifyImageAttribute.yaml"
-
-testDescribeReservedInstances :: DescribeReservedInstances -> TestTree
-testDescribeReservedInstances = req
-    "DescribeReservedInstances"
-    "fixture/DescribeReservedInstances.yaml"
-
-testAllocateAddress :: AllocateAddress -> TestTree
-testAllocateAddress = req
-    "AllocateAddress"
-    "fixture/AllocateAddress.yaml"
-
-testRunInstances :: RunInstances -> TestTree
-testRunInstances = req
-    "RunInstances"
-    "fixture/RunInstances.yaml"
-
-testCreateRouteTable :: CreateRouteTable -> TestTree
-testCreateRouteTable = req
-    "CreateRouteTable"
-    "fixture/CreateRouteTable.yaml"
-
-testAttachVolume :: AttachVolume -> TestTree
-testAttachVolume = req
-    "AttachVolume"
-    "fixture/AttachVolume.yaml"
-
-testDescribeConversionTasks :: DescribeConversionTasks -> TestTree
-testDescribeConversionTasks = req
-    "DescribeConversionTasks"
-    "fixture/DescribeConversionTasks.yaml"
-
-testRejectVPCPeeringConnection :: RejectVPCPeeringConnection -> TestTree
-testRejectVPCPeeringConnection = req
-    "RejectVPCPeeringConnection"
-    "fixture/RejectVPCPeeringConnection.yaml"
-
-testRevokeSecurityGroupIngress :: RevokeSecurityGroupIngress -> TestTree
-testRevokeSecurityGroupIngress = req
-    "RevokeSecurityGroupIngress"
-    "fixture/RevokeSecurityGroupIngress.yaml"
-
-testDescribeVolumes :: DescribeVolumes -> TestTree
-testDescribeVolumes = req
-    "DescribeVolumes"
-    "fixture/DescribeVolumes.yaml"
-
-testDeleteVPNConnectionRoute :: DeleteVPNConnectionRoute -> TestTree
-testDeleteVPNConnectionRoute = req
-    "DeleteVPNConnectionRoute"
-    "fixture/DeleteVPNConnectionRoute.yaml"
-
-testModifyReservedInstances :: ModifyReservedInstances -> TestTree
-testModifyReservedInstances = req
-    "ModifyReservedInstances"
-    "fixture/ModifyReservedInstances.yaml"
-
-testRegisterImage :: RegisterImage -> TestTree
-testRegisterImage = req
-    "RegisterImage"
-    "fixture/RegisterImage.yaml"
-
-testModifyVPCEndpoint :: ModifyVPCEndpoint -> TestTree
-testModifyVPCEndpoint = req
-    "ModifyVPCEndpoint"
-    "fixture/ModifyVPCEndpoint.yaml"
-
-testDeleteVPNGateway :: DeleteVPNGateway -> TestTree
-testDeleteVPNGateway = req
-    "DeleteVPNGateway"
-    "fixture/DeleteVPNGateway.yaml"
-
-testCreateVPC :: CreateVPC -> TestTree
-testCreateVPC = req
-    "CreateVPC"
-    "fixture/CreateVPC.yaml"
-
-testDescribeMovingAddresses :: DescribeMovingAddresses -> TestTree
-testDescribeMovingAddresses = req
-    "DescribeMovingAddresses"
-    "fixture/DescribeMovingAddresses.yaml"
-
-testDescribeVolumeAttribute :: DescribeVolumeAttribute -> TestTree
-testDescribeVolumeAttribute = req
-    "DescribeVolumeAttribute"
-    "fixture/DescribeVolumeAttribute.yaml"
-
-testMoveAddressToVPC :: MoveAddressToVPC -> TestTree
-testMoveAddressToVPC = req
-    "MoveAddressToVPC"
-    "fixture/MoveAddressToVPC.yaml"
-
-testGetPasswordData :: GetPasswordData -> TestTree
-testGetPasswordData = req
-    "GetPasswordData"
-    "fixture/GetPasswordData.yaml"
-
-testCreateFlowLogs :: CreateFlowLogs -> TestTree
-testCreateFlowLogs = req
-    "CreateFlowLogs"
-    "fixture/CreateFlowLogs.yaml"
-
-testDescribeImportImageTasks :: DescribeImportImageTasks -> TestTree
-testDescribeImportImageTasks = req
-    "DescribeImportImageTasks"
-    "fixture/DescribeImportImageTasks.yaml"
-
-testDeleteNetworkACL :: DeleteNetworkACL -> TestTree
-testDeleteNetworkACL = req
-    "DeleteNetworkACL"
-    "fixture/DeleteNetworkACL.yaml"
-
-testDescribeSpotFleetRequests :: DescribeSpotFleetRequests -> TestTree
-testDescribeSpotFleetRequests = req
-    "DescribeSpotFleetRequests"
-    "fixture/DescribeSpotFleetRequests.yaml"
-
-testCopySnapshot :: CopySnapshot -> TestTree
-testCopySnapshot = req
-    "CopySnapshot"
-    "fixture/CopySnapshot.yaml"
-
-testModifyVolumeAttribute :: ModifyVolumeAttribute -> TestTree
-testModifyVolumeAttribute = req
-    "ModifyVolumeAttribute"
-    "fixture/ModifyVolumeAttribute.yaml"
-
-testDescribeVPCAttribute :: DescribeVPCAttribute -> TestTree
-testDescribeVPCAttribute = req
-    "DescribeVPCAttribute"
-    "fixture/DescribeVPCAttribute.yaml"
-
-testCreateVolume :: CreateVolume -> TestTree
-testCreateVolume = req
-    "CreateVolume"
-    "fixture/CreateVolume.yaml"
-
-testDisassociateAddress :: DisassociateAddress -> TestTree
-testDisassociateAddress = req
-    "DisassociateAddress"
-    "fixture/DisassociateAddress.yaml"
-
-testDeleteVPC :: DeleteVPC -> TestTree
-testDeleteVPC = req
-    "DeleteVPC"
-    "fixture/DeleteVPC.yaml"
-
-testDescribePrefixLists :: DescribePrefixLists -> TestTree
-testDescribePrefixLists = req
-    "DescribePrefixLists"
-    "fixture/DescribePrefixLists.yaml"
-
-testCreateInstanceExportTask :: CreateInstanceExportTask -> TestTree
-testCreateInstanceExportTask = req
-    "CreateInstanceExportTask"
-    "fixture/CreateInstanceExportTask.yaml"
-
-testDescribeSpotDatafeedSubscription :: DescribeSpotDatafeedSubscription -> TestTree
-testDescribeSpotDatafeedSubscription = req
-    "DescribeSpotDatafeedSubscription"
-    "fixture/DescribeSpotDatafeedSubscription.yaml"
-
-testDetachVPNGateway :: DetachVPNGateway -> TestTree
-testDetachVPNGateway = req
-    "DetachVPNGateway"
-    "fixture/DetachVPNGateway.yaml"
-
-testDescribeExportTasks :: DescribeExportTasks -> TestTree
-testDescribeExportTasks = req
-    "DescribeExportTasks"
-    "fixture/DescribeExportTasks.yaml"
-
-testDeletePlacementGroup :: DeletePlacementGroup -> TestTree
-testDeletePlacementGroup = req
-    "DeletePlacementGroup"
-    "fixture/DeletePlacementGroup.yaml"
-
-testCreateSubnet :: CreateSubnet -> TestTree
-testCreateSubnet = req
-    "CreateSubnet"
-    "fixture/CreateSubnet.yaml"
-
-testEnableVolumeIO :: EnableVolumeIO -> TestTree
-testEnableVolumeIO = req
-    "EnableVolumeIO"
-    "fixture/EnableVolumeIO.yaml"
-
-testCancelExportTask :: CancelExportTask -> TestTree
-testCancelExportTask = req
-    "CancelExportTask"
-    "fixture/CancelExportTask.yaml"
-
-testRequestSpotFleet :: RequestSpotFleet -> TestTree
-testRequestSpotFleet = req
-    "RequestSpotFleet"
-    "fixture/RequestSpotFleet.yaml"
-
-testDescribeInstances :: DescribeInstances -> TestTree
-testDescribeInstances = req
-    "DescribeInstances"
-    "fixture/DescribeInstances.yaml"
-
-testDescribeSecurityGroups :: DescribeSecurityGroups -> TestTree
-testDescribeSecurityGroups = req
-    "DescribeSecurityGroups"
-    "fixture/DescribeSecurityGroups.yaml"
-
-testDescribeVPCPeeringConnections :: DescribeVPCPeeringConnections -> TestTree
-testDescribeVPCPeeringConnections = req
-    "DescribeVPCPeeringConnections"
-    "fixture/DescribeVPCPeeringConnections.yaml"
-
-testCreateNetworkInterface :: CreateNetworkInterface -> TestTree
-testCreateNetworkInterface = req
-    "CreateNetworkInterface"
-    "fixture/CreateNetworkInterface.yaml"
-
-testAssociateAddress :: AssociateAddress -> TestTree
-testAssociateAddress = req
-    "AssociateAddress"
-    "fixture/AssociateAddress.yaml"
-
-testStartInstances :: StartInstances -> TestTree
-testStartInstances = req
-    "StartInstances"
-    "fixture/StartInstances.yaml"
-
-testDescribeCustomerGateways :: DescribeCustomerGateways -> TestTree
-testDescribeCustomerGateways = req
-    "DescribeCustomerGateways"
-    "fixture/DescribeCustomerGateways.yaml"
-
-testResetNetworkInterfaceAttribute :: ResetNetworkInterfaceAttribute -> TestTree
-testResetNetworkInterfaceAttribute = req
-    "ResetNetworkInterfaceAttribute"
-    "fixture/ResetNetworkInterfaceAttribute.yaml"
-
-testCreateVPNConnection :: CreateVPNConnection -> TestTree
-testCreateVPNConnection = req
-    "CreateVPNConnection"
-    "fixture/CreateVPNConnection.yaml"
-
-testDescribeSnapshots :: DescribeSnapshots -> TestTree
-testDescribeSnapshots = req
-    "DescribeSnapshots"
-    "fixture/DescribeSnapshots.yaml"
-
-testCreatePlacementGroup :: CreatePlacementGroup -> TestTree
-testCreatePlacementGroup = req
-    "CreatePlacementGroup"
-    "fixture/CreatePlacementGroup.yaml"
-
-testReplaceRouteTableAssociation :: ReplaceRouteTableAssociation -> TestTree
-testReplaceRouteTableAssociation = req
-    "ReplaceRouteTableAssociation"
-    "fixture/ReplaceRouteTableAssociation.yaml"
-
-testDescribeNetworkInterfaceAttribute :: DescribeNetworkInterfaceAttribute -> TestTree
-testDescribeNetworkInterfaceAttribute = req
-    "DescribeNetworkInterfaceAttribute"
-    "fixture/DescribeNetworkInterfaceAttribute.yaml"
-
-testDescribeReservedInstancesListings :: DescribeReservedInstancesListings -> TestTree
-testDescribeReservedInstancesListings = req
-    "DescribeReservedInstancesListings"
-    "fixture/DescribeReservedInstancesListings.yaml"
-
-testDeleteNetworkInterface :: DeleteNetworkInterface -> TestTree
-testDeleteNetworkInterface = req
-    "DeleteNetworkInterface"
-    "fixture/DeleteNetworkInterface.yaml"
-
-testDeleteInternetGateway :: DeleteInternetGateway -> TestTree
-testDeleteInternetGateway = req
-    "DeleteInternetGateway"
-    "fixture/DeleteInternetGateway.yaml"
-
-testDeleteSubnet :: DeleteSubnet -> TestTree
-testDeleteSubnet = req
-    "DeleteSubnet"
-    "fixture/DeleteSubnet.yaml"
-
-testCreateVPCEndpoint :: CreateVPCEndpoint -> TestTree
-testCreateVPCEndpoint = req
-    "CreateVPCEndpoint"
-    "fixture/CreateVPCEndpoint.yaml"
-
-testDescribeImportSnapshotTasks :: DescribeImportSnapshotTasks -> TestTree
-testDescribeImportSnapshotTasks = req
-    "DescribeImportSnapshotTasks"
-    "fixture/DescribeImportSnapshotTasks.yaml"
-
-testCopyImage :: CopyImage -> TestTree
-testCopyImage = req
-    "CopyImage"
-    "fixture/CopyImage.yaml"
-
-testDisassociateRouteTable :: DisassociateRouteTable -> TestTree
-testDisassociateRouteTable = req
-    "DisassociateRouteTable"
-    "fixture/DisassociateRouteTable.yaml"
-
-testUnmonitorInstances :: UnmonitorInstances -> TestTree
-testUnmonitorInstances = req
-    "UnmonitorInstances"
-    "fixture/UnmonitorInstances.yaml"
-
-testImportVolume :: ImportVolume -> TestTree
-testImportVolume = req
-    "ImportVolume"
-    "fixture/ImportVolume.yaml"
-
-testDisableVGWRoutePropagation :: DisableVGWRoutePropagation -> TestTree
-testDisableVGWRoutePropagation = req
-    "DisableVGWRoutePropagation"
-    "fixture/DisableVGWRoutePropagation.yaml"
-
-testCreateSpotDatafeedSubscription :: CreateSpotDatafeedSubscription -> TestTree
-testCreateSpotDatafeedSubscription = req
-    "CreateSpotDatafeedSubscription"
-    "fixture/CreateSpotDatafeedSubscription.yaml"
-
-testAssignPrivateIPAddresses :: AssignPrivateIPAddresses -> TestTree
-testAssignPrivateIPAddresses = req
-    "AssignPrivateIPAddresses"
-    "fixture/AssignPrivateIPAddresses.yaml"
-
-testDeleteSnapshot :: DeleteSnapshot -> TestTree
-testDeleteSnapshot = req
-    "DeleteSnapshot"
-    "fixture/DeleteSnapshot.yaml"
-
-testDeleteCustomerGateway :: DeleteCustomerGateway -> TestTree
-testDeleteCustomerGateway = req
-    "DeleteCustomerGateway"
-    "fixture/DeleteCustomerGateway.yaml"
-
-testModifyInstanceAttribute :: ModifyInstanceAttribute -> TestTree
-testModifyInstanceAttribute = req
-    "ModifyInstanceAttribute"
-    "fixture/ModifyInstanceAttribute.yaml"
-
-testCreateSecurityGroup :: CreateSecurityGroup -> TestTree
-testCreateSecurityGroup = req
-    "CreateSecurityGroup"
-    "fixture/CreateSecurityGroup.yaml"
-
-testCancelSpotInstanceRequests :: CancelSpotInstanceRequests -> TestTree
-testCancelSpotInstanceRequests = req
-    "CancelSpotInstanceRequests"
-    "fixture/CancelSpotInstanceRequests.yaml"
-
-testCreateRoute :: CreateRoute -> TestTree
-testCreateRoute = req
-    "CreateRoute"
-    "fixture/CreateRoute.yaml"
-
-testCreateNetworkACLEntry :: CreateNetworkACLEntry -> TestTree
-testCreateNetworkACLEntry = req
-    "CreateNetworkACLEntry"
-    "fixture/CreateNetworkACLEntry.yaml"
-
-testModifySnapshotAttribute :: ModifySnapshotAttribute -> TestTree
-testModifySnapshotAttribute = req
-    "ModifySnapshotAttribute"
-    "fixture/ModifySnapshotAttribute.yaml"
-
-testEnableVGWRoutePropagation :: EnableVGWRoutePropagation -> TestTree
-testEnableVGWRoutePropagation = req
-    "EnableVGWRoutePropagation"
-    "fixture/EnableVGWRoutePropagation.yaml"
-
-testCreateSnapshot :: CreateSnapshot -> TestTree
-testCreateSnapshot = req
-    "CreateSnapshot"
-    "fixture/CreateSnapshot.yaml"
-
-testDescribeSpotFleetRequestHistory :: DescribeSpotFleetRequestHistory -> TestTree
-testDescribeSpotFleetRequestHistory = req
-    "DescribeSpotFleetRequestHistory"
-    "fixture/DescribeSpotFleetRequestHistory.yaml"
-
-testDeleteSpotDatafeedSubscription :: DeleteSpotDatafeedSubscription -> TestTree
-testDeleteSpotDatafeedSubscription = req
-    "DeleteSpotDatafeedSubscription"
-    "fixture/DeleteSpotDatafeedSubscription.yaml"
-
-testDescribePlacementGroups :: DescribePlacementGroups -> TestTree
-testDescribePlacementGroups = req
-    "DescribePlacementGroups"
-    "fixture/DescribePlacementGroups.yaml"
-
-testCreateReservedInstancesListing :: CreateReservedInstancesListing -> TestTree
-testCreateReservedInstancesListing = req
-    "CreateReservedInstancesListing"
-    "fixture/CreateReservedInstancesListing.yaml"
-
-testEnableVPCClassicLink :: EnableVPCClassicLink -> TestTree
-testEnableVPCClassicLink = req
-    "EnableVPCClassicLink"
-    "fixture/EnableVPCClassicLink.yaml"
-
-testDescribeKeyPairs :: DescribeKeyPairs -> TestTree
-testDescribeKeyPairs = req
-    "DescribeKeyPairs"
-    "fixture/DescribeKeyPairs.yaml"
-
-testRebootInstances :: RebootInstances -> TestTree
-testRebootInstances = req
-    "RebootInstances"
-    "fixture/RebootInstances.yaml"
-
-testAttachVPNGateway :: AttachVPNGateway -> TestTree
-testAttachVPNGateway = req
-    "AttachVPNGateway"
-    "fixture/AttachVPNGateway.yaml"
-
-testCreateVPNConnectionRoute :: CreateVPNConnectionRoute -> TestTree
-testCreateVPNConnectionRoute = req
-    "CreateVPNConnectionRoute"
-    "fixture/CreateVPNConnectionRoute.yaml"
-
-testDescribeClassicLinkInstances :: DescribeClassicLinkInstances -> TestTree
-testDescribeClassicLinkInstances = req
-    "DescribeClassicLinkInstances"
-    "fixture/DescribeClassicLinkInstances.yaml"
-
-testTerminateInstances :: TerminateInstances -> TestTree
-testTerminateInstances = req
-    "TerminateInstances"
-    "fixture/TerminateInstances.yaml"
-
-testCreateDHCPOptions :: CreateDHCPOptions -> TestTree
-testCreateDHCPOptions = req
-    "CreateDHCPOptions"
-    "fixture/CreateDHCPOptions.yaml"
-
-testAssociateRouteTable :: AssociateRouteTable -> TestTree
-testAssociateRouteTable = req
-    "AssociateRouteTable"
-    "fixture/AssociateRouteTable.yaml"
-
-testCreateImage :: CreateImage -> TestTree
-testCreateImage = req
-    "CreateImage"
-    "fixture/CreateImage.yaml"
-
-testDescribeAccountAttributes :: DescribeAccountAttributes -> TestTree
-testDescribeAccountAttributes = req
-    "DescribeAccountAttributes"
-    "fixture/DescribeAccountAttributes.yaml"
-
-testResetImageAttribute :: ResetImageAttribute -> TestTree
-testResetImageAttribute = req
-    "ResetImageAttribute"
-    "fixture/ResetImageAttribute.yaml"
-
-testDescribeNetworkACLs :: DescribeNetworkACLs -> TestTree
-testDescribeNetworkACLs = req
-    "DescribeNetworkACLs"
-    "fixture/DescribeNetworkACLs.yaml"
-
-testCancelImportTask :: CancelImportTask -> TestTree
-testCancelImportTask = req
-    "CancelImportTask"
-    "fixture/CancelImportTask.yaml"
-
-testGetConsoleOutput :: GetConsoleOutput -> TestTree
-testGetConsoleOutput = req
-    "GetConsoleOutput"
-    "fixture/GetConsoleOutput.yaml"
-
-testUnassignPrivateIPAddresses :: UnassignPrivateIPAddresses -> TestTree
-testUnassignPrivateIPAddresses = req
-    "UnassignPrivateIPAddresses"
-    "fixture/UnassignPrivateIPAddresses.yaml"
-
-testDeleteRouteTable :: DeleteRouteTable -> TestTree
-testDeleteRouteTable = req
-    "DeleteRouteTable"
-    "fixture/DeleteRouteTable.yaml"
-
-testDescribeImageAttribute :: DescribeImageAttribute -> TestTree
-testDescribeImageAttribute = req
-    "DescribeImageAttribute"
-    "fixture/DescribeImageAttribute.yaml"
-
-testDeleteDHCPOptions :: DeleteDHCPOptions -> TestTree
-testDeleteDHCPOptions = req
-    "DeleteDHCPOptions"
-    "fixture/DeleteDHCPOptions.yaml"
-
-testDescribeVPNGateways :: DescribeVPNGateways -> TestTree
-testDescribeVPNGateways = req
-    "DescribeVPNGateways"
-    "fixture/DescribeVPNGateways.yaml"
-
-testDetachClassicLinkVPC :: DetachClassicLinkVPC -> TestTree
-testDetachClassicLinkVPC = req
-    "DetachClassicLinkVPC"
-    "fixture/DetachClassicLinkVPC.yaml"
-
-testDescribeReservedInstancesModifications :: DescribeReservedInstancesModifications -> TestTree
-testDescribeReservedInstancesModifications = req
-    "DescribeReservedInstancesModifications"
-    "fixture/DescribeReservedInstancesModifications.yaml"
-
-testDescribeSpotInstanceRequests :: DescribeSpotInstanceRequests -> TestTree
-testDescribeSpotInstanceRequests = req
-    "DescribeSpotInstanceRequests"
-    "fixture/DescribeSpotInstanceRequests.yaml"
-
-testMonitorInstances :: MonitorInstances -> TestTree
-testMonitorInstances = req
-    "MonitorInstances"
-    "fixture/MonitorInstances.yaml"
-
-testDescribeRegions :: DescribeRegions -> TestTree
-testDescribeRegions = req
-    "DescribeRegions"
-    "fixture/DescribeRegions.yaml"
-
-testModifyVPCAttribute :: ModifyVPCAttribute -> TestTree
-testModifyVPCAttribute = req
-    "ModifyVPCAttribute"
-    "fixture/ModifyVPCAttribute.yaml"
-
-testDescribeSpotFleetInstances :: DescribeSpotFleetInstances -> TestTree
-testDescribeSpotFleetInstances = req
-    "DescribeSpotFleetInstances"
-    "fixture/DescribeSpotFleetInstances.yaml"
-
-testDescribeVolumeStatus :: DescribeVolumeStatus -> TestTree
-testDescribeVolumeStatus = req
-    "DescribeVolumeStatus"
-    "fixture/DescribeVolumeStatus.yaml"
-
-testDeleteVolume :: DeleteVolume -> TestTree
-testDeleteVolume = req
-    "DeleteVolume"
-    "fixture/DeleteVolume.yaml"
-
-testDescribeImages :: DescribeImages -> TestTree
-testDescribeImages = req
-    "DescribeImages"
-    "fixture/DescribeImages.yaml"
-
-testCreateKeyPair :: CreateKeyPair -> TestTree
-testCreateKeyPair = req
-    "CreateKeyPair"
-    "fixture/CreateKeyPair.yaml"
-
-testRestoreAddressToClassic :: RestoreAddressToClassic -> TestTree
-testRestoreAddressToClassic = req
-    "RestoreAddressToClassic"
-    "fixture/RestoreAddressToClassic.yaml"
-
-testDescribeAvailabilityZones :: DescribeAvailabilityZones -> TestTree
-testDescribeAvailabilityZones = req
-    "DescribeAvailabilityZones"
-    "fixture/DescribeAvailabilityZones.yaml"
-
-testImportSnapshot :: ImportSnapshot -> TestTree
-testImportSnapshot = req
-    "ImportSnapshot"
-    "fixture/ImportSnapshot.yaml"
-
-testAcceptVPCPeeringConnection :: AcceptVPCPeeringConnection -> TestTree
-testAcceptVPCPeeringConnection = req
-    "AcceptVPCPeeringConnection"
-    "fixture/AcceptVPCPeeringConnection.yaml"
-
-testDescribeRouteTables :: DescribeRouteTables -> TestTree
-testDescribeRouteTables = req
-    "DescribeRouteTables"
-    "fixture/DescribeRouteTables.yaml"
-
--- Responses
-
-testDetachNetworkInterfaceResponse :: DetachNetworkInterfaceResponse -> TestTree
-testDetachNetworkInterfaceResponse = res
-    "DetachNetworkInterfaceResponse"
-    "fixture/DetachNetworkInterfaceResponse.proto"
-    eC2
-    (Proxy :: Proxy DetachNetworkInterface)
-
-testDeleteVPCEndpointsResponse :: DeleteVPCEndpointsResponse -> TestTree
-testDeleteVPCEndpointsResponse = res
-    "DeleteVPCEndpointsResponse"
-    "fixture/DeleteVPCEndpointsResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPCEndpoints)
-
-testDeleteKeyPairResponse :: DeleteKeyPairResponse -> TestTree
-testDeleteKeyPairResponse = res
-    "DeleteKeyPairResponse"
-    "fixture/DeleteKeyPairResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteKeyPair)
-
-testDeleteFlowLogsResponse :: DeleteFlowLogsResponse -> TestTree
-testDeleteFlowLogsResponse = res
-    "DeleteFlowLogsResponse"
-    "fixture/DeleteFlowLogsResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteFlowLogs)
-
-testDescribeTagsResponse :: DescribeTagsResponse -> TestTree
-testDescribeTagsResponse = res
-    "DescribeTagsResponse"
-    "fixture/DescribeTagsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeTags)
-
-testRevokeSecurityGroupEgressResponse :: RevokeSecurityGroupEgressResponse -> TestTree
-testRevokeSecurityGroupEgressResponse = res
-    "RevokeSecurityGroupEgressResponse"
-    "fixture/RevokeSecurityGroupEgressResponse.proto"
-    eC2
-    (Proxy :: Proxy RevokeSecurityGroupEgress)
-
-testCreateVPNGatewayResponse :: CreateVPNGatewayResponse -> TestTree
-testCreateVPNGatewayResponse = res
-    "CreateVPNGatewayResponse"
-    "fixture/CreateVPNGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPNGateway)
-
-testDetachInternetGatewayResponse :: DetachInternetGatewayResponse -> TestTree
-testDetachInternetGatewayResponse = res
-    "DetachInternetGatewayResponse"
-    "fixture/DetachInternetGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy DetachInternetGateway)
-
-testCreateNetworkACLResponse :: CreateNetworkACLResponse -> TestTree
-testCreateNetworkACLResponse = res
-    "CreateNetworkACLResponse"
-    "fixture/CreateNetworkACLResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateNetworkACL)
-
-testImportInstanceResponse :: ImportInstanceResponse -> TestTree
-testImportInstanceResponse = res
-    "ImportInstanceResponse"
-    "fixture/ImportInstanceResponse.proto"
-    eC2
-    (Proxy :: Proxy ImportInstance)
-
-testDescribeVPCClassicLinkResponse :: DescribeVPCClassicLinkResponse -> TestTree
-testDescribeVPCClassicLinkResponse = res
-    "DescribeVPCClassicLinkResponse"
-    "fixture/DescribeVPCClassicLinkResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCClassicLink)
-
-testDeleteVPNConnectionResponse :: DeleteVPNConnectionResponse -> TestTree
-testDeleteVPNConnectionResponse = res
-    "DeleteVPNConnectionResponse"
-    "fixture/DeleteVPNConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPNConnection)
-
-testAuthorizeSecurityGroupEgressResponse :: AuthorizeSecurityGroupEgressResponse -> TestTree
-testAuthorizeSecurityGroupEgressResponse = res
-    "AuthorizeSecurityGroupEgressResponse"
-    "fixture/AuthorizeSecurityGroupEgressResponse.proto"
-    eC2
-    (Proxy :: Proxy AuthorizeSecurityGroupEgress)
-
-testDescribeBundleTasksResponse :: DescribeBundleTasksResponse -> TestTree
-testDescribeBundleTasksResponse = res
-    "DescribeBundleTasksResponse"
-    "fixture/DescribeBundleTasksResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeBundleTasks)
-
-testCreateInternetGatewayResponse :: CreateInternetGatewayResponse -> TestTree
-testCreateInternetGatewayResponse = res
-    "CreateInternetGatewayResponse"
-    "fixture/CreateInternetGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateInternetGateway)
-
-testReleaseAddressResponse :: ReleaseAddressResponse -> TestTree
-testReleaseAddressResponse = res
-    "ReleaseAddressResponse"
-    "fixture/ReleaseAddressResponse.proto"
-    eC2
-    (Proxy :: Proxy ReleaseAddress)
-
-testCancelBundleTaskResponse :: CancelBundleTaskResponse -> TestTree
-testCancelBundleTaskResponse = res
-    "CancelBundleTaskResponse"
-    "fixture/CancelBundleTaskResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelBundleTask)
-
-testModifyNetworkInterfaceAttributeResponse :: ModifyNetworkInterfaceAttributeResponse -> TestTree
-testModifyNetworkInterfaceAttributeResponse = res
-    "ModifyNetworkInterfaceAttributeResponse"
-    "fixture/ModifyNetworkInterfaceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyNetworkInterfaceAttribute)
-
-testModifySubnetAttributeResponse :: ModifySubnetAttributeResponse -> TestTree
-testModifySubnetAttributeResponse = res
-    "ModifySubnetAttributeResponse"
-    "fixture/ModifySubnetAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifySubnetAttribute)
-
-testDeregisterImageResponse :: DeregisterImageResponse -> TestTree
-testDeregisterImageResponse = res
-    "DeregisterImageResponse"
-    "fixture/DeregisterImageResponse.proto"
-    eC2
-    (Proxy :: Proxy DeregisterImage)
-
-testDetachVolumeResponse :: VolumeAttachment -> TestTree
-testDetachVolumeResponse = res
-    "DetachVolumeResponse"
-    "fixture/DetachVolumeResponse.proto"
-    eC2
-    (Proxy :: Proxy DetachVolume)
-
-testCancelReservedInstancesListingResponse :: CancelReservedInstancesListingResponse -> TestTree
-testCancelReservedInstancesListingResponse = res
-    "CancelReservedInstancesListingResponse"
-    "fixture/CancelReservedInstancesListingResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelReservedInstancesListing)
-
-testAttachClassicLinkVPCResponse :: AttachClassicLinkVPCResponse -> TestTree
-testAttachClassicLinkVPCResponse = res
-    "AttachClassicLinkVPCResponse"
-    "fixture/AttachClassicLinkVPCResponse.proto"
-    eC2
-    (Proxy :: Proxy AttachClassicLinkVPC)
-
-testCancelSpotFleetRequestsResponse :: CancelSpotFleetRequestsResponse -> TestTree
-testCancelSpotFleetRequestsResponse = res
-    "CancelSpotFleetRequestsResponse"
-    "fixture/CancelSpotFleetRequestsResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelSpotFleetRequests)
-
-testDescribeDHCPOptionsResponse :: DescribeDHCPOptionsResponse -> TestTree
-testDescribeDHCPOptionsResponse = res
-    "DescribeDHCPOptionsResponse"
-    "fixture/DescribeDHCPOptionsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeDHCPOptions)
-
-testDescribeSpotPriceHistoryResponse :: DescribeSpotPriceHistoryResponse -> TestTree
-testDescribeSpotPriceHistoryResponse = res
-    "DescribeSpotPriceHistoryResponse"
-    "fixture/DescribeSpotPriceHistoryResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotPriceHistory)
-
-testStopInstancesResponse :: StopInstancesResponse -> TestTree
-testStopInstancesResponse = res
-    "StopInstancesResponse"
-    "fixture/StopInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy StopInstances)
-
-testImportImageResponse :: ImportImageResponse -> TestTree
-testImportImageResponse = res
-    "ImportImageResponse"
-    "fixture/ImportImageResponse.proto"
-    eC2
-    (Proxy :: Proxy ImportImage)
-
-testDeleteNetworkACLEntryResponse :: DeleteNetworkACLEntryResponse -> TestTree
-testDeleteNetworkACLEntryResponse = res
-    "DeleteNetworkACLEntryResponse"
-    "fixture/DeleteNetworkACLEntryResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteNetworkACLEntry)
-
-testDisableVPCClassicLinkResponse :: DisableVPCClassicLinkResponse -> TestTree
-testDisableVPCClassicLinkResponse = res
-    "DisableVPCClassicLinkResponse"
-    "fixture/DisableVPCClassicLinkResponse.proto"
-    eC2
-    (Proxy :: Proxy DisableVPCClassicLink)
-
-testAuthorizeSecurityGroupIngressResponse :: AuthorizeSecurityGroupIngressResponse -> TestTree
-testAuthorizeSecurityGroupIngressResponse = res
-    "AuthorizeSecurityGroupIngressResponse"
-    "fixture/AuthorizeSecurityGroupIngressResponse.proto"
-    eC2
-    (Proxy :: Proxy AuthorizeSecurityGroupIngress)
-
-testBundleInstanceResponse :: BundleInstanceResponse -> TestTree
-testBundleInstanceResponse = res
-    "BundleInstanceResponse"
-    "fixture/BundleInstanceResponse.proto"
-    eC2
-    (Proxy :: Proxy BundleInstance)
-
-testDescribeVPCEndpointServicesResponse :: DescribeVPCEndpointServicesResponse -> TestTree
-testDescribeVPCEndpointServicesResponse = res
-    "DescribeVPCEndpointServicesResponse"
-    "fixture/DescribeVPCEndpointServicesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCEndpointServices)
-
-testReplaceNetworkACLAssociationResponse :: ReplaceNetworkACLAssociationResponse -> TestTree
-testReplaceNetworkACLAssociationResponse = res
-    "ReplaceNetworkACLAssociationResponse"
-    "fixture/ReplaceNetworkACLAssociationResponse.proto"
-    eC2
-    (Proxy :: Proxy ReplaceNetworkACLAssociation)
-
-testCreateVPCPeeringConnectionResponse :: CreateVPCPeeringConnectionResponse -> TestTree
-testCreateVPCPeeringConnectionResponse = res
-    "CreateVPCPeeringConnectionResponse"
-    "fixture/CreateVPCPeeringConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPCPeeringConnection)
-
-testResetSnapshotAttributeResponse :: ResetSnapshotAttributeResponse -> TestTree
-testResetSnapshotAttributeResponse = res
-    "ResetSnapshotAttributeResponse"
-    "fixture/ResetSnapshotAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ResetSnapshotAttribute)
-
-testDescribeAddressesResponse :: DescribeAddressesResponse -> TestTree
-testDescribeAddressesResponse = res
-    "DescribeAddressesResponse"
-    "fixture/DescribeAddressesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeAddresses)
-
-testDescribeInternetGatewaysResponse :: DescribeInternetGatewaysResponse -> TestTree
-testDescribeInternetGatewaysResponse = res
-    "DescribeInternetGatewaysResponse"
-    "fixture/DescribeInternetGatewaysResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeInternetGateways)
-
-testReplaceRouteResponse :: ReplaceRouteResponse -> TestTree
-testReplaceRouteResponse = res
-    "ReplaceRouteResponse"
-    "fixture/ReplaceRouteResponse.proto"
-    eC2
-    (Proxy :: Proxy ReplaceRoute)
-
-testCreateTagsResponse :: CreateTagsResponse -> TestTree
-testCreateTagsResponse = res
-    "CreateTagsResponse"
-    "fixture/CreateTagsResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateTags)
-
-testDescribeSubnetsResponse :: DescribeSubnetsResponse -> TestTree
-testDescribeSubnetsResponse = res
-    "DescribeSubnetsResponse"
-    "fixture/DescribeSubnetsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSubnets)
-
-testDescribeNetworkInterfacesResponse :: DescribeNetworkInterfacesResponse -> TestTree
-testDescribeNetworkInterfacesResponse = res
-    "DescribeNetworkInterfacesResponse"
-    "fixture/DescribeNetworkInterfacesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeNetworkInterfaces)
-
-testPurchaseReservedInstancesOfferingResponse :: PurchaseReservedInstancesOfferingResponse -> TestTree
-testPurchaseReservedInstancesOfferingResponse = res
-    "PurchaseReservedInstancesOfferingResponse"
-    "fixture/PurchaseReservedInstancesOfferingResponse.proto"
-    eC2
-    (Proxy :: Proxy PurchaseReservedInstancesOffering)
-
-testDescribeSnapshotAttributeResponse :: DescribeSnapshotAttributeResponse -> TestTree
-testDescribeSnapshotAttributeResponse = res
-    "DescribeSnapshotAttributeResponse"
-    "fixture/DescribeSnapshotAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSnapshotAttribute)
-
-testCreateCustomerGatewayResponse :: CreateCustomerGatewayResponse -> TestTree
-testCreateCustomerGatewayResponse = res
-    "CreateCustomerGatewayResponse"
-    "fixture/CreateCustomerGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateCustomerGateway)
-
-testAttachInternetGatewayResponse :: AttachInternetGatewayResponse -> TestTree
-testAttachInternetGatewayResponse = res
-    "AttachInternetGatewayResponse"
-    "fixture/AttachInternetGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy AttachInternetGateway)
-
-testDeleteTagsResponse :: DeleteTagsResponse -> TestTree
-testDeleteTagsResponse = res
-    "DeleteTagsResponse"
-    "fixture/DeleteTagsResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteTags)
-
-testReplaceNetworkACLEntryResponse :: ReplaceNetworkACLEntryResponse -> TestTree
-testReplaceNetworkACLEntryResponse = res
-    "ReplaceNetworkACLEntryResponse"
-    "fixture/ReplaceNetworkACLEntryResponse.proto"
-    eC2
-    (Proxy :: Proxy ReplaceNetworkACLEntry)
-
-testResetInstanceAttributeResponse :: ResetInstanceAttributeResponse -> TestTree
-testResetInstanceAttributeResponse = res
-    "ResetInstanceAttributeResponse"
-    "fixture/ResetInstanceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ResetInstanceAttribute)
-
-testDeleteRouteResponse :: DeleteRouteResponse -> TestTree
-testDeleteRouteResponse = res
-    "DeleteRouteResponse"
-    "fixture/DeleteRouteResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteRoute)
-
-testDescribeVPNConnectionsResponse :: DescribeVPNConnectionsResponse -> TestTree
-testDescribeVPNConnectionsResponse = res
-    "DescribeVPNConnectionsResponse"
-    "fixture/DescribeVPNConnectionsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPNConnections)
-
-testDescribeFlowLogsResponse :: DescribeFlowLogsResponse -> TestTree
-testDescribeFlowLogsResponse = res
-    "DescribeFlowLogsResponse"
-    "fixture/DescribeFlowLogsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeFlowLogs)
-
-testDeleteSecurityGroupResponse :: DeleteSecurityGroupResponse -> TestTree
-testDeleteSecurityGroupResponse = res
-    "DeleteSecurityGroupResponse"
-    "fixture/DeleteSecurityGroupResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteSecurityGroup)
-
-testDescribeReservedInstancesOfferingsResponse :: DescribeReservedInstancesOfferingsResponse -> TestTree
-testDescribeReservedInstancesOfferingsResponse = res
-    "DescribeReservedInstancesOfferingsResponse"
-    "fixture/DescribeReservedInstancesOfferingsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeReservedInstancesOfferings)
-
-testDeleteVPCPeeringConnectionResponse :: DeleteVPCPeeringConnectionResponse -> TestTree
-testDeleteVPCPeeringConnectionResponse = res
-    "DeleteVPCPeeringConnectionResponse"
-    "fixture/DeleteVPCPeeringConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPCPeeringConnection)
-
-testDescribeVPCEndpointsResponse :: DescribeVPCEndpointsResponse -> TestTree
-testDescribeVPCEndpointsResponse = res
-    "DescribeVPCEndpointsResponse"
-    "fixture/DescribeVPCEndpointsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCEndpoints)
-
-testDescribeInstanceAttributeResponse :: DescribeInstanceAttributeResponse -> TestTree
-testDescribeInstanceAttributeResponse = res
-    "DescribeInstanceAttributeResponse"
-    "fixture/DescribeInstanceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeInstanceAttribute)
-
-testConfirmProductInstanceResponse :: ConfirmProductInstanceResponse -> TestTree
-testConfirmProductInstanceResponse = res
-    "ConfirmProductInstanceResponse"
-    "fixture/ConfirmProductInstanceResponse.proto"
-    eC2
-    (Proxy :: Proxy ConfirmProductInstance)
-
-testImportKeyPairResponse :: ImportKeyPairResponse -> TestTree
-testImportKeyPairResponse = res
-    "ImportKeyPairResponse"
-    "fixture/ImportKeyPairResponse.proto"
-    eC2
-    (Proxy :: Proxy ImportKeyPair)
-
-testAttachNetworkInterfaceResponse :: AttachNetworkInterfaceResponse -> TestTree
-testAttachNetworkInterfaceResponse = res
-    "AttachNetworkInterfaceResponse"
-    "fixture/AttachNetworkInterfaceResponse.proto"
-    eC2
-    (Proxy :: Proxy AttachNetworkInterface)
-
-testDescribeInstanceStatusResponse :: DescribeInstanceStatusResponse -> TestTree
-testDescribeInstanceStatusResponse = res
-    "DescribeInstanceStatusResponse"
-    "fixture/DescribeInstanceStatusResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeInstanceStatus)
-
-testCancelConversionTaskResponse :: CancelConversionTaskResponse -> TestTree
-testCancelConversionTaskResponse = res
-    "CancelConversionTaskResponse"
-    "fixture/CancelConversionTaskResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelConversionTask)
-
-testReportInstanceStatusResponse :: ReportInstanceStatusResponse -> TestTree
-testReportInstanceStatusResponse = res
-    "ReportInstanceStatusResponse"
-    "fixture/ReportInstanceStatusResponse.proto"
-    eC2
-    (Proxy :: Proxy ReportInstanceStatus)
-
-testAssociateDHCPOptionsResponse :: AssociateDHCPOptionsResponse -> TestTree
-testAssociateDHCPOptionsResponse = res
-    "AssociateDHCPOptionsResponse"
-    "fixture/AssociateDHCPOptionsResponse.proto"
-    eC2
-    (Proxy :: Proxy AssociateDHCPOptions)
-
-testDescribeVPCsResponse :: DescribeVPCsResponse -> TestTree
-testDescribeVPCsResponse = res
-    "DescribeVPCsResponse"
-    "fixture/DescribeVPCsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCs)
-
-testRequestSpotInstancesResponse :: RequestSpotInstancesResponse -> TestTree
-testRequestSpotInstancesResponse = res
-    "RequestSpotInstancesResponse"
-    "fixture/RequestSpotInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy RequestSpotInstances)
-
-testModifyImageAttributeResponse :: ModifyImageAttributeResponse -> TestTree
-testModifyImageAttributeResponse = res
-    "ModifyImageAttributeResponse"
-    "fixture/ModifyImageAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyImageAttribute)
-
-testDescribeReservedInstancesResponse :: DescribeReservedInstancesResponse -> TestTree
-testDescribeReservedInstancesResponse = res
-    "DescribeReservedInstancesResponse"
-    "fixture/DescribeReservedInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeReservedInstances)
-
-testAllocateAddressResponse :: AllocateAddressResponse -> TestTree
-testAllocateAddressResponse = res
-    "AllocateAddressResponse"
-    "fixture/AllocateAddressResponse.proto"
-    eC2
-    (Proxy :: Proxy AllocateAddress)
-
-testRunInstancesResponse :: Reservation -> TestTree
-testRunInstancesResponse = res
-    "RunInstancesResponse"
-    "fixture/RunInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy RunInstances)
-
-testCreateRouteTableResponse :: CreateRouteTableResponse -> TestTree
-testCreateRouteTableResponse = res
-    "CreateRouteTableResponse"
-    "fixture/CreateRouteTableResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateRouteTable)
-
-testAttachVolumeResponse :: VolumeAttachment -> TestTree
-testAttachVolumeResponse = res
-    "AttachVolumeResponse"
-    "fixture/AttachVolumeResponse.proto"
-    eC2
-    (Proxy :: Proxy AttachVolume)
-
-testDescribeConversionTasksResponse :: DescribeConversionTasksResponse -> TestTree
-testDescribeConversionTasksResponse = res
-    "DescribeConversionTasksResponse"
-    "fixture/DescribeConversionTasksResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeConversionTasks)
-
-testRejectVPCPeeringConnectionResponse :: RejectVPCPeeringConnectionResponse -> TestTree
-testRejectVPCPeeringConnectionResponse = res
-    "RejectVPCPeeringConnectionResponse"
-    "fixture/RejectVPCPeeringConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy RejectVPCPeeringConnection)
-
-testRevokeSecurityGroupIngressResponse :: RevokeSecurityGroupIngressResponse -> TestTree
-testRevokeSecurityGroupIngressResponse = res
-    "RevokeSecurityGroupIngressResponse"
-    "fixture/RevokeSecurityGroupIngressResponse.proto"
-    eC2
-    (Proxy :: Proxy RevokeSecurityGroupIngress)
-
-testDescribeVolumesResponse :: DescribeVolumesResponse -> TestTree
-testDescribeVolumesResponse = res
-    "DescribeVolumesResponse"
-    "fixture/DescribeVolumesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVolumes)
-
-testDeleteVPNConnectionRouteResponse :: DeleteVPNConnectionRouteResponse -> TestTree
-testDeleteVPNConnectionRouteResponse = res
-    "DeleteVPNConnectionRouteResponse"
-    "fixture/DeleteVPNConnectionRouteResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPNConnectionRoute)
-
-testModifyReservedInstancesResponse :: ModifyReservedInstancesResponse -> TestTree
-testModifyReservedInstancesResponse = res
-    "ModifyReservedInstancesResponse"
-    "fixture/ModifyReservedInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyReservedInstances)
-
-testRegisterImageResponse :: RegisterImageResponse -> TestTree
-testRegisterImageResponse = res
-    "RegisterImageResponse"
-    "fixture/RegisterImageResponse.proto"
-    eC2
-    (Proxy :: Proxy RegisterImage)
-
-testModifyVPCEndpointResponse :: ModifyVPCEndpointResponse -> TestTree
-testModifyVPCEndpointResponse = res
-    "ModifyVPCEndpointResponse"
-    "fixture/ModifyVPCEndpointResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyVPCEndpoint)
-
-testDeleteVPNGatewayResponse :: DeleteVPNGatewayResponse -> TestTree
-testDeleteVPNGatewayResponse = res
-    "DeleteVPNGatewayResponse"
-    "fixture/DeleteVPNGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPNGateway)
-
-testCreateVPCResponse :: CreateVPCResponse -> TestTree
-testCreateVPCResponse = res
-    "CreateVPCResponse"
-    "fixture/CreateVPCResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPC)
-
-testDescribeMovingAddressesResponse :: DescribeMovingAddressesResponse -> TestTree
-testDescribeMovingAddressesResponse = res
-    "DescribeMovingAddressesResponse"
-    "fixture/DescribeMovingAddressesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeMovingAddresses)
-
-testDescribeVolumeAttributeResponse :: DescribeVolumeAttributeResponse -> TestTree
-testDescribeVolumeAttributeResponse = res
-    "DescribeVolumeAttributeResponse"
-    "fixture/DescribeVolumeAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVolumeAttribute)
-
-testMoveAddressToVPCResponse :: MoveAddressToVPCResponse -> TestTree
-testMoveAddressToVPCResponse = res
-    "MoveAddressToVPCResponse"
-    "fixture/MoveAddressToVPCResponse.proto"
-    eC2
-    (Proxy :: Proxy MoveAddressToVPC)
-
-testGetPasswordDataResponse :: GetPasswordDataResponse -> TestTree
-testGetPasswordDataResponse = res
-    "GetPasswordDataResponse"
-    "fixture/GetPasswordDataResponse.proto"
-    eC2
-    (Proxy :: Proxy GetPasswordData)
-
-testCreateFlowLogsResponse :: CreateFlowLogsResponse -> TestTree
-testCreateFlowLogsResponse = res
-    "CreateFlowLogsResponse"
-    "fixture/CreateFlowLogsResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateFlowLogs)
-
-testDescribeImportImageTasksResponse :: DescribeImportImageTasksResponse -> TestTree
-testDescribeImportImageTasksResponse = res
-    "DescribeImportImageTasksResponse"
-    "fixture/DescribeImportImageTasksResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeImportImageTasks)
-
-testDeleteNetworkACLResponse :: DeleteNetworkACLResponse -> TestTree
-testDeleteNetworkACLResponse = res
-    "DeleteNetworkACLResponse"
-    "fixture/DeleteNetworkACLResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteNetworkACL)
-
-testDescribeSpotFleetRequestsResponse :: DescribeSpotFleetRequestsResponse -> TestTree
-testDescribeSpotFleetRequestsResponse = res
-    "DescribeSpotFleetRequestsResponse"
-    "fixture/DescribeSpotFleetRequestsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotFleetRequests)
-
-testCopySnapshotResponse :: CopySnapshotResponse -> TestTree
-testCopySnapshotResponse = res
-    "CopySnapshotResponse"
-    "fixture/CopySnapshotResponse.proto"
-    eC2
-    (Proxy :: Proxy CopySnapshot)
-
-testModifyVolumeAttributeResponse :: ModifyVolumeAttributeResponse -> TestTree
-testModifyVolumeAttributeResponse = res
-    "ModifyVolumeAttributeResponse"
-    "fixture/ModifyVolumeAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyVolumeAttribute)
-
-testDescribeVPCAttributeResponse :: DescribeVPCAttributeResponse -> TestTree
-testDescribeVPCAttributeResponse = res
-    "DescribeVPCAttributeResponse"
-    "fixture/DescribeVPCAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCAttribute)
-
-testCreateVolumeResponse :: Volume -> TestTree
-testCreateVolumeResponse = res
-    "CreateVolumeResponse"
-    "fixture/CreateVolumeResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVolume)
-
-testDisassociateAddressResponse :: DisassociateAddressResponse -> TestTree
-testDisassociateAddressResponse = res
-    "DisassociateAddressResponse"
-    "fixture/DisassociateAddressResponse.proto"
-    eC2
-    (Proxy :: Proxy DisassociateAddress)
-
-testDeleteVPCResponse :: DeleteVPCResponse -> TestTree
-testDeleteVPCResponse = res
-    "DeleteVPCResponse"
-    "fixture/DeleteVPCResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVPC)
-
-testDescribePrefixListsResponse :: DescribePrefixListsResponse -> TestTree
-testDescribePrefixListsResponse = res
-    "DescribePrefixListsResponse"
-    "fixture/DescribePrefixListsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribePrefixLists)
-
-testCreateInstanceExportTaskResponse :: CreateInstanceExportTaskResponse -> TestTree
-testCreateInstanceExportTaskResponse = res
-    "CreateInstanceExportTaskResponse"
-    "fixture/CreateInstanceExportTaskResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateInstanceExportTask)
-
-testDescribeSpotDatafeedSubscriptionResponse :: DescribeSpotDatafeedSubscriptionResponse -> TestTree
-testDescribeSpotDatafeedSubscriptionResponse = res
-    "DescribeSpotDatafeedSubscriptionResponse"
-    "fixture/DescribeSpotDatafeedSubscriptionResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotDatafeedSubscription)
-
-testDetachVPNGatewayResponse :: DetachVPNGatewayResponse -> TestTree
-testDetachVPNGatewayResponse = res
-    "DetachVPNGatewayResponse"
-    "fixture/DetachVPNGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy DetachVPNGateway)
-
-testDescribeExportTasksResponse :: DescribeExportTasksResponse -> TestTree
-testDescribeExportTasksResponse = res
-    "DescribeExportTasksResponse"
-    "fixture/DescribeExportTasksResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeExportTasks)
-
-testDeletePlacementGroupResponse :: DeletePlacementGroupResponse -> TestTree
-testDeletePlacementGroupResponse = res
-    "DeletePlacementGroupResponse"
-    "fixture/DeletePlacementGroupResponse.proto"
-    eC2
-    (Proxy :: Proxy DeletePlacementGroup)
-
-testCreateSubnetResponse :: CreateSubnetResponse -> TestTree
-testCreateSubnetResponse = res
-    "CreateSubnetResponse"
-    "fixture/CreateSubnetResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateSubnet)
-
-testEnableVolumeIOResponse :: EnableVolumeIOResponse -> TestTree
-testEnableVolumeIOResponse = res
-    "EnableVolumeIOResponse"
-    "fixture/EnableVolumeIOResponse.proto"
-    eC2
-    (Proxy :: Proxy EnableVolumeIO)
-
-testCancelExportTaskResponse :: CancelExportTaskResponse -> TestTree
-testCancelExportTaskResponse = res
-    "CancelExportTaskResponse"
-    "fixture/CancelExportTaskResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelExportTask)
-
-testRequestSpotFleetResponse :: RequestSpotFleetResponse -> TestTree
-testRequestSpotFleetResponse = res
-    "RequestSpotFleetResponse"
-    "fixture/RequestSpotFleetResponse.proto"
-    eC2
-    (Proxy :: Proxy RequestSpotFleet)
-
-testDescribeInstancesResponse :: DescribeInstancesResponse -> TestTree
-testDescribeInstancesResponse = res
-    "DescribeInstancesResponse"
-    "fixture/DescribeInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeInstances)
-
-testDescribeSecurityGroupsResponse :: DescribeSecurityGroupsResponse -> TestTree
-testDescribeSecurityGroupsResponse = res
-    "DescribeSecurityGroupsResponse"
-    "fixture/DescribeSecurityGroupsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSecurityGroups)
-
-testDescribeVPCPeeringConnectionsResponse :: DescribeVPCPeeringConnectionsResponse -> TestTree
-testDescribeVPCPeeringConnectionsResponse = res
-    "DescribeVPCPeeringConnectionsResponse"
-    "fixture/DescribeVPCPeeringConnectionsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPCPeeringConnections)
-
-testCreateNetworkInterfaceResponse :: CreateNetworkInterfaceResponse -> TestTree
-testCreateNetworkInterfaceResponse = res
-    "CreateNetworkInterfaceResponse"
-    "fixture/CreateNetworkInterfaceResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateNetworkInterface)
-
-testAssociateAddressResponse :: AssociateAddressResponse -> TestTree
-testAssociateAddressResponse = res
-    "AssociateAddressResponse"
-    "fixture/AssociateAddressResponse.proto"
-    eC2
-    (Proxy :: Proxy AssociateAddress)
-
-testStartInstancesResponse :: StartInstancesResponse -> TestTree
-testStartInstancesResponse = res
-    "StartInstancesResponse"
-    "fixture/StartInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy StartInstances)
-
-testDescribeCustomerGatewaysResponse :: DescribeCustomerGatewaysResponse -> TestTree
-testDescribeCustomerGatewaysResponse = res
-    "DescribeCustomerGatewaysResponse"
-    "fixture/DescribeCustomerGatewaysResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeCustomerGateways)
-
-testResetNetworkInterfaceAttributeResponse :: ResetNetworkInterfaceAttributeResponse -> TestTree
-testResetNetworkInterfaceAttributeResponse = res
-    "ResetNetworkInterfaceAttributeResponse"
-    "fixture/ResetNetworkInterfaceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ResetNetworkInterfaceAttribute)
-
-testCreateVPNConnectionResponse :: CreateVPNConnectionResponse -> TestTree
-testCreateVPNConnectionResponse = res
-    "CreateVPNConnectionResponse"
-    "fixture/CreateVPNConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPNConnection)
-
-testDescribeSnapshotsResponse :: DescribeSnapshotsResponse -> TestTree
-testDescribeSnapshotsResponse = res
-    "DescribeSnapshotsResponse"
-    "fixture/DescribeSnapshotsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSnapshots)
-
-testCreatePlacementGroupResponse :: CreatePlacementGroupResponse -> TestTree
-testCreatePlacementGroupResponse = res
-    "CreatePlacementGroupResponse"
-    "fixture/CreatePlacementGroupResponse.proto"
-    eC2
-    (Proxy :: Proxy CreatePlacementGroup)
-
-testReplaceRouteTableAssociationResponse :: ReplaceRouteTableAssociationResponse -> TestTree
-testReplaceRouteTableAssociationResponse = res
-    "ReplaceRouteTableAssociationResponse"
-    "fixture/ReplaceRouteTableAssociationResponse.proto"
-    eC2
-    (Proxy :: Proxy ReplaceRouteTableAssociation)
-
-testDescribeNetworkInterfaceAttributeResponse :: DescribeNetworkInterfaceAttributeResponse -> TestTree
-testDescribeNetworkInterfaceAttributeResponse = res
-    "DescribeNetworkInterfaceAttributeResponse"
-    "fixture/DescribeNetworkInterfaceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeNetworkInterfaceAttribute)
-
-testDescribeReservedInstancesListingsResponse :: DescribeReservedInstancesListingsResponse -> TestTree
-testDescribeReservedInstancesListingsResponse = res
-    "DescribeReservedInstancesListingsResponse"
-    "fixture/DescribeReservedInstancesListingsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeReservedInstancesListings)
-
-testDeleteNetworkInterfaceResponse :: DeleteNetworkInterfaceResponse -> TestTree
-testDeleteNetworkInterfaceResponse = res
-    "DeleteNetworkInterfaceResponse"
-    "fixture/DeleteNetworkInterfaceResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteNetworkInterface)
-
-testDeleteInternetGatewayResponse :: DeleteInternetGatewayResponse -> TestTree
-testDeleteInternetGatewayResponse = res
-    "DeleteInternetGatewayResponse"
-    "fixture/DeleteInternetGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteInternetGateway)
-
-testDeleteSubnetResponse :: DeleteSubnetResponse -> TestTree
-testDeleteSubnetResponse = res
-    "DeleteSubnetResponse"
-    "fixture/DeleteSubnetResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteSubnet)
-
-testCreateVPCEndpointResponse :: CreateVPCEndpointResponse -> TestTree
-testCreateVPCEndpointResponse = res
-    "CreateVPCEndpointResponse"
-    "fixture/CreateVPCEndpointResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPCEndpoint)
-
-testDescribeImportSnapshotTasksResponse :: DescribeImportSnapshotTasksResponse -> TestTree
-testDescribeImportSnapshotTasksResponse = res
-    "DescribeImportSnapshotTasksResponse"
-    "fixture/DescribeImportSnapshotTasksResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeImportSnapshotTasks)
-
-testCopyImageResponse :: CopyImageResponse -> TestTree
-testCopyImageResponse = res
-    "CopyImageResponse"
-    "fixture/CopyImageResponse.proto"
-    eC2
-    (Proxy :: Proxy CopyImage)
-
-testDisassociateRouteTableResponse :: DisassociateRouteTableResponse -> TestTree
-testDisassociateRouteTableResponse = res
-    "DisassociateRouteTableResponse"
-    "fixture/DisassociateRouteTableResponse.proto"
-    eC2
-    (Proxy :: Proxy DisassociateRouteTable)
-
-testUnmonitorInstancesResponse :: UnmonitorInstancesResponse -> TestTree
-testUnmonitorInstancesResponse = res
-    "UnmonitorInstancesResponse"
-    "fixture/UnmonitorInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy UnmonitorInstances)
-
-testImportVolumeResponse :: ImportVolumeResponse -> TestTree
-testImportVolumeResponse = res
-    "ImportVolumeResponse"
-    "fixture/ImportVolumeResponse.proto"
-    eC2
-    (Proxy :: Proxy ImportVolume)
-
-testDisableVGWRoutePropagationResponse :: DisableVGWRoutePropagationResponse -> TestTree
-testDisableVGWRoutePropagationResponse = res
-    "DisableVGWRoutePropagationResponse"
-    "fixture/DisableVGWRoutePropagationResponse.proto"
-    eC2
-    (Proxy :: Proxy DisableVGWRoutePropagation)
-
-testCreateSpotDatafeedSubscriptionResponse :: CreateSpotDatafeedSubscriptionResponse -> TestTree
-testCreateSpotDatafeedSubscriptionResponse = res
-    "CreateSpotDatafeedSubscriptionResponse"
-    "fixture/CreateSpotDatafeedSubscriptionResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateSpotDatafeedSubscription)
-
-testAssignPrivateIPAddressesResponse :: AssignPrivateIPAddressesResponse -> TestTree
-testAssignPrivateIPAddressesResponse = res
-    "AssignPrivateIPAddressesResponse"
-    "fixture/AssignPrivateIPAddressesResponse.proto"
-    eC2
-    (Proxy :: Proxy AssignPrivateIPAddresses)
-
-testDeleteSnapshotResponse :: DeleteSnapshotResponse -> TestTree
-testDeleteSnapshotResponse = res
-    "DeleteSnapshotResponse"
-    "fixture/DeleteSnapshotResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteSnapshot)
-
-testDeleteCustomerGatewayResponse :: DeleteCustomerGatewayResponse -> TestTree
-testDeleteCustomerGatewayResponse = res
-    "DeleteCustomerGatewayResponse"
-    "fixture/DeleteCustomerGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteCustomerGateway)
-
-testModifyInstanceAttributeResponse :: ModifyInstanceAttributeResponse -> TestTree
-testModifyInstanceAttributeResponse = res
-    "ModifyInstanceAttributeResponse"
-    "fixture/ModifyInstanceAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyInstanceAttribute)
-
-testCreateSecurityGroupResponse :: CreateSecurityGroupResponse -> TestTree
-testCreateSecurityGroupResponse = res
-    "CreateSecurityGroupResponse"
-    "fixture/CreateSecurityGroupResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateSecurityGroup)
-
-testCancelSpotInstanceRequestsResponse :: CancelSpotInstanceRequestsResponse -> TestTree
-testCancelSpotInstanceRequestsResponse = res
-    "CancelSpotInstanceRequestsResponse"
-    "fixture/CancelSpotInstanceRequestsResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelSpotInstanceRequests)
-
-testCreateRouteResponse :: CreateRouteResponse -> TestTree
-testCreateRouteResponse = res
-    "CreateRouteResponse"
-    "fixture/CreateRouteResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateRoute)
-
-testCreateNetworkACLEntryResponse :: CreateNetworkACLEntryResponse -> TestTree
-testCreateNetworkACLEntryResponse = res
-    "CreateNetworkACLEntryResponse"
-    "fixture/CreateNetworkACLEntryResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateNetworkACLEntry)
-
-testModifySnapshotAttributeResponse :: ModifySnapshotAttributeResponse -> TestTree
-testModifySnapshotAttributeResponse = res
-    "ModifySnapshotAttributeResponse"
-    "fixture/ModifySnapshotAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifySnapshotAttribute)
-
-testEnableVGWRoutePropagationResponse :: EnableVGWRoutePropagationResponse -> TestTree
-testEnableVGWRoutePropagationResponse = res
-    "EnableVGWRoutePropagationResponse"
-    "fixture/EnableVGWRoutePropagationResponse.proto"
-    eC2
-    (Proxy :: Proxy EnableVGWRoutePropagation)
-
-testCreateSnapshotResponse :: Snapshot -> TestTree
-testCreateSnapshotResponse = res
-    "CreateSnapshotResponse"
-    "fixture/CreateSnapshotResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateSnapshot)
-
-testDescribeSpotFleetRequestHistoryResponse :: DescribeSpotFleetRequestHistoryResponse -> TestTree
-testDescribeSpotFleetRequestHistoryResponse = res
-    "DescribeSpotFleetRequestHistoryResponse"
-    "fixture/DescribeSpotFleetRequestHistoryResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotFleetRequestHistory)
-
-testDeleteSpotDatafeedSubscriptionResponse :: DeleteSpotDatafeedSubscriptionResponse -> TestTree
-testDeleteSpotDatafeedSubscriptionResponse = res
-    "DeleteSpotDatafeedSubscriptionResponse"
-    "fixture/DeleteSpotDatafeedSubscriptionResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteSpotDatafeedSubscription)
-
-testDescribePlacementGroupsResponse :: DescribePlacementGroupsResponse -> TestTree
-testDescribePlacementGroupsResponse = res
-    "DescribePlacementGroupsResponse"
-    "fixture/DescribePlacementGroupsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribePlacementGroups)
-
-testCreateReservedInstancesListingResponse :: CreateReservedInstancesListingResponse -> TestTree
-testCreateReservedInstancesListingResponse = res
-    "CreateReservedInstancesListingResponse"
-    "fixture/CreateReservedInstancesListingResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateReservedInstancesListing)
-
-testEnableVPCClassicLinkResponse :: EnableVPCClassicLinkResponse -> TestTree
-testEnableVPCClassicLinkResponse = res
-    "EnableVPCClassicLinkResponse"
-    "fixture/EnableVPCClassicLinkResponse.proto"
-    eC2
-    (Proxy :: Proxy EnableVPCClassicLink)
-
-testDescribeKeyPairsResponse :: DescribeKeyPairsResponse -> TestTree
-testDescribeKeyPairsResponse = res
-    "DescribeKeyPairsResponse"
-    "fixture/DescribeKeyPairsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeKeyPairs)
-
-testRebootInstancesResponse :: RebootInstancesResponse -> TestTree
-testRebootInstancesResponse = res
-    "RebootInstancesResponse"
-    "fixture/RebootInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy RebootInstances)
-
-testAttachVPNGatewayResponse :: AttachVPNGatewayResponse -> TestTree
-testAttachVPNGatewayResponse = res
-    "AttachVPNGatewayResponse"
-    "fixture/AttachVPNGatewayResponse.proto"
-    eC2
-    (Proxy :: Proxy AttachVPNGateway)
-
-testCreateVPNConnectionRouteResponse :: CreateVPNConnectionRouteResponse -> TestTree
-testCreateVPNConnectionRouteResponse = res
-    "CreateVPNConnectionRouteResponse"
-    "fixture/CreateVPNConnectionRouteResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateVPNConnectionRoute)
-
-testDescribeClassicLinkInstancesResponse :: DescribeClassicLinkInstancesResponse -> TestTree
-testDescribeClassicLinkInstancesResponse = res
-    "DescribeClassicLinkInstancesResponse"
-    "fixture/DescribeClassicLinkInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeClassicLinkInstances)
-
-testTerminateInstancesResponse :: TerminateInstancesResponse -> TestTree
-testTerminateInstancesResponse = res
-    "TerminateInstancesResponse"
-    "fixture/TerminateInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy TerminateInstances)
-
-testCreateDHCPOptionsResponse :: CreateDHCPOptionsResponse -> TestTree
-testCreateDHCPOptionsResponse = res
-    "CreateDHCPOptionsResponse"
-    "fixture/CreateDHCPOptionsResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateDHCPOptions)
-
-testAssociateRouteTableResponse :: AssociateRouteTableResponse -> TestTree
-testAssociateRouteTableResponse = res
-    "AssociateRouteTableResponse"
-    "fixture/AssociateRouteTableResponse.proto"
-    eC2
-    (Proxy :: Proxy AssociateRouteTable)
-
-testCreateImageResponse :: CreateImageResponse -> TestTree
-testCreateImageResponse = res
-    "CreateImageResponse"
-    "fixture/CreateImageResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateImage)
-
-testDescribeAccountAttributesResponse :: DescribeAccountAttributesResponse -> TestTree
-testDescribeAccountAttributesResponse = res
-    "DescribeAccountAttributesResponse"
-    "fixture/DescribeAccountAttributesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeAccountAttributes)
-
-testResetImageAttributeResponse :: ResetImageAttributeResponse -> TestTree
-testResetImageAttributeResponse = res
-    "ResetImageAttributeResponse"
-    "fixture/ResetImageAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ResetImageAttribute)
-
-testDescribeNetworkACLsResponse :: DescribeNetworkACLsResponse -> TestTree
-testDescribeNetworkACLsResponse = res
-    "DescribeNetworkACLsResponse"
-    "fixture/DescribeNetworkACLsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeNetworkACLs)
-
-testCancelImportTaskResponse :: CancelImportTaskResponse -> TestTree
-testCancelImportTaskResponse = res
-    "CancelImportTaskResponse"
-    "fixture/CancelImportTaskResponse.proto"
-    eC2
-    (Proxy :: Proxy CancelImportTask)
-
-testGetConsoleOutputResponse :: GetConsoleOutputResponse -> TestTree
-testGetConsoleOutputResponse = res
-    "GetConsoleOutputResponse"
-    "fixture/GetConsoleOutputResponse.proto"
-    eC2
-    (Proxy :: Proxy GetConsoleOutput)
-
-testUnassignPrivateIPAddressesResponse :: UnassignPrivateIPAddressesResponse -> TestTree
-testUnassignPrivateIPAddressesResponse = res
-    "UnassignPrivateIPAddressesResponse"
-    "fixture/UnassignPrivateIPAddressesResponse.proto"
-    eC2
-    (Proxy :: Proxy UnassignPrivateIPAddresses)
-
-testDeleteRouteTableResponse :: DeleteRouteTableResponse -> TestTree
-testDeleteRouteTableResponse = res
-    "DeleteRouteTableResponse"
-    "fixture/DeleteRouteTableResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteRouteTable)
-
-testDescribeImageAttributeResponse :: DescribeImageAttributeResponse -> TestTree
-testDescribeImageAttributeResponse = res
-    "DescribeImageAttributeResponse"
-    "fixture/DescribeImageAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeImageAttribute)
-
-testDeleteDHCPOptionsResponse :: DeleteDHCPOptionsResponse -> TestTree
-testDeleteDHCPOptionsResponse = res
-    "DeleteDHCPOptionsResponse"
-    "fixture/DeleteDHCPOptionsResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteDHCPOptions)
-
-testDescribeVPNGatewaysResponse :: DescribeVPNGatewaysResponse -> TestTree
-testDescribeVPNGatewaysResponse = res
-    "DescribeVPNGatewaysResponse"
-    "fixture/DescribeVPNGatewaysResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVPNGateways)
-
-testDetachClassicLinkVPCResponse :: DetachClassicLinkVPCResponse -> TestTree
-testDetachClassicLinkVPCResponse = res
-    "DetachClassicLinkVPCResponse"
-    "fixture/DetachClassicLinkVPCResponse.proto"
-    eC2
-    (Proxy :: Proxy DetachClassicLinkVPC)
-
-testDescribeReservedInstancesModificationsResponse :: DescribeReservedInstancesModificationsResponse -> TestTree
-testDescribeReservedInstancesModificationsResponse = res
-    "DescribeReservedInstancesModificationsResponse"
-    "fixture/DescribeReservedInstancesModificationsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeReservedInstancesModifications)
-
-testDescribeSpotInstanceRequestsResponse :: DescribeSpotInstanceRequestsResponse -> TestTree
-testDescribeSpotInstanceRequestsResponse = res
-    "DescribeSpotInstanceRequestsResponse"
-    "fixture/DescribeSpotInstanceRequestsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotInstanceRequests)
-
-testMonitorInstancesResponse :: MonitorInstancesResponse -> TestTree
-testMonitorInstancesResponse = res
-    "MonitorInstancesResponse"
-    "fixture/MonitorInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy MonitorInstances)
-
-testDescribeRegionsResponse :: DescribeRegionsResponse -> TestTree
-testDescribeRegionsResponse = res
-    "DescribeRegionsResponse"
-    "fixture/DescribeRegionsResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeRegions)
-
-testModifyVPCAttributeResponse :: ModifyVPCAttributeResponse -> TestTree
-testModifyVPCAttributeResponse = res
-    "ModifyVPCAttributeResponse"
-    "fixture/ModifyVPCAttributeResponse.proto"
-    eC2
-    (Proxy :: Proxy ModifyVPCAttribute)
-
-testDescribeSpotFleetInstancesResponse :: DescribeSpotFleetInstancesResponse -> TestTree
-testDescribeSpotFleetInstancesResponse = res
-    "DescribeSpotFleetInstancesResponse"
-    "fixture/DescribeSpotFleetInstancesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeSpotFleetInstances)
-
-testDescribeVolumeStatusResponse :: DescribeVolumeStatusResponse -> TestTree
-testDescribeVolumeStatusResponse = res
-    "DescribeVolumeStatusResponse"
-    "fixture/DescribeVolumeStatusResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeVolumeStatus)
-
-testDeleteVolumeResponse :: DeleteVolumeResponse -> TestTree
-testDeleteVolumeResponse = res
-    "DeleteVolumeResponse"
-    "fixture/DeleteVolumeResponse.proto"
-    eC2
-    (Proxy :: Proxy DeleteVolume)
-
-testDescribeImagesResponse :: DescribeImagesResponse -> TestTree
-testDescribeImagesResponse = res
-    "DescribeImagesResponse"
-    "fixture/DescribeImagesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeImages)
-
-testCreateKeyPairResponse :: CreateKeyPairResponse -> TestTree
-testCreateKeyPairResponse = res
-    "CreateKeyPairResponse"
-    "fixture/CreateKeyPairResponse.proto"
-    eC2
-    (Proxy :: Proxy CreateKeyPair)
-
-testRestoreAddressToClassicResponse :: RestoreAddressToClassicResponse -> TestTree
-testRestoreAddressToClassicResponse = res
-    "RestoreAddressToClassicResponse"
-    "fixture/RestoreAddressToClassicResponse.proto"
-    eC2
-    (Proxy :: Proxy RestoreAddressToClassic)
-
-testDescribeAvailabilityZonesResponse :: DescribeAvailabilityZonesResponse -> TestTree
-testDescribeAvailabilityZonesResponse = res
-    "DescribeAvailabilityZonesResponse"
-    "fixture/DescribeAvailabilityZonesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeAvailabilityZones)
-
-testImportSnapshotResponse :: ImportSnapshotResponse -> TestTree
-testImportSnapshotResponse = res
-    "ImportSnapshotResponse"
-    "fixture/ImportSnapshotResponse.proto"
-    eC2
-    (Proxy :: Proxy ImportSnapshot)
-
-testAcceptVPCPeeringConnectionResponse :: AcceptVPCPeeringConnectionResponse -> TestTree
-testAcceptVPCPeeringConnectionResponse = res
-    "AcceptVPCPeeringConnectionResponse"
-    "fixture/AcceptVPCPeeringConnectionResponse.proto"
-    eC2
-    (Proxy :: Proxy AcceptVPCPeeringConnection)
-
-testDescribeRouteTablesResponse :: DescribeRouteTablesResponse -> TestTree
-testDescribeRouteTablesResponse = res
-    "DescribeRouteTablesResponse"
-    "fixture/DescribeRouteTablesResponse.proto"
-    eC2
-    (Proxy :: Proxy DescribeRouteTables)
+--         [ testImportInstance $
+--             importInstance
+--
+--         , testRevokeSecurityGroupEgress $
+--             revokeSecurityGroupEgress
+--
+--         , testCreateVPNGateway $
+--             createVPNGateway
+--
+--         , testCreateNetworkACL $
+--             createNetworkACL
+--
+--         , testDeleteKeyPair $
+--             deleteKeyPair
+--
+--         , testDescribeTags $
+--             describeTags
+--
+--         , testDetachNetworkInterface $
+--             detachNetworkInterface
+--
+--         , testDetachInternetGateway $
+--             detachInternetGateway
+--
+--         , testDeleteVPCEndpoints $
+--             deleteVPCEndpoints
+--
+--         , testDeleteFlowLogs $
+--             deleteFlowLogs
+--
+--         , testDescribeVPCClassicLink $
+--             describeVPCClassicLink
+--
+--         , testModifySubnetAttribute $
+--             modifySubnetAttribute
+--
+--         , testDetachVolume $
+--             detachVolume
+--
+--         , testCancelBundleTask $
+--             cancelBundleTask
+--
+--         , testReleaseAddress $
+--             releaseAddress
+--
+--         , testCreateInternetGateway $
+--             createInternetGateway
+--
+--         , testDeleteVPNConnection $
+--             deleteVPNConnection
+--
+--         , testDescribeBundleTasks $
+--             describeBundleTasks
+--
+--         , testAuthorizeSecurityGroupEgress $
+--             authorizeSecurityGroupEgress
+--
+--         , testDeregisterImage $
+--             deregisterImage
+--
+--         , testModifyNetworkInterfaceAttribute $
+--             modifyNetworkInterfaceAttribute
+--
+--         , testCancelReservedInstancesListing $
+--             cancelReservedInstancesListing
+--
+--         , testAttachClassicLinkVPC $
+--             attachClassicLinkVPC
+--
+--         , testCancelSpotFleetRequests $
+--             cancelSpotFleetRequests
+--
+--         , testDescribeSpotPriceHistory $
+--             describeSpotPriceHistory
+--
+--         , testDescribeDHCPOptions $
+--             describeDHCPOptions
+--
+--         , testImportImage $
+--             importImage
+--
+--         , testStopInstances $
+--             stopInstances
+--
+--         , testDescribeInternetGateways $
+--             describeInternetGateways
+--
+--         , testDisableVPCClassicLink $
+--             disableVPCClassicLink
+--
+--         , testBundleInstance $
+--             bundleInstance
+--
+--         , testDescribeNetworkInterfaces $
+--             describeNetworkInterfaces
+--
+--         , testReplaceNetworkACLAssociation $
+--             replaceNetworkACLAssociation
+--
+--         , testDescribeAddresses $
+--             describeAddresses
+--
+--         , testDescribeSnapshotAttribute $
+--             describeSnapshotAttribute
+--
+--         , testReplaceRoute $
+--             replaceRoute
+--
+--         , testDescribeVPCEndpointServices $
+--             describeVPCEndpointServices
+--
+--         , testAuthorizeSecurityGroupIngress $
+--             authorizeSecurityGroupIngress
+--
+--         , testCreateVPCPeeringConnection $
+--             createVPCPeeringConnection
+--
+--         , testDescribeSubnets $
+--             describeSubnets
+--
+--         , testCreateTags $
+--             createTags
+--
+--         , testPurchaseReservedInstancesOffering $
+--             purchaseReservedInstancesOffering
+--
+--         , testDeleteNetworkACLEntry $
+--             deleteNetworkACLEntry
+--
+--         , testResetSnapshotAttribute $
+--             resetSnapshotAttribute
+--
+--         , testDescribeVPNConnections $
+--             describeVPNConnections
+--
+--         , testDeleteRoute $
+--             deleteRoute
+--
+--         , testReplaceNetworkACLEntry $
+--             replaceNetworkACLEntry
+--
+--         , testDescribeVPCEndpoints $
+--             describeVPCEndpoints
+--
+--         , testResetInstanceAttribute $
+--             resetInstanceAttribute
+--
+--         , testAttachNetworkInterface $
+--             attachNetworkInterface
+--
+--         , testDescribeInstanceStatus $
+--             describeInstanceStatus
+--
+--         , testImportKeyPair $
+--             importKeyPair
+--
+--         , testDeleteTags $
+--             deleteTags
+--
+--         , testConfirmProductInstance $
+--             confirmProductInstance
+--
+--         , testDescribeInstanceAttribute $
+--             describeInstanceAttribute
+--
+--         , testDescribeReservedInstancesOfferings $
+--             describeReservedInstancesOfferings
+--
+--         , testCreateCustomerGateway $
+--             createCustomerGateway
+--
+--         , testDeleteSecurityGroup $
+--             deleteSecurityGroup
+--
+--         , testDeleteVPCPeeringConnection $
+--             deleteVPCPeeringConnection
+--
+--         , testAttachInternetGateway $
+--             attachInternetGateway
+--
+--         , testDescribeFlowLogs $
+--             describeFlowLogs
+--
+--         , testRunInstances $
+--             runInstances
+--
+--         , testAssociateDHCPOptions $
+--             associateDHCPOptions
+--
+--         , testDescribeReservedInstances $
+--             describeReservedInstances
+--
+--         , testDescribeVPCs $
+--             describeVPCs
+--
+--         , testDescribeConversionTasks $
+--             describeConversionTasks
+--
+--         , testAllocateAddress $
+--             allocateAddress
+--
+--         , testCancelConversionTask $
+--             cancelConversionTask
+--
+--         , testModifyImageAttribute $
+--             modifyImageAttribute
+--
+--         , testCreateRouteTable $
+--             createRouteTable
+--
+--         , testReportInstanceStatus $
+--             reportInstanceStatus
+--
+--         , testAttachVolume $
+--             attachVolume
+--
+--         , testRequestSpotInstances $
+--             requestSpotInstances
+--
+--         , testDescribeVolumes $
+--             describeVolumes
+--
+--         , testRejectVPCPeeringConnection $
+--             rejectVPCPeeringConnection
+--
+--         , testDeleteVPNConnectionRoute $
+--             deleteVPNConnectionRoute
+--
+--         , testModifyVPCEndpoint $
+--             modifyVPCEndpoint
+--
+--         , testRegisterImage $
+--             registerImage
+--
+--         , testRevokeSecurityGroupIngress $
+--             revokeSecurityGroupIngress
+--
+--         , testModifyReservedInstances $
+--             modifyReservedInstances
+--
+--         , testCreateFlowLogs $
+--             createFlowLogs
+--
+--         , testDescribeSpotFleetRequests $
+--             describeSpotFleetRequests
+--
+--         , testMoveAddressToVPC $
+--             moveAddressToVPC
+--
+--         , testDeleteNetworkACL $
+--             deleteNetworkACL
+--
+--         , testDeleteVPNGateway $
+--             deleteVPNGateway
+--
+--         , testDescribeImportImageTasks $
+--             describeImportImageTasks
+--
+--         , testDescribeVolumeAttribute $
+--             describeVolumeAttribute
+--
+--         , testDescribeMovingAddresses $
+--             describeMovingAddresses
+--
+--         , testGetPasswordData $
+--             getPasswordData
+--
+--         , testCreateVPC $
+--             createVPC
+--
+--         , testCopySnapshot $
+--             copySnapshot
+--
+--         , testDisassociateAddress $
+--             disassociateAddress
+--
+--         , testDeleteVPC $
+--             deleteVPC
+--
+--         , testCreateInstanceExportTask $
+--             createInstanceExportTask
+--
+--         , testDescribeVPCAttribute $
+--             describeVPCAttribute
+--
+--         , testCreateVolume $
+--             createVolume
+--
+--         , testModifyVolumeAttribute $
+--             modifyVolumeAttribute
+--
+--         , testDescribeSpotDatafeedSubscription $
+--             describeSpotDatafeedSubscription
+--
+--         , testDescribePrefixLists $
+--             describePrefixLists
+--
+--         , testDeletePlacementGroup $
+--             deletePlacementGroup
+--
+--         , testRequestSpotFleet $
+--             requestSpotFleet
+--
+--         , testCreateSubnet $
+--             createSubnet
+--
+--         , testCreateNetworkInterface $
+--             createNetworkInterface
+--
+--         , testDescribeSecurityGroups $
+--             describeSecurityGroups
+--
+--         , testDescribeExportTasks $
+--             describeExportTasks
+--
+--         , testDetachVPNGateway $
+--             detachVPNGateway
+--
+--         , testEnableVolumeIO $
+--             enableVolumeIO
+--
+--         , testDescribeInstances $
+--             describeInstances
+--
+--         , testDescribeVPCPeeringConnections $
+--             describeVPCPeeringConnections
+--
+--         , testCancelExportTask $
+--             cancelExportTask
+--
+--         , testDeleteNetworkInterface $
+--             deleteNetworkInterface
+--
+--         , testReplaceRouteTableAssociation $
+--             replaceRouteTableAssociation
+--
+--         , testStartInstances $
+--             startInstances
+--
+--         , testCreatePlacementGroup $
+--             createPlacementGroup
+--
+--         , testDescribeSnapshots $
+--             describeSnapshots
+--
+--         , testAssociateAddress $
+--             associateAddress
+--
+--         , testDescribeNetworkInterfaceAttribute $
+--             describeNetworkInterfaceAttribute
+--
+--         , testResetNetworkInterfaceAttribute $
+--             resetNetworkInterfaceAttribute
+--
+--         , testDeleteInternetGateway $
+--             deleteInternetGateway
+--
+--         , testDescribeReservedInstancesListings $
+--             describeReservedInstancesListings
+--
+--         , testCreateVPNConnection $
+--             createVPNConnection
+--
+--         , testDescribeImportSnapshotTasks $
+--             describeImportSnapshotTasks
+--
+--         , testDescribeCustomerGateways $
+--             describeCustomerGateways
+--
+--         , testDeleteSubnet $
+--             deleteSubnet
+--
+--         , testCopyImage $
+--             copyImage
+--
+--         , testCreateVPCEndpoint $
+--             createVPCEndpoint
+--
+--         , testUnmonitorInstances $
+--             unmonitorInstances
+--
+--         , testCreateSecurityGroup $
+--             createSecurityGroup
+--
+--         , testImportVolume $
+--             importVolume
+--
+--         , testDisableVGWRoutePropagation $
+--             disableVGWRoutePropagation
+--
+--         , testCreateSpotDatafeedSubscription $
+--             createSpotDatafeedSubscription
+--
+--         , testCancelSpotInstanceRequests $
+--             cancelSpotInstanceRequests
+--
+--         , testCreateRoute $
+--             createRoute
+--
+--         , testDeleteSnapshot $
+--             deleteSnapshot
+--
+--         , testAssignPrivateIPAddresses $
+--             assignPrivateIPAddresses
+--
+--         , testModifyInstanceAttribute $
+--             modifyInstanceAttribute
+--
+--         , testDeleteCustomerGateway $
+--             deleteCustomerGateway
+--
+--         , testDisassociateRouteTable $
+--             disassociateRouteTable
+--
+--         , testDeleteSpotDatafeedSubscription $
+--             deleteSpotDatafeedSubscription
+--
+--         , testEnableVPCClassicLink $
+--             enableVPCClassicLink
+--
+--         , testDescribePlacementGroups $
+--             describePlacementGroups
+--
+--         , testEnableVGWRoutePropagation $
+--             enableVGWRoutePropagation
+--
+--         , testDescribeSpotFleetRequestHistory $
+--             describeSpotFleetRequestHistory
+--
+--         , testModifySnapshotAttribute $
+--             modifySnapshotAttribute
+--
+--         , testCreateSnapshot $
+--             createSnapshot
+--
+--         , testCreateNetworkACLEntry $
+--             createNetworkACLEntry
+--
+--         , testCreateReservedInstancesListing $
+--             createReservedInstancesListing
+--
+--         , testAttachVPNGateway $
+--             attachVPNGateway
+--
+--         , testCreateDHCPOptions $
+--             createDHCPOptions
+--
+--         , testDescribeAccountAttributes $
+--             describeAccountAttributes
+--
+--         , testRebootInstances $
+--             rebootInstances
+--
+--         , testCreateImage $
+--             createImage
+--
+--         , testDescribeClassicLinkInstances $
+--             describeClassicLinkInstances
+--
+--         , testTerminateInstances $
+--             terminateInstances
+--
+--         , testDescribeKeyPairs $
+--             describeKeyPairs
+--
+--         , testCreateVPNConnectionRoute $
+--             createVPNConnectionRoute
+--
+--         , testAssociateRouteTable $
+--             associateRouteTable
+--
+--         , testDescribeVPNGateways $
+--             describeVPNGateways
+--
+--         , testGetConsoleOutput $
+--             getConsoleOutput
+--
+--         , testDescribeImageAttribute $
+--             describeImageAttribute
+--
+--         , testDeleteRouteTable $
+--             deleteRouteTable
+--
+--         , testResetImageAttribute $
+--             resetImageAttribute
+--
+--         , testDescribeReservedInstancesModifications $
+--             describeReservedInstancesModifications
+--
+--         , testDescribeSpotInstanceRequests $
+--             describeSpotInstanceRequests
+--
+--         , testUnassignPrivateIPAddresses $
+--             unassignPrivateIPAddresses
+--
+--         , testDeleteDHCPOptions $
+--             deleteDHCPOptions
+--
+--         , testDescribeNetworkACLs $
+--             describeNetworkACLs
+--
+--         , testCancelImportTask $
+--             cancelImportTask
+--
+--         , testDetachClassicLinkVPC $
+--             detachClassicLinkVPC
+--
+--         , testDescribeRegions $
+--             describeRegions
+--
+--         , testMonitorInstances $
+--             monitorInstances
+--
+--         , testAcceptVPCPeeringConnection $
+--             acceptVPCPeeringConnection
+--
+--         , testImportSnapshot $
+--             importSnapshot
+--
+--         , testDescribeVolumeStatus $
+--             describeVolumeStatus
+--
+--         , testDescribeRouteTables $
+--             describeRouteTables
+--
+--         , testDescribeAvailabilityZones $
+--             describeAvailabilityZones
+--
+--         , testModifyVPCAttribute $
+--             modifyVPCAttribute
+--
+--         , testDescribeImages $
+--             describeImages
+--
+--         , testRestoreAddressToClassic $
+--             restoreAddressToClassic
+--
+--         , testCreateKeyPair $
+--             createKeyPair
+--
+--         , testDeleteVolume $
+--             deleteVolume
+--
+--         , testDescribeSpotFleetInstances $
+--             describeSpotFleetInstances
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testImportInstanceResponse $
+--             importInstanceResponse
+--
+--         , testRevokeSecurityGroupEgressResponse $
+--             revokeSecurityGroupEgressResponse
+--
+--         , testCreateVPNGatewayResponse $
+--             createVPNGatewayResponse
+--
+--         , testCreateNetworkACLResponse $
+--             createNetworkACLResponse
+--
+--         , testDeleteKeyPairResponse $
+--             deleteKeyPairResponse
+--
+--         , testDescribeTagsResponse $
+--             describeTagsResponse
+--
+--         , testDetachNetworkInterfaceResponse $
+--             detachNetworkInterfaceResponse
+--
+--         , testDetachInternetGatewayResponse $
+--             detachInternetGatewayResponse
+--
+--         , testDeleteVPCEndpointsResponse $
+--             deleteVPCEndpointsResponse
+--
+--         , testDeleteFlowLogsResponse $
+--             deleteFlowLogsResponse
+--
+--         , testDescribeVPCClassicLinkResponse $
+--             describeVPCClassicLinkResponse
+--
+--         , testModifySubnetAttributeResponse $
+--             modifySubnetAttributeResponse
+--
+--         , testDetachVolumeResponse $
+--             volumeAttachment
+--
+--         , testCancelBundleTaskResponse $
+--             cancelBundleTaskResponse
+--
+--         , testReleaseAddressResponse $
+--             releaseAddressResponse
+--
+--         , testCreateInternetGatewayResponse $
+--             createInternetGatewayResponse
+--
+--         , testDeleteVPNConnectionResponse $
+--             deleteVPNConnectionResponse
+--
+--         , testDescribeBundleTasksResponse $
+--             describeBundleTasksResponse
+--
+--         , testAuthorizeSecurityGroupEgressResponse $
+--             authorizeSecurityGroupEgressResponse
+--
+--         , testDeregisterImageResponse $
+--             deregisterImageResponse
+--
+--         , testModifyNetworkInterfaceAttributeResponse $
+--             modifyNetworkInterfaceAttributeResponse
+--
+--         , testCancelReservedInstancesListingResponse $
+--             cancelReservedInstancesListingResponse
+--
+--         , testAttachClassicLinkVPCResponse $
+--             attachClassicLinkVPCResponse
+--
+--         , testCancelSpotFleetRequestsResponse $
+--             cancelSpotFleetRequestsResponse
+--
+--         , testDescribeSpotPriceHistoryResponse $
+--             describeSpotPriceHistoryResponse
+--
+--         , testDescribeDHCPOptionsResponse $
+--             describeDHCPOptionsResponse
+--
+--         , testImportImageResponse $
+--             importImageResponse
+--
+--         , testStopInstancesResponse $
+--             stopInstancesResponse
+--
+--         , testDescribeInternetGatewaysResponse $
+--             describeInternetGatewaysResponse
+--
+--         , testDisableVPCClassicLinkResponse $
+--             disableVPCClassicLinkResponse
+--
+--         , testBundleInstanceResponse $
+--             bundleInstanceResponse
+--
+--         , testDescribeNetworkInterfacesResponse $
+--             describeNetworkInterfacesResponse
+--
+--         , testReplaceNetworkACLAssociationResponse $
+--             replaceNetworkACLAssociationResponse
+--
+--         , testDescribeAddressesResponse $
+--             describeAddressesResponse
+--
+--         , testDescribeSnapshotAttributeResponse $
+--             describeSnapshotAttributeResponse
+--
+--         , testReplaceRouteResponse $
+--             replaceRouteResponse
+--
+--         , testDescribeVPCEndpointServicesResponse $
+--             describeVPCEndpointServicesResponse
+--
+--         , testAuthorizeSecurityGroupIngressResponse $
+--             authorizeSecurityGroupIngressResponse
+--
+--         , testCreateVPCPeeringConnectionResponse $
+--             createVPCPeeringConnectionResponse
+--
+--         , testDescribeSubnetsResponse $
+--             describeSubnetsResponse
+--
+--         , testCreateTagsResponse $
+--             createTagsResponse
+--
+--         , testPurchaseReservedInstancesOfferingResponse $
+--             purchaseReservedInstancesOfferingResponse
+--
+--         , testDeleteNetworkACLEntryResponse $
+--             deleteNetworkACLEntryResponse
+--
+--         , testResetSnapshotAttributeResponse $
+--             resetSnapshotAttributeResponse
+--
+--         , testDescribeVPNConnectionsResponse $
+--             describeVPNConnectionsResponse
+--
+--         , testDeleteRouteResponse $
+--             deleteRouteResponse
+--
+--         , testReplaceNetworkACLEntryResponse $
+--             replaceNetworkACLEntryResponse
+--
+--         , testDescribeVPCEndpointsResponse $
+--             describeVPCEndpointsResponse
+--
+--         , testResetInstanceAttributeResponse $
+--             resetInstanceAttributeResponse
+--
+--         , testAttachNetworkInterfaceResponse $
+--             attachNetworkInterfaceResponse
+--
+--         , testDescribeInstanceStatusResponse $
+--             describeInstanceStatusResponse
+--
+--         , testImportKeyPairResponse $
+--             importKeyPairResponse
+--
+--         , testDeleteTagsResponse $
+--             deleteTagsResponse
+--
+--         , testConfirmProductInstanceResponse $
+--             confirmProductInstanceResponse
+--
+--         , testDescribeInstanceAttributeResponse $
+--             describeInstanceAttributeResponse
+--
+--         , testDescribeReservedInstancesOfferingsResponse $
+--             describeReservedInstancesOfferingsResponse
+--
+--         , testCreateCustomerGatewayResponse $
+--             createCustomerGatewayResponse
+--
+--         , testDeleteSecurityGroupResponse $
+--             deleteSecurityGroupResponse
+--
+--         , testDeleteVPCPeeringConnectionResponse $
+--             deleteVPCPeeringConnectionResponse
+--
+--         , testAttachInternetGatewayResponse $
+--             attachInternetGatewayResponse
+--
+--         , testDescribeFlowLogsResponse $
+--             describeFlowLogsResponse
+--
+--         , testRunInstancesResponse $
+--             reservation
+--
+--         , testAssociateDHCPOptionsResponse $
+--             associateDHCPOptionsResponse
+--
+--         , testDescribeReservedInstancesResponse $
+--             describeReservedInstancesResponse
+--
+--         , testDescribeVPCsResponse $
+--             describeVPCsResponse
+--
+--         , testDescribeConversionTasksResponse $
+--             describeConversionTasksResponse
+--
+--         , testAllocateAddressResponse $
+--             allocateAddressResponse
+--
+--         , testCancelConversionTaskResponse $
+--             cancelConversionTaskResponse
+--
+--         , testModifyImageAttributeResponse $
+--             modifyImageAttributeResponse
+--
+--         , testCreateRouteTableResponse $
+--             createRouteTableResponse
+--
+--         , testReportInstanceStatusResponse $
+--             reportInstanceStatusResponse
+--
+--         , testAttachVolumeResponse $
+--             volumeAttachment
+--
+--         , testRequestSpotInstancesResponse $
+--             requestSpotInstancesResponse
+--
+--         , testDescribeVolumesResponse $
+--             describeVolumesResponse
+--
+--         , testRejectVPCPeeringConnectionResponse $
+--             rejectVPCPeeringConnectionResponse
+--
+--         , testDeleteVPNConnectionRouteResponse $
+--             deleteVPNConnectionRouteResponse
+--
+--         , testModifyVPCEndpointResponse $
+--             modifyVPCEndpointResponse
+--
+--         , testRegisterImageResponse $
+--             registerImageResponse
+--
+--         , testRevokeSecurityGroupIngressResponse $
+--             revokeSecurityGroupIngressResponse
+--
+--         , testModifyReservedInstancesResponse $
+--             modifyReservedInstancesResponse
+--
+--         , testCreateFlowLogsResponse $
+--             createFlowLogsResponse
+--
+--         , testDescribeSpotFleetRequestsResponse $
+--             describeSpotFleetRequestsResponse
+--
+--         , testMoveAddressToVPCResponse $
+--             moveAddressToVPCResponse
+--
+--         , testDeleteNetworkACLResponse $
+--             deleteNetworkACLResponse
+--
+--         , testDeleteVPNGatewayResponse $
+--             deleteVPNGatewayResponse
+--
+--         , testDescribeImportImageTasksResponse $
+--             describeImportImageTasksResponse
+--
+--         , testDescribeVolumeAttributeResponse $
+--             describeVolumeAttributeResponse
+--
+--         , testDescribeMovingAddressesResponse $
+--             describeMovingAddressesResponse
+--
+--         , testGetPasswordDataResponse $
+--             getPasswordDataResponse
+--
+--         , testCreateVPCResponse $
+--             createVPCResponse
+--
+--         , testCopySnapshotResponse $
+--             copySnapshotResponse
+--
+--         , testDisassociateAddressResponse $
+--             disassociateAddressResponse
+--
+--         , testDeleteVPCResponse $
+--             deleteVPCResponse
+--
+--         , testCreateInstanceExportTaskResponse $
+--             createInstanceExportTaskResponse
+--
+--         , testDescribeVPCAttributeResponse $
+--             describeVPCAttributeResponse
+--
+--         , testCreateVolumeResponse $
+--             volume
+--
+--         , testModifyVolumeAttributeResponse $
+--             modifyVolumeAttributeResponse
+--
+--         , testDescribeSpotDatafeedSubscriptionResponse $
+--             describeSpotDatafeedSubscriptionResponse
+--
+--         , testDescribePrefixListsResponse $
+--             describePrefixListsResponse
+--
+--         , testDeletePlacementGroupResponse $
+--             deletePlacementGroupResponse
+--
+--         , testRequestSpotFleetResponse $
+--             requestSpotFleetResponse
+--
+--         , testCreateSubnetResponse $
+--             createSubnetResponse
+--
+--         , testCreateNetworkInterfaceResponse $
+--             createNetworkInterfaceResponse
+--
+--         , testDescribeSecurityGroupsResponse $
+--             describeSecurityGroupsResponse
+--
+--         , testDescribeExportTasksResponse $
+--             describeExportTasksResponse
+--
+--         , testDetachVPNGatewayResponse $
+--             detachVPNGatewayResponse
+--
+--         , testEnableVolumeIOResponse $
+--             enableVolumeIOResponse
+--
+--         , testDescribeInstancesResponse $
+--             describeInstancesResponse
+--
+--         , testDescribeVPCPeeringConnectionsResponse $
+--             describeVPCPeeringConnectionsResponse
+--
+--         , testCancelExportTaskResponse $
+--             cancelExportTaskResponse
+--
+--         , testDeleteNetworkInterfaceResponse $
+--             deleteNetworkInterfaceResponse
+--
+--         , testReplaceRouteTableAssociationResponse $
+--             replaceRouteTableAssociationResponse
+--
+--         , testStartInstancesResponse $
+--             startInstancesResponse
+--
+--         , testCreatePlacementGroupResponse $
+--             createPlacementGroupResponse
+--
+--         , testDescribeSnapshotsResponse $
+--             describeSnapshotsResponse
+--
+--         , testAssociateAddressResponse $
+--             associateAddressResponse
+--
+--         , testDescribeNetworkInterfaceAttributeResponse $
+--             describeNetworkInterfaceAttributeResponse
+--
+--         , testResetNetworkInterfaceAttributeResponse $
+--             resetNetworkInterfaceAttributeResponse
+--
+--         , testDeleteInternetGatewayResponse $
+--             deleteInternetGatewayResponse
+--
+--         , testDescribeReservedInstancesListingsResponse $
+--             describeReservedInstancesListingsResponse
+--
+--         , testCreateVPNConnectionResponse $
+--             createVPNConnectionResponse
+--
+--         , testDescribeImportSnapshotTasksResponse $
+--             describeImportSnapshotTasksResponse
+--
+--         , testDescribeCustomerGatewaysResponse $
+--             describeCustomerGatewaysResponse
+--
+--         , testDeleteSubnetResponse $
+--             deleteSubnetResponse
+--
+--         , testCopyImageResponse $
+--             copyImageResponse
+--
+--         , testCreateVPCEndpointResponse $
+--             createVPCEndpointResponse
+--
+--         , testUnmonitorInstancesResponse $
+--             unmonitorInstancesResponse
+--
+--         , testCreateSecurityGroupResponse $
+--             createSecurityGroupResponse
+--
+--         , testImportVolumeResponse $
+--             importVolumeResponse
+--
+--         , testDisableVGWRoutePropagationResponse $
+--             disableVGWRoutePropagationResponse
+--
+--         , testCreateSpotDatafeedSubscriptionResponse $
+--             createSpotDatafeedSubscriptionResponse
+--
+--         , testCancelSpotInstanceRequestsResponse $
+--             cancelSpotInstanceRequestsResponse
+--
+--         , testCreateRouteResponse $
+--             createRouteResponse
+--
+--         , testDeleteSnapshotResponse $
+--             deleteSnapshotResponse
+--
+--         , testAssignPrivateIPAddressesResponse $
+--             assignPrivateIPAddressesResponse
+--
+--         , testModifyInstanceAttributeResponse $
+--             modifyInstanceAttributeResponse
+--
+--         , testDeleteCustomerGatewayResponse $
+--             deleteCustomerGatewayResponse
+--
+--         , testDisassociateRouteTableResponse $
+--             disassociateRouteTableResponse
+--
+--         , testDeleteSpotDatafeedSubscriptionResponse $
+--             deleteSpotDatafeedSubscriptionResponse
+--
+--         , testEnableVPCClassicLinkResponse $
+--             enableVPCClassicLinkResponse
+--
+--         , testDescribePlacementGroupsResponse $
+--             describePlacementGroupsResponse
+--
+--         , testEnableVGWRoutePropagationResponse $
+--             enableVGWRoutePropagationResponse
+--
+--         , testDescribeSpotFleetRequestHistoryResponse $
+--             describeSpotFleetRequestHistoryResponse
+--
+--         , testModifySnapshotAttributeResponse $
+--             modifySnapshotAttributeResponse
+--
+--         , testCreateSnapshotResponse $
+--             snapshot
+--
+--         , testCreateNetworkACLEntryResponse $
+--             createNetworkACLEntryResponse
+--
+--         , testCreateReservedInstancesListingResponse $
+--             createReservedInstancesListingResponse
+--
+--         , testAttachVPNGatewayResponse $
+--             attachVPNGatewayResponse
+--
+--         , testCreateDHCPOptionsResponse $
+--             createDHCPOptionsResponse
+--
+--         , testDescribeAccountAttributesResponse $
+--             describeAccountAttributesResponse
+--
+--         , testRebootInstancesResponse $
+--             rebootInstancesResponse
+--
+--         , testCreateImageResponse $
+--             createImageResponse
+--
+--         , testDescribeClassicLinkInstancesResponse $
+--             describeClassicLinkInstancesResponse
+--
+--         , testTerminateInstancesResponse $
+--             terminateInstancesResponse
+--
+--         , testDescribeKeyPairsResponse $
+--             describeKeyPairsResponse
+--
+--         , testCreateVPNConnectionRouteResponse $
+--             createVPNConnectionRouteResponse
+--
+--         , testAssociateRouteTableResponse $
+--             associateRouteTableResponse
+--
+--         , testDescribeVPNGatewaysResponse $
+--             describeVPNGatewaysResponse
+--
+--         , testGetConsoleOutputResponse $
+--             getConsoleOutputResponse
+--
+--         , testDescribeImageAttributeResponse $
+--             describeImageAttributeResponse
+--
+--         , testDeleteRouteTableResponse $
+--             deleteRouteTableResponse
+--
+--         , testResetImageAttributeResponse $
+--             resetImageAttributeResponse
+--
+--         , testDescribeReservedInstancesModificationsResponse $
+--             describeReservedInstancesModificationsResponse
+--
+--         , testDescribeSpotInstanceRequestsResponse $
+--             describeSpotInstanceRequestsResponse
+--
+--         , testUnassignPrivateIPAddressesResponse $
+--             unassignPrivateIPAddressesResponse
+--
+--         , testDeleteDHCPOptionsResponse $
+--             deleteDHCPOptionsResponse
+--
+--         , testDescribeNetworkACLsResponse $
+--             describeNetworkACLsResponse
+--
+--         , testCancelImportTaskResponse $
+--             cancelImportTaskResponse
+--
+--         , testDetachClassicLinkVPCResponse $
+--             detachClassicLinkVPCResponse
+--
+--         , testDescribeRegionsResponse $
+--             describeRegionsResponse
+--
+--         , testMonitorInstancesResponse $
+--             monitorInstancesResponse
+--
+--         , testAcceptVPCPeeringConnectionResponse $
+--             acceptVPCPeeringConnectionResponse
+--
+--         , testImportSnapshotResponse $
+--             importSnapshotResponse
+--
+--         , testDescribeVolumeStatusResponse $
+--             describeVolumeStatusResponse
+--
+--         , testDescribeRouteTablesResponse $
+--             describeRouteTablesResponse
+--
+--         , testDescribeAvailabilityZonesResponse $
+--             describeAvailabilityZonesResponse
+--
+--         , testModifyVPCAttributeResponse $
+--             modifyVPCAttributeResponse
+--
+--         , testDescribeImagesResponse $
+--             describeImagesResponse
+--
+--         , testRestoreAddressToClassicResponse $
+--             restoreAddressToClassicResponse
+--
+--         , testCreateKeyPairResponse $
+--             createKeyPairResponse
+--
+--         , testDeleteVolumeResponse $
+--             deleteVolumeResponse
+--
+--         , testDescribeSpotFleetInstancesResponse $
+--             describeSpotFleetInstancesResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testImportInstance :: ImportInstance -> TestTree
+testImportInstance = req
+    "ImportInstance"
+    "fixture/ImportInstance.yaml"
+
+testRevokeSecurityGroupEgress :: RevokeSecurityGroupEgress -> TestTree
+testRevokeSecurityGroupEgress = req
+    "RevokeSecurityGroupEgress"
+    "fixture/RevokeSecurityGroupEgress.yaml"
+
+testCreateVPNGateway :: CreateVPNGateway -> TestTree
+testCreateVPNGateway = req
+    "CreateVPNGateway"
+    "fixture/CreateVPNGateway.yaml"
+
+testCreateNetworkACL :: CreateNetworkACL -> TestTree
+testCreateNetworkACL = req
+    "CreateNetworkACL"
+    "fixture/CreateNetworkACL.yaml"
+
+testDeleteKeyPair :: DeleteKeyPair -> TestTree
+testDeleteKeyPair = req
+    "DeleteKeyPair"
+    "fixture/DeleteKeyPair.yaml"
+
+testDescribeTags :: DescribeTags -> TestTree
+testDescribeTags = req
+    "DescribeTags"
+    "fixture/DescribeTags.yaml"
+
+testDetachNetworkInterface :: DetachNetworkInterface -> TestTree
+testDetachNetworkInterface = req
+    "DetachNetworkInterface"
+    "fixture/DetachNetworkInterface.yaml"
+
+testDetachInternetGateway :: DetachInternetGateway -> TestTree
+testDetachInternetGateway = req
+    "DetachInternetGateway"
+    "fixture/DetachInternetGateway.yaml"
+
+testDeleteVPCEndpoints :: DeleteVPCEndpoints -> TestTree
+testDeleteVPCEndpoints = req
+    "DeleteVPCEndpoints"
+    "fixture/DeleteVPCEndpoints.yaml"
+
+testDeleteFlowLogs :: DeleteFlowLogs -> TestTree
+testDeleteFlowLogs = req
+    "DeleteFlowLogs"
+    "fixture/DeleteFlowLogs.yaml"
+
+testDescribeVPCClassicLink :: DescribeVPCClassicLink -> TestTree
+testDescribeVPCClassicLink = req
+    "DescribeVPCClassicLink"
+    "fixture/DescribeVPCClassicLink.yaml"
+
+testModifySubnetAttribute :: ModifySubnetAttribute -> TestTree
+testModifySubnetAttribute = req
+    "ModifySubnetAttribute"
+    "fixture/ModifySubnetAttribute.yaml"
+
+testDetachVolume :: DetachVolume -> TestTree
+testDetachVolume = req
+    "DetachVolume"
+    "fixture/DetachVolume.yaml"
+
+testCancelBundleTask :: CancelBundleTask -> TestTree
+testCancelBundleTask = req
+    "CancelBundleTask"
+    "fixture/CancelBundleTask.yaml"
+
+testReleaseAddress :: ReleaseAddress -> TestTree
+testReleaseAddress = req
+    "ReleaseAddress"
+    "fixture/ReleaseAddress.yaml"
+
+testCreateInternetGateway :: CreateInternetGateway -> TestTree
+testCreateInternetGateway = req
+    "CreateInternetGateway"
+    "fixture/CreateInternetGateway.yaml"
+
+testDeleteVPNConnection :: DeleteVPNConnection -> TestTree
+testDeleteVPNConnection = req
+    "DeleteVPNConnection"
+    "fixture/DeleteVPNConnection.yaml"
+
+testDescribeBundleTasks :: DescribeBundleTasks -> TestTree
+testDescribeBundleTasks = req
+    "DescribeBundleTasks"
+    "fixture/DescribeBundleTasks.yaml"
+
+testAuthorizeSecurityGroupEgress :: AuthorizeSecurityGroupEgress -> TestTree
+testAuthorizeSecurityGroupEgress = req
+    "AuthorizeSecurityGroupEgress"
+    "fixture/AuthorizeSecurityGroupEgress.yaml"
+
+testDeregisterImage :: DeregisterImage -> TestTree
+testDeregisterImage = req
+    "DeregisterImage"
+    "fixture/DeregisterImage.yaml"
+
+testModifyNetworkInterfaceAttribute :: ModifyNetworkInterfaceAttribute -> TestTree
+testModifyNetworkInterfaceAttribute = req
+    "ModifyNetworkInterfaceAttribute"
+    "fixture/ModifyNetworkInterfaceAttribute.yaml"
+
+testCancelReservedInstancesListing :: CancelReservedInstancesListing -> TestTree
+testCancelReservedInstancesListing = req
+    "CancelReservedInstancesListing"
+    "fixture/CancelReservedInstancesListing.yaml"
+
+testAttachClassicLinkVPC :: AttachClassicLinkVPC -> TestTree
+testAttachClassicLinkVPC = req
+    "AttachClassicLinkVPC"
+    "fixture/AttachClassicLinkVPC.yaml"
+
+testCancelSpotFleetRequests :: CancelSpotFleetRequests -> TestTree
+testCancelSpotFleetRequests = req
+    "CancelSpotFleetRequests"
+    "fixture/CancelSpotFleetRequests.yaml"
+
+testDescribeSpotPriceHistory :: DescribeSpotPriceHistory -> TestTree
+testDescribeSpotPriceHistory = req
+    "DescribeSpotPriceHistory"
+    "fixture/DescribeSpotPriceHistory.yaml"
+
+testDescribeDHCPOptions :: DescribeDHCPOptions -> TestTree
+testDescribeDHCPOptions = req
+    "DescribeDHCPOptions"
+    "fixture/DescribeDHCPOptions.yaml"
+
+testImportImage :: ImportImage -> TestTree
+testImportImage = req
+    "ImportImage"
+    "fixture/ImportImage.yaml"
+
+testStopInstances :: StopInstances -> TestTree
+testStopInstances = req
+    "StopInstances"
+    "fixture/StopInstances.yaml"
+
+testDescribeInternetGateways :: DescribeInternetGateways -> TestTree
+testDescribeInternetGateways = req
+    "DescribeInternetGateways"
+    "fixture/DescribeInternetGateways.yaml"
+
+testDisableVPCClassicLink :: DisableVPCClassicLink -> TestTree
+testDisableVPCClassicLink = req
+    "DisableVPCClassicLink"
+    "fixture/DisableVPCClassicLink.yaml"
+
+testBundleInstance :: BundleInstance -> TestTree
+testBundleInstance = req
+    "BundleInstance"
+    "fixture/BundleInstance.yaml"
+
+testDescribeNetworkInterfaces :: DescribeNetworkInterfaces -> TestTree
+testDescribeNetworkInterfaces = req
+    "DescribeNetworkInterfaces"
+    "fixture/DescribeNetworkInterfaces.yaml"
+
+testReplaceNetworkACLAssociation :: ReplaceNetworkACLAssociation -> TestTree
+testReplaceNetworkACLAssociation = req
+    "ReplaceNetworkACLAssociation"
+    "fixture/ReplaceNetworkACLAssociation.yaml"
+
+testDescribeAddresses :: DescribeAddresses -> TestTree
+testDescribeAddresses = req
+    "DescribeAddresses"
+    "fixture/DescribeAddresses.yaml"
+
+testDescribeSnapshotAttribute :: DescribeSnapshotAttribute -> TestTree
+testDescribeSnapshotAttribute = req
+    "DescribeSnapshotAttribute"
+    "fixture/DescribeSnapshotAttribute.yaml"
+
+testReplaceRoute :: ReplaceRoute -> TestTree
+testReplaceRoute = req
+    "ReplaceRoute"
+    "fixture/ReplaceRoute.yaml"
+
+testDescribeVPCEndpointServices :: DescribeVPCEndpointServices -> TestTree
+testDescribeVPCEndpointServices = req
+    "DescribeVPCEndpointServices"
+    "fixture/DescribeVPCEndpointServices.yaml"
+
+testAuthorizeSecurityGroupIngress :: AuthorizeSecurityGroupIngress -> TestTree
+testAuthorizeSecurityGroupIngress = req
+    "AuthorizeSecurityGroupIngress"
+    "fixture/AuthorizeSecurityGroupIngress.yaml"
+
+testCreateVPCPeeringConnection :: CreateVPCPeeringConnection -> TestTree
+testCreateVPCPeeringConnection = req
+    "CreateVPCPeeringConnection"
+    "fixture/CreateVPCPeeringConnection.yaml"
+
+testDescribeSubnets :: DescribeSubnets -> TestTree
+testDescribeSubnets = req
+    "DescribeSubnets"
+    "fixture/DescribeSubnets.yaml"
+
+testCreateTags :: CreateTags -> TestTree
+testCreateTags = req
+    "CreateTags"
+    "fixture/CreateTags.yaml"
+
+testPurchaseReservedInstancesOffering :: PurchaseReservedInstancesOffering -> TestTree
+testPurchaseReservedInstancesOffering = req
+    "PurchaseReservedInstancesOffering"
+    "fixture/PurchaseReservedInstancesOffering.yaml"
+
+testDeleteNetworkACLEntry :: DeleteNetworkACLEntry -> TestTree
+testDeleteNetworkACLEntry = req
+    "DeleteNetworkACLEntry"
+    "fixture/DeleteNetworkACLEntry.yaml"
+
+testResetSnapshotAttribute :: ResetSnapshotAttribute -> TestTree
+testResetSnapshotAttribute = req
+    "ResetSnapshotAttribute"
+    "fixture/ResetSnapshotAttribute.yaml"
+
+testDescribeVPNConnections :: DescribeVPNConnections -> TestTree
+testDescribeVPNConnections = req
+    "DescribeVPNConnections"
+    "fixture/DescribeVPNConnections.yaml"
+
+testDeleteRoute :: DeleteRoute -> TestTree
+testDeleteRoute = req
+    "DeleteRoute"
+    "fixture/DeleteRoute.yaml"
+
+testReplaceNetworkACLEntry :: ReplaceNetworkACLEntry -> TestTree
+testReplaceNetworkACLEntry = req
+    "ReplaceNetworkACLEntry"
+    "fixture/ReplaceNetworkACLEntry.yaml"
+
+testDescribeVPCEndpoints :: DescribeVPCEndpoints -> TestTree
+testDescribeVPCEndpoints = req
+    "DescribeVPCEndpoints"
+    "fixture/DescribeVPCEndpoints.yaml"
+
+testResetInstanceAttribute :: ResetInstanceAttribute -> TestTree
+testResetInstanceAttribute = req
+    "ResetInstanceAttribute"
+    "fixture/ResetInstanceAttribute.yaml"
+
+testAttachNetworkInterface :: AttachNetworkInterface -> TestTree
+testAttachNetworkInterface = req
+    "AttachNetworkInterface"
+    "fixture/AttachNetworkInterface.yaml"
+
+testDescribeInstanceStatus :: DescribeInstanceStatus -> TestTree
+testDescribeInstanceStatus = req
+    "DescribeInstanceStatus"
+    "fixture/DescribeInstanceStatus.yaml"
+
+testImportKeyPair :: ImportKeyPair -> TestTree
+testImportKeyPair = req
+    "ImportKeyPair"
+    "fixture/ImportKeyPair.yaml"
+
+testDeleteTags :: DeleteTags -> TestTree
+testDeleteTags = req
+    "DeleteTags"
+    "fixture/DeleteTags.yaml"
+
+testConfirmProductInstance :: ConfirmProductInstance -> TestTree
+testConfirmProductInstance = req
+    "ConfirmProductInstance"
+    "fixture/ConfirmProductInstance.yaml"
+
+testDescribeInstanceAttribute :: DescribeInstanceAttribute -> TestTree
+testDescribeInstanceAttribute = req
+    "DescribeInstanceAttribute"
+    "fixture/DescribeInstanceAttribute.yaml"
+
+testDescribeReservedInstancesOfferings :: DescribeReservedInstancesOfferings -> TestTree
+testDescribeReservedInstancesOfferings = req
+    "DescribeReservedInstancesOfferings"
+    "fixture/DescribeReservedInstancesOfferings.yaml"
+
+testCreateCustomerGateway :: CreateCustomerGateway -> TestTree
+testCreateCustomerGateway = req
+    "CreateCustomerGateway"
+    "fixture/CreateCustomerGateway.yaml"
+
+testDeleteSecurityGroup :: DeleteSecurityGroup -> TestTree
+testDeleteSecurityGroup = req
+    "DeleteSecurityGroup"
+    "fixture/DeleteSecurityGroup.yaml"
+
+testDeleteVPCPeeringConnection :: DeleteVPCPeeringConnection -> TestTree
+testDeleteVPCPeeringConnection = req
+    "DeleteVPCPeeringConnection"
+    "fixture/DeleteVPCPeeringConnection.yaml"
+
+testAttachInternetGateway :: AttachInternetGateway -> TestTree
+testAttachInternetGateway = req
+    "AttachInternetGateway"
+    "fixture/AttachInternetGateway.yaml"
+
+testDescribeFlowLogs :: DescribeFlowLogs -> TestTree
+testDescribeFlowLogs = req
+    "DescribeFlowLogs"
+    "fixture/DescribeFlowLogs.yaml"
+
+testRunInstances :: RunInstances -> TestTree
+testRunInstances = req
+    "RunInstances"
+    "fixture/RunInstances.yaml"
+
+testAssociateDHCPOptions :: AssociateDHCPOptions -> TestTree
+testAssociateDHCPOptions = req
+    "AssociateDHCPOptions"
+    "fixture/AssociateDHCPOptions.yaml"
+
+testDescribeReservedInstances :: DescribeReservedInstances -> TestTree
+testDescribeReservedInstances = req
+    "DescribeReservedInstances"
+    "fixture/DescribeReservedInstances.yaml"
+
+testDescribeVPCs :: DescribeVPCs -> TestTree
+testDescribeVPCs = req
+    "DescribeVPCs"
+    "fixture/DescribeVPCs.yaml"
+
+testDescribeConversionTasks :: DescribeConversionTasks -> TestTree
+testDescribeConversionTasks = req
+    "DescribeConversionTasks"
+    "fixture/DescribeConversionTasks.yaml"
+
+testAllocateAddress :: AllocateAddress -> TestTree
+testAllocateAddress = req
+    "AllocateAddress"
+    "fixture/AllocateAddress.yaml"
+
+testCancelConversionTask :: CancelConversionTask -> TestTree
+testCancelConversionTask = req
+    "CancelConversionTask"
+    "fixture/CancelConversionTask.yaml"
+
+testModifyImageAttribute :: ModifyImageAttribute -> TestTree
+testModifyImageAttribute = req
+    "ModifyImageAttribute"
+    "fixture/ModifyImageAttribute.yaml"
+
+testCreateRouteTable :: CreateRouteTable -> TestTree
+testCreateRouteTable = req
+    "CreateRouteTable"
+    "fixture/CreateRouteTable.yaml"
+
+testReportInstanceStatus :: ReportInstanceStatus -> TestTree
+testReportInstanceStatus = req
+    "ReportInstanceStatus"
+    "fixture/ReportInstanceStatus.yaml"
+
+testAttachVolume :: AttachVolume -> TestTree
+testAttachVolume = req
+    "AttachVolume"
+    "fixture/AttachVolume.yaml"
+
+testRequestSpotInstances :: RequestSpotInstances -> TestTree
+testRequestSpotInstances = req
+    "RequestSpotInstances"
+    "fixture/RequestSpotInstances.yaml"
+
+testDescribeVolumes :: DescribeVolumes -> TestTree
+testDescribeVolumes = req
+    "DescribeVolumes"
+    "fixture/DescribeVolumes.yaml"
+
+testRejectVPCPeeringConnection :: RejectVPCPeeringConnection -> TestTree
+testRejectVPCPeeringConnection = req
+    "RejectVPCPeeringConnection"
+    "fixture/RejectVPCPeeringConnection.yaml"
+
+testDeleteVPNConnectionRoute :: DeleteVPNConnectionRoute -> TestTree
+testDeleteVPNConnectionRoute = req
+    "DeleteVPNConnectionRoute"
+    "fixture/DeleteVPNConnectionRoute.yaml"
+
+testModifyVPCEndpoint :: ModifyVPCEndpoint -> TestTree
+testModifyVPCEndpoint = req
+    "ModifyVPCEndpoint"
+    "fixture/ModifyVPCEndpoint.yaml"
+
+testRegisterImage :: RegisterImage -> TestTree
+testRegisterImage = req
+    "RegisterImage"
+    "fixture/RegisterImage.yaml"
+
+testRevokeSecurityGroupIngress :: RevokeSecurityGroupIngress -> TestTree
+testRevokeSecurityGroupIngress = req
+    "RevokeSecurityGroupIngress"
+    "fixture/RevokeSecurityGroupIngress.yaml"
+
+testModifyReservedInstances :: ModifyReservedInstances -> TestTree
+testModifyReservedInstances = req
+    "ModifyReservedInstances"
+    "fixture/ModifyReservedInstances.yaml"
+
+testCreateFlowLogs :: CreateFlowLogs -> TestTree
+testCreateFlowLogs = req
+    "CreateFlowLogs"
+    "fixture/CreateFlowLogs.yaml"
+
+testDescribeSpotFleetRequests :: DescribeSpotFleetRequests -> TestTree
+testDescribeSpotFleetRequests = req
+    "DescribeSpotFleetRequests"
+    "fixture/DescribeSpotFleetRequests.yaml"
+
+testMoveAddressToVPC :: MoveAddressToVPC -> TestTree
+testMoveAddressToVPC = req
+    "MoveAddressToVPC"
+    "fixture/MoveAddressToVPC.yaml"
+
+testDeleteNetworkACL :: DeleteNetworkACL -> TestTree
+testDeleteNetworkACL = req
+    "DeleteNetworkACL"
+    "fixture/DeleteNetworkACL.yaml"
+
+testDeleteVPNGateway :: DeleteVPNGateway -> TestTree
+testDeleteVPNGateway = req
+    "DeleteVPNGateway"
+    "fixture/DeleteVPNGateway.yaml"
+
+testDescribeImportImageTasks :: DescribeImportImageTasks -> TestTree
+testDescribeImportImageTasks = req
+    "DescribeImportImageTasks"
+    "fixture/DescribeImportImageTasks.yaml"
+
+testDescribeVolumeAttribute :: DescribeVolumeAttribute -> TestTree
+testDescribeVolumeAttribute = req
+    "DescribeVolumeAttribute"
+    "fixture/DescribeVolumeAttribute.yaml"
+
+testDescribeMovingAddresses :: DescribeMovingAddresses -> TestTree
+testDescribeMovingAddresses = req
+    "DescribeMovingAddresses"
+    "fixture/DescribeMovingAddresses.yaml"
+
+testGetPasswordData :: GetPasswordData -> TestTree
+testGetPasswordData = req
+    "GetPasswordData"
+    "fixture/GetPasswordData.yaml"
+
+testCreateVPC :: CreateVPC -> TestTree
+testCreateVPC = req
+    "CreateVPC"
+    "fixture/CreateVPC.yaml"
+
+testCopySnapshot :: CopySnapshot -> TestTree
+testCopySnapshot = req
+    "CopySnapshot"
+    "fixture/CopySnapshot.yaml"
+
+testDisassociateAddress :: DisassociateAddress -> TestTree
+testDisassociateAddress = req
+    "DisassociateAddress"
+    "fixture/DisassociateAddress.yaml"
+
+testDeleteVPC :: DeleteVPC -> TestTree
+testDeleteVPC = req
+    "DeleteVPC"
+    "fixture/DeleteVPC.yaml"
+
+testCreateInstanceExportTask :: CreateInstanceExportTask -> TestTree
+testCreateInstanceExportTask = req
+    "CreateInstanceExportTask"
+    "fixture/CreateInstanceExportTask.yaml"
+
+testDescribeVPCAttribute :: DescribeVPCAttribute -> TestTree
+testDescribeVPCAttribute = req
+    "DescribeVPCAttribute"
+    "fixture/DescribeVPCAttribute.yaml"
+
+testCreateVolume :: CreateVolume -> TestTree
+testCreateVolume = req
+    "CreateVolume"
+    "fixture/CreateVolume.yaml"
+
+testModifyVolumeAttribute :: ModifyVolumeAttribute -> TestTree
+testModifyVolumeAttribute = req
+    "ModifyVolumeAttribute"
+    "fixture/ModifyVolumeAttribute.yaml"
+
+testDescribeSpotDatafeedSubscription :: DescribeSpotDatafeedSubscription -> TestTree
+testDescribeSpotDatafeedSubscription = req
+    "DescribeSpotDatafeedSubscription"
+    "fixture/DescribeSpotDatafeedSubscription.yaml"
+
+testDescribePrefixLists :: DescribePrefixLists -> TestTree
+testDescribePrefixLists = req
+    "DescribePrefixLists"
+    "fixture/DescribePrefixLists.yaml"
+
+testDeletePlacementGroup :: DeletePlacementGroup -> TestTree
+testDeletePlacementGroup = req
+    "DeletePlacementGroup"
+    "fixture/DeletePlacementGroup.yaml"
+
+testRequestSpotFleet :: RequestSpotFleet -> TestTree
+testRequestSpotFleet = req
+    "RequestSpotFleet"
+    "fixture/RequestSpotFleet.yaml"
+
+testCreateSubnet :: CreateSubnet -> TestTree
+testCreateSubnet = req
+    "CreateSubnet"
+    "fixture/CreateSubnet.yaml"
+
+testCreateNetworkInterface :: CreateNetworkInterface -> TestTree
+testCreateNetworkInterface = req
+    "CreateNetworkInterface"
+    "fixture/CreateNetworkInterface.yaml"
+
+testDescribeSecurityGroups :: DescribeSecurityGroups -> TestTree
+testDescribeSecurityGroups = req
+    "DescribeSecurityGroups"
+    "fixture/DescribeSecurityGroups.yaml"
+
+testDescribeExportTasks :: DescribeExportTasks -> TestTree
+testDescribeExportTasks = req
+    "DescribeExportTasks"
+    "fixture/DescribeExportTasks.yaml"
+
+testDetachVPNGateway :: DetachVPNGateway -> TestTree
+testDetachVPNGateway = req
+    "DetachVPNGateway"
+    "fixture/DetachVPNGateway.yaml"
+
+testEnableVolumeIO :: EnableVolumeIO -> TestTree
+testEnableVolumeIO = req
+    "EnableVolumeIO"
+    "fixture/EnableVolumeIO.yaml"
+
+testDescribeInstances :: DescribeInstances -> TestTree
+testDescribeInstances = req
+    "DescribeInstances"
+    "fixture/DescribeInstances.yaml"
+
+testDescribeVPCPeeringConnections :: DescribeVPCPeeringConnections -> TestTree
+testDescribeVPCPeeringConnections = req
+    "DescribeVPCPeeringConnections"
+    "fixture/DescribeVPCPeeringConnections.yaml"
+
+testCancelExportTask :: CancelExportTask -> TestTree
+testCancelExportTask = req
+    "CancelExportTask"
+    "fixture/CancelExportTask.yaml"
+
+testDeleteNetworkInterface :: DeleteNetworkInterface -> TestTree
+testDeleteNetworkInterface = req
+    "DeleteNetworkInterface"
+    "fixture/DeleteNetworkInterface.yaml"
+
+testReplaceRouteTableAssociation :: ReplaceRouteTableAssociation -> TestTree
+testReplaceRouteTableAssociation = req
+    "ReplaceRouteTableAssociation"
+    "fixture/ReplaceRouteTableAssociation.yaml"
+
+testStartInstances :: StartInstances -> TestTree
+testStartInstances = req
+    "StartInstances"
+    "fixture/StartInstances.yaml"
+
+testCreatePlacementGroup :: CreatePlacementGroup -> TestTree
+testCreatePlacementGroup = req
+    "CreatePlacementGroup"
+    "fixture/CreatePlacementGroup.yaml"
+
+testDescribeSnapshots :: DescribeSnapshots -> TestTree
+testDescribeSnapshots = req
+    "DescribeSnapshots"
+    "fixture/DescribeSnapshots.yaml"
+
+testAssociateAddress :: AssociateAddress -> TestTree
+testAssociateAddress = req
+    "AssociateAddress"
+    "fixture/AssociateAddress.yaml"
+
+testDescribeNetworkInterfaceAttribute :: DescribeNetworkInterfaceAttribute -> TestTree
+testDescribeNetworkInterfaceAttribute = req
+    "DescribeNetworkInterfaceAttribute"
+    "fixture/DescribeNetworkInterfaceAttribute.yaml"
+
+testResetNetworkInterfaceAttribute :: ResetNetworkInterfaceAttribute -> TestTree
+testResetNetworkInterfaceAttribute = req
+    "ResetNetworkInterfaceAttribute"
+    "fixture/ResetNetworkInterfaceAttribute.yaml"
+
+testDeleteInternetGateway :: DeleteInternetGateway -> TestTree
+testDeleteInternetGateway = req
+    "DeleteInternetGateway"
+    "fixture/DeleteInternetGateway.yaml"
+
+testDescribeReservedInstancesListings :: DescribeReservedInstancesListings -> TestTree
+testDescribeReservedInstancesListings = req
+    "DescribeReservedInstancesListings"
+    "fixture/DescribeReservedInstancesListings.yaml"
+
+testCreateVPNConnection :: CreateVPNConnection -> TestTree
+testCreateVPNConnection = req
+    "CreateVPNConnection"
+    "fixture/CreateVPNConnection.yaml"
+
+testDescribeImportSnapshotTasks :: DescribeImportSnapshotTasks -> TestTree
+testDescribeImportSnapshotTasks = req
+    "DescribeImportSnapshotTasks"
+    "fixture/DescribeImportSnapshotTasks.yaml"
+
+testDescribeCustomerGateways :: DescribeCustomerGateways -> TestTree
+testDescribeCustomerGateways = req
+    "DescribeCustomerGateways"
+    "fixture/DescribeCustomerGateways.yaml"
+
+testDeleteSubnet :: DeleteSubnet -> TestTree
+testDeleteSubnet = req
+    "DeleteSubnet"
+    "fixture/DeleteSubnet.yaml"
+
+testCopyImage :: CopyImage -> TestTree
+testCopyImage = req
+    "CopyImage"
+    "fixture/CopyImage.yaml"
+
+testCreateVPCEndpoint :: CreateVPCEndpoint -> TestTree
+testCreateVPCEndpoint = req
+    "CreateVPCEndpoint"
+    "fixture/CreateVPCEndpoint.yaml"
+
+testUnmonitorInstances :: UnmonitorInstances -> TestTree
+testUnmonitorInstances = req
+    "UnmonitorInstances"
+    "fixture/UnmonitorInstances.yaml"
+
+testCreateSecurityGroup :: CreateSecurityGroup -> TestTree
+testCreateSecurityGroup = req
+    "CreateSecurityGroup"
+    "fixture/CreateSecurityGroup.yaml"
+
+testImportVolume :: ImportVolume -> TestTree
+testImportVolume = req
+    "ImportVolume"
+    "fixture/ImportVolume.yaml"
+
+testDisableVGWRoutePropagation :: DisableVGWRoutePropagation -> TestTree
+testDisableVGWRoutePropagation = req
+    "DisableVGWRoutePropagation"
+    "fixture/DisableVGWRoutePropagation.yaml"
+
+testCreateSpotDatafeedSubscription :: CreateSpotDatafeedSubscription -> TestTree
+testCreateSpotDatafeedSubscription = req
+    "CreateSpotDatafeedSubscription"
+    "fixture/CreateSpotDatafeedSubscription.yaml"
+
+testCancelSpotInstanceRequests :: CancelSpotInstanceRequests -> TestTree
+testCancelSpotInstanceRequests = req
+    "CancelSpotInstanceRequests"
+    "fixture/CancelSpotInstanceRequests.yaml"
+
+testCreateRoute :: CreateRoute -> TestTree
+testCreateRoute = req
+    "CreateRoute"
+    "fixture/CreateRoute.yaml"
+
+testDeleteSnapshot :: DeleteSnapshot -> TestTree
+testDeleteSnapshot = req
+    "DeleteSnapshot"
+    "fixture/DeleteSnapshot.yaml"
+
+testAssignPrivateIPAddresses :: AssignPrivateIPAddresses -> TestTree
+testAssignPrivateIPAddresses = req
+    "AssignPrivateIPAddresses"
+    "fixture/AssignPrivateIPAddresses.yaml"
+
+testModifyInstanceAttribute :: ModifyInstanceAttribute -> TestTree
+testModifyInstanceAttribute = req
+    "ModifyInstanceAttribute"
+    "fixture/ModifyInstanceAttribute.yaml"
+
+testDeleteCustomerGateway :: DeleteCustomerGateway -> TestTree
+testDeleteCustomerGateway = req
+    "DeleteCustomerGateway"
+    "fixture/DeleteCustomerGateway.yaml"
+
+testDisassociateRouteTable :: DisassociateRouteTable -> TestTree
+testDisassociateRouteTable = req
+    "DisassociateRouteTable"
+    "fixture/DisassociateRouteTable.yaml"
+
+testDeleteSpotDatafeedSubscription :: DeleteSpotDatafeedSubscription -> TestTree
+testDeleteSpotDatafeedSubscription = req
+    "DeleteSpotDatafeedSubscription"
+    "fixture/DeleteSpotDatafeedSubscription.yaml"
+
+testEnableVPCClassicLink :: EnableVPCClassicLink -> TestTree
+testEnableVPCClassicLink = req
+    "EnableVPCClassicLink"
+    "fixture/EnableVPCClassicLink.yaml"
+
+testDescribePlacementGroups :: DescribePlacementGroups -> TestTree
+testDescribePlacementGroups = req
+    "DescribePlacementGroups"
+    "fixture/DescribePlacementGroups.yaml"
+
+testEnableVGWRoutePropagation :: EnableVGWRoutePropagation -> TestTree
+testEnableVGWRoutePropagation = req
+    "EnableVGWRoutePropagation"
+    "fixture/EnableVGWRoutePropagation.yaml"
+
+testDescribeSpotFleetRequestHistory :: DescribeSpotFleetRequestHistory -> TestTree
+testDescribeSpotFleetRequestHistory = req
+    "DescribeSpotFleetRequestHistory"
+    "fixture/DescribeSpotFleetRequestHistory.yaml"
+
+testModifySnapshotAttribute :: ModifySnapshotAttribute -> TestTree
+testModifySnapshotAttribute = req
+    "ModifySnapshotAttribute"
+    "fixture/ModifySnapshotAttribute.yaml"
+
+testCreateSnapshot :: CreateSnapshot -> TestTree
+testCreateSnapshot = req
+    "CreateSnapshot"
+    "fixture/CreateSnapshot.yaml"
+
+testCreateNetworkACLEntry :: CreateNetworkACLEntry -> TestTree
+testCreateNetworkACLEntry = req
+    "CreateNetworkACLEntry"
+    "fixture/CreateNetworkACLEntry.yaml"
+
+testCreateReservedInstancesListing :: CreateReservedInstancesListing -> TestTree
+testCreateReservedInstancesListing = req
+    "CreateReservedInstancesListing"
+    "fixture/CreateReservedInstancesListing.yaml"
+
+testAttachVPNGateway :: AttachVPNGateway -> TestTree
+testAttachVPNGateway = req
+    "AttachVPNGateway"
+    "fixture/AttachVPNGateway.yaml"
+
+testCreateDHCPOptions :: CreateDHCPOptions -> TestTree
+testCreateDHCPOptions = req
+    "CreateDHCPOptions"
+    "fixture/CreateDHCPOptions.yaml"
+
+testDescribeAccountAttributes :: DescribeAccountAttributes -> TestTree
+testDescribeAccountAttributes = req
+    "DescribeAccountAttributes"
+    "fixture/DescribeAccountAttributes.yaml"
+
+testRebootInstances :: RebootInstances -> TestTree
+testRebootInstances = req
+    "RebootInstances"
+    "fixture/RebootInstances.yaml"
+
+testCreateImage :: CreateImage -> TestTree
+testCreateImage = req
+    "CreateImage"
+    "fixture/CreateImage.yaml"
+
+testDescribeClassicLinkInstances :: DescribeClassicLinkInstances -> TestTree
+testDescribeClassicLinkInstances = req
+    "DescribeClassicLinkInstances"
+    "fixture/DescribeClassicLinkInstances.yaml"
+
+testTerminateInstances :: TerminateInstances -> TestTree
+testTerminateInstances = req
+    "TerminateInstances"
+    "fixture/TerminateInstances.yaml"
+
+testDescribeKeyPairs :: DescribeKeyPairs -> TestTree
+testDescribeKeyPairs = req
+    "DescribeKeyPairs"
+    "fixture/DescribeKeyPairs.yaml"
+
+testCreateVPNConnectionRoute :: CreateVPNConnectionRoute -> TestTree
+testCreateVPNConnectionRoute = req
+    "CreateVPNConnectionRoute"
+    "fixture/CreateVPNConnectionRoute.yaml"
+
+testAssociateRouteTable :: AssociateRouteTable -> TestTree
+testAssociateRouteTable = req
+    "AssociateRouteTable"
+    "fixture/AssociateRouteTable.yaml"
+
+testDescribeVPNGateways :: DescribeVPNGateways -> TestTree
+testDescribeVPNGateways = req
+    "DescribeVPNGateways"
+    "fixture/DescribeVPNGateways.yaml"
+
+testGetConsoleOutput :: GetConsoleOutput -> TestTree
+testGetConsoleOutput = req
+    "GetConsoleOutput"
+    "fixture/GetConsoleOutput.yaml"
+
+testDescribeImageAttribute :: DescribeImageAttribute -> TestTree
+testDescribeImageAttribute = req
+    "DescribeImageAttribute"
+    "fixture/DescribeImageAttribute.yaml"
+
+testDeleteRouteTable :: DeleteRouteTable -> TestTree
+testDeleteRouteTable = req
+    "DeleteRouteTable"
+    "fixture/DeleteRouteTable.yaml"
+
+testResetImageAttribute :: ResetImageAttribute -> TestTree
+testResetImageAttribute = req
+    "ResetImageAttribute"
+    "fixture/ResetImageAttribute.yaml"
+
+testDescribeReservedInstancesModifications :: DescribeReservedInstancesModifications -> TestTree
+testDescribeReservedInstancesModifications = req
+    "DescribeReservedInstancesModifications"
+    "fixture/DescribeReservedInstancesModifications.yaml"
+
+testDescribeSpotInstanceRequests :: DescribeSpotInstanceRequests -> TestTree
+testDescribeSpotInstanceRequests = req
+    "DescribeSpotInstanceRequests"
+    "fixture/DescribeSpotInstanceRequests.yaml"
+
+testUnassignPrivateIPAddresses :: UnassignPrivateIPAddresses -> TestTree
+testUnassignPrivateIPAddresses = req
+    "UnassignPrivateIPAddresses"
+    "fixture/UnassignPrivateIPAddresses.yaml"
+
+testDeleteDHCPOptions :: DeleteDHCPOptions -> TestTree
+testDeleteDHCPOptions = req
+    "DeleteDHCPOptions"
+    "fixture/DeleteDHCPOptions.yaml"
+
+testDescribeNetworkACLs :: DescribeNetworkACLs -> TestTree
+testDescribeNetworkACLs = req
+    "DescribeNetworkACLs"
+    "fixture/DescribeNetworkACLs.yaml"
+
+testCancelImportTask :: CancelImportTask -> TestTree
+testCancelImportTask = req
+    "CancelImportTask"
+    "fixture/CancelImportTask.yaml"
+
+testDetachClassicLinkVPC :: DetachClassicLinkVPC -> TestTree
+testDetachClassicLinkVPC = req
+    "DetachClassicLinkVPC"
+    "fixture/DetachClassicLinkVPC.yaml"
+
+testDescribeRegions :: DescribeRegions -> TestTree
+testDescribeRegions = req
+    "DescribeRegions"
+    "fixture/DescribeRegions.yaml"
+
+testMonitorInstances :: MonitorInstances -> TestTree
+testMonitorInstances = req
+    "MonitorInstances"
+    "fixture/MonitorInstances.yaml"
+
+testAcceptVPCPeeringConnection :: AcceptVPCPeeringConnection -> TestTree
+testAcceptVPCPeeringConnection = req
+    "AcceptVPCPeeringConnection"
+    "fixture/AcceptVPCPeeringConnection.yaml"
+
+testImportSnapshot :: ImportSnapshot -> TestTree
+testImportSnapshot = req
+    "ImportSnapshot"
+    "fixture/ImportSnapshot.yaml"
+
+testDescribeVolumeStatus :: DescribeVolumeStatus -> TestTree
+testDescribeVolumeStatus = req
+    "DescribeVolumeStatus"
+    "fixture/DescribeVolumeStatus.yaml"
+
+testDescribeRouteTables :: DescribeRouteTables -> TestTree
+testDescribeRouteTables = req
+    "DescribeRouteTables"
+    "fixture/DescribeRouteTables.yaml"
+
+testDescribeAvailabilityZones :: DescribeAvailabilityZones -> TestTree
+testDescribeAvailabilityZones = req
+    "DescribeAvailabilityZones"
+    "fixture/DescribeAvailabilityZones.yaml"
+
+testModifyVPCAttribute :: ModifyVPCAttribute -> TestTree
+testModifyVPCAttribute = req
+    "ModifyVPCAttribute"
+    "fixture/ModifyVPCAttribute.yaml"
+
+testDescribeImages :: DescribeImages -> TestTree
+testDescribeImages = req
+    "DescribeImages"
+    "fixture/DescribeImages.yaml"
+
+testRestoreAddressToClassic :: RestoreAddressToClassic -> TestTree
+testRestoreAddressToClassic = req
+    "RestoreAddressToClassic"
+    "fixture/RestoreAddressToClassic.yaml"
+
+testCreateKeyPair :: CreateKeyPair -> TestTree
+testCreateKeyPair = req
+    "CreateKeyPair"
+    "fixture/CreateKeyPair.yaml"
+
+testDeleteVolume :: DeleteVolume -> TestTree
+testDeleteVolume = req
+    "DeleteVolume"
+    "fixture/DeleteVolume.yaml"
+
+testDescribeSpotFleetInstances :: DescribeSpotFleetInstances -> TestTree
+testDescribeSpotFleetInstances = req
+    "DescribeSpotFleetInstances"
+    "fixture/DescribeSpotFleetInstances.yaml"
+
+-- Responses
+
+testImportInstanceResponse :: ImportInstanceResponse -> TestTree
+testImportInstanceResponse = res
+    "ImportInstanceResponse"
+    "fixture/ImportInstanceResponse.proto"
+    eC2
+    (Proxy :: Proxy ImportInstance)
+
+testRevokeSecurityGroupEgressResponse :: RevokeSecurityGroupEgressResponse -> TestTree
+testRevokeSecurityGroupEgressResponse = res
+    "RevokeSecurityGroupEgressResponse"
+    "fixture/RevokeSecurityGroupEgressResponse.proto"
+    eC2
+    (Proxy :: Proxy RevokeSecurityGroupEgress)
+
+testCreateVPNGatewayResponse :: CreateVPNGatewayResponse -> TestTree
+testCreateVPNGatewayResponse = res
+    "CreateVPNGatewayResponse"
+    "fixture/CreateVPNGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPNGateway)
+
+testCreateNetworkACLResponse :: CreateNetworkACLResponse -> TestTree
+testCreateNetworkACLResponse = res
+    "CreateNetworkACLResponse"
+    "fixture/CreateNetworkACLResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateNetworkACL)
+
+testDeleteKeyPairResponse :: DeleteKeyPairResponse -> TestTree
+testDeleteKeyPairResponse = res
+    "DeleteKeyPairResponse"
+    "fixture/DeleteKeyPairResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteKeyPair)
+
+testDescribeTagsResponse :: DescribeTagsResponse -> TestTree
+testDescribeTagsResponse = res
+    "DescribeTagsResponse"
+    "fixture/DescribeTagsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeTags)
+
+testDetachNetworkInterfaceResponse :: DetachNetworkInterfaceResponse -> TestTree
+testDetachNetworkInterfaceResponse = res
+    "DetachNetworkInterfaceResponse"
+    "fixture/DetachNetworkInterfaceResponse.proto"
+    eC2
+    (Proxy :: Proxy DetachNetworkInterface)
+
+testDetachInternetGatewayResponse :: DetachInternetGatewayResponse -> TestTree
+testDetachInternetGatewayResponse = res
+    "DetachInternetGatewayResponse"
+    "fixture/DetachInternetGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DetachInternetGateway)
+
+testDeleteVPCEndpointsResponse :: DeleteVPCEndpointsResponse -> TestTree
+testDeleteVPCEndpointsResponse = res
+    "DeleteVPCEndpointsResponse"
+    "fixture/DeleteVPCEndpointsResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPCEndpoints)
+
+testDeleteFlowLogsResponse :: DeleteFlowLogsResponse -> TestTree
+testDeleteFlowLogsResponse = res
+    "DeleteFlowLogsResponse"
+    "fixture/DeleteFlowLogsResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteFlowLogs)
+
+testDescribeVPCClassicLinkResponse :: DescribeVPCClassicLinkResponse -> TestTree
+testDescribeVPCClassicLinkResponse = res
+    "DescribeVPCClassicLinkResponse"
+    "fixture/DescribeVPCClassicLinkResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCClassicLink)
+
+testModifySubnetAttributeResponse :: ModifySubnetAttributeResponse -> TestTree
+testModifySubnetAttributeResponse = res
+    "ModifySubnetAttributeResponse"
+    "fixture/ModifySubnetAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifySubnetAttribute)
+
+testDetachVolumeResponse :: VolumeAttachment -> TestTree
+testDetachVolumeResponse = res
+    "DetachVolumeResponse"
+    "fixture/DetachVolumeResponse.proto"
+    eC2
+    (Proxy :: Proxy DetachVolume)
+
+testCancelBundleTaskResponse :: CancelBundleTaskResponse -> TestTree
+testCancelBundleTaskResponse = res
+    "CancelBundleTaskResponse"
+    "fixture/CancelBundleTaskResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelBundleTask)
+
+testReleaseAddressResponse :: ReleaseAddressResponse -> TestTree
+testReleaseAddressResponse = res
+    "ReleaseAddressResponse"
+    "fixture/ReleaseAddressResponse.proto"
+    eC2
+    (Proxy :: Proxy ReleaseAddress)
+
+testCreateInternetGatewayResponse :: CreateInternetGatewayResponse -> TestTree
+testCreateInternetGatewayResponse = res
+    "CreateInternetGatewayResponse"
+    "fixture/CreateInternetGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateInternetGateway)
+
+testDeleteVPNConnectionResponse :: DeleteVPNConnectionResponse -> TestTree
+testDeleteVPNConnectionResponse = res
+    "DeleteVPNConnectionResponse"
+    "fixture/DeleteVPNConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPNConnection)
+
+testDescribeBundleTasksResponse :: DescribeBundleTasksResponse -> TestTree
+testDescribeBundleTasksResponse = res
+    "DescribeBundleTasksResponse"
+    "fixture/DescribeBundleTasksResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeBundleTasks)
+
+testAuthorizeSecurityGroupEgressResponse :: AuthorizeSecurityGroupEgressResponse -> TestTree
+testAuthorizeSecurityGroupEgressResponse = res
+    "AuthorizeSecurityGroupEgressResponse"
+    "fixture/AuthorizeSecurityGroupEgressResponse.proto"
+    eC2
+    (Proxy :: Proxy AuthorizeSecurityGroupEgress)
+
+testDeregisterImageResponse :: DeregisterImageResponse -> TestTree
+testDeregisterImageResponse = res
+    "DeregisterImageResponse"
+    "fixture/DeregisterImageResponse.proto"
+    eC2
+    (Proxy :: Proxy DeregisterImage)
+
+testModifyNetworkInterfaceAttributeResponse :: ModifyNetworkInterfaceAttributeResponse -> TestTree
+testModifyNetworkInterfaceAttributeResponse = res
+    "ModifyNetworkInterfaceAttributeResponse"
+    "fixture/ModifyNetworkInterfaceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyNetworkInterfaceAttribute)
+
+testCancelReservedInstancesListingResponse :: CancelReservedInstancesListingResponse -> TestTree
+testCancelReservedInstancesListingResponse = res
+    "CancelReservedInstancesListingResponse"
+    "fixture/CancelReservedInstancesListingResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelReservedInstancesListing)
+
+testAttachClassicLinkVPCResponse :: AttachClassicLinkVPCResponse -> TestTree
+testAttachClassicLinkVPCResponse = res
+    "AttachClassicLinkVPCResponse"
+    "fixture/AttachClassicLinkVPCResponse.proto"
+    eC2
+    (Proxy :: Proxy AttachClassicLinkVPC)
+
+testCancelSpotFleetRequestsResponse :: CancelSpotFleetRequestsResponse -> TestTree
+testCancelSpotFleetRequestsResponse = res
+    "CancelSpotFleetRequestsResponse"
+    "fixture/CancelSpotFleetRequestsResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelSpotFleetRequests)
+
+testDescribeSpotPriceHistoryResponse :: DescribeSpotPriceHistoryResponse -> TestTree
+testDescribeSpotPriceHistoryResponse = res
+    "DescribeSpotPriceHistoryResponse"
+    "fixture/DescribeSpotPriceHistoryResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotPriceHistory)
+
+testDescribeDHCPOptionsResponse :: DescribeDHCPOptionsResponse -> TestTree
+testDescribeDHCPOptionsResponse = res
+    "DescribeDHCPOptionsResponse"
+    "fixture/DescribeDHCPOptionsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeDHCPOptions)
+
+testImportImageResponse :: ImportImageResponse -> TestTree
+testImportImageResponse = res
+    "ImportImageResponse"
+    "fixture/ImportImageResponse.proto"
+    eC2
+    (Proxy :: Proxy ImportImage)
+
+testStopInstancesResponse :: StopInstancesResponse -> TestTree
+testStopInstancesResponse = res
+    "StopInstancesResponse"
+    "fixture/StopInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy StopInstances)
+
+testDescribeInternetGatewaysResponse :: DescribeInternetGatewaysResponse -> TestTree
+testDescribeInternetGatewaysResponse = res
+    "DescribeInternetGatewaysResponse"
+    "fixture/DescribeInternetGatewaysResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeInternetGateways)
+
+testDisableVPCClassicLinkResponse :: DisableVPCClassicLinkResponse -> TestTree
+testDisableVPCClassicLinkResponse = res
+    "DisableVPCClassicLinkResponse"
+    "fixture/DisableVPCClassicLinkResponse.proto"
+    eC2
+    (Proxy :: Proxy DisableVPCClassicLink)
+
+testBundleInstanceResponse :: BundleInstanceResponse -> TestTree
+testBundleInstanceResponse = res
+    "BundleInstanceResponse"
+    "fixture/BundleInstanceResponse.proto"
+    eC2
+    (Proxy :: Proxy BundleInstance)
+
+testDescribeNetworkInterfacesResponse :: DescribeNetworkInterfacesResponse -> TestTree
+testDescribeNetworkInterfacesResponse = res
+    "DescribeNetworkInterfacesResponse"
+    "fixture/DescribeNetworkInterfacesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeNetworkInterfaces)
+
+testReplaceNetworkACLAssociationResponse :: ReplaceNetworkACLAssociationResponse -> TestTree
+testReplaceNetworkACLAssociationResponse = res
+    "ReplaceNetworkACLAssociationResponse"
+    "fixture/ReplaceNetworkACLAssociationResponse.proto"
+    eC2
+    (Proxy :: Proxy ReplaceNetworkACLAssociation)
+
+testDescribeAddressesResponse :: DescribeAddressesResponse -> TestTree
+testDescribeAddressesResponse = res
+    "DescribeAddressesResponse"
+    "fixture/DescribeAddressesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeAddresses)
+
+testDescribeSnapshotAttributeResponse :: DescribeSnapshotAttributeResponse -> TestTree
+testDescribeSnapshotAttributeResponse = res
+    "DescribeSnapshotAttributeResponse"
+    "fixture/DescribeSnapshotAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSnapshotAttribute)
+
+testReplaceRouteResponse :: ReplaceRouteResponse -> TestTree
+testReplaceRouteResponse = res
+    "ReplaceRouteResponse"
+    "fixture/ReplaceRouteResponse.proto"
+    eC2
+    (Proxy :: Proxy ReplaceRoute)
+
+testDescribeVPCEndpointServicesResponse :: DescribeVPCEndpointServicesResponse -> TestTree
+testDescribeVPCEndpointServicesResponse = res
+    "DescribeVPCEndpointServicesResponse"
+    "fixture/DescribeVPCEndpointServicesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCEndpointServices)
+
+testAuthorizeSecurityGroupIngressResponse :: AuthorizeSecurityGroupIngressResponse -> TestTree
+testAuthorizeSecurityGroupIngressResponse = res
+    "AuthorizeSecurityGroupIngressResponse"
+    "fixture/AuthorizeSecurityGroupIngressResponse.proto"
+    eC2
+    (Proxy :: Proxy AuthorizeSecurityGroupIngress)
+
+testCreateVPCPeeringConnectionResponse :: CreateVPCPeeringConnectionResponse -> TestTree
+testCreateVPCPeeringConnectionResponse = res
+    "CreateVPCPeeringConnectionResponse"
+    "fixture/CreateVPCPeeringConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPCPeeringConnection)
+
+testDescribeSubnetsResponse :: DescribeSubnetsResponse -> TestTree
+testDescribeSubnetsResponse = res
+    "DescribeSubnetsResponse"
+    "fixture/DescribeSubnetsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSubnets)
+
+testCreateTagsResponse :: CreateTagsResponse -> TestTree
+testCreateTagsResponse = res
+    "CreateTagsResponse"
+    "fixture/CreateTagsResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateTags)
+
+testPurchaseReservedInstancesOfferingResponse :: PurchaseReservedInstancesOfferingResponse -> TestTree
+testPurchaseReservedInstancesOfferingResponse = res
+    "PurchaseReservedInstancesOfferingResponse"
+    "fixture/PurchaseReservedInstancesOfferingResponse.proto"
+    eC2
+    (Proxy :: Proxy PurchaseReservedInstancesOffering)
+
+testDeleteNetworkACLEntryResponse :: DeleteNetworkACLEntryResponse -> TestTree
+testDeleteNetworkACLEntryResponse = res
+    "DeleteNetworkACLEntryResponse"
+    "fixture/DeleteNetworkACLEntryResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteNetworkACLEntry)
+
+testResetSnapshotAttributeResponse :: ResetSnapshotAttributeResponse -> TestTree
+testResetSnapshotAttributeResponse = res
+    "ResetSnapshotAttributeResponse"
+    "fixture/ResetSnapshotAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ResetSnapshotAttribute)
+
+testDescribeVPNConnectionsResponse :: DescribeVPNConnectionsResponse -> TestTree
+testDescribeVPNConnectionsResponse = res
+    "DescribeVPNConnectionsResponse"
+    "fixture/DescribeVPNConnectionsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPNConnections)
+
+testDeleteRouteResponse :: DeleteRouteResponse -> TestTree
+testDeleteRouteResponse = res
+    "DeleteRouteResponse"
+    "fixture/DeleteRouteResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteRoute)
+
+testReplaceNetworkACLEntryResponse :: ReplaceNetworkACLEntryResponse -> TestTree
+testReplaceNetworkACLEntryResponse = res
+    "ReplaceNetworkACLEntryResponse"
+    "fixture/ReplaceNetworkACLEntryResponse.proto"
+    eC2
+    (Proxy :: Proxy ReplaceNetworkACLEntry)
+
+testDescribeVPCEndpointsResponse :: DescribeVPCEndpointsResponse -> TestTree
+testDescribeVPCEndpointsResponse = res
+    "DescribeVPCEndpointsResponse"
+    "fixture/DescribeVPCEndpointsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCEndpoints)
+
+testResetInstanceAttributeResponse :: ResetInstanceAttributeResponse -> TestTree
+testResetInstanceAttributeResponse = res
+    "ResetInstanceAttributeResponse"
+    "fixture/ResetInstanceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ResetInstanceAttribute)
+
+testAttachNetworkInterfaceResponse :: AttachNetworkInterfaceResponse -> TestTree
+testAttachNetworkInterfaceResponse = res
+    "AttachNetworkInterfaceResponse"
+    "fixture/AttachNetworkInterfaceResponse.proto"
+    eC2
+    (Proxy :: Proxy AttachNetworkInterface)
+
+testDescribeInstanceStatusResponse :: DescribeInstanceStatusResponse -> TestTree
+testDescribeInstanceStatusResponse = res
+    "DescribeInstanceStatusResponse"
+    "fixture/DescribeInstanceStatusResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeInstanceStatus)
+
+testImportKeyPairResponse :: ImportKeyPairResponse -> TestTree
+testImportKeyPairResponse = res
+    "ImportKeyPairResponse"
+    "fixture/ImportKeyPairResponse.proto"
+    eC2
+    (Proxy :: Proxy ImportKeyPair)
+
+testDeleteTagsResponse :: DeleteTagsResponse -> TestTree
+testDeleteTagsResponse = res
+    "DeleteTagsResponse"
+    "fixture/DeleteTagsResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteTags)
+
+testConfirmProductInstanceResponse :: ConfirmProductInstanceResponse -> TestTree
+testConfirmProductInstanceResponse = res
+    "ConfirmProductInstanceResponse"
+    "fixture/ConfirmProductInstanceResponse.proto"
+    eC2
+    (Proxy :: Proxy ConfirmProductInstance)
+
+testDescribeInstanceAttributeResponse :: DescribeInstanceAttributeResponse -> TestTree
+testDescribeInstanceAttributeResponse = res
+    "DescribeInstanceAttributeResponse"
+    "fixture/DescribeInstanceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeInstanceAttribute)
+
+testDescribeReservedInstancesOfferingsResponse :: DescribeReservedInstancesOfferingsResponse -> TestTree
+testDescribeReservedInstancesOfferingsResponse = res
+    "DescribeReservedInstancesOfferingsResponse"
+    "fixture/DescribeReservedInstancesOfferingsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeReservedInstancesOfferings)
+
+testCreateCustomerGatewayResponse :: CreateCustomerGatewayResponse -> TestTree
+testCreateCustomerGatewayResponse = res
+    "CreateCustomerGatewayResponse"
+    "fixture/CreateCustomerGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateCustomerGateway)
+
+testDeleteSecurityGroupResponse :: DeleteSecurityGroupResponse -> TestTree
+testDeleteSecurityGroupResponse = res
+    "DeleteSecurityGroupResponse"
+    "fixture/DeleteSecurityGroupResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteSecurityGroup)
+
+testDeleteVPCPeeringConnectionResponse :: DeleteVPCPeeringConnectionResponse -> TestTree
+testDeleteVPCPeeringConnectionResponse = res
+    "DeleteVPCPeeringConnectionResponse"
+    "fixture/DeleteVPCPeeringConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPCPeeringConnection)
+
+testAttachInternetGatewayResponse :: AttachInternetGatewayResponse -> TestTree
+testAttachInternetGatewayResponse = res
+    "AttachInternetGatewayResponse"
+    "fixture/AttachInternetGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy AttachInternetGateway)
+
+testDescribeFlowLogsResponse :: DescribeFlowLogsResponse -> TestTree
+testDescribeFlowLogsResponse = res
+    "DescribeFlowLogsResponse"
+    "fixture/DescribeFlowLogsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeFlowLogs)
+
+testRunInstancesResponse :: Reservation -> TestTree
+testRunInstancesResponse = res
+    "RunInstancesResponse"
+    "fixture/RunInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy RunInstances)
+
+testAssociateDHCPOptionsResponse :: AssociateDHCPOptionsResponse -> TestTree
+testAssociateDHCPOptionsResponse = res
+    "AssociateDHCPOptionsResponse"
+    "fixture/AssociateDHCPOptionsResponse.proto"
+    eC2
+    (Proxy :: Proxy AssociateDHCPOptions)
+
+testDescribeReservedInstancesResponse :: DescribeReservedInstancesResponse -> TestTree
+testDescribeReservedInstancesResponse = res
+    "DescribeReservedInstancesResponse"
+    "fixture/DescribeReservedInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeReservedInstances)
+
+testDescribeVPCsResponse :: DescribeVPCsResponse -> TestTree
+testDescribeVPCsResponse = res
+    "DescribeVPCsResponse"
+    "fixture/DescribeVPCsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCs)
+
+testDescribeConversionTasksResponse :: DescribeConversionTasksResponse -> TestTree
+testDescribeConversionTasksResponse = res
+    "DescribeConversionTasksResponse"
+    "fixture/DescribeConversionTasksResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeConversionTasks)
+
+testAllocateAddressResponse :: AllocateAddressResponse -> TestTree
+testAllocateAddressResponse = res
+    "AllocateAddressResponse"
+    "fixture/AllocateAddressResponse.proto"
+    eC2
+    (Proxy :: Proxy AllocateAddress)
+
+testCancelConversionTaskResponse :: CancelConversionTaskResponse -> TestTree
+testCancelConversionTaskResponse = res
+    "CancelConversionTaskResponse"
+    "fixture/CancelConversionTaskResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelConversionTask)
+
+testModifyImageAttributeResponse :: ModifyImageAttributeResponse -> TestTree
+testModifyImageAttributeResponse = res
+    "ModifyImageAttributeResponse"
+    "fixture/ModifyImageAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyImageAttribute)
+
+testCreateRouteTableResponse :: CreateRouteTableResponse -> TestTree
+testCreateRouteTableResponse = res
+    "CreateRouteTableResponse"
+    "fixture/CreateRouteTableResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateRouteTable)
+
+testReportInstanceStatusResponse :: ReportInstanceStatusResponse -> TestTree
+testReportInstanceStatusResponse = res
+    "ReportInstanceStatusResponse"
+    "fixture/ReportInstanceStatusResponse.proto"
+    eC2
+    (Proxy :: Proxy ReportInstanceStatus)
+
+testAttachVolumeResponse :: VolumeAttachment -> TestTree
+testAttachVolumeResponse = res
+    "AttachVolumeResponse"
+    "fixture/AttachVolumeResponse.proto"
+    eC2
+    (Proxy :: Proxy AttachVolume)
+
+testRequestSpotInstancesResponse :: RequestSpotInstancesResponse -> TestTree
+testRequestSpotInstancesResponse = res
+    "RequestSpotInstancesResponse"
+    "fixture/RequestSpotInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy RequestSpotInstances)
+
+testDescribeVolumesResponse :: DescribeVolumesResponse -> TestTree
+testDescribeVolumesResponse = res
+    "DescribeVolumesResponse"
+    "fixture/DescribeVolumesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVolumes)
+
+testRejectVPCPeeringConnectionResponse :: RejectVPCPeeringConnectionResponse -> TestTree
+testRejectVPCPeeringConnectionResponse = res
+    "RejectVPCPeeringConnectionResponse"
+    "fixture/RejectVPCPeeringConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy RejectVPCPeeringConnection)
+
+testDeleteVPNConnectionRouteResponse :: DeleteVPNConnectionRouteResponse -> TestTree
+testDeleteVPNConnectionRouteResponse = res
+    "DeleteVPNConnectionRouteResponse"
+    "fixture/DeleteVPNConnectionRouteResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPNConnectionRoute)
+
+testModifyVPCEndpointResponse :: ModifyVPCEndpointResponse -> TestTree
+testModifyVPCEndpointResponse = res
+    "ModifyVPCEndpointResponse"
+    "fixture/ModifyVPCEndpointResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyVPCEndpoint)
+
+testRegisterImageResponse :: RegisterImageResponse -> TestTree
+testRegisterImageResponse = res
+    "RegisterImageResponse"
+    "fixture/RegisterImageResponse.proto"
+    eC2
+    (Proxy :: Proxy RegisterImage)
+
+testRevokeSecurityGroupIngressResponse :: RevokeSecurityGroupIngressResponse -> TestTree
+testRevokeSecurityGroupIngressResponse = res
+    "RevokeSecurityGroupIngressResponse"
+    "fixture/RevokeSecurityGroupIngressResponse.proto"
+    eC2
+    (Proxy :: Proxy RevokeSecurityGroupIngress)
+
+testModifyReservedInstancesResponse :: ModifyReservedInstancesResponse -> TestTree
+testModifyReservedInstancesResponse = res
+    "ModifyReservedInstancesResponse"
+    "fixture/ModifyReservedInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyReservedInstances)
+
+testCreateFlowLogsResponse :: CreateFlowLogsResponse -> TestTree
+testCreateFlowLogsResponse = res
+    "CreateFlowLogsResponse"
+    "fixture/CreateFlowLogsResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateFlowLogs)
+
+testDescribeSpotFleetRequestsResponse :: DescribeSpotFleetRequestsResponse -> TestTree
+testDescribeSpotFleetRequestsResponse = res
+    "DescribeSpotFleetRequestsResponse"
+    "fixture/DescribeSpotFleetRequestsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotFleetRequests)
+
+testMoveAddressToVPCResponse :: MoveAddressToVPCResponse -> TestTree
+testMoveAddressToVPCResponse = res
+    "MoveAddressToVPCResponse"
+    "fixture/MoveAddressToVPCResponse.proto"
+    eC2
+    (Proxy :: Proxy MoveAddressToVPC)
+
+testDeleteNetworkACLResponse :: DeleteNetworkACLResponse -> TestTree
+testDeleteNetworkACLResponse = res
+    "DeleteNetworkACLResponse"
+    "fixture/DeleteNetworkACLResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteNetworkACL)
+
+testDeleteVPNGatewayResponse :: DeleteVPNGatewayResponse -> TestTree
+testDeleteVPNGatewayResponse = res
+    "DeleteVPNGatewayResponse"
+    "fixture/DeleteVPNGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPNGateway)
+
+testDescribeImportImageTasksResponse :: DescribeImportImageTasksResponse -> TestTree
+testDescribeImportImageTasksResponse = res
+    "DescribeImportImageTasksResponse"
+    "fixture/DescribeImportImageTasksResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeImportImageTasks)
+
+testDescribeVolumeAttributeResponse :: DescribeVolumeAttributeResponse -> TestTree
+testDescribeVolumeAttributeResponse = res
+    "DescribeVolumeAttributeResponse"
+    "fixture/DescribeVolumeAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVolumeAttribute)
+
+testDescribeMovingAddressesResponse :: DescribeMovingAddressesResponse -> TestTree
+testDescribeMovingAddressesResponse = res
+    "DescribeMovingAddressesResponse"
+    "fixture/DescribeMovingAddressesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeMovingAddresses)
+
+testGetPasswordDataResponse :: GetPasswordDataResponse -> TestTree
+testGetPasswordDataResponse = res
+    "GetPasswordDataResponse"
+    "fixture/GetPasswordDataResponse.proto"
+    eC2
+    (Proxy :: Proxy GetPasswordData)
+
+testCreateVPCResponse :: CreateVPCResponse -> TestTree
+testCreateVPCResponse = res
+    "CreateVPCResponse"
+    "fixture/CreateVPCResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPC)
+
+testCopySnapshotResponse :: CopySnapshotResponse -> TestTree
+testCopySnapshotResponse = res
+    "CopySnapshotResponse"
+    "fixture/CopySnapshotResponse.proto"
+    eC2
+    (Proxy :: Proxy CopySnapshot)
+
+testDisassociateAddressResponse :: DisassociateAddressResponse -> TestTree
+testDisassociateAddressResponse = res
+    "DisassociateAddressResponse"
+    "fixture/DisassociateAddressResponse.proto"
+    eC2
+    (Proxy :: Proxy DisassociateAddress)
+
+testDeleteVPCResponse :: DeleteVPCResponse -> TestTree
+testDeleteVPCResponse = res
+    "DeleteVPCResponse"
+    "fixture/DeleteVPCResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVPC)
+
+testCreateInstanceExportTaskResponse :: CreateInstanceExportTaskResponse -> TestTree
+testCreateInstanceExportTaskResponse = res
+    "CreateInstanceExportTaskResponse"
+    "fixture/CreateInstanceExportTaskResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateInstanceExportTask)
+
+testDescribeVPCAttributeResponse :: DescribeVPCAttributeResponse -> TestTree
+testDescribeVPCAttributeResponse = res
+    "DescribeVPCAttributeResponse"
+    "fixture/DescribeVPCAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCAttribute)
+
+testCreateVolumeResponse :: Volume -> TestTree
+testCreateVolumeResponse = res
+    "CreateVolumeResponse"
+    "fixture/CreateVolumeResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVolume)
+
+testModifyVolumeAttributeResponse :: ModifyVolumeAttributeResponse -> TestTree
+testModifyVolumeAttributeResponse = res
+    "ModifyVolumeAttributeResponse"
+    "fixture/ModifyVolumeAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyVolumeAttribute)
+
+testDescribeSpotDatafeedSubscriptionResponse :: DescribeSpotDatafeedSubscriptionResponse -> TestTree
+testDescribeSpotDatafeedSubscriptionResponse = res
+    "DescribeSpotDatafeedSubscriptionResponse"
+    "fixture/DescribeSpotDatafeedSubscriptionResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotDatafeedSubscription)
+
+testDescribePrefixListsResponse :: DescribePrefixListsResponse -> TestTree
+testDescribePrefixListsResponse = res
+    "DescribePrefixListsResponse"
+    "fixture/DescribePrefixListsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribePrefixLists)
+
+testDeletePlacementGroupResponse :: DeletePlacementGroupResponse -> TestTree
+testDeletePlacementGroupResponse = res
+    "DeletePlacementGroupResponse"
+    "fixture/DeletePlacementGroupResponse.proto"
+    eC2
+    (Proxy :: Proxy DeletePlacementGroup)
+
+testRequestSpotFleetResponse :: RequestSpotFleetResponse -> TestTree
+testRequestSpotFleetResponse = res
+    "RequestSpotFleetResponse"
+    "fixture/RequestSpotFleetResponse.proto"
+    eC2
+    (Proxy :: Proxy RequestSpotFleet)
+
+testCreateSubnetResponse :: CreateSubnetResponse -> TestTree
+testCreateSubnetResponse = res
+    "CreateSubnetResponse"
+    "fixture/CreateSubnetResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateSubnet)
+
+testCreateNetworkInterfaceResponse :: CreateNetworkInterfaceResponse -> TestTree
+testCreateNetworkInterfaceResponse = res
+    "CreateNetworkInterfaceResponse"
+    "fixture/CreateNetworkInterfaceResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateNetworkInterface)
+
+testDescribeSecurityGroupsResponse :: DescribeSecurityGroupsResponse -> TestTree
+testDescribeSecurityGroupsResponse = res
+    "DescribeSecurityGroupsResponse"
+    "fixture/DescribeSecurityGroupsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSecurityGroups)
+
+testDescribeExportTasksResponse :: DescribeExportTasksResponse -> TestTree
+testDescribeExportTasksResponse = res
+    "DescribeExportTasksResponse"
+    "fixture/DescribeExportTasksResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeExportTasks)
+
+testDetachVPNGatewayResponse :: DetachVPNGatewayResponse -> TestTree
+testDetachVPNGatewayResponse = res
+    "DetachVPNGatewayResponse"
+    "fixture/DetachVPNGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DetachVPNGateway)
+
+testEnableVolumeIOResponse :: EnableVolumeIOResponse -> TestTree
+testEnableVolumeIOResponse = res
+    "EnableVolumeIOResponse"
+    "fixture/EnableVolumeIOResponse.proto"
+    eC2
+    (Proxy :: Proxy EnableVolumeIO)
+
+testDescribeInstancesResponse :: DescribeInstancesResponse -> TestTree
+testDescribeInstancesResponse = res
+    "DescribeInstancesResponse"
+    "fixture/DescribeInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeInstances)
+
+testDescribeVPCPeeringConnectionsResponse :: DescribeVPCPeeringConnectionsResponse -> TestTree
+testDescribeVPCPeeringConnectionsResponse = res
+    "DescribeVPCPeeringConnectionsResponse"
+    "fixture/DescribeVPCPeeringConnectionsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPCPeeringConnections)
+
+testCancelExportTaskResponse :: CancelExportTaskResponse -> TestTree
+testCancelExportTaskResponse = res
+    "CancelExportTaskResponse"
+    "fixture/CancelExportTaskResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelExportTask)
+
+testDeleteNetworkInterfaceResponse :: DeleteNetworkInterfaceResponse -> TestTree
+testDeleteNetworkInterfaceResponse = res
+    "DeleteNetworkInterfaceResponse"
+    "fixture/DeleteNetworkInterfaceResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteNetworkInterface)
+
+testReplaceRouteTableAssociationResponse :: ReplaceRouteTableAssociationResponse -> TestTree
+testReplaceRouteTableAssociationResponse = res
+    "ReplaceRouteTableAssociationResponse"
+    "fixture/ReplaceRouteTableAssociationResponse.proto"
+    eC2
+    (Proxy :: Proxy ReplaceRouteTableAssociation)
+
+testStartInstancesResponse :: StartInstancesResponse -> TestTree
+testStartInstancesResponse = res
+    "StartInstancesResponse"
+    "fixture/StartInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy StartInstances)
+
+testCreatePlacementGroupResponse :: CreatePlacementGroupResponse -> TestTree
+testCreatePlacementGroupResponse = res
+    "CreatePlacementGroupResponse"
+    "fixture/CreatePlacementGroupResponse.proto"
+    eC2
+    (Proxy :: Proxy CreatePlacementGroup)
+
+testDescribeSnapshotsResponse :: DescribeSnapshotsResponse -> TestTree
+testDescribeSnapshotsResponse = res
+    "DescribeSnapshotsResponse"
+    "fixture/DescribeSnapshotsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSnapshots)
+
+testAssociateAddressResponse :: AssociateAddressResponse -> TestTree
+testAssociateAddressResponse = res
+    "AssociateAddressResponse"
+    "fixture/AssociateAddressResponse.proto"
+    eC2
+    (Proxy :: Proxy AssociateAddress)
+
+testDescribeNetworkInterfaceAttributeResponse :: DescribeNetworkInterfaceAttributeResponse -> TestTree
+testDescribeNetworkInterfaceAttributeResponse = res
+    "DescribeNetworkInterfaceAttributeResponse"
+    "fixture/DescribeNetworkInterfaceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeNetworkInterfaceAttribute)
+
+testResetNetworkInterfaceAttributeResponse :: ResetNetworkInterfaceAttributeResponse -> TestTree
+testResetNetworkInterfaceAttributeResponse = res
+    "ResetNetworkInterfaceAttributeResponse"
+    "fixture/ResetNetworkInterfaceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ResetNetworkInterfaceAttribute)
+
+testDeleteInternetGatewayResponse :: DeleteInternetGatewayResponse -> TestTree
+testDeleteInternetGatewayResponse = res
+    "DeleteInternetGatewayResponse"
+    "fixture/DeleteInternetGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteInternetGateway)
+
+testDescribeReservedInstancesListingsResponse :: DescribeReservedInstancesListingsResponse -> TestTree
+testDescribeReservedInstancesListingsResponse = res
+    "DescribeReservedInstancesListingsResponse"
+    "fixture/DescribeReservedInstancesListingsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeReservedInstancesListings)
+
+testCreateVPNConnectionResponse :: CreateVPNConnectionResponse -> TestTree
+testCreateVPNConnectionResponse = res
+    "CreateVPNConnectionResponse"
+    "fixture/CreateVPNConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPNConnection)
+
+testDescribeImportSnapshotTasksResponse :: DescribeImportSnapshotTasksResponse -> TestTree
+testDescribeImportSnapshotTasksResponse = res
+    "DescribeImportSnapshotTasksResponse"
+    "fixture/DescribeImportSnapshotTasksResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeImportSnapshotTasks)
+
+testDescribeCustomerGatewaysResponse :: DescribeCustomerGatewaysResponse -> TestTree
+testDescribeCustomerGatewaysResponse = res
+    "DescribeCustomerGatewaysResponse"
+    "fixture/DescribeCustomerGatewaysResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeCustomerGateways)
+
+testDeleteSubnetResponse :: DeleteSubnetResponse -> TestTree
+testDeleteSubnetResponse = res
+    "DeleteSubnetResponse"
+    "fixture/DeleteSubnetResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteSubnet)
+
+testCopyImageResponse :: CopyImageResponse -> TestTree
+testCopyImageResponse = res
+    "CopyImageResponse"
+    "fixture/CopyImageResponse.proto"
+    eC2
+    (Proxy :: Proxy CopyImage)
+
+testCreateVPCEndpointResponse :: CreateVPCEndpointResponse -> TestTree
+testCreateVPCEndpointResponse = res
+    "CreateVPCEndpointResponse"
+    "fixture/CreateVPCEndpointResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPCEndpoint)
+
+testUnmonitorInstancesResponse :: UnmonitorInstancesResponse -> TestTree
+testUnmonitorInstancesResponse = res
+    "UnmonitorInstancesResponse"
+    "fixture/UnmonitorInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy UnmonitorInstances)
+
+testCreateSecurityGroupResponse :: CreateSecurityGroupResponse -> TestTree
+testCreateSecurityGroupResponse = res
+    "CreateSecurityGroupResponse"
+    "fixture/CreateSecurityGroupResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateSecurityGroup)
+
+testImportVolumeResponse :: ImportVolumeResponse -> TestTree
+testImportVolumeResponse = res
+    "ImportVolumeResponse"
+    "fixture/ImportVolumeResponse.proto"
+    eC2
+    (Proxy :: Proxy ImportVolume)
+
+testDisableVGWRoutePropagationResponse :: DisableVGWRoutePropagationResponse -> TestTree
+testDisableVGWRoutePropagationResponse = res
+    "DisableVGWRoutePropagationResponse"
+    "fixture/DisableVGWRoutePropagationResponse.proto"
+    eC2
+    (Proxy :: Proxy DisableVGWRoutePropagation)
+
+testCreateSpotDatafeedSubscriptionResponse :: CreateSpotDatafeedSubscriptionResponse -> TestTree
+testCreateSpotDatafeedSubscriptionResponse = res
+    "CreateSpotDatafeedSubscriptionResponse"
+    "fixture/CreateSpotDatafeedSubscriptionResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateSpotDatafeedSubscription)
+
+testCancelSpotInstanceRequestsResponse :: CancelSpotInstanceRequestsResponse -> TestTree
+testCancelSpotInstanceRequestsResponse = res
+    "CancelSpotInstanceRequestsResponse"
+    "fixture/CancelSpotInstanceRequestsResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelSpotInstanceRequests)
+
+testCreateRouteResponse :: CreateRouteResponse -> TestTree
+testCreateRouteResponse = res
+    "CreateRouteResponse"
+    "fixture/CreateRouteResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateRoute)
+
+testDeleteSnapshotResponse :: DeleteSnapshotResponse -> TestTree
+testDeleteSnapshotResponse = res
+    "DeleteSnapshotResponse"
+    "fixture/DeleteSnapshotResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteSnapshot)
+
+testAssignPrivateIPAddressesResponse :: AssignPrivateIPAddressesResponse -> TestTree
+testAssignPrivateIPAddressesResponse = res
+    "AssignPrivateIPAddressesResponse"
+    "fixture/AssignPrivateIPAddressesResponse.proto"
+    eC2
+    (Proxy :: Proxy AssignPrivateIPAddresses)
+
+testModifyInstanceAttributeResponse :: ModifyInstanceAttributeResponse -> TestTree
+testModifyInstanceAttributeResponse = res
+    "ModifyInstanceAttributeResponse"
+    "fixture/ModifyInstanceAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyInstanceAttribute)
+
+testDeleteCustomerGatewayResponse :: DeleteCustomerGatewayResponse -> TestTree
+testDeleteCustomerGatewayResponse = res
+    "DeleteCustomerGatewayResponse"
+    "fixture/DeleteCustomerGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteCustomerGateway)
+
+testDisassociateRouteTableResponse :: DisassociateRouteTableResponse -> TestTree
+testDisassociateRouteTableResponse = res
+    "DisassociateRouteTableResponse"
+    "fixture/DisassociateRouteTableResponse.proto"
+    eC2
+    (Proxy :: Proxy DisassociateRouteTable)
+
+testDeleteSpotDatafeedSubscriptionResponse :: DeleteSpotDatafeedSubscriptionResponse -> TestTree
+testDeleteSpotDatafeedSubscriptionResponse = res
+    "DeleteSpotDatafeedSubscriptionResponse"
+    "fixture/DeleteSpotDatafeedSubscriptionResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteSpotDatafeedSubscription)
+
+testEnableVPCClassicLinkResponse :: EnableVPCClassicLinkResponse -> TestTree
+testEnableVPCClassicLinkResponse = res
+    "EnableVPCClassicLinkResponse"
+    "fixture/EnableVPCClassicLinkResponse.proto"
+    eC2
+    (Proxy :: Proxy EnableVPCClassicLink)
+
+testDescribePlacementGroupsResponse :: DescribePlacementGroupsResponse -> TestTree
+testDescribePlacementGroupsResponse = res
+    "DescribePlacementGroupsResponse"
+    "fixture/DescribePlacementGroupsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribePlacementGroups)
+
+testEnableVGWRoutePropagationResponse :: EnableVGWRoutePropagationResponse -> TestTree
+testEnableVGWRoutePropagationResponse = res
+    "EnableVGWRoutePropagationResponse"
+    "fixture/EnableVGWRoutePropagationResponse.proto"
+    eC2
+    (Proxy :: Proxy EnableVGWRoutePropagation)
+
+testDescribeSpotFleetRequestHistoryResponse :: DescribeSpotFleetRequestHistoryResponse -> TestTree
+testDescribeSpotFleetRequestHistoryResponse = res
+    "DescribeSpotFleetRequestHistoryResponse"
+    "fixture/DescribeSpotFleetRequestHistoryResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotFleetRequestHistory)
+
+testModifySnapshotAttributeResponse :: ModifySnapshotAttributeResponse -> TestTree
+testModifySnapshotAttributeResponse = res
+    "ModifySnapshotAttributeResponse"
+    "fixture/ModifySnapshotAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifySnapshotAttribute)
+
+testCreateSnapshotResponse :: Snapshot -> TestTree
+testCreateSnapshotResponse = res
+    "CreateSnapshotResponse"
+    "fixture/CreateSnapshotResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateSnapshot)
+
+testCreateNetworkACLEntryResponse :: CreateNetworkACLEntryResponse -> TestTree
+testCreateNetworkACLEntryResponse = res
+    "CreateNetworkACLEntryResponse"
+    "fixture/CreateNetworkACLEntryResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateNetworkACLEntry)
+
+testCreateReservedInstancesListingResponse :: CreateReservedInstancesListingResponse -> TestTree
+testCreateReservedInstancesListingResponse = res
+    "CreateReservedInstancesListingResponse"
+    "fixture/CreateReservedInstancesListingResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateReservedInstancesListing)
+
+testAttachVPNGatewayResponse :: AttachVPNGatewayResponse -> TestTree
+testAttachVPNGatewayResponse = res
+    "AttachVPNGatewayResponse"
+    "fixture/AttachVPNGatewayResponse.proto"
+    eC2
+    (Proxy :: Proxy AttachVPNGateway)
+
+testCreateDHCPOptionsResponse :: CreateDHCPOptionsResponse -> TestTree
+testCreateDHCPOptionsResponse = res
+    "CreateDHCPOptionsResponse"
+    "fixture/CreateDHCPOptionsResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateDHCPOptions)
+
+testDescribeAccountAttributesResponse :: DescribeAccountAttributesResponse -> TestTree
+testDescribeAccountAttributesResponse = res
+    "DescribeAccountAttributesResponse"
+    "fixture/DescribeAccountAttributesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeAccountAttributes)
+
+testRebootInstancesResponse :: RebootInstancesResponse -> TestTree
+testRebootInstancesResponse = res
+    "RebootInstancesResponse"
+    "fixture/RebootInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy RebootInstances)
+
+testCreateImageResponse :: CreateImageResponse -> TestTree
+testCreateImageResponse = res
+    "CreateImageResponse"
+    "fixture/CreateImageResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateImage)
+
+testDescribeClassicLinkInstancesResponse :: DescribeClassicLinkInstancesResponse -> TestTree
+testDescribeClassicLinkInstancesResponse = res
+    "DescribeClassicLinkInstancesResponse"
+    "fixture/DescribeClassicLinkInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeClassicLinkInstances)
+
+testTerminateInstancesResponse :: TerminateInstancesResponse -> TestTree
+testTerminateInstancesResponse = res
+    "TerminateInstancesResponse"
+    "fixture/TerminateInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy TerminateInstances)
+
+testDescribeKeyPairsResponse :: DescribeKeyPairsResponse -> TestTree
+testDescribeKeyPairsResponse = res
+    "DescribeKeyPairsResponse"
+    "fixture/DescribeKeyPairsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeKeyPairs)
+
+testCreateVPNConnectionRouteResponse :: CreateVPNConnectionRouteResponse -> TestTree
+testCreateVPNConnectionRouteResponse = res
+    "CreateVPNConnectionRouteResponse"
+    "fixture/CreateVPNConnectionRouteResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateVPNConnectionRoute)
+
+testAssociateRouteTableResponse :: AssociateRouteTableResponse -> TestTree
+testAssociateRouteTableResponse = res
+    "AssociateRouteTableResponse"
+    "fixture/AssociateRouteTableResponse.proto"
+    eC2
+    (Proxy :: Proxy AssociateRouteTable)
+
+testDescribeVPNGatewaysResponse :: DescribeVPNGatewaysResponse -> TestTree
+testDescribeVPNGatewaysResponse = res
+    "DescribeVPNGatewaysResponse"
+    "fixture/DescribeVPNGatewaysResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVPNGateways)
+
+testGetConsoleOutputResponse :: GetConsoleOutputResponse -> TestTree
+testGetConsoleOutputResponse = res
+    "GetConsoleOutputResponse"
+    "fixture/GetConsoleOutputResponse.proto"
+    eC2
+    (Proxy :: Proxy GetConsoleOutput)
+
+testDescribeImageAttributeResponse :: DescribeImageAttributeResponse -> TestTree
+testDescribeImageAttributeResponse = res
+    "DescribeImageAttributeResponse"
+    "fixture/DescribeImageAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeImageAttribute)
+
+testDeleteRouteTableResponse :: DeleteRouteTableResponse -> TestTree
+testDeleteRouteTableResponse = res
+    "DeleteRouteTableResponse"
+    "fixture/DeleteRouteTableResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteRouteTable)
+
+testResetImageAttributeResponse :: ResetImageAttributeResponse -> TestTree
+testResetImageAttributeResponse = res
+    "ResetImageAttributeResponse"
+    "fixture/ResetImageAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ResetImageAttribute)
+
+testDescribeReservedInstancesModificationsResponse :: DescribeReservedInstancesModificationsResponse -> TestTree
+testDescribeReservedInstancesModificationsResponse = res
+    "DescribeReservedInstancesModificationsResponse"
+    "fixture/DescribeReservedInstancesModificationsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeReservedInstancesModifications)
+
+testDescribeSpotInstanceRequestsResponse :: DescribeSpotInstanceRequestsResponse -> TestTree
+testDescribeSpotInstanceRequestsResponse = res
+    "DescribeSpotInstanceRequestsResponse"
+    "fixture/DescribeSpotInstanceRequestsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotInstanceRequests)
+
+testUnassignPrivateIPAddressesResponse :: UnassignPrivateIPAddressesResponse -> TestTree
+testUnassignPrivateIPAddressesResponse = res
+    "UnassignPrivateIPAddressesResponse"
+    "fixture/UnassignPrivateIPAddressesResponse.proto"
+    eC2
+    (Proxy :: Proxy UnassignPrivateIPAddresses)
+
+testDeleteDHCPOptionsResponse :: DeleteDHCPOptionsResponse -> TestTree
+testDeleteDHCPOptionsResponse = res
+    "DeleteDHCPOptionsResponse"
+    "fixture/DeleteDHCPOptionsResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteDHCPOptions)
+
+testDescribeNetworkACLsResponse :: DescribeNetworkACLsResponse -> TestTree
+testDescribeNetworkACLsResponse = res
+    "DescribeNetworkACLsResponse"
+    "fixture/DescribeNetworkACLsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeNetworkACLs)
+
+testCancelImportTaskResponse :: CancelImportTaskResponse -> TestTree
+testCancelImportTaskResponse = res
+    "CancelImportTaskResponse"
+    "fixture/CancelImportTaskResponse.proto"
+    eC2
+    (Proxy :: Proxy CancelImportTask)
+
+testDetachClassicLinkVPCResponse :: DetachClassicLinkVPCResponse -> TestTree
+testDetachClassicLinkVPCResponse = res
+    "DetachClassicLinkVPCResponse"
+    "fixture/DetachClassicLinkVPCResponse.proto"
+    eC2
+    (Proxy :: Proxy DetachClassicLinkVPC)
+
+testDescribeRegionsResponse :: DescribeRegionsResponse -> TestTree
+testDescribeRegionsResponse = res
+    "DescribeRegionsResponse"
+    "fixture/DescribeRegionsResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeRegions)
+
+testMonitorInstancesResponse :: MonitorInstancesResponse -> TestTree
+testMonitorInstancesResponse = res
+    "MonitorInstancesResponse"
+    "fixture/MonitorInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy MonitorInstances)
+
+testAcceptVPCPeeringConnectionResponse :: AcceptVPCPeeringConnectionResponse -> TestTree
+testAcceptVPCPeeringConnectionResponse = res
+    "AcceptVPCPeeringConnectionResponse"
+    "fixture/AcceptVPCPeeringConnectionResponse.proto"
+    eC2
+    (Proxy :: Proxy AcceptVPCPeeringConnection)
+
+testImportSnapshotResponse :: ImportSnapshotResponse -> TestTree
+testImportSnapshotResponse = res
+    "ImportSnapshotResponse"
+    "fixture/ImportSnapshotResponse.proto"
+    eC2
+    (Proxy :: Proxy ImportSnapshot)
+
+testDescribeVolumeStatusResponse :: DescribeVolumeStatusResponse -> TestTree
+testDescribeVolumeStatusResponse = res
+    "DescribeVolumeStatusResponse"
+    "fixture/DescribeVolumeStatusResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeVolumeStatus)
+
+testDescribeRouteTablesResponse :: DescribeRouteTablesResponse -> TestTree
+testDescribeRouteTablesResponse = res
+    "DescribeRouteTablesResponse"
+    "fixture/DescribeRouteTablesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeRouteTables)
+
+testDescribeAvailabilityZonesResponse :: DescribeAvailabilityZonesResponse -> TestTree
+testDescribeAvailabilityZonesResponse = res
+    "DescribeAvailabilityZonesResponse"
+    "fixture/DescribeAvailabilityZonesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeAvailabilityZones)
+
+testModifyVPCAttributeResponse :: ModifyVPCAttributeResponse -> TestTree
+testModifyVPCAttributeResponse = res
+    "ModifyVPCAttributeResponse"
+    "fixture/ModifyVPCAttributeResponse.proto"
+    eC2
+    (Proxy :: Proxy ModifyVPCAttribute)
+
+testDescribeImagesResponse :: DescribeImagesResponse -> TestTree
+testDescribeImagesResponse = res
+    "DescribeImagesResponse"
+    "fixture/DescribeImagesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeImages)
+
+testRestoreAddressToClassicResponse :: RestoreAddressToClassicResponse -> TestTree
+testRestoreAddressToClassicResponse = res
+    "RestoreAddressToClassicResponse"
+    "fixture/RestoreAddressToClassicResponse.proto"
+    eC2
+    (Proxy :: Proxy RestoreAddressToClassic)
+
+testCreateKeyPairResponse :: CreateKeyPairResponse -> TestTree
+testCreateKeyPairResponse = res
+    "CreateKeyPairResponse"
+    "fixture/CreateKeyPairResponse.proto"
+    eC2
+    (Proxy :: Proxy CreateKeyPair)
+
+testDeleteVolumeResponse :: DeleteVolumeResponse -> TestTree
+testDeleteVolumeResponse = res
+    "DeleteVolumeResponse"
+    "fixture/DeleteVolumeResponse.proto"
+    eC2
+    (Proxy :: Proxy DeleteVolume)
+
+testDescribeSpotFleetInstancesResponse :: DescribeSpotFleetInstancesResponse -> TestTree
+testDescribeSpotFleetInstancesResponse = res
+    "DescribeSpotFleetInstancesResponse"
+    "fixture/DescribeSpotFleetInstancesResponse.proto"
+    eC2
+    (Proxy :: Proxy DescribeSpotFleetInstances)
