diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-autoscaling.cabal b/amazonka-autoscaling.cabal
--- a/amazonka-autoscaling.cabal
+++ b/amazonka-autoscaling.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-autoscaling
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon Auto Scaling SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,14 +29,19 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-autoscaling
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.AutoScaling
@@ -100,7 +105,7 @@
         , Network.AWS.AutoScaling.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-autoscaling-test
@@ -120,9 +125,9 @@
         , Test.AWS.AutoScaling.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-autoscaling == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-autoscaling
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/AutoScaling.hs b/gen/Network/AWS/AutoScaling.hs
--- a/gen/Network/AWS/AutoScaling.hs
+++ b/gen/Network/AWS/AutoScaling.hs
@@ -5,9 +5,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -208,6 +208,12 @@
     -- ** LifecycleState
     , LifecycleState (..)
 
+    -- ** MetricStatistic
+    , MetricStatistic (..)
+
+    -- ** MetricType
+    , MetricType (..)
+
     -- ** ScalingActivityStatusCode
     , ScalingActivityStatusCode (..)
 
@@ -281,6 +287,15 @@
     , bdmEBS
     , bdmDeviceName
 
+    -- ** CustomizedMetricSpecification
+    , CustomizedMetricSpecification
+    , customizedMetricSpecification
+    , cmsDimensions
+    , cmsUnit
+    , cmsMetricName
+    , cmsNamespace
+    , cmsStatistic
+
     -- ** EBS
     , EBS
     , ebs
@@ -354,6 +369,17 @@
     , lhLifecycleTransition
     , lhRoleARN
 
+    -- ** LifecycleHookSpecification
+    , LifecycleHookSpecification
+    , lifecycleHookSpecification
+    , lhsDefaultResult
+    , lhsHeartbeatTimeout
+    , lhsNotificationMetadata
+    , lhsNotificationTargetARN
+    , lhsLifecycleTransition
+    , lhsRoleARN
+    , lhsLifecycleHookName
+
     -- ** LoadBalancerState
     , LoadBalancerState
     , loadBalancerState
@@ -371,6 +397,12 @@
     , metricCollectionType
     , mctMetric
 
+    -- ** MetricDimension
+    , MetricDimension
+    , metricDimension
+    , mdName
+    , mdValue
+
     -- ** MetricGranularityType
     , MetricGranularityType
     , metricGranularityType
@@ -383,6 +415,12 @@
     , ncAutoScalingGroupName
     , ncNotificationType
 
+    -- ** PredefinedMetricSpecification
+    , PredefinedMetricSpecification
+    , predefinedMetricSpecification
+    , pmsResourceLabel
+    , pmsPredefinedMetricType
+
     -- ** ProcessType
     , ProcessType
     , processType
@@ -396,6 +434,7 @@
     , sPolicyName
     , sPolicyType
     , sStepAdjustments
+    , sTargetTrackingConfiguration
     , sAdjustmentType
     , sAutoScalingGroupName
     , sScalingAdjustment
@@ -455,62 +494,70 @@
     , tdKey
     , tdPropagateAtLaunch
     , tdValue
+
+    -- ** TargetTrackingConfiguration
+    , TargetTrackingConfiguration
+    , targetTrackingConfiguration
+    , ttcPredefinedMetricSpecification
+    , ttcCustomizedMetricSpecification
+    , ttcDisableScaleIn
+    , ttcTargetValue
     ) where
 
-import           Network.AWS.AutoScaling.AttachInstances
-import           Network.AWS.AutoScaling.AttachLoadBalancers
-import           Network.AWS.AutoScaling.AttachLoadBalancerTargetGroups
-import           Network.AWS.AutoScaling.CompleteLifecycleAction
-import           Network.AWS.AutoScaling.CreateAutoScalingGroup
-import           Network.AWS.AutoScaling.CreateLaunchConfiguration
-import           Network.AWS.AutoScaling.CreateOrUpdateTags
-import           Network.AWS.AutoScaling.DeleteAutoScalingGroup
-import           Network.AWS.AutoScaling.DeleteLaunchConfiguration
-import           Network.AWS.AutoScaling.DeleteLifecycleHook
-import           Network.AWS.AutoScaling.DeleteNotificationConfiguration
-import           Network.AWS.AutoScaling.DeletePolicy
-import           Network.AWS.AutoScaling.DeleteScheduledAction
-import           Network.AWS.AutoScaling.DeleteTags
-import           Network.AWS.AutoScaling.DescribeAccountLimits
-import           Network.AWS.AutoScaling.DescribeAdjustmentTypes
-import           Network.AWS.AutoScaling.DescribeAutoScalingGroups
-import           Network.AWS.AutoScaling.DescribeAutoScalingInstances
-import           Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
-import           Network.AWS.AutoScaling.DescribeLaunchConfigurations
-import           Network.AWS.AutoScaling.DescribeLifecycleHooks
-import           Network.AWS.AutoScaling.DescribeLifecycleHookTypes
-import           Network.AWS.AutoScaling.DescribeLoadBalancers
-import           Network.AWS.AutoScaling.DescribeLoadBalancerTargetGroups
-import           Network.AWS.AutoScaling.DescribeMetricCollectionTypes
-import           Network.AWS.AutoScaling.DescribeNotificationConfigurations
-import           Network.AWS.AutoScaling.DescribePolicies
-import           Network.AWS.AutoScaling.DescribeScalingActivities
-import           Network.AWS.AutoScaling.DescribeScalingProcessTypes
-import           Network.AWS.AutoScaling.DescribeScheduledActions
-import           Network.AWS.AutoScaling.DescribeTags
-import           Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
-import           Network.AWS.AutoScaling.DetachInstances
-import           Network.AWS.AutoScaling.DetachLoadBalancers
-import           Network.AWS.AutoScaling.DetachLoadBalancerTargetGroups
-import           Network.AWS.AutoScaling.DisableMetricsCollection
-import           Network.AWS.AutoScaling.EnableMetricsCollection
-import           Network.AWS.AutoScaling.EnterStandby
-import           Network.AWS.AutoScaling.ExecutePolicy
-import           Network.AWS.AutoScaling.ExitStandby
-import           Network.AWS.AutoScaling.PutLifecycleHook
-import           Network.AWS.AutoScaling.PutNotificationConfiguration
-import           Network.AWS.AutoScaling.PutScalingPolicy
-import           Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
-import           Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
-import           Network.AWS.AutoScaling.ResumeProcesses
-import           Network.AWS.AutoScaling.SetDesiredCapacity
-import           Network.AWS.AutoScaling.SetInstanceHealth
-import           Network.AWS.AutoScaling.SetInstanceProtection
-import           Network.AWS.AutoScaling.SuspendProcesses
-import           Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.UpdateAutoScalingGroup
-import           Network.AWS.AutoScaling.Waiters
+import Network.AWS.AutoScaling.AttachInstances
+import Network.AWS.AutoScaling.AttachLoadBalancers
+import Network.AWS.AutoScaling.AttachLoadBalancerTargetGroups
+import Network.AWS.AutoScaling.CompleteLifecycleAction
+import Network.AWS.AutoScaling.CreateAutoScalingGroup
+import Network.AWS.AutoScaling.CreateLaunchConfiguration
+import Network.AWS.AutoScaling.CreateOrUpdateTags
+import Network.AWS.AutoScaling.DeleteAutoScalingGroup
+import Network.AWS.AutoScaling.DeleteLaunchConfiguration
+import Network.AWS.AutoScaling.DeleteLifecycleHook
+import Network.AWS.AutoScaling.DeleteNotificationConfiguration
+import Network.AWS.AutoScaling.DeletePolicy
+import Network.AWS.AutoScaling.DeleteScheduledAction
+import Network.AWS.AutoScaling.DeleteTags
+import Network.AWS.AutoScaling.DescribeAccountLimits
+import Network.AWS.AutoScaling.DescribeAdjustmentTypes
+import Network.AWS.AutoScaling.DescribeAutoScalingGroups
+import Network.AWS.AutoScaling.DescribeAutoScalingInstances
+import Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
+import Network.AWS.AutoScaling.DescribeLaunchConfigurations
+import Network.AWS.AutoScaling.DescribeLifecycleHooks
+import Network.AWS.AutoScaling.DescribeLifecycleHookTypes
+import Network.AWS.AutoScaling.DescribeLoadBalancers
+import Network.AWS.AutoScaling.DescribeLoadBalancerTargetGroups
+import Network.AWS.AutoScaling.DescribeMetricCollectionTypes
+import Network.AWS.AutoScaling.DescribeNotificationConfigurations
+import Network.AWS.AutoScaling.DescribePolicies
+import Network.AWS.AutoScaling.DescribeScalingActivities
+import Network.AWS.AutoScaling.DescribeScalingProcessTypes
+import Network.AWS.AutoScaling.DescribeScheduledActions
+import Network.AWS.AutoScaling.DescribeTags
+import Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
+import Network.AWS.AutoScaling.DetachInstances
+import Network.AWS.AutoScaling.DetachLoadBalancers
+import Network.AWS.AutoScaling.DetachLoadBalancerTargetGroups
+import Network.AWS.AutoScaling.DisableMetricsCollection
+import Network.AWS.AutoScaling.EnableMetricsCollection
+import Network.AWS.AutoScaling.EnterStandby
+import Network.AWS.AutoScaling.ExecutePolicy
+import Network.AWS.AutoScaling.ExitStandby
+import Network.AWS.AutoScaling.PutLifecycleHook
+import Network.AWS.AutoScaling.PutNotificationConfiguration
+import Network.AWS.AutoScaling.PutScalingPolicy
+import Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
+import Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
+import Network.AWS.AutoScaling.ResumeProcesses
+import Network.AWS.AutoScaling.SetDesiredCapacity
+import Network.AWS.AutoScaling.SetInstanceHealth
+import Network.AWS.AutoScaling.SetInstanceProtection
+import Network.AWS.AutoScaling.SuspendProcesses
+import Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.UpdateAutoScalingGroup
+import Network.AWS.AutoScaling.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/AutoScaling/AttachInstances.hs b/gen/Network/AWS/AutoScaling/AttachInstances.hs
--- a/gen/Network/AWS/AutoScaling/AttachInstances.hs
+++ b/gen/Network/AWS/AutoScaling/AttachInstances.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.AttachInstances
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -23,7 +23,7 @@
 --
 -- When you attach instances, Auto Scaling increases the desired capacity of the group by the number of instances being attached. If the number of instances being attached plus the desired capacity of the group exceeds the maximum size of the group, the operation fails.
 --
--- If there is a Classic load balancer attached to your Auto Scaling group, the instances are also registered with the load balancer. If there are target groups attached to your Auto Scaling group, the instances are also registered with the target groups.
+-- If there is a Classic Load Balancer attached to your Auto Scaling group, the instances are also registered with the load balancer. If there are target groups attached to your Auto Scaling group, the instances are also registered with the target groups.
 --
 -- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/attach-instance-asg.html Attach EC2 Instances to Your Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
@@ -41,23 +41,20 @@
     , AttachInstancesResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for AttachInstances.
---
---
---
--- /See:/ 'attachInstances' smart constructor.
+-- | /See:/ 'attachInstances' smart constructor.
 data AttachInstances = AttachInstances'
-    { _aiInstanceIds          :: !(Maybe [Text])
-    , _aiAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _aiInstanceIds          :: !(Maybe [Text])
+  , _aiAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +66,10 @@
     :: Text -- ^ 'aiAutoScalingGroupName'
     -> AttachInstances
 attachInstances pAutoScalingGroupName_ =
-    AttachInstances'
-    { _aiInstanceIds = Nothing
-    , _aiAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  AttachInstances'
+  {_aiInstanceIds = Nothing, _aiAutoScalingGroupName = pAutoScalingGroupName_}
 
+
 -- | One or more instance IDs.
 aiInstanceIds :: Lens' AttachInstances [Text]
 aiInstanceIds = lens _aiInstanceIds (\ s a -> s{_aiInstanceIds = a}) . _Default . _Coerce;
@@ -87,9 +83,9 @@
         request = postQuery autoScaling
         response = receiveNull AttachInstancesResponse'
 
-instance Hashable AttachInstances
+instance Hashable AttachInstances where
 
-instance NFData AttachInstances
+instance NFData AttachInstances where
 
 instance ToHeaders AttachInstances where
         toHeaders = const mempty
@@ -108,13 +104,15 @@
 
 -- | /See:/ 'attachInstancesResponse' smart constructor.
 data AttachInstancesResponse =
-    AttachInstancesResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  AttachInstancesResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachInstancesResponse' with the minimum fields required to make a request.
 --
 attachInstancesResponse
     :: AttachInstancesResponse
 attachInstancesResponse = AttachInstancesResponse'
 
-instance NFData AttachInstancesResponse
+
+instance NFData AttachInstancesResponse where
diff --git a/gen/Network/AWS/AutoScaling/AttachLoadBalancerTargetGroups.hs b/gen/Network/AWS/AutoScaling/AttachLoadBalancerTargetGroups.hs
--- a/gen/Network/AWS/AutoScaling/AttachLoadBalancerTargetGroups.hs
+++ b/gen/Network/AWS/AutoScaling/AttachLoadBalancerTargetGroups.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.AttachLoadBalancerTargetGroups
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,23 +41,20 @@
     , albtgrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for AttachLoadBalancerTargetGroups.
---
---
---
--- /See:/ 'attachLoadBalancerTargetGroups' smart constructor.
+-- | /See:/ 'attachLoadBalancerTargetGroups' smart constructor.
 data AttachLoadBalancerTargetGroups = AttachLoadBalancerTargetGroups'
-    { _albtgAutoScalingGroupName :: !Text
-    , _albtgTargetGroupARNs      :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _albtgAutoScalingGroupName :: !Text
+  , _albtgTargetGroupARNs      :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachLoadBalancerTargetGroups' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +66,12 @@
     :: Text -- ^ 'albtgAutoScalingGroupName'
     -> AttachLoadBalancerTargetGroups
 attachLoadBalancerTargetGroups pAutoScalingGroupName_ =
-    AttachLoadBalancerTargetGroups'
-    { _albtgAutoScalingGroupName = pAutoScalingGroupName_
-    , _albtgTargetGroupARNs = mempty
-    }
+  AttachLoadBalancerTargetGroups'
+  { _albtgAutoScalingGroupName = pAutoScalingGroupName_
+  , _albtgTargetGroupARNs = mempty
+  }
 
+
 -- | The name of the Auto Scaling group.
 albtgAutoScalingGroupName :: Lens' AttachLoadBalancerTargetGroups Text
 albtgAutoScalingGroupName = lens _albtgAutoScalingGroupName (\ s a -> s{_albtgAutoScalingGroupName = a});
@@ -95,8 +93,9 @@
                    (pure (fromEnum s)))
 
 instance Hashable AttachLoadBalancerTargetGroups
+         where
 
-instance NFData AttachLoadBalancerTargetGroups
+instance NFData AttachLoadBalancerTargetGroups where
 
 instance ToHeaders AttachLoadBalancerTargetGroups
          where
@@ -117,9 +116,10 @@
 
 -- | /See:/ 'attachLoadBalancerTargetGroupsResponse' smart constructor.
 newtype AttachLoadBalancerTargetGroupsResponse = AttachLoadBalancerTargetGroupsResponse'
-    { _albtgrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _albtgrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachLoadBalancerTargetGroupsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -129,13 +129,14 @@
     :: Int -- ^ 'albtgrsResponseStatus'
     -> AttachLoadBalancerTargetGroupsResponse
 attachLoadBalancerTargetGroupsResponse pResponseStatus_ =
-    AttachLoadBalancerTargetGroupsResponse'
-    { _albtgrsResponseStatus = pResponseStatus_
-    }
+  AttachLoadBalancerTargetGroupsResponse'
+  {_albtgrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 albtgrsResponseStatus :: Lens' AttachLoadBalancerTargetGroupsResponse Int
 albtgrsResponseStatus = lens _albtgrsResponseStatus (\ s a -> s{_albtgrsResponseStatus = a});
 
 instance NFData
-         AttachLoadBalancerTargetGroupsResponse
+           AttachLoadBalancerTargetGroupsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs b/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs
--- a/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs
+++ b/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.AttachLoadBalancers
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Attaches one or more Classic load balancers to the specified Auto Scaling group.
+-- Attaches one or more Classic Load Balancers to the specified Auto Scaling group.
 --
 --
--- To attach an Application load balancer instead, see 'AttachLoadBalancerTargetGroups' .
+-- To attach an Application Load Balancer instead, see 'AttachLoadBalancerTargetGroups' .
 --
 -- To describe the load balancers for an Auto Scaling group, use 'DescribeLoadBalancers' . To detach the load balancer from the Auto Scaling group, use 'DetachLoadBalancers' .
 --
@@ -43,23 +43,20 @@
     , albrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for AttachLoadBalancers.
---
---
---
--- /See:/ 'attachLoadBalancers' smart constructor.
+-- | /See:/ 'attachLoadBalancers' smart constructor.
 data AttachLoadBalancers = AttachLoadBalancers'
-    { _albAutoScalingGroupName :: !Text
-    , _albLoadBalancerNames    :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _albAutoScalingGroupName :: !Text
+  , _albLoadBalancerNames    :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachLoadBalancers' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,11 +68,12 @@
     :: Text -- ^ 'albAutoScalingGroupName'
     -> AttachLoadBalancers
 attachLoadBalancers pAutoScalingGroupName_ =
-    AttachLoadBalancers'
-    { _albAutoScalingGroupName = pAutoScalingGroupName_
-    , _albLoadBalancerNames = mempty
-    }
+  AttachLoadBalancers'
+  { _albAutoScalingGroupName = pAutoScalingGroupName_
+  , _albLoadBalancerNames = mempty
+  }
 
+
 -- | The name of the group.
 albAutoScalingGroupName :: Lens' AttachLoadBalancers Text
 albAutoScalingGroupName = lens _albAutoScalingGroupName (\ s a -> s{_albAutoScalingGroupName = a});
@@ -93,9 +91,9 @@
               (\ s h x ->
                  AttachLoadBalancersResponse' <$> (pure (fromEnum s)))
 
-instance Hashable AttachLoadBalancers
+instance Hashable AttachLoadBalancers where
 
-instance NFData AttachLoadBalancers
+instance NFData AttachLoadBalancers where
 
 instance ToHeaders AttachLoadBalancers where
         toHeaders = const mempty
@@ -112,15 +110,12 @@
                "LoadBalancerNames" =:
                  toQueryList "member" _albLoadBalancerNames]
 
--- | Contains the output of AttachLoadBalancers.
---
---
---
--- /See:/ 'attachLoadBalancersResponse' smart constructor.
+-- | /See:/ 'attachLoadBalancersResponse' smart constructor.
 newtype AttachLoadBalancersResponse = AttachLoadBalancersResponse'
-    { _albrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _albrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachLoadBalancersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -130,12 +125,11 @@
     :: Int -- ^ 'albrsResponseStatus'
     -> AttachLoadBalancersResponse
 attachLoadBalancersResponse pResponseStatus_ =
-    AttachLoadBalancersResponse'
-    { _albrsResponseStatus = pResponseStatus_
-    }
+  AttachLoadBalancersResponse' {_albrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 albrsResponseStatus :: Lens' AttachLoadBalancersResponse Int
 albrsResponseStatus = lens _albrsResponseStatus (\ s a -> s{_albrsResponseStatus = a});
 
-instance NFData AttachLoadBalancersResponse
+instance NFData AttachLoadBalancersResponse where
diff --git a/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs b/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
--- a/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
+++ b/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.CompleteLifecycleAction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -56,26 +56,23 @@
     , clarsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for CompleteLifecycleAction.
---
---
---
--- /See:/ 'completeLifecycleAction' smart constructor.
+-- | /See:/ 'completeLifecycleAction' smart constructor.
 data CompleteLifecycleAction = CompleteLifecycleAction'
-    { _claInstanceId            :: !(Maybe Text)
-    , _claLifecycleActionToken  :: !(Maybe Text)
-    , _claLifecycleHookName     :: !Text
-    , _claAutoScalingGroupName  :: !Text
-    , _claLifecycleActionResult :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _claInstanceId            :: !(Maybe Text)
+  , _claLifecycleActionToken  :: !(Maybe Text)
+  , _claLifecycleHookName     :: !Text
+  , _claAutoScalingGroupName  :: !Text
+  , _claLifecycleActionResult :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CompleteLifecycleAction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,14 +92,15 @@
     -> Text -- ^ 'claLifecycleActionResult'
     -> CompleteLifecycleAction
 completeLifecycleAction pLifecycleHookName_ pAutoScalingGroupName_ pLifecycleActionResult_ =
-    CompleteLifecycleAction'
-    { _claInstanceId = Nothing
-    , _claLifecycleActionToken = Nothing
-    , _claLifecycleHookName = pLifecycleHookName_
-    , _claAutoScalingGroupName = pAutoScalingGroupName_
-    , _claLifecycleActionResult = pLifecycleActionResult_
-    }
+  CompleteLifecycleAction'
+  { _claInstanceId = Nothing
+  , _claLifecycleActionToken = Nothing
+  , _claLifecycleHookName = pLifecycleHookName_
+  , _claAutoScalingGroupName = pAutoScalingGroupName_
+  , _claLifecycleActionResult = pLifecycleActionResult_
+  }
 
+
 -- | The ID of the instance.
 claInstanceId :: Lens' CompleteLifecycleAction (Maybe Text)
 claInstanceId = lens _claInstanceId (\ s a -> s{_claInstanceId = a});
@@ -133,9 +131,9 @@
                  CompleteLifecycleActionResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable CompleteLifecycleAction
+instance Hashable CompleteLifecycleAction where
 
-instance NFData CompleteLifecycleAction
+instance NFData CompleteLifecycleAction where
 
 instance ToHeaders CompleteLifecycleAction where
         toHeaders = const mempty
@@ -155,15 +153,12 @@
                "AutoScalingGroupName" =: _claAutoScalingGroupName,
                "LifecycleActionResult" =: _claLifecycleActionResult]
 
--- | Contains the output of CompleteLifecycleAction.
---
---
---
--- /See:/ 'completeLifecycleActionResponse' smart constructor.
+-- | /See:/ 'completeLifecycleActionResponse' smart constructor.
 newtype CompleteLifecycleActionResponse = CompleteLifecycleActionResponse'
-    { _clarsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _clarsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CompleteLifecycleActionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -173,12 +168,11 @@
     :: Int -- ^ 'clarsResponseStatus'
     -> CompleteLifecycleActionResponse
 completeLifecycleActionResponse pResponseStatus_ =
-    CompleteLifecycleActionResponse'
-    { _clarsResponseStatus = pResponseStatus_
-    }
+  CompleteLifecycleActionResponse' {_clarsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 clarsResponseStatus :: Lens' CompleteLifecycleActionResponse Int
 clarsResponseStatus = lens _clarsResponseStatus (\ s a -> s{_clarsResponseStatus = a});
 
-instance NFData CompleteLifecycleActionResponse
+instance NFData CompleteLifecycleActionResponse where
diff --git a/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.CreateAutoScalingGroup
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,6 +41,7 @@
     , casgAvailabilityZones
     , casgDesiredCapacity
     , casgLaunchConfigurationName
+    , casgLifecycleHookSpecificationList
     , casgHealthCheckType
     , casgPlacementGroup
     , casgLoadBalancerNames
@@ -54,38 +55,36 @@
     , CreateAutoScalingGroupResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for CreateAutoScalingGroup.
---
---
---
--- /See:/ 'createAutoScalingGroup' smart constructor.
+-- | /See:/ 'createAutoScalingGroup' smart constructor.
 data CreateAutoScalingGroup = CreateAutoScalingGroup'
-    { _casgInstanceId                       :: !(Maybe Text)
-    , _casgTerminationPolicies              :: !(Maybe [Text])
-    , _casgHealthCheckGracePeriod           :: !(Maybe Int)
-    , _casgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
-    , _casgVPCZoneIdentifier                :: !(Maybe Text)
-    , _casgTargetGroupARNs                  :: !(Maybe [Text])
-    , _casgDefaultCooldown                  :: !(Maybe Int)
-    , _casgAvailabilityZones                :: !(Maybe (List1 Text))
-    , _casgDesiredCapacity                  :: !(Maybe Int)
-    , _casgLaunchConfigurationName          :: !(Maybe Text)
-    , _casgHealthCheckType                  :: !(Maybe Text)
-    , _casgPlacementGroup                   :: !(Maybe Text)
-    , _casgLoadBalancerNames                :: !(Maybe [Text])
-    , _casgTags                             :: !(Maybe [Tag])
-    , _casgAutoScalingGroupName             :: !Text
-    , _casgMinSize                          :: !Int
-    , _casgMaxSize                          :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _casgInstanceId :: !(Maybe Text)
+  , _casgTerminationPolicies :: !(Maybe [Text])
+  , _casgHealthCheckGracePeriod :: !(Maybe Int)
+  , _casgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
+  , _casgVPCZoneIdentifier :: !(Maybe Text)
+  , _casgTargetGroupARNs :: !(Maybe [Text])
+  , _casgDefaultCooldown :: !(Maybe Int)
+  , _casgAvailabilityZones :: !(Maybe (List1 Text))
+  , _casgDesiredCapacity :: !(Maybe Int)
+  , _casgLaunchConfigurationName :: !(Maybe Text)
+  , _casgLifecycleHookSpecificationList :: !(Maybe [LifecycleHookSpecification])
+  , _casgHealthCheckType :: !(Maybe Text)
+  , _casgPlacementGroup :: !(Maybe Text)
+  , _casgLoadBalancerNames :: !(Maybe [Text])
+  , _casgTags :: !(Maybe [Tag])
+  , _casgAutoScalingGroupName :: !Text
+  , _casgMinSize :: !Int
+  , _casgMaxSize :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAutoScalingGroup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,15 +105,17 @@
 --
 -- * 'casgAvailabilityZones' - One or more Availability Zones for the group. This parameter is optional if you specify one or more subnets.
 --
--- * 'casgDesiredCapacity' - The number of EC2 instances that should be running in the group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group.
+-- * 'casgDesiredCapacity' - The number of EC2 instances that should be running in the group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity, the default is the minimum size of the group.
 --
 -- * 'casgLaunchConfigurationName' - The name of the launch configuration. Alternatively, specify an EC2 instance instead of a launch configuration.
 --
+-- * 'casgLifecycleHookSpecificationList' - One or more lifecycle hooks.
+--
 -- * 'casgHealthCheckType' - The service to use for the health checks. The valid values are @EC2@ and @ELB@ . By default, health checks use Amazon EC2 instance status checks to determine the health of an instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/healthcheck.html Health Checks> in the /Auto Scaling User Guide/ .
 --
 -- * 'casgPlacementGroup' - The name of the placement group into which you'll launch your instances, if any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups> in the /Amazon Elastic Compute Cloud User Guide/ .
 --
--- * 'casgLoadBalancerNames' - One or more Classic load balancers. To specify an Application load balancer, use @TargetGroupARNs@ instead. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg-from-instance.html Using a Load Balancer With an Auto Scaling Group> in the /Auto Scaling User Guide/ .
+-- * 'casgLoadBalancerNames' - One or more Classic Load Balancers. To specify an Application Load Balancer, use @TargetGroupARNs@ instead. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg-from-instance.html Using a Load Balancer With an Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
 -- * 'casgTags' - One or more tags. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/autoscaling-tagging.html Tagging Auto Scaling Groups and Instances> in the /Auto Scaling User Guide/ .
 --
@@ -129,26 +130,28 @@
     -> Int -- ^ 'casgMaxSize'
     -> CreateAutoScalingGroup
 createAutoScalingGroup pAutoScalingGroupName_ pMinSize_ pMaxSize_ =
-    CreateAutoScalingGroup'
-    { _casgInstanceId = Nothing
-    , _casgTerminationPolicies = Nothing
-    , _casgHealthCheckGracePeriod = Nothing
-    , _casgNewInstancesProtectedFromScaleIn = Nothing
-    , _casgVPCZoneIdentifier = Nothing
-    , _casgTargetGroupARNs = Nothing
-    , _casgDefaultCooldown = Nothing
-    , _casgAvailabilityZones = Nothing
-    , _casgDesiredCapacity = Nothing
-    , _casgLaunchConfigurationName = Nothing
-    , _casgHealthCheckType = Nothing
-    , _casgPlacementGroup = Nothing
-    , _casgLoadBalancerNames = Nothing
-    , _casgTags = Nothing
-    , _casgAutoScalingGroupName = pAutoScalingGroupName_
-    , _casgMinSize = pMinSize_
-    , _casgMaxSize = pMaxSize_
-    }
+  CreateAutoScalingGroup'
+  { _casgInstanceId = Nothing
+  , _casgTerminationPolicies = Nothing
+  , _casgHealthCheckGracePeriod = Nothing
+  , _casgNewInstancesProtectedFromScaleIn = Nothing
+  , _casgVPCZoneIdentifier = Nothing
+  , _casgTargetGroupARNs = Nothing
+  , _casgDefaultCooldown = Nothing
+  , _casgAvailabilityZones = Nothing
+  , _casgDesiredCapacity = Nothing
+  , _casgLaunchConfigurationName = Nothing
+  , _casgLifecycleHookSpecificationList = Nothing
+  , _casgHealthCheckType = Nothing
+  , _casgPlacementGroup = Nothing
+  , _casgLoadBalancerNames = Nothing
+  , _casgTags = Nothing
+  , _casgAutoScalingGroupName = pAutoScalingGroupName_
+  , _casgMinSize = pMinSize_
+  , _casgMaxSize = pMaxSize_
+  }
 
+
 -- | The ID of the instance used to create a launch configuration for the group. Alternatively, specify a launch configuration instead of an EC2 instance. When you specify an ID of an instance, Auto Scaling creates a new launch configuration and associates it with the group. This launch configuration derives its attributes from the specified instance, with the exception of the block device mapping. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg-from-instance.html Create an Auto Scaling Group Using an EC2 Instance> in the /Auto Scaling User Guide/ .
 casgInstanceId :: Lens' CreateAutoScalingGroup (Maybe Text)
 casgInstanceId = lens _casgInstanceId (\ s a -> s{_casgInstanceId = a});
@@ -181,7 +184,7 @@
 casgAvailabilityZones :: Lens' CreateAutoScalingGroup (Maybe (NonEmpty Text))
 casgAvailabilityZones = lens _casgAvailabilityZones (\ s a -> s{_casgAvailabilityZones = a}) . mapping _List1;
 
--- | The number of EC2 instances that should be running in the group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group.
+-- | The number of EC2 instances that should be running in the group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity, the default is the minimum size of the group.
 casgDesiredCapacity :: Lens' CreateAutoScalingGroup (Maybe Int)
 casgDesiredCapacity = lens _casgDesiredCapacity (\ s a -> s{_casgDesiredCapacity = a});
 
@@ -189,6 +192,10 @@
 casgLaunchConfigurationName :: Lens' CreateAutoScalingGroup (Maybe Text)
 casgLaunchConfigurationName = lens _casgLaunchConfigurationName (\ s a -> s{_casgLaunchConfigurationName = a});
 
+-- | One or more lifecycle hooks.
+casgLifecycleHookSpecificationList :: Lens' CreateAutoScalingGroup [LifecycleHookSpecification]
+casgLifecycleHookSpecificationList = lens _casgLifecycleHookSpecificationList (\ s a -> s{_casgLifecycleHookSpecificationList = a}) . _Default . _Coerce;
+
 -- | The service to use for the health checks. The valid values are @EC2@ and @ELB@ . By default, health checks use Amazon EC2 instance status checks to determine the health of an instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/healthcheck.html Health Checks> in the /Auto Scaling User Guide/ .
 casgHealthCheckType :: Lens' CreateAutoScalingGroup (Maybe Text)
 casgHealthCheckType = lens _casgHealthCheckType (\ s a -> s{_casgHealthCheckType = a});
@@ -197,7 +204,7 @@
 casgPlacementGroup :: Lens' CreateAutoScalingGroup (Maybe Text)
 casgPlacementGroup = lens _casgPlacementGroup (\ s a -> s{_casgPlacementGroup = a});
 
--- | One or more Classic load balancers. To specify an Application load balancer, use @TargetGroupARNs@ instead. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg-from-instance.html Using a Load Balancer With an Auto Scaling Group> in the /Auto Scaling User Guide/ .
+-- | One or more Classic Load Balancers. To specify an Application Load Balancer, use @TargetGroupARNs@ instead. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg-from-instance.html Using a Load Balancer With an Auto Scaling Group> in the /Auto Scaling User Guide/ .
 casgLoadBalancerNames :: Lens' CreateAutoScalingGroup [Text]
 casgLoadBalancerNames = lens _casgLoadBalancerNames (\ s a -> s{_casgLoadBalancerNames = a}) . _Default . _Coerce;
 
@@ -224,9 +231,9 @@
         response
           = receiveNull CreateAutoScalingGroupResponse'
 
-instance Hashable CreateAutoScalingGroup
+instance Hashable CreateAutoScalingGroup where
 
-instance NFData CreateAutoScalingGroup
+instance NFData CreateAutoScalingGroup where
 
 instance ToHeaders CreateAutoScalingGroup where
         toHeaders = const mempty
@@ -259,6 +266,10 @@
                "DesiredCapacity" =: _casgDesiredCapacity,
                "LaunchConfigurationName" =:
                  _casgLaunchConfigurationName,
+               "LifecycleHookSpecificationList" =:
+                 toQuery
+                   (toQueryList "member" <$>
+                      _casgLifecycleHookSpecificationList),
                "HealthCheckType" =: _casgHealthCheckType,
                "PlacementGroup" =: _casgPlacementGroup,
                "LoadBalancerNames" =:
@@ -271,13 +282,15 @@
 
 -- | /See:/ 'createAutoScalingGroupResponse' smart constructor.
 data CreateAutoScalingGroupResponse =
-    CreateAutoScalingGroupResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  CreateAutoScalingGroupResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAutoScalingGroupResponse' with the minimum fields required to make a request.
 --
 createAutoScalingGroupResponse
     :: CreateAutoScalingGroupResponse
 createAutoScalingGroupResponse = CreateAutoScalingGroupResponse'
 
-instance NFData CreateAutoScalingGroupResponse
+
+instance NFData CreateAutoScalingGroupResponse where
diff --git a/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs b/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.CreateLaunchConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -55,44 +55,41 @@
     , CreateLaunchConfigurationResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for CreateLaunchConfiguration.
---
---
---
--- /See:/ 'createLaunchConfiguration' smart constructor.
+-- | /See:/ 'createLaunchConfiguration' smart constructor.
 data CreateLaunchConfiguration = CreateLaunchConfiguration'
-    { _clcInstanceId                   :: !(Maybe Text)
-    , _clcAssociatePublicIPAddress     :: !(Maybe Bool)
-    , _clcSecurityGroups               :: !(Maybe [Text])
-    , _clcSpotPrice                    :: !(Maybe Text)
-    , _clcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
-    , _clcKeyName                      :: !(Maybe Text)
-    , _clcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
-    , _clcRAMDiskId                    :: !(Maybe Text)
-    , _clcKernelId                     :: !(Maybe Text)
-    , _clcInstanceType                 :: !(Maybe Text)
-    , _clcEBSOptimized                 :: !(Maybe Bool)
-    , _clcUserData                     :: !(Maybe Text)
-    , _clcClassicLinkVPCId             :: !(Maybe Text)
-    , _clcIAMInstanceProfile           :: !(Maybe Text)
-    , _clcImageId                      :: !(Maybe Text)
-    , _clcPlacementTenancy             :: !(Maybe Text)
-    , _clcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
-    , _clcLaunchConfigurationName      :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _clcInstanceId                   :: !(Maybe Text)
+  , _clcAssociatePublicIPAddress     :: !(Maybe Bool)
+  , _clcSecurityGroups               :: !(Maybe [Text])
+  , _clcSpotPrice                    :: !(Maybe Text)
+  , _clcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
+  , _clcKeyName                      :: !(Maybe Text)
+  , _clcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
+  , _clcRAMDiskId                    :: !(Maybe Text)
+  , _clcKernelId                     :: !(Maybe Text)
+  , _clcInstanceType                 :: !(Maybe Text)
+  , _clcEBSOptimized                 :: !(Maybe Bool)
+  , _clcUserData                     :: !(Maybe Text)
+  , _clcClassicLinkVPCId             :: !(Maybe Text)
+  , _clcIAMInstanceProfile           :: !(Maybe Text)
+  , _clcImageId                      :: !(Maybe Text)
+  , _clcPlacementTenancy             :: !(Maybe Text)
+  , _clcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
+  , _clcLaunchConfigurationName      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateLaunchConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clcInstanceId' - The ID of the instance to use to create the launch configuration. The new launch configuration derives attributes from the instance, with the exception of the block device mapping. To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance> in the /Auto Scaling User Guide/ .
+-- * 'clcInstanceId' - The ID of the instance to use to create the launch configuration. The new launch configuration derives attributes from the instance, with the exception of the block device mapping. If you do not specify @InstanceId@ , you must specify both @ImageId@ and @InstanceType@ . To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance> in the /Auto Scaling User Guide/ .
 --
 -- * 'clcAssociatePublicIPAddress' - Used for groups that launch instances into a virtual private cloud (VPC). Specifies whether to assign a public IP address to each instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/asg-in-vpc.html Launching Auto Scaling Instances in a VPC> in the /Auto Scaling User Guide/ . If you specify this parameter, be sure to specify at least one subnet when you create your group. Default: If the instance is launched into a default subnet, the default is @true@ . If the instance is launched into a nondefault subnet, the default is @false@ . For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> in the /Amazon Elastic Compute Cloud User Guide/ .
 --
@@ -100,7 +97,7 @@
 --
 -- * 'clcSpotPrice' - The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/US-SpotInstances.html Launching Spot Instances in Your Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
--- * 'clcInstanceMonitoring' - Enables detailed monitoring (@true@ ) or basic monitoring (@false@ ) for the Auto Scaling instances.
+-- * 'clcInstanceMonitoring' - Enables detailed monitoring (@true@ ) or basic monitoring (@false@ ) for the Auto Scaling instances. The default is @true@ .
 --
 -- * 'clcKeyName' - The name of the key pair. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 Key Pairs> in the /Amazon Elastic Compute Cloud User Guide/ .
 --
@@ -110,7 +107,7 @@
 --
 -- * 'clcKernelId' - The ID of the kernel associated with the AMI.
 --
--- * 'clcInstanceType' - The instance type of the EC2 instance. For information about available instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes Available Instance Types> in the /Amazon Elastic Compute Cloud User Guide./
+-- * 'clcInstanceType' - The instance type of the EC2 instance. If you do not specify @InstanceId@ , you must specify @InstanceType@ . For information about available instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes Available Instance Types> in the /Amazon Elastic Compute Cloud User Guide./
 --
 -- * 'clcEBSOptimized' - Indicates whether the instance is optimized for Amazon EBS I/O. By default, the instance is not optimized for EBS I/O. The optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization is not available with all instance types. Additional usage charges apply. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html Amazon EBS-Optimized Instances> in the /Amazon Elastic Compute Cloud User Guide/ .
 --
@@ -120,7 +117,7 @@
 --
 -- * 'clcIAMInstanceProfile' - The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. EC2 instances launched with an IAM role will automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your EC2 instances to securely access other AWS resources. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/us-iam-role.html Launch Auto Scaling Instances with an IAM Role> in the /Auto Scaling User Guide/ .
 --
--- * 'clcImageId' - The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI> in the /Amazon Elastic Compute Cloud User Guide/ .
+-- * 'clcImageId' - The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. If you do not specify @InstanceId@ , you must specify @ImageId@ . For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI> in the /Amazon Elastic Compute Cloud User Guide/ .
 --
 -- * 'clcPlacementTenancy' - The tenancy of the instance. An instance with a tenancy of @dedicated@ runs on single-tenant hardware and can only be launched into a VPC. You must set the value of this parameter to @dedicated@ if want to launch Dedicated Instances into a shared tenancy VPC (VPC with instance placement tenancy attribute set to @default@ ). If you specify this parameter, be sure to specify at least one subnet when you create your group. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/asg-in-vpc.html Launching Auto Scaling Instances in a VPC> in the /Auto Scaling User Guide/ . Valid values: @default@ | @dedicated@
 --
@@ -131,28 +128,29 @@
     :: Text -- ^ 'clcLaunchConfigurationName'
     -> CreateLaunchConfiguration
 createLaunchConfiguration pLaunchConfigurationName_ =
-    CreateLaunchConfiguration'
-    { _clcInstanceId = Nothing
-    , _clcAssociatePublicIPAddress = Nothing
-    , _clcSecurityGroups = Nothing
-    , _clcSpotPrice = Nothing
-    , _clcInstanceMonitoring = Nothing
-    , _clcKeyName = Nothing
-    , _clcClassicLinkVPCSecurityGroups = Nothing
-    , _clcRAMDiskId = Nothing
-    , _clcKernelId = Nothing
-    , _clcInstanceType = Nothing
-    , _clcEBSOptimized = Nothing
-    , _clcUserData = Nothing
-    , _clcClassicLinkVPCId = Nothing
-    , _clcIAMInstanceProfile = Nothing
-    , _clcImageId = Nothing
-    , _clcPlacementTenancy = Nothing
-    , _clcBlockDeviceMappings = Nothing
-    , _clcLaunchConfigurationName = pLaunchConfigurationName_
-    }
+  CreateLaunchConfiguration'
+  { _clcInstanceId = Nothing
+  , _clcAssociatePublicIPAddress = Nothing
+  , _clcSecurityGroups = Nothing
+  , _clcSpotPrice = Nothing
+  , _clcInstanceMonitoring = Nothing
+  , _clcKeyName = Nothing
+  , _clcClassicLinkVPCSecurityGroups = Nothing
+  , _clcRAMDiskId = Nothing
+  , _clcKernelId = Nothing
+  , _clcInstanceType = Nothing
+  , _clcEBSOptimized = Nothing
+  , _clcUserData = Nothing
+  , _clcClassicLinkVPCId = Nothing
+  , _clcIAMInstanceProfile = Nothing
+  , _clcImageId = Nothing
+  , _clcPlacementTenancy = Nothing
+  , _clcBlockDeviceMappings = Nothing
+  , _clcLaunchConfigurationName = pLaunchConfigurationName_
+  }
 
--- | The ID of the instance to use to create the launch configuration. The new launch configuration derives attributes from the instance, with the exception of the block device mapping. To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance> in the /Auto Scaling User Guide/ .
+
+-- | The ID of the instance to use to create the launch configuration. The new launch configuration derives attributes from the instance, with the exception of the block device mapping. If you do not specify @InstanceId@ , you must specify both @ImageId@ and @InstanceType@ . To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance> in the /Auto Scaling User Guide/ .
 clcInstanceId :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcInstanceId = lens _clcInstanceId (\ s a -> s{_clcInstanceId = a});
 
@@ -168,7 +166,7 @@
 clcSpotPrice :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcSpotPrice = lens _clcSpotPrice (\ s a -> s{_clcSpotPrice = a});
 
--- | Enables detailed monitoring (@true@ ) or basic monitoring (@false@ ) for the Auto Scaling instances.
+-- | Enables detailed monitoring (@true@ ) or basic monitoring (@false@ ) for the Auto Scaling instances. The default is @true@ .
 clcInstanceMonitoring :: Lens' CreateLaunchConfiguration (Maybe InstanceMonitoring)
 clcInstanceMonitoring = lens _clcInstanceMonitoring (\ s a -> s{_clcInstanceMonitoring = a});
 
@@ -188,7 +186,7 @@
 clcKernelId :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcKernelId = lens _clcKernelId (\ s a -> s{_clcKernelId = a});
 
--- | The instance type of the EC2 instance. For information about available instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes Available Instance Types> in the /Amazon Elastic Compute Cloud User Guide./
+-- | The instance type of the EC2 instance. If you do not specify @InstanceId@ , you must specify @InstanceType@ . For information about available instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes Available Instance Types> in the /Amazon Elastic Compute Cloud User Guide./
 clcInstanceType :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcInstanceType = lens _clcInstanceType (\ s a -> s{_clcInstanceType = a});
 
@@ -208,7 +206,7 @@
 clcIAMInstanceProfile :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcIAMInstanceProfile = lens _clcIAMInstanceProfile (\ s a -> s{_clcIAMInstanceProfile = a});
 
--- | The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI> in the /Amazon Elastic Compute Cloud User Guide/ .
+-- | The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. If you do not specify @InstanceId@ , you must specify @ImageId@ . For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI> in the /Amazon Elastic Compute Cloud User Guide/ .
 clcImageId :: Lens' CreateLaunchConfiguration (Maybe Text)
 clcImageId = lens _clcImageId (\ s a -> s{_clcImageId = a});
 
@@ -231,9 +229,9 @@
         response
           = receiveNull CreateLaunchConfigurationResponse'
 
-instance Hashable CreateLaunchConfiguration
+instance Hashable CreateLaunchConfiguration where
 
-instance NFData CreateLaunchConfiguration
+instance NFData CreateLaunchConfiguration where
 
 instance ToHeaders CreateLaunchConfiguration where
         toHeaders = const mempty
@@ -277,13 +275,16 @@
 
 -- | /See:/ 'createLaunchConfigurationResponse' smart constructor.
 data CreateLaunchConfigurationResponse =
-    CreateLaunchConfigurationResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  CreateLaunchConfigurationResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateLaunchConfigurationResponse' with the minimum fields required to make a request.
 --
 createLaunchConfigurationResponse
     :: CreateLaunchConfigurationResponse
 createLaunchConfigurationResponse = CreateLaunchConfigurationResponse'
 
+
 instance NFData CreateLaunchConfigurationResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs b/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
--- a/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
+++ b/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.CreateOrUpdateTags
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,22 +38,19 @@
     , CreateOrUpdateTagsResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for CreateOrUpdateTags.
---
---
---
--- /See:/ 'createOrUpdateTags' smart constructor.
+-- | /See:/ 'createOrUpdateTags' smart constructor.
 newtype CreateOrUpdateTags = CreateOrUpdateTags'
-    { _coutTags :: [Tag]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _coutTags :: [Tag]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateOrUpdateTags' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +58,9 @@
 -- * 'coutTags' - One or more tags.
 createOrUpdateTags
     :: CreateOrUpdateTags
-createOrUpdateTags =
-    CreateOrUpdateTags'
-    { _coutTags = mempty
-    }
+createOrUpdateTags = CreateOrUpdateTags' {_coutTags = mempty}
 
+
 -- | One or more tags.
 coutTags :: Lens' CreateOrUpdateTags [Tag]
 coutTags = lens _coutTags (\ s a -> s{_coutTags = a}) . _Coerce;
@@ -76,9 +71,9 @@
         request = postQuery autoScaling
         response = receiveNull CreateOrUpdateTagsResponse'
 
-instance Hashable CreateOrUpdateTags
+instance Hashable CreateOrUpdateTags where
 
-instance NFData CreateOrUpdateTags
+instance NFData CreateOrUpdateTags where
 
 instance ToHeaders CreateOrUpdateTags where
         toHeaders = const mempty
@@ -95,13 +90,15 @@
 
 -- | /See:/ 'createOrUpdateTagsResponse' smart constructor.
 data CreateOrUpdateTagsResponse =
-    CreateOrUpdateTagsResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  CreateOrUpdateTagsResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateOrUpdateTagsResponse' with the minimum fields required to make a request.
 --
 createOrUpdateTagsResponse
     :: CreateOrUpdateTagsResponse
 createOrUpdateTagsResponse = CreateOrUpdateTagsResponse'
 
-instance NFData CreateOrUpdateTagsResponse
+
+instance NFData CreateOrUpdateTagsResponse where
diff --git a/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteAutoScalingGroup
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -43,23 +43,20 @@
     , DeleteAutoScalingGroupResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteAutoScalingGroup.
---
---
---
--- /See:/ 'deleteAutoScalingGroup' smart constructor.
+-- | /See:/ 'deleteAutoScalingGroup' smart constructor.
 data DeleteAutoScalingGroup = DeleteAutoScalingGroup'
-    { _dasgForceDelete          :: !(Maybe Bool)
-    , _dasgAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasgForceDelete          :: !(Maybe Bool)
+  , _dasgAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAutoScalingGroup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,11 +68,12 @@
     :: Text -- ^ 'dasgAutoScalingGroupName'
     -> DeleteAutoScalingGroup
 deleteAutoScalingGroup pAutoScalingGroupName_ =
-    DeleteAutoScalingGroup'
-    { _dasgForceDelete = Nothing
-    , _dasgAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DeleteAutoScalingGroup'
+  { _dasgForceDelete = Nothing
+  , _dasgAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | Specifies that the group will be deleted along with all instances associated with the group, without waiting for all instances to be terminated. This parameter also deletes any lifecycle actions associated with the group.
 dasgForceDelete :: Lens' DeleteAutoScalingGroup (Maybe Bool)
 dasgForceDelete = lens _dasgForceDelete (\ s a -> s{_dasgForceDelete = a});
@@ -91,9 +89,9 @@
         response
           = receiveNull DeleteAutoScalingGroupResponse'
 
-instance Hashable DeleteAutoScalingGroup
+instance Hashable DeleteAutoScalingGroup where
 
-instance NFData DeleteAutoScalingGroup
+instance NFData DeleteAutoScalingGroup where
 
 instance ToHeaders DeleteAutoScalingGroup where
         toHeaders = const mempty
@@ -112,13 +110,15 @@
 
 -- | /See:/ 'deleteAutoScalingGroupResponse' smart constructor.
 data DeleteAutoScalingGroupResponse =
-    DeleteAutoScalingGroupResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteAutoScalingGroupResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAutoScalingGroupResponse' with the minimum fields required to make a request.
 --
 deleteAutoScalingGroupResponse
     :: DeleteAutoScalingGroupResponse
 deleteAutoScalingGroupResponse = DeleteAutoScalingGroupResponse'
 
-instance NFData DeleteAutoScalingGroupResponse
+
+instance NFData DeleteAutoScalingGroupResponse where
diff --git a/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs b/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteLaunchConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,22 +36,19 @@
     , DeleteLaunchConfigurationResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteLaunchConfiguration.
---
---
---
--- /See:/ 'deleteLaunchConfiguration' smart constructor.
+-- | /See:/ 'deleteLaunchConfiguration' smart constructor.
 newtype DeleteLaunchConfiguration = DeleteLaunchConfiguration'
-    { _dlcLaunchConfigurationName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlcLaunchConfigurationName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLaunchConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,10 +58,10 @@
     :: Text -- ^ 'dlcLaunchConfigurationName'
     -> DeleteLaunchConfiguration
 deleteLaunchConfiguration pLaunchConfigurationName_ =
-    DeleteLaunchConfiguration'
-    { _dlcLaunchConfigurationName = pLaunchConfigurationName_
-    }
+  DeleteLaunchConfiguration'
+  {_dlcLaunchConfigurationName = pLaunchConfigurationName_}
 
+
 -- | The name of the launch configuration.
 dlcLaunchConfigurationName :: Lens' DeleteLaunchConfiguration Text
 dlcLaunchConfigurationName = lens _dlcLaunchConfigurationName (\ s a -> s{_dlcLaunchConfigurationName = a});
@@ -76,9 +73,9 @@
         response
           = receiveNull DeleteLaunchConfigurationResponse'
 
-instance Hashable DeleteLaunchConfiguration
+instance Hashable DeleteLaunchConfiguration where
 
-instance NFData DeleteLaunchConfiguration
+instance NFData DeleteLaunchConfiguration where
 
 instance ToHeaders DeleteLaunchConfiguration where
         toHeaders = const mempty
@@ -97,13 +94,16 @@
 
 -- | /See:/ 'deleteLaunchConfigurationResponse' smart constructor.
 data DeleteLaunchConfigurationResponse =
-    DeleteLaunchConfigurationResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteLaunchConfigurationResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLaunchConfigurationResponse' with the minimum fields required to make a request.
 --
 deleteLaunchConfigurationResponse
     :: DeleteLaunchConfigurationResponse
 deleteLaunchConfigurationResponse = DeleteLaunchConfigurationResponse'
 
+
 instance NFData DeleteLaunchConfigurationResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs b/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
--- a/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteLifecycleHook
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,23 +39,20 @@
     , drsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteLifecycleHook.
---
---
---
--- /See:/ 'deleteLifecycleHook' smart constructor.
+-- | /See:/ 'deleteLifecycleHook' smart constructor.
 data DeleteLifecycleHook = DeleteLifecycleHook'
-    { _delLifecycleHookName    :: !Text
-    , _delAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delLifecycleHookName    :: !Text
+  , _delAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLifecycleHook' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,11 +65,12 @@
     -> Text -- ^ 'delAutoScalingGroupName'
     -> DeleteLifecycleHook
 deleteLifecycleHook pLifecycleHookName_ pAutoScalingGroupName_ =
-    DeleteLifecycleHook'
-    { _delLifecycleHookName = pLifecycleHookName_
-    , _delAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DeleteLifecycleHook'
+  { _delLifecycleHookName = pLifecycleHookName_
+  , _delAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | The name of the lifecycle hook.
 delLifecycleHookName :: Lens' DeleteLifecycleHook Text
 delLifecycleHookName = lens _delLifecycleHookName (\ s a -> s{_delLifecycleHookName = a});
@@ -90,9 +88,9 @@
               (\ s h x ->
                  DeleteLifecycleHookResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteLifecycleHook
+instance Hashable DeleteLifecycleHook where
 
-instance NFData DeleteLifecycleHook
+instance NFData DeleteLifecycleHook where
 
 instance ToHeaders DeleteLifecycleHook where
         toHeaders = const mempty
@@ -108,15 +106,12 @@
                "LifecycleHookName" =: _delLifecycleHookName,
                "AutoScalingGroupName" =: _delAutoScalingGroupName]
 
--- | Contains the output of DeleteLifecycleHook.
---
---
---
--- /See:/ 'deleteLifecycleHookResponse' smart constructor.
+-- | /See:/ 'deleteLifecycleHookResponse' smart constructor.
 newtype DeleteLifecycleHookResponse = DeleteLifecycleHookResponse'
-    { _drsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _drsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLifecycleHookResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,12 +121,11 @@
     :: Int -- ^ 'drsResponseStatus'
     -> DeleteLifecycleHookResponse
 deleteLifecycleHookResponse pResponseStatus_ =
-    DeleteLifecycleHookResponse'
-    { _drsResponseStatus = pResponseStatus_
-    }
+  DeleteLifecycleHookResponse' {_drsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 drsResponseStatus :: Lens' DeleteLifecycleHookResponse Int
 drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
 
-instance NFData DeleteLifecycleHookResponse
+instance NFData DeleteLifecycleHookResponse where
diff --git a/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs b/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteNotificationConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,23 +35,20 @@
     , DeleteNotificationConfigurationResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteNotificationConfiguration.
---
---
---
--- /See:/ 'deleteNotificationConfiguration' smart constructor.
+-- | /See:/ 'deleteNotificationConfiguration' smart constructor.
 data DeleteNotificationConfiguration = DeleteNotificationConfiguration'
-    { _dncAutoScalingGroupName :: !Text
-    , _dncTopicARN             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dncAutoScalingGroupName :: !Text
+  , _dncTopicARN             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteNotificationConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +61,10 @@
     -> Text -- ^ 'dncTopicARN'
     -> DeleteNotificationConfiguration
 deleteNotificationConfiguration pAutoScalingGroupName_ pTopicARN_ =
-    DeleteNotificationConfiguration'
-    { _dncAutoScalingGroupName = pAutoScalingGroupName_
-    , _dncTopicARN = pTopicARN_
-    }
+  DeleteNotificationConfiguration'
+  {_dncAutoScalingGroupName = pAutoScalingGroupName_, _dncTopicARN = pTopicARN_}
 
+
 -- | The name of the Auto Scaling group.
 dncAutoScalingGroupName :: Lens' DeleteNotificationConfiguration Text
 dncAutoScalingGroupName = lens _dncAutoScalingGroupName (\ s a -> s{_dncAutoScalingGroupName = a});
@@ -87,8 +83,9 @@
               DeleteNotificationConfigurationResponse'
 
 instance Hashable DeleteNotificationConfiguration
+         where
 
-instance NFData DeleteNotificationConfiguration
+instance NFData DeleteNotificationConfiguration where
 
 instance ToHeaders DeleteNotificationConfiguration
          where
@@ -109,15 +106,18 @@
 
 -- | /See:/ 'deleteNotificationConfigurationResponse' smart constructor.
 data DeleteNotificationConfigurationResponse =
-    DeleteNotificationConfigurationResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteNotificationConfigurationResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteNotificationConfigurationResponse' with the minimum fields required to make a request.
 --
 deleteNotificationConfigurationResponse
     :: DeleteNotificationConfigurationResponse
 deleteNotificationConfigurationResponse =
-    DeleteNotificationConfigurationResponse'
+  DeleteNotificationConfigurationResponse'
 
+
 instance NFData
-         DeleteNotificationConfigurationResponse
+           DeleteNotificationConfigurationResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DeletePolicy.hs b/gen/Network/AWS/AutoScaling/DeletePolicy.hs
--- a/gen/Network/AWS/AutoScaling/DeletePolicy.hs
+++ b/gen/Network/AWS/AutoScaling/DeletePolicy.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeletePolicy
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,23 +37,20 @@
     , DeletePolicyResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeletePolicy.
---
---
---
--- /See:/ 'deletePolicy' smart constructor.
+-- | /See:/ 'deletePolicy' smart constructor.
 data DeletePolicy = DeletePolicy'
-    { _dpAutoScalingGroupName :: !(Maybe Text)
-    , _dpPolicyName           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpAutoScalingGroupName :: !(Maybe Text)
+  , _dpPolicyName           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeletePolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +62,10 @@
     :: Text -- ^ 'dpPolicyName'
     -> DeletePolicy
 deletePolicy pPolicyName_ =
-    DeletePolicy'
-    { _dpAutoScalingGroupName = Nothing
-    , _dpPolicyName = pPolicyName_
-    }
+  DeletePolicy'
+  {_dpAutoScalingGroupName = Nothing, _dpPolicyName = pPolicyName_}
 
+
 -- | The name of the Auto Scaling group.
 dpAutoScalingGroupName :: Lens' DeletePolicy (Maybe Text)
 dpAutoScalingGroupName = lens _dpAutoScalingGroupName (\ s a -> s{_dpAutoScalingGroupName = a});
@@ -83,9 +79,9 @@
         request = postQuery autoScaling
         response = receiveNull DeletePolicyResponse'
 
-instance Hashable DeletePolicy
+instance Hashable DeletePolicy where
 
-instance NFData DeletePolicy
+instance NFData DeletePolicy where
 
 instance ToHeaders DeletePolicy where
         toHeaders = const mempty
@@ -103,13 +99,15 @@
 
 -- | /See:/ 'deletePolicyResponse' smart constructor.
 data DeletePolicyResponse =
-    DeletePolicyResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeletePolicyResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeletePolicyResponse' with the minimum fields required to make a request.
 --
 deletePolicyResponse
     :: DeletePolicyResponse
 deletePolicyResponse = DeletePolicyResponse'
 
-instance NFData DeletePolicyResponse
+
+instance NFData DeletePolicyResponse where
diff --git a/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs b/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
--- a/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteScheduledAction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,23 +35,20 @@
     , DeleteScheduledActionResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteScheduledAction.
---
---
---
--- /See:/ 'deleteScheduledAction' smart constructor.
+-- | /See:/ 'deleteScheduledAction' smart constructor.
 data DeleteScheduledAction = DeleteScheduledAction'
-    { _dsaAutoScalingGroupName :: !Text
-    , _dsaScheduledActionName  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsaAutoScalingGroupName :: !Text
+  , _dsaScheduledActionName  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteScheduledAction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +61,12 @@
     -> Text -- ^ 'dsaScheduledActionName'
     -> DeleteScheduledAction
 deleteScheduledAction pAutoScalingGroupName_ pScheduledActionName_ =
-    DeleteScheduledAction'
-    { _dsaAutoScalingGroupName = pAutoScalingGroupName_
-    , _dsaScheduledActionName = pScheduledActionName_
-    }
+  DeleteScheduledAction'
+  { _dsaAutoScalingGroupName = pAutoScalingGroupName_
+  , _dsaScheduledActionName = pScheduledActionName_
+  }
 
+
 -- | The name of the Auto Scaling group.
 dsaAutoScalingGroupName :: Lens' DeleteScheduledAction Text
 dsaAutoScalingGroupName = lens _dsaAutoScalingGroupName (\ s a -> s{_dsaAutoScalingGroupName = a});
@@ -83,9 +81,9 @@
         request = postQuery autoScaling
         response = receiveNull DeleteScheduledActionResponse'
 
-instance Hashable DeleteScheduledAction
+instance Hashable DeleteScheduledAction where
 
-instance NFData DeleteScheduledAction
+instance NFData DeleteScheduledAction where
 
 instance ToHeaders DeleteScheduledAction where
         toHeaders = const mempty
@@ -103,13 +101,15 @@
 
 -- | /See:/ 'deleteScheduledActionResponse' smart constructor.
 data DeleteScheduledActionResponse =
-    DeleteScheduledActionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteScheduledActionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteScheduledActionResponse' with the minimum fields required to make a request.
 --
 deleteScheduledActionResponse
     :: DeleteScheduledActionResponse
 deleteScheduledActionResponse = DeleteScheduledActionResponse'
 
-instance NFData DeleteScheduledActionResponse
+
+instance NFData DeleteScheduledActionResponse where
diff --git a/gen/Network/AWS/AutoScaling/DeleteTags.hs b/gen/Network/AWS/AutoScaling/DeleteTags.hs
--- a/gen/Network/AWS/AutoScaling/DeleteTags.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteTags.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DeleteTags
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -34,22 +34,19 @@
     , DeleteTagsResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DeleteTags.
---
---
---
--- /See:/ 'deleteTags' smart constructor.
+-- | /See:/ 'deleteTags' smart constructor.
 newtype DeleteTags = DeleteTags'
-    { _dtTags :: [Tag]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtTags :: [Tag]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteTags' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -57,11 +54,9 @@
 -- * 'dtTags' - One or more tags.
 deleteTags
     :: DeleteTags
-deleteTags =
-    DeleteTags'
-    { _dtTags = mempty
-    }
+deleteTags = DeleteTags' {_dtTags = mempty}
 
+
 -- | One or more tags.
 dtTags :: Lens' DeleteTags [Tag]
 dtTags = lens _dtTags (\ s a -> s{_dtTags = a}) . _Coerce;
@@ -71,9 +66,9 @@
         request = postQuery autoScaling
         response = receiveNull DeleteTagsResponse'
 
-instance Hashable DeleteTags
+instance Hashable DeleteTags where
 
-instance NFData DeleteTags
+instance NFData DeleteTags where
 
 instance ToHeaders DeleteTags where
         toHeaders = const mempty
@@ -90,13 +85,15 @@
 
 -- | /See:/ 'deleteTagsResponse' smart constructor.
 data DeleteTagsResponse =
-    DeleteTagsResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteTagsResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteTagsResponse' with the minimum fields required to make a request.
 --
 deleteTagsResponse
     :: DeleteTagsResponse
 deleteTagsResponse = DeleteTagsResponse'
 
-instance NFData DeleteTagsResponse
+
+instance NFData DeleteTagsResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs b/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeAccountLimits
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,24 +40,26 @@
     , dalrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeAccountLimits' smart constructor.
 data DescribeAccountLimits =
-    DescribeAccountLimits'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeAccountLimits'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAccountLimits' with the minimum fields required to make a request.
 --
 describeAccountLimits
     :: DescribeAccountLimits
 describeAccountLimits = DescribeAccountLimits'
 
+
 instance AWSRequest DescribeAccountLimits where
         type Rs DescribeAccountLimits =
              DescribeAccountLimitsResponse
@@ -72,9 +74,9 @@
                      <*> (x .@? "MaxNumberOfLaunchConfigurations")
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeAccountLimits
+instance Hashable DescribeAccountLimits where
 
-instance NFData DescribeAccountLimits
+instance NFData DescribeAccountLimits where
 
 instance ToHeaders DescribeAccountLimits where
         toHeaders = const mempty
@@ -89,19 +91,16 @@
                  ["Action" =: ("DescribeAccountLimits" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the parameters for DescribeAccountLimits.
---
---
---
--- /See:/ 'describeAccountLimitsResponse' smart constructor.
+-- | /See:/ 'describeAccountLimitsResponse' smart constructor.
 data DescribeAccountLimitsResponse = DescribeAccountLimitsResponse'
-    { _dalrsNumberOfLaunchConfigurations    :: !(Maybe Int)
-    , _dalrsNumberOfAutoScalingGroups       :: !(Maybe Int)
-    , _dalrsMaxNumberOfAutoScalingGroups    :: !(Maybe Int)
-    , _dalrsMaxNumberOfLaunchConfigurations :: !(Maybe Int)
-    , _dalrsResponseStatus                  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dalrsNumberOfLaunchConfigurations    :: !(Maybe Int)
+  , _dalrsNumberOfAutoScalingGroups       :: !(Maybe Int)
+  , _dalrsMaxNumberOfAutoScalingGroups    :: !(Maybe Int)
+  , _dalrsMaxNumberOfLaunchConfigurations :: !(Maybe Int)
+  , _dalrsResponseStatus                  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAccountLimitsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -119,14 +118,15 @@
     :: Int -- ^ 'dalrsResponseStatus'
     -> DescribeAccountLimitsResponse
 describeAccountLimitsResponse pResponseStatus_ =
-    DescribeAccountLimitsResponse'
-    { _dalrsNumberOfLaunchConfigurations = Nothing
-    , _dalrsNumberOfAutoScalingGroups = Nothing
-    , _dalrsMaxNumberOfAutoScalingGroups = Nothing
-    , _dalrsMaxNumberOfLaunchConfigurations = Nothing
-    , _dalrsResponseStatus = pResponseStatus_
-    }
+  DescribeAccountLimitsResponse'
+  { _dalrsNumberOfLaunchConfigurations = Nothing
+  , _dalrsNumberOfAutoScalingGroups = Nothing
+  , _dalrsMaxNumberOfAutoScalingGroups = Nothing
+  , _dalrsMaxNumberOfLaunchConfigurations = Nothing
+  , _dalrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The current number of launch configurations for your AWS account.
 dalrsNumberOfLaunchConfigurations :: Lens' DescribeAccountLimitsResponse (Maybe Int)
 dalrsNumberOfLaunchConfigurations = lens _dalrsNumberOfLaunchConfigurations (\ s a -> s{_dalrsNumberOfLaunchConfigurations = a});
@@ -147,4 +147,4 @@
 dalrsResponseStatus :: Lens' DescribeAccountLimitsResponse Int
 dalrsResponseStatus = lens _dalrsResponseStatus (\ s a -> s{_dalrsResponseStatus = a});
 
-instance NFData DescribeAccountLimitsResponse
+instance NFData DescribeAccountLimitsResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs b/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeAdjustmentTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,24 +35,26 @@
     , datrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeAdjustmentTypes' smart constructor.
 data DescribeAdjustmentTypes =
-    DescribeAdjustmentTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeAdjustmentTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAdjustmentTypes' with the minimum fields required to make a request.
 --
 describeAdjustmentTypes
     :: DescribeAdjustmentTypes
 describeAdjustmentTypes = DescribeAdjustmentTypes'
 
+
 instance AWSRequest DescribeAdjustmentTypes where
         type Rs DescribeAdjustmentTypes =
              DescribeAdjustmentTypesResponse
@@ -65,9 +67,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeAdjustmentTypes
+instance Hashable DescribeAdjustmentTypes where
 
-instance NFData DescribeAdjustmentTypes
+instance NFData DescribeAdjustmentTypes where
 
 instance ToHeaders DescribeAdjustmentTypes where
         toHeaders = const mempty
@@ -83,16 +85,13 @@
                     ("DescribeAdjustmentTypes" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the parameters for DescribeAdjustmentTypes.
---
---
---
--- /See:/ 'describeAdjustmentTypesResponse' smart constructor.
+-- | /See:/ 'describeAdjustmentTypesResponse' smart constructor.
 data DescribeAdjustmentTypesResponse = DescribeAdjustmentTypesResponse'
-    { _datrsAdjustmentTypes :: !(Maybe [AdjustmentType])
-    , _datrsResponseStatus  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _datrsAdjustmentTypes :: !(Maybe [AdjustmentType])
+  , _datrsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAdjustmentTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,11 +103,10 @@
     :: Int -- ^ 'datrsResponseStatus'
     -> DescribeAdjustmentTypesResponse
 describeAdjustmentTypesResponse pResponseStatus_ =
-    DescribeAdjustmentTypesResponse'
-    { _datrsAdjustmentTypes = Nothing
-    , _datrsResponseStatus = pResponseStatus_
-    }
+  DescribeAdjustmentTypesResponse'
+  {_datrsAdjustmentTypes = Nothing, _datrsResponseStatus = pResponseStatus_}
 
+
 -- | The policy adjustment types.
 datrsAdjustmentTypes :: Lens' DescribeAdjustmentTypesResponse [AdjustmentType]
 datrsAdjustmentTypes = lens _datrsAdjustmentTypes (\ s a -> s{_datrsAdjustmentTypes = a}) . _Default . _Coerce;
@@ -117,4 +115,4 @@
 datrsResponseStatus :: Lens' DescribeAdjustmentTypesResponse Int
 datrsResponseStatus = lens _datrsResponseStatus (\ s a -> s{_datrsResponseStatus = a});
 
-instance NFData DescribeAdjustmentTypesResponse
+instance NFData DescribeAdjustmentTypesResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeAutoScalingGroups
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,25 +42,22 @@
     , dasgrsAutoScalingGroups
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeAutoScalingGroups.
---
---
---
--- /See:/ 'describeAutoScalingGroups' smart constructor.
+-- | /See:/ 'describeAutoScalingGroups' smart constructor.
 data DescribeAutoScalingGroups = DescribeAutoScalingGroups'
-    { _dasgAutoScalingGroupNames :: !(Maybe [Text])
-    , _dasgNextToken             :: !(Maybe Text)
-    , _dasgMaxRecords            :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasgAutoScalingGroupNames :: !(Maybe [Text])
+  , _dasgNextToken             :: !(Maybe Text)
+  , _dasgMaxRecords            :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingGroups' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,16 +66,17 @@
 --
 -- * 'dasgNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dasgMaxRecords' - The maximum number of items to return with this call.
+-- * 'dasgMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 describeAutoScalingGroups
     :: DescribeAutoScalingGroups
 describeAutoScalingGroups =
-    DescribeAutoScalingGroups'
-    { _dasgAutoScalingGroupNames = Nothing
-    , _dasgNextToken = Nothing
-    , _dasgMaxRecords = Nothing
-    }
+  DescribeAutoScalingGroups'
+  { _dasgAutoScalingGroupNames = Nothing
+  , _dasgNextToken = Nothing
+  , _dasgMaxRecords = Nothing
+  }
 
+
 -- | The group names. If you omit this parameter, all Auto Scaling groups are described.
 dasgAutoScalingGroupNames :: Lens' DescribeAutoScalingGroups [Text]
 dasgAutoScalingGroupNames = lens _dasgAutoScalingGroupNames (\ s a -> s{_dasgAutoScalingGroupNames = a}) . _Default . _Coerce;
@@ -87,7 +85,7 @@
 dasgNextToken :: Lens' DescribeAutoScalingGroups (Maybe Text)
 dasgNextToken = lens _dasgNextToken (\ s a -> s{_dasgNextToken = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dasgMaxRecords :: Lens' DescribeAutoScalingGroups (Maybe Int)
 dasgMaxRecords = lens _dasgMaxRecords (\ s a -> s{_dasgMaxRecords = a});
 
@@ -110,9 +108,9 @@
                      (x .@? "AutoScalingGroups" .!@ mempty >>=
                         parseXMLList "member"))
 
-instance Hashable DescribeAutoScalingGroups
+instance Hashable DescribeAutoScalingGroups where
 
-instance NFData DescribeAutoScalingGroups
+instance NFData DescribeAutoScalingGroups where
 
 instance ToHeaders DescribeAutoScalingGroups where
         toHeaders = const mempty
@@ -133,17 +131,14 @@
                "NextToken" =: _dasgNextToken,
                "MaxRecords" =: _dasgMaxRecords]
 
--- | Contains the output for DescribeAutoScalingGroups.
---
---
---
--- /See:/ 'describeAutoScalingGroupsResponse' smart constructor.
+-- | /See:/ 'describeAutoScalingGroupsResponse' smart constructor.
 data DescribeAutoScalingGroupsResponse = DescribeAutoScalingGroupsResponse'
-    { _dasgrsNextToken         :: !(Maybe Text)
-    , _dasgrsResponseStatus    :: !Int
-    , _dasgrsAutoScalingGroups :: ![AutoScalingGroup]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasgrsNextToken         :: !(Maybe Text)
+  , _dasgrsResponseStatus    :: !Int
+  , _dasgrsAutoScalingGroups :: ![AutoScalingGroup]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingGroupsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -157,12 +152,13 @@
     :: Int -- ^ 'dasgrsResponseStatus'
     -> DescribeAutoScalingGroupsResponse
 describeAutoScalingGroupsResponse pResponseStatus_ =
-    DescribeAutoScalingGroupsResponse'
-    { _dasgrsNextToken = Nothing
-    , _dasgrsResponseStatus = pResponseStatus_
-    , _dasgrsAutoScalingGroups = mempty
-    }
+  DescribeAutoScalingGroupsResponse'
+  { _dasgrsNextToken = Nothing
+  , _dasgrsResponseStatus = pResponseStatus_
+  , _dasgrsAutoScalingGroups = mempty
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dasgrsNextToken :: Lens' DescribeAutoScalingGroupsResponse (Maybe Text)
 dasgrsNextToken = lens _dasgrsNextToken (\ s a -> s{_dasgrsNextToken = a});
@@ -176,3 +172,4 @@
 dasgrsAutoScalingGroups = lens _dasgrsAutoScalingGroups (\ s a -> s{_dasgrsAutoScalingGroups = a}) . _Coerce;
 
 instance NFData DescribeAutoScalingGroupsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeAutoScalingInstances
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,25 +42,22 @@
     , dasirsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeAutoScalingInstances.
---
---
---
--- /See:/ 'describeAutoScalingInstances' smart constructor.
+-- | /See:/ 'describeAutoScalingInstances' smart constructor.
 data DescribeAutoScalingInstances = DescribeAutoScalingInstances'
-    { _dasiNextToken   :: !(Maybe Text)
-    , _dasiInstanceIds :: !(Maybe [Text])
-    , _dasiMaxRecords  :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasiNextToken   :: !(Maybe Text)
+  , _dasiInstanceIds :: !(Maybe [Text])
+  , _dasiMaxRecords  :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,16 +66,17 @@
 --
 -- * 'dasiInstanceIds' - The instances to describe; up to 50 instance IDs. If you omit this parameter, all Auto Scaling instances are described. If you specify an ID that does not exist, it is ignored with no error.
 --
--- * 'dasiMaxRecords' - The maximum number of items to return with this call.
+-- * 'dasiMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 describeAutoScalingInstances
     :: DescribeAutoScalingInstances
 describeAutoScalingInstances =
-    DescribeAutoScalingInstances'
-    { _dasiNextToken = Nothing
-    , _dasiInstanceIds = Nothing
-    , _dasiMaxRecords = Nothing
-    }
+  DescribeAutoScalingInstances'
+  { _dasiNextToken = Nothing
+  , _dasiInstanceIds = Nothing
+  , _dasiMaxRecords = Nothing
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 dasiNextToken :: Lens' DescribeAutoScalingInstances (Maybe Text)
 dasiNextToken = lens _dasiNextToken (\ s a -> s{_dasiNextToken = a});
@@ -87,7 +85,7 @@
 dasiInstanceIds :: Lens' DescribeAutoScalingInstances [Text]
 dasiInstanceIds = lens _dasiInstanceIds (\ s a -> s{_dasiInstanceIds = a}) . _Default . _Coerce;
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dasiMaxRecords :: Lens' DescribeAutoScalingInstances (Maybe Int)
 dasiMaxRecords = lens _dasiMaxRecords (\ s a -> s{_dasiMaxRecords = a});
 
@@ -113,9 +111,9 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeAutoScalingInstances
+instance Hashable DescribeAutoScalingInstances where
 
-instance NFData DescribeAutoScalingInstances
+instance NFData DescribeAutoScalingInstances where
 
 instance ToHeaders DescribeAutoScalingInstances where
         toHeaders = const mempty
@@ -134,17 +132,14 @@
                  toQuery (toQueryList "member" <$> _dasiInstanceIds),
                "MaxRecords" =: _dasiMaxRecords]
 
--- | Contains the output of DescribeAutoScalingInstances.
---
---
---
--- /See:/ 'describeAutoScalingInstancesResponse' smart constructor.
+-- | /See:/ 'describeAutoScalingInstancesResponse' smart constructor.
 data DescribeAutoScalingInstancesResponse = DescribeAutoScalingInstancesResponse'
-    { _dasirsNextToken            :: !(Maybe Text)
-    , _dasirsAutoScalingInstances :: !(Maybe [AutoScalingInstanceDetails])
-    , _dasirsResponseStatus       :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasirsNextToken            :: !(Maybe Text)
+  , _dasirsAutoScalingInstances :: !(Maybe [AutoScalingInstanceDetails])
+  , _dasirsResponseStatus       :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingInstancesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -158,12 +153,13 @@
     :: Int -- ^ 'dasirsResponseStatus'
     -> DescribeAutoScalingInstancesResponse
 describeAutoScalingInstancesResponse pResponseStatus_ =
-    DescribeAutoScalingInstancesResponse'
-    { _dasirsNextToken = Nothing
-    , _dasirsAutoScalingInstances = Nothing
-    , _dasirsResponseStatus = pResponseStatus_
-    }
+  DescribeAutoScalingInstancesResponse'
+  { _dasirsNextToken = Nothing
+  , _dasirsAutoScalingInstances = Nothing
+  , _dasirsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dasirsNextToken :: Lens' DescribeAutoScalingInstancesResponse (Maybe Text)
 dasirsNextToken = lens _dasirsNextToken (\ s a -> s{_dasirsNextToken = a});
@@ -177,3 +173,4 @@
 dasirsResponseStatus = lens _dasirsResponseStatus (\ s a -> s{_dasirsResponseStatus = a});
 
 instance NFData DescribeAutoScalingInstancesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,26 +35,29 @@
     , dasntrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeAutoScalingNotificationTypes' smart constructor.
 data DescribeAutoScalingNotificationTypes =
-    DescribeAutoScalingNotificationTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeAutoScalingNotificationTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingNotificationTypes' with the minimum fields required to make a request.
 --
 describeAutoScalingNotificationTypes
     :: DescribeAutoScalingNotificationTypes
 describeAutoScalingNotificationTypes = DescribeAutoScalingNotificationTypes'
 
+
 instance AWSRequest
-         DescribeAutoScalingNotificationTypes where
+           DescribeAutoScalingNotificationTypes
+         where
         type Rs DescribeAutoScalingNotificationTypes =
              DescribeAutoScalingNotificationTypesResponse
         request = postQuery autoScaling
@@ -68,12 +71,15 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable
-         DescribeAutoScalingNotificationTypes
+           DescribeAutoScalingNotificationTypes
+         where
 
 instance NFData DescribeAutoScalingNotificationTypes
+         where
 
 instance ToHeaders
-         DescribeAutoScalingNotificationTypes where
+           DescribeAutoScalingNotificationTypes
+         where
         toHeaders = const mempty
 
 instance ToPath DescribeAutoScalingNotificationTypes
@@ -90,16 +96,13 @@
                        ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the output of DescribeAutoScalingNotificationTypes.
---
---
---
--- /See:/ 'describeAutoScalingNotificationTypesResponse' smart constructor.
+-- | /See:/ 'describeAutoScalingNotificationTypesResponse' smart constructor.
 data DescribeAutoScalingNotificationTypesResponse = DescribeAutoScalingNotificationTypesResponse'
-    { _dasntrsAutoScalingNotificationTypes :: !(Maybe [Text])
-    , _dasntrsResponseStatus               :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dasntrsAutoScalingNotificationTypes :: !(Maybe [Text])
+  , _dasntrsResponseStatus               :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutoScalingNotificationTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,11 +114,12 @@
     :: Int -- ^ 'dasntrsResponseStatus'
     -> DescribeAutoScalingNotificationTypesResponse
 describeAutoScalingNotificationTypesResponse pResponseStatus_ =
-    DescribeAutoScalingNotificationTypesResponse'
-    { _dasntrsAutoScalingNotificationTypes = Nothing
-    , _dasntrsResponseStatus = pResponseStatus_
-    }
+  DescribeAutoScalingNotificationTypesResponse'
+  { _dasntrsAutoScalingNotificationTypes = Nothing
+  , _dasntrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The notification types.
 dasntrsAutoScalingNotificationTypes :: Lens' DescribeAutoScalingNotificationTypesResponse [Text]
 dasntrsAutoScalingNotificationTypes = lens _dasntrsAutoScalingNotificationTypes (\ s a -> s{_dasntrsAutoScalingNotificationTypes = a}) . _Default . _Coerce;
@@ -125,4 +129,5 @@
 dasntrsResponseStatus = lens _dasntrsResponseStatus (\ s a -> s{_dasntrsResponseStatus = a});
 
 instance NFData
-         DescribeAutoScalingNotificationTypesResponse
+           DescribeAutoScalingNotificationTypesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs b/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeLaunchConfigurations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,25 +42,22 @@
     , dlcrsLaunchConfigurations
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeLaunchConfigurations.
---
---
---
--- /See:/ 'describeLaunchConfigurations' smart constructor.
+-- | /See:/ 'describeLaunchConfigurations' smart constructor.
 data DescribeLaunchConfigurations = DescribeLaunchConfigurations'
-    { _dlcLaunchConfigurationNames :: !(Maybe [Text])
-    , _dlcNextToken                :: !(Maybe Text)
-    , _dlcMaxRecords               :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlcLaunchConfigurationNames :: !(Maybe [Text])
+  , _dlcNextToken                :: !(Maybe Text)
+  , _dlcMaxRecords               :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLaunchConfigurations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,16 +66,17 @@
 --
 -- * 'dlcNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dlcMaxRecords' - The maximum number of items to return with this call. The default is 100.
+-- * 'dlcMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 describeLaunchConfigurations
     :: DescribeLaunchConfigurations
 describeLaunchConfigurations =
-    DescribeLaunchConfigurations'
-    { _dlcLaunchConfigurationNames = Nothing
-    , _dlcNextToken = Nothing
-    , _dlcMaxRecords = Nothing
-    }
+  DescribeLaunchConfigurations'
+  { _dlcLaunchConfigurationNames = Nothing
+  , _dlcNextToken = Nothing
+  , _dlcMaxRecords = Nothing
+  }
 
+
 -- | The launch configuration names. If you omit this parameter, all launch configurations are described.
 dlcLaunchConfigurationNames :: Lens' DescribeLaunchConfigurations [Text]
 dlcLaunchConfigurationNames = lens _dlcLaunchConfigurationNames (\ s a -> s{_dlcLaunchConfigurationNames = a}) . _Default . _Coerce;
@@ -87,7 +85,7 @@
 dlcNextToken :: Lens' DescribeLaunchConfigurations (Maybe Text)
 dlcNextToken = lens _dlcNextToken (\ s a -> s{_dlcNextToken = a});
 
--- | The maximum number of items to return with this call. The default is 100.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dlcMaxRecords :: Lens' DescribeLaunchConfigurations (Maybe Int)
 dlcMaxRecords = lens _dlcMaxRecords (\ s a -> s{_dlcMaxRecords = a});
 
@@ -112,9 +110,9 @@
                      (x .@? "LaunchConfigurations" .!@ mempty >>=
                         parseXMLList "member"))
 
-instance Hashable DescribeLaunchConfigurations
+instance Hashable DescribeLaunchConfigurations where
 
-instance NFData DescribeLaunchConfigurations
+instance NFData DescribeLaunchConfigurations where
 
 instance ToHeaders DescribeLaunchConfigurations where
         toHeaders = const mempty
@@ -135,17 +133,14 @@
                "NextToken" =: _dlcNextToken,
                "MaxRecords" =: _dlcMaxRecords]
 
--- | Contains the output of DescribeLaunchConfigurations.
---
---
---
--- /See:/ 'describeLaunchConfigurationsResponse' smart constructor.
+-- | /See:/ 'describeLaunchConfigurationsResponse' smart constructor.
 data DescribeLaunchConfigurationsResponse = DescribeLaunchConfigurationsResponse'
-    { _dlcrsNextToken            :: !(Maybe Text)
-    , _dlcrsResponseStatus       :: !Int
-    , _dlcrsLaunchConfigurations :: ![LaunchConfiguration]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlcrsNextToken            :: !(Maybe Text)
+  , _dlcrsResponseStatus       :: !Int
+  , _dlcrsLaunchConfigurations :: ![LaunchConfiguration]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLaunchConfigurationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -159,12 +154,13 @@
     :: Int -- ^ 'dlcrsResponseStatus'
     -> DescribeLaunchConfigurationsResponse
 describeLaunchConfigurationsResponse pResponseStatus_ =
-    DescribeLaunchConfigurationsResponse'
-    { _dlcrsNextToken = Nothing
-    , _dlcrsResponseStatus = pResponseStatus_
-    , _dlcrsLaunchConfigurations = mempty
-    }
+  DescribeLaunchConfigurationsResponse'
+  { _dlcrsNextToken = Nothing
+  , _dlcrsResponseStatus = pResponseStatus_
+  , _dlcrsLaunchConfigurations = mempty
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dlcrsNextToken :: Lens' DescribeLaunchConfigurationsResponse (Maybe Text)
 dlcrsNextToken = lens _dlcrsNextToken (\ s a -> s{_dlcrsNextToken = a});
@@ -178,3 +174,4 @@
 dlcrsLaunchConfigurations = lens _dlcrsLaunchConfigurations (\ s a -> s{_dlcrsLaunchConfigurations = a}) . _Coerce;
 
 instance NFData DescribeLaunchConfigurationsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs b/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeLifecycleHookTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,24 +35,26 @@
     , dlhtrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeLifecycleHookTypes' smart constructor.
 data DescribeLifecycleHookTypes =
-    DescribeLifecycleHookTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeLifecycleHookTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLifecycleHookTypes' with the minimum fields required to make a request.
 --
 describeLifecycleHookTypes
     :: DescribeLifecycleHookTypes
 describeLifecycleHookTypes = DescribeLifecycleHookTypes'
 
+
 instance AWSRequest DescribeLifecycleHookTypes where
         type Rs DescribeLifecycleHookTypes =
              DescribeLifecycleHookTypesResponse
@@ -66,9 +68,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeLifecycleHookTypes
+instance Hashable DescribeLifecycleHookTypes where
 
-instance NFData DescribeLifecycleHookTypes
+instance NFData DescribeLifecycleHookTypes where
 
 instance ToHeaders DescribeLifecycleHookTypes where
         toHeaders = const mempty
@@ -84,16 +86,13 @@
                     ("DescribeLifecycleHookTypes" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the output of DescribeLifecycleHookTypes.
---
---
---
--- /See:/ 'describeLifecycleHookTypesResponse' smart constructor.
+-- | /See:/ 'describeLifecycleHookTypesResponse' smart constructor.
 data DescribeLifecycleHookTypesResponse = DescribeLifecycleHookTypesResponse'
-    { _dlhtrsLifecycleHookTypes :: !(Maybe [Text])
-    , _dlhtrsResponseStatus     :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlhtrsLifecycleHookTypes :: !(Maybe [Text])
+  , _dlhtrsResponseStatus     :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLifecycleHookTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,11 +104,12 @@
     :: Int -- ^ 'dlhtrsResponseStatus'
     -> DescribeLifecycleHookTypesResponse
 describeLifecycleHookTypesResponse pResponseStatus_ =
-    DescribeLifecycleHookTypesResponse'
-    { _dlhtrsLifecycleHookTypes = Nothing
-    , _dlhtrsResponseStatus = pResponseStatus_
-    }
+  DescribeLifecycleHookTypesResponse'
+  { _dlhtrsLifecycleHookTypes = Nothing
+  , _dlhtrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The lifecycle hook types.
 dlhtrsLifecycleHookTypes :: Lens' DescribeLifecycleHookTypesResponse [Text]
 dlhtrsLifecycleHookTypes = lens _dlhtrsLifecycleHookTypes (\ s a -> s{_dlhtrsLifecycleHookTypes = a}) . _Default . _Coerce;
@@ -119,3 +119,4 @@
 dlhtrsResponseStatus = lens _dlhtrsResponseStatus (\ s a -> s{_dlhtrsResponseStatus = a});
 
 instance NFData DescribeLifecycleHookTypesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs b/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeLifecycleHooks
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,23 +38,20 @@
     , dlhrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeLifecycleHooks.
---
---
---
--- /See:/ 'describeLifecycleHooks' smart constructor.
+-- | /See:/ 'describeLifecycleHooks' smart constructor.
 data DescribeLifecycleHooks = DescribeLifecycleHooks'
-    { _dlhLifecycleHookNames   :: !(Maybe [Text])
-    , _dlhAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlhLifecycleHookNames   :: !(Maybe [Text])
+  , _dlhAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLifecycleHooks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,11 +63,12 @@
     :: Text -- ^ 'dlhAutoScalingGroupName'
     -> DescribeLifecycleHooks
 describeLifecycleHooks pAutoScalingGroupName_ =
-    DescribeLifecycleHooks'
-    { _dlhLifecycleHookNames = Nothing
-    , _dlhAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DescribeLifecycleHooks'
+  { _dlhLifecycleHookNames = Nothing
+  , _dlhAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | The names of one or more lifecycle hooks. If you omit this parameter, all lifecycle hooks are described.
 dlhLifecycleHookNames :: Lens' DescribeLifecycleHooks [Text]
 dlhLifecycleHookNames = lens _dlhLifecycleHookNames (\ s a -> s{_dlhLifecycleHookNames = a}) . _Default . _Coerce;
@@ -91,9 +89,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeLifecycleHooks
+instance Hashable DescribeLifecycleHooks where
 
-instance NFData DescribeLifecycleHooks
+instance NFData DescribeLifecycleHooks where
 
 instance ToHeaders DescribeLifecycleHooks where
         toHeaders = const mempty
@@ -112,16 +110,13 @@
                    (toQueryList "member" <$> _dlhLifecycleHookNames),
                "AutoScalingGroupName" =: _dlhAutoScalingGroupName]
 
--- | Contains the output of DescribeLifecycleHooks.
---
---
---
--- /See:/ 'describeLifecycleHooksResponse' smart constructor.
+-- | /See:/ 'describeLifecycleHooksResponse' smart constructor.
 data DescribeLifecycleHooksResponse = DescribeLifecycleHooksResponse'
-    { _dlhrsLifecycleHooks :: !(Maybe [LifecycleHook])
-    , _dlhrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlhrsLifecycleHooks :: !(Maybe [LifecycleHook])
+  , _dlhrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLifecycleHooksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -133,11 +128,10 @@
     :: Int -- ^ 'dlhrsResponseStatus'
     -> DescribeLifecycleHooksResponse
 describeLifecycleHooksResponse pResponseStatus_ =
-    DescribeLifecycleHooksResponse'
-    { _dlhrsLifecycleHooks = Nothing
-    , _dlhrsResponseStatus = pResponseStatus_
-    }
+  DescribeLifecycleHooksResponse'
+  {_dlhrsLifecycleHooks = Nothing, _dlhrsResponseStatus = pResponseStatus_}
 
+
 -- | The lifecycle hooks for the specified group.
 dlhrsLifecycleHooks :: Lens' DescribeLifecycleHooksResponse [LifecycleHook]
 dlhrsLifecycleHooks = lens _dlhrsLifecycleHooks (\ s a -> s{_dlhrsLifecycleHooks = a}) . _Default . _Coerce;
@@ -146,4 +140,4 @@
 dlhrsResponseStatus :: Lens' DescribeLifecycleHooksResponse Int
 dlhrsResponseStatus = lens _dlhrsResponseStatus (\ s a -> s{_dlhrsResponseStatus = a});
 
-instance NFData DescribeLifecycleHooksResponse
+instance NFData DescribeLifecycleHooksResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeLoadBalancerTargetGroups.hs b/gen/Network/AWS/AutoScaling/DescribeLoadBalancerTargetGroups.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLoadBalancerTargetGroups.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLoadBalancerTargetGroups.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeLoadBalancerTargetGroups
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,48 +40,46 @@
     , dlbtgsrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeLoadBalancerTargetGroups.
---
---
---
--- /See:/ 'describeLoadBalancerTargetGroups' smart constructor.
+-- | /See:/ 'describeLoadBalancerTargetGroups' smart constructor.
 data DescribeLoadBalancerTargetGroups = DescribeLoadBalancerTargetGroups'
-    { _dlbtgsNextToken            :: !(Maybe Text)
-    , _dlbtgsMaxRecords           :: !(Maybe Int)
-    , _dlbtgsAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbtgsNextToken            :: !(Maybe Text)
+  , _dlbtgsMaxRecords           :: !(Maybe Int)
+  , _dlbtgsAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBalancerTargetGroups' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dlbtgsNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dlbtgsMaxRecords' - The maximum number of items to return with this call.
+-- * 'dlbtgsMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 --
 -- * 'dlbtgsAutoScalingGroupName' - The name of the Auto Scaling group.
 describeLoadBalancerTargetGroups
     :: Text -- ^ 'dlbtgsAutoScalingGroupName'
     -> DescribeLoadBalancerTargetGroups
 describeLoadBalancerTargetGroups pAutoScalingGroupName_ =
-    DescribeLoadBalancerTargetGroups'
-    { _dlbtgsNextToken = Nothing
-    , _dlbtgsMaxRecords = Nothing
-    , _dlbtgsAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DescribeLoadBalancerTargetGroups'
+  { _dlbtgsNextToken = Nothing
+  , _dlbtgsMaxRecords = Nothing
+  , _dlbtgsAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 dlbtgsNextToken :: Lens' DescribeLoadBalancerTargetGroups (Maybe Text)
 dlbtgsNextToken = lens _dlbtgsNextToken (\ s a -> s{_dlbtgsNextToken = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dlbtgsMaxRecords :: Lens' DescribeLoadBalancerTargetGroups (Maybe Int)
 dlbtgsMaxRecords = lens _dlbtgsMaxRecords (\ s a -> s{_dlbtgsMaxRecords = a});
 
@@ -105,8 +103,10 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeLoadBalancerTargetGroups
+         where
 
 instance NFData DescribeLoadBalancerTargetGroups
+         where
 
 instance ToHeaders DescribeLoadBalancerTargetGroups
          where
@@ -128,17 +128,14 @@
                "AutoScalingGroupName" =:
                  _dlbtgsAutoScalingGroupName]
 
--- | Contains the output of DescribeLoadBalancerTargetGroups.
---
---
---
--- /See:/ 'describeLoadBalancerTargetGroupsResponse' smart constructor.
+-- | /See:/ 'describeLoadBalancerTargetGroupsResponse' smart constructor.
 data DescribeLoadBalancerTargetGroupsResponse = DescribeLoadBalancerTargetGroupsResponse'
-    { _dlbtgsrsLoadBalancerTargetGroups :: !(Maybe [LoadBalancerTargetGroupState])
-    , _dlbtgsrsNextToken                :: !(Maybe Text)
-    , _dlbtgsrsResponseStatus           :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbtgsrsLoadBalancerTargetGroups :: !(Maybe [LoadBalancerTargetGroupState])
+  , _dlbtgsrsNextToken                :: !(Maybe Text)
+  , _dlbtgsrsResponseStatus           :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBalancerTargetGroupsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -152,12 +149,13 @@
     :: Int -- ^ 'dlbtgsrsResponseStatus'
     -> DescribeLoadBalancerTargetGroupsResponse
 describeLoadBalancerTargetGroupsResponse pResponseStatus_ =
-    DescribeLoadBalancerTargetGroupsResponse'
-    { _dlbtgsrsLoadBalancerTargetGroups = Nothing
-    , _dlbtgsrsNextToken = Nothing
-    , _dlbtgsrsResponseStatus = pResponseStatus_
-    }
+  DescribeLoadBalancerTargetGroupsResponse'
+  { _dlbtgsrsLoadBalancerTargetGroups = Nothing
+  , _dlbtgsrsNextToken = Nothing
+  , _dlbtgsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the target groups.
 dlbtgsrsLoadBalancerTargetGroups :: Lens' DescribeLoadBalancerTargetGroupsResponse [LoadBalancerTargetGroupState]
 dlbtgsrsLoadBalancerTargetGroups = lens _dlbtgsrsLoadBalancerTargetGroups (\ s a -> s{_dlbtgsrsLoadBalancerTargetGroups = a}) . _Default . _Coerce;
@@ -171,4 +169,5 @@
 dlbtgsrsResponseStatus = lens _dlbtgsrsResponseStatus (\ s a -> s{_dlbtgsrsResponseStatus = a});
 
 instance NFData
-         DescribeLoadBalancerTargetGroupsResponse
+           DescribeLoadBalancerTargetGroupsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs b/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeLoadBalancers
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Describes the load balancers for the specified Auto Scaling group.
 --
 --
--- Note that this operation describes only Classic load balancers. If you have Application load balancers, use 'DescribeLoadBalancerTargetGroups' instead.
+-- Note that this operation describes only Classic Load Balancers. If you have Application Load Balancers, use 'DescribeLoadBalancerTargetGroups' instead.
 --
 module Network.AWS.AutoScaling.DescribeLoadBalancers
     (
@@ -42,48 +42,46 @@
     , dlbrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeLoadBalancers.
---
---
---
--- /See:/ 'describeLoadBalancers' smart constructor.
+-- | /See:/ 'describeLoadBalancers' smart constructor.
 data DescribeLoadBalancers = DescribeLoadBalancers'
-    { _dlbNextToken            :: !(Maybe Text)
-    , _dlbMaxRecords           :: !(Maybe Int)
-    , _dlbAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbNextToken            :: !(Maybe Text)
+  , _dlbMaxRecords           :: !(Maybe Int)
+  , _dlbAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBalancers' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dlbNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dlbMaxRecords' - The maximum number of items to return with this call.
+-- * 'dlbMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 --
 -- * 'dlbAutoScalingGroupName' - The name of the group.
 describeLoadBalancers
     :: Text -- ^ 'dlbAutoScalingGroupName'
     -> DescribeLoadBalancers
 describeLoadBalancers pAutoScalingGroupName_ =
-    DescribeLoadBalancers'
-    { _dlbNextToken = Nothing
-    , _dlbMaxRecords = Nothing
-    , _dlbAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DescribeLoadBalancers'
+  { _dlbNextToken = Nothing
+  , _dlbMaxRecords = Nothing
+  , _dlbAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 dlbNextToken :: Lens' DescribeLoadBalancers (Maybe Text)
 dlbNextToken = lens _dlbNextToken (\ s a -> s{_dlbNextToken = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dlbMaxRecords :: Lens' DescribeLoadBalancers (Maybe Int)
 dlbMaxRecords = lens _dlbMaxRecords (\ s a -> s{_dlbMaxRecords = a});
 
@@ -104,9 +102,9 @@
                      <*> (x .@? "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeLoadBalancers
+instance Hashable DescribeLoadBalancers where
 
-instance NFData DescribeLoadBalancers
+instance NFData DescribeLoadBalancers where
 
 instance ToHeaders DescribeLoadBalancers where
         toHeaders = const mempty
@@ -123,17 +121,14 @@
                "MaxRecords" =: _dlbMaxRecords,
                "AutoScalingGroupName" =: _dlbAutoScalingGroupName]
 
--- | Contains the output of DescribeLoadBalancers.
---
---
---
--- /See:/ 'describeLoadBalancersResponse' smart constructor.
+-- | /See:/ 'describeLoadBalancersResponse' smart constructor.
 data DescribeLoadBalancersResponse = DescribeLoadBalancersResponse'
-    { _dlbrsLoadBalancers  :: !(Maybe [LoadBalancerState])
-    , _dlbrsNextToken      :: !(Maybe Text)
-    , _dlbrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbrsLoadBalancers  :: !(Maybe [LoadBalancerState])
+  , _dlbrsNextToken      :: !(Maybe Text)
+  , _dlbrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBalancersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -147,12 +142,13 @@
     :: Int -- ^ 'dlbrsResponseStatus'
     -> DescribeLoadBalancersResponse
 describeLoadBalancersResponse pResponseStatus_ =
-    DescribeLoadBalancersResponse'
-    { _dlbrsLoadBalancers = Nothing
-    , _dlbrsNextToken = Nothing
-    , _dlbrsResponseStatus = pResponseStatus_
-    }
+  DescribeLoadBalancersResponse'
+  { _dlbrsLoadBalancers = Nothing
+  , _dlbrsNextToken = Nothing
+  , _dlbrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The load balancers.
 dlbrsLoadBalancers :: Lens' DescribeLoadBalancersResponse [LoadBalancerState]
 dlbrsLoadBalancers = lens _dlbrsLoadBalancers (\ s a -> s{_dlbrsLoadBalancers = a}) . _Default . _Coerce;
@@ -165,4 +161,4 @@
 dlbrsResponseStatus :: Lens' DescribeLoadBalancersResponse Int
 dlbrsResponseStatus = lens _dlbrsResponseStatus (\ s a -> s{_dlbrsResponseStatus = a});
 
-instance NFData DescribeLoadBalancersResponse
+instance NFData DescribeLoadBalancersResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs b/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeMetricCollectionTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,24 +38,26 @@
     , dmctrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeMetricCollectionTypes' smart constructor.
 data DescribeMetricCollectionTypes =
-    DescribeMetricCollectionTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeMetricCollectionTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMetricCollectionTypes' with the minimum fields required to make a request.
 --
 describeMetricCollectionTypes
     :: DescribeMetricCollectionTypes
 describeMetricCollectionTypes = DescribeMetricCollectionTypes'
 
+
 instance AWSRequest DescribeMetricCollectionTypes
          where
         type Rs DescribeMetricCollectionTypes =
@@ -73,9 +75,9 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeMetricCollectionTypes
+instance Hashable DescribeMetricCollectionTypes where
 
-instance NFData DescribeMetricCollectionTypes
+instance NFData DescribeMetricCollectionTypes where
 
 instance ToHeaders DescribeMetricCollectionTypes
          where
@@ -92,17 +94,14 @@
                     ("DescribeMetricCollectionTypes" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the output of DescribeMetricsCollectionTypes.
---
---
---
--- /See:/ 'describeMetricCollectionTypesResponse' smart constructor.
+-- | /See:/ 'describeMetricCollectionTypesResponse' smart constructor.
 data DescribeMetricCollectionTypesResponse = DescribeMetricCollectionTypesResponse'
-    { _dmctrsMetrics        :: !(Maybe [MetricCollectionType])
-    , _dmctrsGranularities  :: !(Maybe [MetricGranularityType])
-    , _dmctrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmctrsMetrics        :: !(Maybe [MetricCollectionType])
+  , _dmctrsGranularities  :: !(Maybe [MetricGranularityType])
+  , _dmctrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMetricCollectionTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -116,12 +115,13 @@
     :: Int -- ^ 'dmctrsResponseStatus'
     -> DescribeMetricCollectionTypesResponse
 describeMetricCollectionTypesResponse pResponseStatus_ =
-    DescribeMetricCollectionTypesResponse'
-    { _dmctrsMetrics = Nothing
-    , _dmctrsGranularities = Nothing
-    , _dmctrsResponseStatus = pResponseStatus_
-    }
+  DescribeMetricCollectionTypesResponse'
+  { _dmctrsMetrics = Nothing
+  , _dmctrsGranularities = Nothing
+  , _dmctrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | One or more metrics.
 dmctrsMetrics :: Lens' DescribeMetricCollectionTypesResponse [MetricCollectionType]
 dmctrsMetrics = lens _dmctrsMetrics (\ s a -> s{_dmctrsMetrics = a}) . _Default . _Coerce;
@@ -135,3 +135,4 @@
 dmctrsResponseStatus = lens _dmctrsResponseStatus (\ s a -> s{_dmctrsResponseStatus = a});
 
 instance NFData DescribeMetricCollectionTypesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs b/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
--- a/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeNotificationConfigurations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,25 +42,22 @@
     , dncrsNotificationConfigurations
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeNotificationConfigurations.
---
---
---
--- /See:/ 'describeNotificationConfigurations' smart constructor.
+-- | /See:/ 'describeNotificationConfigurations' smart constructor.
 data DescribeNotificationConfigurations = DescribeNotificationConfigurations'
-    { _dncAutoScalingGroupNames :: !(Maybe [Text])
-    , _dncNextToken             :: !(Maybe Text)
-    , _dncMaxRecords            :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dncAutoScalingGroupNames :: !(Maybe [Text])
+  , _dncNextToken             :: !(Maybe Text)
+  , _dncMaxRecords            :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeNotificationConfigurations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,16 +66,17 @@
 --
 -- * 'dncNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dncMaxRecords' - The maximum number of items to return with this call.
+-- * 'dncMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 describeNotificationConfigurations
     :: DescribeNotificationConfigurations
 describeNotificationConfigurations =
-    DescribeNotificationConfigurations'
-    { _dncAutoScalingGroupNames = Nothing
-    , _dncNextToken = Nothing
-    , _dncMaxRecords = Nothing
-    }
+  DescribeNotificationConfigurations'
+  { _dncAutoScalingGroupNames = Nothing
+  , _dncNextToken = Nothing
+  , _dncMaxRecords = Nothing
+  }
 
+
 -- | The name of the group.
 dncAutoScalingGroupNames :: Lens' DescribeNotificationConfigurations [Text]
 dncAutoScalingGroupNames = lens _dncAutoScalingGroupNames (\ s a -> s{_dncAutoScalingGroupNames = a}) . _Default . _Coerce;
@@ -87,7 +85,7 @@
 dncNextToken :: Lens' DescribeNotificationConfigurations (Maybe Text)
 dncNextToken = lens _dncNextToken (\ s a -> s{_dncNextToken = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dncMaxRecords :: Lens' DescribeNotificationConfigurations (Maybe Int)
 dncMaxRecords = lens _dncMaxRecords (\ s a -> s{_dncMaxRecords = a});
 
@@ -101,7 +99,8 @@
             Just $ rq & dncNextToken .~ rs ^. dncrsNextToken
 
 instance AWSRequest
-         DescribeNotificationConfigurations where
+           DescribeNotificationConfigurations
+         where
         type Rs DescribeNotificationConfigurations =
              DescribeNotificationConfigurationsResponse
         request = postQuery autoScaling
@@ -115,8 +114,10 @@
                         parseXMLList "member"))
 
 instance Hashable DescribeNotificationConfigurations
+         where
 
 instance NFData DescribeNotificationConfigurations
+         where
 
 instance ToHeaders DescribeNotificationConfigurations
          where
@@ -139,17 +140,14 @@
                "NextToken" =: _dncNextToken,
                "MaxRecords" =: _dncMaxRecords]
 
--- | Contains the output from DescribeNotificationConfigurations.
---
---
---
--- /See:/ 'describeNotificationConfigurationsResponse' smart constructor.
+-- | /See:/ 'describeNotificationConfigurationsResponse' smart constructor.
 data DescribeNotificationConfigurationsResponse = DescribeNotificationConfigurationsResponse'
-    { _dncrsNextToken                  :: !(Maybe Text)
-    , _dncrsResponseStatus             :: !Int
-    , _dncrsNotificationConfigurations :: ![NotificationConfiguration]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dncrsNextToken                  :: !(Maybe Text)
+  , _dncrsResponseStatus             :: !Int
+  , _dncrsNotificationConfigurations :: ![NotificationConfiguration]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeNotificationConfigurationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -163,12 +161,13 @@
     :: Int -- ^ 'dncrsResponseStatus'
     -> DescribeNotificationConfigurationsResponse
 describeNotificationConfigurationsResponse pResponseStatus_ =
-    DescribeNotificationConfigurationsResponse'
-    { _dncrsNextToken = Nothing
-    , _dncrsResponseStatus = pResponseStatus_
-    , _dncrsNotificationConfigurations = mempty
-    }
+  DescribeNotificationConfigurationsResponse'
+  { _dncrsNextToken = Nothing
+  , _dncrsResponseStatus = pResponseStatus_
+  , _dncrsNotificationConfigurations = mempty
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dncrsNextToken :: Lens' DescribeNotificationConfigurationsResponse (Maybe Text)
 dncrsNextToken = lens _dncrsNextToken (\ s a -> s{_dncrsNextToken = a});
@@ -182,4 +181,5 @@
 dncrsNotificationConfigurations = lens _dncrsNotificationConfigurations (\ s a -> s{_dncrsNotificationConfigurations = a}) . _Coerce;
 
 instance NFData
-         DescribeNotificationConfigurationsResponse
+           DescribeNotificationConfigurationsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribePolicies.hs b/gen/Network/AWS/AutoScaling/DescribePolicies.hs
--- a/gen/Network/AWS/AutoScaling/DescribePolicies.hs
+++ b/gen/Network/AWS/AutoScaling/DescribePolicies.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribePolicies
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -44,27 +44,24 @@
     , dprsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribePolicies.
---
---
---
--- /See:/ 'describePolicies' smart constructor.
+-- | /See:/ 'describePolicies' smart constructor.
 data DescribePolicies = DescribePolicies'
-    { _dpsPolicyNames          :: !(Maybe [Text])
-    , _dpsNextToken            :: !(Maybe Text)
-    , _dpsAutoScalingGroupName :: !(Maybe Text)
-    , _dpsMaxRecords           :: !(Maybe Int)
-    , _dpsPolicyTypes          :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpsPolicyNames          :: !(Maybe [Text])
+  , _dpsNextToken            :: !(Maybe Text)
+  , _dpsAutoScalingGroupName :: !(Maybe Text)
+  , _dpsMaxRecords           :: !(Maybe Int)
+  , _dpsPolicyTypes          :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribePolicies' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,20 +72,21 @@
 --
 -- * 'dpsAutoScalingGroupName' - The name of the group.
 --
--- * 'dpsMaxRecords' - The maximum number of items to be returned with each call.
+-- * 'dpsMaxRecords' - The maximum number of items to be returned with each call. The default value is 50 and the maximum value is 100.
 --
 -- * 'dpsPolicyTypes' - One or more policy types. Valid values are @SimpleScaling@ and @StepScaling@ .
 describePolicies
     :: DescribePolicies
 describePolicies =
-    DescribePolicies'
-    { _dpsPolicyNames = Nothing
-    , _dpsNextToken = Nothing
-    , _dpsAutoScalingGroupName = Nothing
-    , _dpsMaxRecords = Nothing
-    , _dpsPolicyTypes = Nothing
-    }
+  DescribePolicies'
+  { _dpsPolicyNames = Nothing
+  , _dpsNextToken = Nothing
+  , _dpsAutoScalingGroupName = Nothing
+  , _dpsMaxRecords = Nothing
+  , _dpsPolicyTypes = Nothing
+  }
 
+
 -- | One or more policy names or policy ARNs to be described. If you omit this parameter, all policy names are described. If an group name is provided, the results are limited to that group. This list is limited to 50 items. If you specify an unknown policy name, it is ignored with no error.
 dpsPolicyNames :: Lens' DescribePolicies [Text]
 dpsPolicyNames = lens _dpsPolicyNames (\ s a -> s{_dpsPolicyNames = a}) . _Default . _Coerce;
@@ -101,7 +99,7 @@
 dpsAutoScalingGroupName :: Lens' DescribePolicies (Maybe Text)
 dpsAutoScalingGroupName = lens _dpsAutoScalingGroupName (\ s a -> s{_dpsAutoScalingGroupName = a});
 
--- | The maximum number of items to be returned with each call.
+-- | The maximum number of items to be returned with each call. The default value is 50 and the maximum value is 100.
 dpsMaxRecords :: Lens' DescribePolicies (Maybe Int)
 dpsMaxRecords = lens _dpsMaxRecords (\ s a -> s{_dpsMaxRecords = a});
 
@@ -128,9 +126,9 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribePolicies
+instance Hashable DescribePolicies where
 
-instance NFData DescribePolicies
+instance NFData DescribePolicies where
 
 instance ToHeaders DescribePolicies where
         toHeaders = const mempty
@@ -151,17 +149,14 @@
                "PolicyTypes" =:
                  toQuery (toQueryList "member" <$> _dpsPolicyTypes)]
 
--- | Contains the output of DescribePolicies.
---
---
---
--- /See:/ 'describePoliciesResponse' smart constructor.
+-- | /See:/ 'describePoliciesResponse' smart constructor.
 data DescribePoliciesResponse = DescribePoliciesResponse'
-    { _dprsNextToken       :: !(Maybe Text)
-    , _dprsScalingPolicies :: !(Maybe [ScalingPolicy])
-    , _dprsResponseStatus  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dprsNextToken       :: !(Maybe Text)
+  , _dprsScalingPolicies :: !(Maybe [ScalingPolicy])
+  , _dprsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribePoliciesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -175,12 +170,13 @@
     :: Int -- ^ 'dprsResponseStatus'
     -> DescribePoliciesResponse
 describePoliciesResponse pResponseStatus_ =
-    DescribePoliciesResponse'
-    { _dprsNextToken = Nothing
-    , _dprsScalingPolicies = Nothing
-    , _dprsResponseStatus = pResponseStatus_
-    }
+  DescribePoliciesResponse'
+  { _dprsNextToken = Nothing
+  , _dprsScalingPolicies = Nothing
+  , _dprsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dprsNextToken :: Lens' DescribePoliciesResponse (Maybe Text)
 dprsNextToken = lens _dprsNextToken (\ s a -> s{_dprsNextToken = a});
@@ -193,4 +189,4 @@
 dprsResponseStatus :: Lens' DescribePoliciesResponse Int
 dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a});
 
-instance NFData DescribePoliciesResponse
+instance NFData DescribePoliciesResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs b/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeScalingActivities
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -43,26 +43,23 @@
     , dsasrsActivities
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeScalingActivities.
---
---
---
--- /See:/ 'describeScalingActivities' smart constructor.
+-- | /See:/ 'describeScalingActivities' smart constructor.
 data DescribeScalingActivities = DescribeScalingActivities'
-    { _desNextToken            :: !(Maybe Text)
-    , _desAutoScalingGroupName :: !(Maybe Text)
-    , _desMaxRecords           :: !(Maybe Int)
-    , _desActivityIds          :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _desNextToken            :: !(Maybe Text)
+  , _desAutoScalingGroupName :: !(Maybe Text)
+  , _desMaxRecords           :: !(Maybe Int)
+  , _desActivityIds          :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScalingActivities' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,19 +68,20 @@
 --
 -- * 'desAutoScalingGroupName' - The name of the group.
 --
--- * 'desMaxRecords' - The maximum number of items to return with this call.
+-- * 'desMaxRecords' - The maximum number of items to return with this call. The default value is 100.
 --
 -- * 'desActivityIds' - The activity IDs of the desired scaling activities. If you omit this parameter, all activities for the past six weeks are described. If you specify an Auto Scaling group, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error.
 describeScalingActivities
     :: DescribeScalingActivities
 describeScalingActivities =
-    DescribeScalingActivities'
-    { _desNextToken = Nothing
-    , _desAutoScalingGroupName = Nothing
-    , _desMaxRecords = Nothing
-    , _desActivityIds = Nothing
-    }
+  DescribeScalingActivities'
+  { _desNextToken = Nothing
+  , _desAutoScalingGroupName = Nothing
+  , _desMaxRecords = Nothing
+  , _desActivityIds = Nothing
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 desNextToken :: Lens' DescribeScalingActivities (Maybe Text)
 desNextToken = lens _desNextToken (\ s a -> s{_desNextToken = a});
@@ -92,7 +90,7 @@
 desAutoScalingGroupName :: Lens' DescribeScalingActivities (Maybe Text)
 desAutoScalingGroupName = lens _desAutoScalingGroupName (\ s a -> s{_desAutoScalingGroupName = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 100.
 desMaxRecords :: Lens' DescribeScalingActivities (Maybe Int)
 desMaxRecords = lens _desMaxRecords (\ s a -> s{_desMaxRecords = a});
 
@@ -119,9 +117,9 @@
                      (x .@? "Activities" .!@ mempty >>=
                         parseXMLList "member"))
 
-instance Hashable DescribeScalingActivities
+instance Hashable DescribeScalingActivities where
 
-instance NFData DescribeScalingActivities
+instance NFData DescribeScalingActivities where
 
 instance ToHeaders DescribeScalingActivities where
         toHeaders = const mempty
@@ -141,17 +139,14 @@
                "ActivityIds" =:
                  toQuery (toQueryList "member" <$> _desActivityIds)]
 
--- | Contains the output of DescribeScalingActivities.
---
---
---
--- /See:/ 'describeScalingActivitiesResponse' smart constructor.
+-- | /See:/ 'describeScalingActivitiesResponse' smart constructor.
 data DescribeScalingActivitiesResponse = DescribeScalingActivitiesResponse'
-    { _dsasrsNextToken      :: !(Maybe Text)
-    , _dsasrsResponseStatus :: !Int
-    , _dsasrsActivities     :: ![Activity]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsasrsNextToken      :: !(Maybe Text)
+  , _dsasrsResponseStatus :: !Int
+  , _dsasrsActivities     :: ![Activity]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScalingActivitiesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -165,12 +160,13 @@
     :: Int -- ^ 'dsasrsResponseStatus'
     -> DescribeScalingActivitiesResponse
 describeScalingActivitiesResponse pResponseStatus_ =
-    DescribeScalingActivitiesResponse'
-    { _dsasrsNextToken = Nothing
-    , _dsasrsResponseStatus = pResponseStatus_
-    , _dsasrsActivities = mempty
-    }
+  DescribeScalingActivitiesResponse'
+  { _dsasrsNextToken = Nothing
+  , _dsasrsResponseStatus = pResponseStatus_
+  , _dsasrsActivities = mempty
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dsasrsNextToken :: Lens' DescribeScalingActivitiesResponse (Maybe Text)
 dsasrsNextToken = lens _dsasrsNextToken (\ s a -> s{_dsasrsNextToken = a});
@@ -184,3 +180,4 @@
 dsasrsActivities = lens _dsasrsActivities (\ s a -> s{_dsasrsActivities = a}) . _Coerce;
 
 instance NFData DescribeScalingActivitiesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs b/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeScalingProcessTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,24 +35,26 @@
     , dsptrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeScalingProcessTypes' smart constructor.
 data DescribeScalingProcessTypes =
-    DescribeScalingProcessTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeScalingProcessTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScalingProcessTypes' with the minimum fields required to make a request.
 --
 describeScalingProcessTypes
     :: DescribeScalingProcessTypes
 describeScalingProcessTypes = DescribeScalingProcessTypes'
 
+
 instance AWSRequest DescribeScalingProcessTypes where
         type Rs DescribeScalingProcessTypes =
              DescribeScalingProcessTypesResponse
@@ -66,9 +68,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeScalingProcessTypes
+instance Hashable DescribeScalingProcessTypes where
 
-instance NFData DescribeScalingProcessTypes
+instance NFData DescribeScalingProcessTypes where
 
 instance ToHeaders DescribeScalingProcessTypes where
         toHeaders = const mempty
@@ -84,16 +86,13 @@
                     ("DescribeScalingProcessTypes" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the output of DescribeScalingProcessTypes.
---
---
---
--- /See:/ 'describeScalingProcessTypesResponse' smart constructor.
+-- | /See:/ 'describeScalingProcessTypesResponse' smart constructor.
 data DescribeScalingProcessTypesResponse = DescribeScalingProcessTypesResponse'
-    { _dsptrsProcesses      :: !(Maybe [ProcessType])
-    , _dsptrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsptrsProcesses      :: !(Maybe [ProcessType])
+  , _dsptrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScalingProcessTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,11 +104,10 @@
     :: Int -- ^ 'dsptrsResponseStatus'
     -> DescribeScalingProcessTypesResponse
 describeScalingProcessTypesResponse pResponseStatus_ =
-    DescribeScalingProcessTypesResponse'
-    { _dsptrsProcesses = Nothing
-    , _dsptrsResponseStatus = pResponseStatus_
-    }
+  DescribeScalingProcessTypesResponse'
+  {_dsptrsProcesses = Nothing, _dsptrsResponseStatus = pResponseStatus_}
 
+
 -- | The names of the process types.
 dsptrsProcesses :: Lens' DescribeScalingProcessTypesResponse [ProcessType]
 dsptrsProcesses = lens _dsptrsProcesses (\ s a -> s{_dsptrsProcesses = a}) . _Default . _Coerce;
@@ -119,3 +117,4 @@
 dsptrsResponseStatus = lens _dsptrsResponseStatus (\ s a -> s{_dsptrsResponseStatus = a});
 
 instance NFData DescribeScalingProcessTypesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs b/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeScheduledActions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -45,28 +45,25 @@
     , dsarsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeScheduledActions.
---
---
---
--- /See:/ 'describeScheduledActions' smart constructor.
+-- | /See:/ 'describeScheduledActions' smart constructor.
 data DescribeScheduledActions = DescribeScheduledActions'
-    { _dsasStartTime            :: !(Maybe ISO8601)
-    , _dsasNextToken            :: !(Maybe Text)
-    , _dsasAutoScalingGroupName :: !(Maybe Text)
-    , _dsasMaxRecords           :: !(Maybe Int)
-    , _dsasEndTime              :: !(Maybe ISO8601)
-    , _dsasScheduledActionNames :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsasStartTime            :: !(Maybe ISO8601)
+  , _dsasNextToken            :: !(Maybe Text)
+  , _dsasAutoScalingGroupName :: !(Maybe Text)
+  , _dsasMaxRecords           :: !(Maybe Int)
+  , _dsasEndTime              :: !(Maybe ISO8601)
+  , _dsasScheduledActionNames :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScheduledActions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,7 +74,7 @@
 --
 -- * 'dsasAutoScalingGroupName' - The name of the group.
 --
--- * 'dsasMaxRecords' - The maximum number of items to return with this call.
+-- * 'dsasMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 --
 -- * 'dsasEndTime' - The latest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.
 --
@@ -85,15 +82,16 @@
 describeScheduledActions
     :: DescribeScheduledActions
 describeScheduledActions =
-    DescribeScheduledActions'
-    { _dsasStartTime = Nothing
-    , _dsasNextToken = Nothing
-    , _dsasAutoScalingGroupName = Nothing
-    , _dsasMaxRecords = Nothing
-    , _dsasEndTime = Nothing
-    , _dsasScheduledActionNames = Nothing
-    }
+  DescribeScheduledActions'
+  { _dsasStartTime = Nothing
+  , _dsasNextToken = Nothing
+  , _dsasAutoScalingGroupName = Nothing
+  , _dsasMaxRecords = Nothing
+  , _dsasEndTime = Nothing
+  , _dsasScheduledActionNames = Nothing
+  }
 
+
 -- | The earliest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.
 dsasStartTime :: Lens' DescribeScheduledActions (Maybe UTCTime)
 dsasStartTime = lens _dsasStartTime (\ s a -> s{_dsasStartTime = a}) . mapping _Time;
@@ -106,7 +104,7 @@
 dsasAutoScalingGroupName :: Lens' DescribeScheduledActions (Maybe Text)
 dsasAutoScalingGroupName = lens _dsasAutoScalingGroupName (\ s a -> s{_dsasAutoScalingGroupName = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dsasMaxRecords :: Lens' DescribeScheduledActions (Maybe Int)
 dsasMaxRecords = lens _dsasMaxRecords (\ s a -> s{_dsasMaxRecords = a});
 
@@ -139,9 +137,9 @@
                      <*> (x .@? "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeScheduledActions
+instance Hashable DescribeScheduledActions where
 
-instance NFData DescribeScheduledActions
+instance NFData DescribeScheduledActions where
 
 instance ToHeaders DescribeScheduledActions where
         toHeaders = const mempty
@@ -164,17 +162,14 @@
                  toQuery
                    (toQueryList "member" <$> _dsasScheduledActionNames)]
 
--- | Contains the output of DescribeScheduledActions.
---
---
---
--- /See:/ 'describeScheduledActionsResponse' smart constructor.
+-- | /See:/ 'describeScheduledActionsResponse' smart constructor.
 data DescribeScheduledActionsResponse = DescribeScheduledActionsResponse'
-    { _dsarsScheduledUpdateGroupActions :: !(Maybe [ScheduledUpdateGroupAction])
-    , _dsarsNextToken                   :: !(Maybe Text)
-    , _dsarsResponseStatus              :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsarsScheduledUpdateGroupActions :: !(Maybe [ScheduledUpdateGroupAction])
+  , _dsarsNextToken                   :: !(Maybe Text)
+  , _dsarsResponseStatus              :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeScheduledActionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -188,12 +183,13 @@
     :: Int -- ^ 'dsarsResponseStatus'
     -> DescribeScheduledActionsResponse
 describeScheduledActionsResponse pResponseStatus_ =
-    DescribeScheduledActionsResponse'
-    { _dsarsScheduledUpdateGroupActions = Nothing
-    , _dsarsNextToken = Nothing
-    , _dsarsResponseStatus = pResponseStatus_
-    }
+  DescribeScheduledActionsResponse'
+  { _dsarsScheduledUpdateGroupActions = Nothing
+  , _dsarsNextToken = Nothing
+  , _dsarsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The scheduled actions.
 dsarsScheduledUpdateGroupActions :: Lens' DescribeScheduledActionsResponse [ScheduledUpdateGroupAction]
 dsarsScheduledUpdateGroupActions = lens _dsarsScheduledUpdateGroupActions (\ s a -> s{_dsarsScheduledUpdateGroupActions = a}) . _Default . _Coerce;
@@ -207,3 +203,4 @@
 dsarsResponseStatus = lens _dsarsResponseStatus (\ s a -> s{_dsarsResponseStatus = a});
 
 instance NFData DescribeScheduledActionsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DescribeTags.hs b/gen/Network/AWS/AutoScaling/DescribeTags.hs
--- a/gen/Network/AWS/AutoScaling/DescribeTags.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeTags.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeTags
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -46,25 +46,22 @@
     , dtrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DescribeTags.
---
---
---
--- /See:/ 'describeTags' smart constructor.
+-- | /See:/ 'describeTags' smart constructor.
 data DescribeTags = DescribeTags'
-    { _dtFilters    :: !(Maybe [Filter])
-    , _dtNextToken  :: !(Maybe Text)
-    , _dtMaxRecords :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtFilters    :: !(Maybe [Filter])
+  , _dtNextToken  :: !(Maybe Text)
+  , _dtMaxRecords :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeTags' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,16 +70,14 @@
 --
 -- * 'dtNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'dtMaxRecords' - The maximum number of items to return with this call.
+-- * 'dtMaxRecords' - The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 describeTags
     :: DescribeTags
 describeTags =
-    DescribeTags'
-    { _dtFilters = Nothing
-    , _dtNextToken = Nothing
-    , _dtMaxRecords = Nothing
-    }
+  DescribeTags'
+  {_dtFilters = Nothing, _dtNextToken = Nothing, _dtMaxRecords = Nothing}
 
+
 -- | A filter used to scope the tags to return.
 dtFilters :: Lens' DescribeTags [Filter]
 dtFilters = lens _dtFilters (\ s a -> s{_dtFilters = a}) . _Default . _Coerce;
@@ -91,7 +86,7 @@
 dtNextToken :: Lens' DescribeTags (Maybe Text)
 dtNextToken = lens _dtNextToken (\ s a -> s{_dtNextToken = a});
 
--- | The maximum number of items to return with this call.
+-- | The maximum number of items to return with this call. The default value is 50 and the maximum value is 100.
 dtMaxRecords :: Lens' DescribeTags (Maybe Int)
 dtMaxRecords = lens _dtMaxRecords (\ s a -> s{_dtMaxRecords = a});
 
@@ -114,9 +109,9 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeTags
+instance Hashable DescribeTags where
 
-instance NFData DescribeTags
+instance NFData DescribeTags where
 
 instance ToHeaders DescribeTags where
         toHeaders = const mempty
@@ -134,17 +129,14 @@
                "NextToken" =: _dtNextToken,
                "MaxRecords" =: _dtMaxRecords]
 
--- | Contains the output of DescribeTags.
---
---
---
--- /See:/ 'describeTagsResponse' smart constructor.
+-- | /See:/ 'describeTagsResponse' smart constructor.
 data DescribeTagsResponse = DescribeTagsResponse'
-    { _dtrsNextToken      :: !(Maybe Text)
-    , _dtrsTags           :: !(Maybe [TagDescription])
-    , _dtrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _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.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -158,12 +150,13 @@
     :: Int -- ^ 'dtrsResponseStatus'
     -> DescribeTagsResponse
 describeTagsResponse pResponseStatus_ =
-    DescribeTagsResponse'
-    { _dtrsNextToken = Nothing
-    , _dtrsTags = Nothing
-    , _dtrsResponseStatus = pResponseStatus_
-    }
+  DescribeTagsResponse'
+  { _dtrsNextToken = Nothing
+  , _dtrsTags = Nothing
+  , _dtrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dtrsNextToken :: Lens' DescribeTagsResponse (Maybe Text)
 dtrsNextToken = lens _dtrsNextToken (\ s a -> s{_dtrsNextToken = a});
@@ -176,4 +169,4 @@
 dtrsResponseStatus :: Lens' DescribeTagsResponse Int
 dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a});
 
-instance NFData DescribeTagsResponse
+instance NFData DescribeTagsResponse where
diff --git a/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs b/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,24 +35,26 @@
     , dtptrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeTerminationPolicyTypes' smart constructor.
 data DescribeTerminationPolicyTypes =
-    DescribeTerminationPolicyTypes'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeTerminationPolicyTypes'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeTerminationPolicyTypes' with the minimum fields required to make a request.
 --
 describeTerminationPolicyTypes
     :: DescribeTerminationPolicyTypes
 describeTerminationPolicyTypes = DescribeTerminationPolicyTypes'
 
+
 instance AWSRequest DescribeTerminationPolicyTypes
          where
         type Rs DescribeTerminationPolicyTypes =
@@ -68,8 +70,9 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeTerminationPolicyTypes
+         where
 
-instance NFData DescribeTerminationPolicyTypes
+instance NFData DescribeTerminationPolicyTypes where
 
 instance ToHeaders DescribeTerminationPolicyTypes
          where
@@ -86,16 +89,13 @@
                     ("DescribeTerminationPolicyTypes" :: ByteString),
                   "Version" =: ("2011-01-01" :: ByteString)])
 
--- | Contains the output of DescribeTerminationPolicyTypes.
---
---
---
--- /See:/ 'describeTerminationPolicyTypesResponse' smart constructor.
+-- | /See:/ 'describeTerminationPolicyTypesResponse' smart constructor.
 data DescribeTerminationPolicyTypesResponse = DescribeTerminationPolicyTypesResponse'
-    { _dtptrsTerminationPolicyTypes :: !(Maybe [Text])
-    , _dtptrsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtptrsTerminationPolicyTypes :: !(Maybe [Text])
+  , _dtptrsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeTerminationPolicyTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,11 +107,12 @@
     :: Int -- ^ 'dtptrsResponseStatus'
     -> DescribeTerminationPolicyTypesResponse
 describeTerminationPolicyTypesResponse pResponseStatus_ =
-    DescribeTerminationPolicyTypesResponse'
-    { _dtptrsTerminationPolicyTypes = Nothing
-    , _dtptrsResponseStatus = pResponseStatus_
-    }
+  DescribeTerminationPolicyTypesResponse'
+  { _dtptrsTerminationPolicyTypes = Nothing
+  , _dtptrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The termination policies supported by Auto Scaling (@OldestInstance@ , @OldestLaunchConfiguration@ , @NewestInstance@ , @ClosestToNextInstanceHour@ , and @Default@ ).
 dtptrsTerminationPolicyTypes :: Lens' DescribeTerminationPolicyTypesResponse [Text]
 dtptrsTerminationPolicyTypes = lens _dtptrsTerminationPolicyTypes (\ s a -> s{_dtptrsTerminationPolicyTypes = a}) . _Default . _Coerce;
@@ -121,4 +122,5 @@
 dtptrsResponseStatus = lens _dtptrsResponseStatus (\ s a -> s{_dtptrsResponseStatus = a});
 
 instance NFData
-         DescribeTerminationPolicyTypesResponse
+           DescribeTerminationPolicyTypesResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DetachInstances.hs b/gen/Network/AWS/AutoScaling/DetachInstances.hs
--- a/gen/Network/AWS/AutoScaling/DetachInstances.hs
+++ b/gen/Network/AWS/AutoScaling/DetachInstances.hs
@@ -12,20 +12,20 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DetachInstances
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Removes one or more instances from the specified Auto Scaling group.
 --
 --
--- After the instances are detached, you can manage them independently from the rest of the Auto Scaling group.
+-- After the instances are detached, you can manage them independent of the Auto Scaling group.
 --
 -- If you do not specify the option to decrement the desired capacity, Auto Scaling launches instances to replace the ones that are detached.
 --
--- If there is a Classic load balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups.
+-- If there is a Classic Load Balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups.
 --
 -- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/detach-instance-asg.html Detach EC2 Instances from Your Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
@@ -47,24 +47,21 @@
     , dirsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DetachInstances.
---
---
---
--- /See:/ 'detachInstances' smart constructor.
+-- | /See:/ 'detachInstances' smart constructor.
 data DetachInstances = DetachInstances'
-    { _diInstanceIds                    :: !(Maybe [Text])
-    , _diAutoScalingGroupName           :: !Text
-    , _diShouldDecrementDesiredCapacity :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diInstanceIds                    :: !(Maybe [Text])
+  , _diAutoScalingGroupName           :: !Text
+  , _diShouldDecrementDesiredCapacity :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,12 +76,13 @@
     -> Bool -- ^ 'diShouldDecrementDesiredCapacity'
     -> DetachInstances
 detachInstances pAutoScalingGroupName_ pShouldDecrementDesiredCapacity_ =
-    DetachInstances'
-    { _diInstanceIds = Nothing
-    , _diAutoScalingGroupName = pAutoScalingGroupName_
-    , _diShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
-    }
+  DetachInstances'
+  { _diInstanceIds = Nothing
+  , _diAutoScalingGroupName = pAutoScalingGroupName_
+  , _diShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
+  }
 
+
 -- | One or more instance IDs.
 diInstanceIds :: Lens' DetachInstances [Text]
 diInstanceIds = lens _diInstanceIds (\ s a -> s{_diInstanceIds = a}) . _Default . _Coerce;
@@ -108,9 +106,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable DetachInstances
+instance Hashable DetachInstances where
 
-instance NFData DetachInstances
+instance NFData DetachInstances where
 
 instance ToHeaders DetachInstances where
         toHeaders = const mempty
@@ -129,16 +127,13 @@
                "ShouldDecrementDesiredCapacity" =:
                  _diShouldDecrementDesiredCapacity]
 
--- | Contains the output of DetachInstances.
---
---
---
--- /See:/ 'detachInstancesResponse' smart constructor.
+-- | /See:/ 'detachInstancesResponse' smart constructor.
 data DetachInstancesResponse = DetachInstancesResponse'
-    { _dirsActivities     :: !(Maybe [Activity])
-    , _dirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dirsActivities     :: !(Maybe [Activity])
+  , _dirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachInstancesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -150,11 +145,10 @@
     :: Int -- ^ 'dirsResponseStatus'
     -> DetachInstancesResponse
 detachInstancesResponse pResponseStatus_ =
-    DetachInstancesResponse'
-    { _dirsActivities = Nothing
-    , _dirsResponseStatus = pResponseStatus_
-    }
+  DetachInstancesResponse'
+  {_dirsActivities = Nothing, _dirsResponseStatus = pResponseStatus_}
 
+
 -- | The activities related to detaching the instances from the Auto Scaling group.
 dirsActivities :: Lens' DetachInstancesResponse [Activity]
 dirsActivities = lens _dirsActivities (\ s a -> s{_dirsActivities = a}) . _Default . _Coerce;
@@ -163,4 +157,4 @@
 dirsResponseStatus :: Lens' DetachInstancesResponse Int
 dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a});
 
-instance NFData DetachInstancesResponse
+instance NFData DetachInstancesResponse where
diff --git a/gen/Network/AWS/AutoScaling/DetachLoadBalancerTargetGroups.hs b/gen/Network/AWS/AutoScaling/DetachLoadBalancerTargetGroups.hs
--- a/gen/Network/AWS/AutoScaling/DetachLoadBalancerTargetGroups.hs
+++ b/gen/Network/AWS/AutoScaling/DetachLoadBalancerTargetGroups.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DetachLoadBalancerTargetGroups
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,19 +37,20 @@
     , dlbtgrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'detachLoadBalancerTargetGroups' smart constructor.
 data DetachLoadBalancerTargetGroups = DetachLoadBalancerTargetGroups'
-    { _dlbtgAutoScalingGroupName :: !Text
-    , _dlbtgTargetGroupARNs      :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbtgAutoScalingGroupName :: !Text
+  , _dlbtgTargetGroupARNs      :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachLoadBalancerTargetGroups' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,12 @@
     :: Text -- ^ 'dlbtgAutoScalingGroupName'
     -> DetachLoadBalancerTargetGroups
 detachLoadBalancerTargetGroups pAutoScalingGroupName_ =
-    DetachLoadBalancerTargetGroups'
-    { _dlbtgAutoScalingGroupName = pAutoScalingGroupName_
-    , _dlbtgTargetGroupARNs = mempty
-    }
+  DetachLoadBalancerTargetGroups'
+  { _dlbtgAutoScalingGroupName = pAutoScalingGroupName_
+  , _dlbtgTargetGroupARNs = mempty
+  }
 
+
 -- | The name of the Auto Scaling group.
 dlbtgAutoScalingGroupName :: Lens' DetachLoadBalancerTargetGroups Text
 dlbtgAutoScalingGroupName = lens _dlbtgAutoScalingGroupName (\ s a -> s{_dlbtgAutoScalingGroupName = a});
@@ -87,8 +89,9 @@
                    (pure (fromEnum s)))
 
 instance Hashable DetachLoadBalancerTargetGroups
+         where
 
-instance NFData DetachLoadBalancerTargetGroups
+instance NFData DetachLoadBalancerTargetGroups where
 
 instance ToHeaders DetachLoadBalancerTargetGroups
          where
@@ -109,9 +112,10 @@
 
 -- | /See:/ 'detachLoadBalancerTargetGroupsResponse' smart constructor.
 newtype DetachLoadBalancerTargetGroupsResponse = DetachLoadBalancerTargetGroupsResponse'
-    { _dlbtgrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbtgrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachLoadBalancerTargetGroupsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -121,13 +125,14 @@
     :: Int -- ^ 'dlbtgrsResponseStatus'
     -> DetachLoadBalancerTargetGroupsResponse
 detachLoadBalancerTargetGroupsResponse pResponseStatus_ =
-    DetachLoadBalancerTargetGroupsResponse'
-    { _dlbtgrsResponseStatus = pResponseStatus_
-    }
+  DetachLoadBalancerTargetGroupsResponse'
+  {_dlbtgrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dlbtgrsResponseStatus :: Lens' DetachLoadBalancerTargetGroupsResponse Int
 dlbtgrsResponseStatus = lens _dlbtgrsResponseStatus (\ s a -> s{_dlbtgrsResponseStatus = a});
 
 instance NFData
-         DetachLoadBalancerTargetGroupsResponse
+           DetachLoadBalancerTargetGroupsResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs b/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs
--- a/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs
+++ b/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DetachLoadBalancers
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Detaches one or more Classic load balancers from the specified Auto Scaling group.
+-- Detaches one or more Classic Load Balancers from the specified Auto Scaling group.
 --
 --
--- Note that this operation detaches only Classic load balancers. If you have Application load balancers, use 'DetachLoadBalancerTargetGroups' instead.
+-- Note that this operation detaches only Classic Load Balancers. If you have Application Load Balancers, use 'DetachLoadBalancerTargetGroups' instead.
 --
 -- When you detach a load balancer, it enters the @Removing@ state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the load balancer using 'DescribeLoadBalancers' . Note that the instances remain running.
 --
@@ -41,23 +41,20 @@
     , dlbsrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DetachLoadBalancers.
---
---
---
--- /See:/ 'detachLoadBalancers' smart constructor.
+-- | /See:/ 'detachLoadBalancers' smart constructor.
 data DetachLoadBalancers = DetachLoadBalancers'
-    { _dAutoScalingGroupName :: !Text
-    , _dLoadBalancerNames    :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dAutoScalingGroupName :: !Text
+  , _dLoadBalancerNames    :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachLoadBalancers' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +66,12 @@
     :: Text -- ^ 'dAutoScalingGroupName'
     -> DetachLoadBalancers
 detachLoadBalancers pAutoScalingGroupName_ =
-    DetachLoadBalancers'
-    { _dAutoScalingGroupName = pAutoScalingGroupName_
-    , _dLoadBalancerNames = mempty
-    }
+  DetachLoadBalancers'
+  { _dAutoScalingGroupName = pAutoScalingGroupName_
+  , _dLoadBalancerNames = mempty
+  }
 
+
 -- | The name of the Auto Scaling group.
 dAutoScalingGroupName :: Lens' DetachLoadBalancers Text
 dAutoScalingGroupName = lens _dAutoScalingGroupName (\ s a -> s{_dAutoScalingGroupName = a});
@@ -91,9 +89,9 @@
               (\ s h x ->
                  DetachLoadBalancersResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DetachLoadBalancers
+instance Hashable DetachLoadBalancers where
 
-instance NFData DetachLoadBalancers
+instance NFData DetachLoadBalancers where
 
 instance ToHeaders DetachLoadBalancers where
         toHeaders = const mempty
@@ -110,15 +108,12 @@
                "LoadBalancerNames" =:
                  toQueryList "member" _dLoadBalancerNames]
 
--- | Contains the output for DetachLoadBalancers.
---
---
---
--- /See:/ 'detachLoadBalancersResponse' smart constructor.
+-- | /See:/ 'detachLoadBalancersResponse' smart constructor.
 newtype DetachLoadBalancersResponse = DetachLoadBalancersResponse'
-    { _dlbsrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbsrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachLoadBalancersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -128,12 +123,11 @@
     :: Int -- ^ 'dlbsrsResponseStatus'
     -> DetachLoadBalancersResponse
 detachLoadBalancersResponse pResponseStatus_ =
-    DetachLoadBalancersResponse'
-    { _dlbsrsResponseStatus = pResponseStatus_
-    }
+  DetachLoadBalancersResponse' {_dlbsrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dlbsrsResponseStatus :: Lens' DetachLoadBalancersResponse Int
 dlbsrsResponseStatus = lens _dlbsrsResponseStatus (\ s a -> s{_dlbsrsResponseStatus = a});
 
-instance NFData DetachLoadBalancersResponse
+instance NFData DetachLoadBalancersResponse where
diff --git a/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs b/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
--- a/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
+++ b/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.DisableMetricsCollection
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,23 +35,20 @@
     , DisableMetricsCollectionResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for DisableMetricsCollection.
---
---
---
--- /See:/ 'disableMetricsCollection' smart constructor.
+-- | /See:/ 'disableMetricsCollection' smart constructor.
 data DisableMetricsCollection = DisableMetricsCollection'
-    { _dmcMetrics              :: !(Maybe [Text])
-    , _dmcAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmcMetrics              :: !(Maybe [Text])
+  , _dmcAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisableMetricsCollection' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +60,10 @@
     :: Text -- ^ 'dmcAutoScalingGroupName'
     -> DisableMetricsCollection
 disableMetricsCollection pAutoScalingGroupName_ =
-    DisableMetricsCollection'
-    { _dmcMetrics = Nothing
-    , _dmcAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  DisableMetricsCollection'
+  {_dmcMetrics = Nothing, _dmcAutoScalingGroupName = pAutoScalingGroupName_}
 
+
 -- | One or more of the following metrics. If you omit this parameter, all metrics are disabled.     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
 dmcMetrics :: Lens' DisableMetricsCollection [Text]
 dmcMetrics = lens _dmcMetrics (\ s a -> s{_dmcMetrics = a}) . _Default . _Coerce;
@@ -83,9 +79,9 @@
         response
           = receiveNull DisableMetricsCollectionResponse'
 
-instance Hashable DisableMetricsCollection
+instance Hashable DisableMetricsCollection where
 
-instance NFData DisableMetricsCollection
+instance NFData DisableMetricsCollection where
 
 instance ToHeaders DisableMetricsCollection where
         toHeaders = const mempty
@@ -105,13 +101,16 @@
 
 -- | /See:/ 'disableMetricsCollectionResponse' smart constructor.
 data DisableMetricsCollectionResponse =
-    DisableMetricsCollectionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DisableMetricsCollectionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisableMetricsCollectionResponse' with the minimum fields required to make a request.
 --
 disableMetricsCollectionResponse
     :: DisableMetricsCollectionResponse
 disableMetricsCollectionResponse = DisableMetricsCollectionResponse'
 
+
 instance NFData DisableMetricsCollectionResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs b/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
--- a/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
+++ b/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.EnableMetricsCollection
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,24 +36,21 @@
     , EnableMetricsCollectionResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for EnableMetricsCollection.
---
---
---
--- /See:/ 'enableMetricsCollection' smart constructor.
+-- | /See:/ 'enableMetricsCollection' smart constructor.
 data EnableMetricsCollection = EnableMetricsCollection'
-    { _emcMetrics              :: !(Maybe [Text])
-    , _emcAutoScalingGroupName :: !Text
-    , _emcGranularity          :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _emcMetrics              :: !(Maybe [Text])
+  , _emcAutoScalingGroupName :: !Text
+  , _emcGranularity          :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnableMetricsCollection' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,12 +65,13 @@
     -> Text -- ^ 'emcGranularity'
     -> EnableMetricsCollection
 enableMetricsCollection pAutoScalingGroupName_ pGranularity_ =
-    EnableMetricsCollection'
-    { _emcMetrics = Nothing
-    , _emcAutoScalingGroupName = pAutoScalingGroupName_
-    , _emcGranularity = pGranularity_
-    }
+  EnableMetricsCollection'
+  { _emcMetrics = Nothing
+  , _emcAutoScalingGroupName = pAutoScalingGroupName_
+  , _emcGranularity = pGranularity_
+  }
 
+
 -- | One or more of the following metrics. If you omit this parameter, all metrics are enabled.     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
 emcMetrics :: Lens' EnableMetricsCollection [Text]
 emcMetrics = lens _emcMetrics (\ s a -> s{_emcMetrics = a}) . _Default . _Coerce;
@@ -93,9 +91,9 @@
         response
           = receiveNull EnableMetricsCollectionResponse'
 
-instance Hashable EnableMetricsCollection
+instance Hashable EnableMetricsCollection where
 
-instance NFData EnableMetricsCollection
+instance NFData EnableMetricsCollection where
 
 instance ToHeaders EnableMetricsCollection where
         toHeaders = const mempty
@@ -116,13 +114,15 @@
 
 -- | /See:/ 'enableMetricsCollectionResponse' smart constructor.
 data EnableMetricsCollectionResponse =
-    EnableMetricsCollectionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  EnableMetricsCollectionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnableMetricsCollectionResponse' with the minimum fields required to make a request.
 --
 enableMetricsCollectionResponse
     :: EnableMetricsCollectionResponse
 enableMetricsCollectionResponse = EnableMetricsCollectionResponse'
 
-instance NFData EnableMetricsCollectionResponse
+
+instance NFData EnableMetricsCollectionResponse where
diff --git a/gen/Network/AWS/AutoScaling/EnterStandby.hs b/gen/Network/AWS/AutoScaling/EnterStandby.hs
--- a/gen/Network/AWS/AutoScaling/EnterStandby.hs
+++ b/gen/Network/AWS/AutoScaling/EnterStandby.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.EnterStandby
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Moves the specified instances into @Standby@ mode.
+-- Moves the specified instances into the standby state.
 --
 --
--- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
+-- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-enter-exit-standby.html Temporarily Removing Instances from Your Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
 module Network.AWS.AutoScaling.EnterStandby
     (
@@ -41,24 +41,21 @@
     , ersResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for EnteStandby.
---
---
---
--- /See:/ 'enterStandby' smart constructor.
+-- | /See:/ 'enterStandby' smart constructor.
 data EnterStandby = EnterStandby'
-    { _esInstanceIds                    :: !(Maybe [Text])
-    , _esAutoScalingGroupName           :: !Text
-    , _esShouldDecrementDesiredCapacity :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _esInstanceIds                    :: !(Maybe [Text])
+  , _esAutoScalingGroupName           :: !Text
+  , _esShouldDecrementDesiredCapacity :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterStandby' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,12 +70,13 @@
     -> Bool -- ^ 'esShouldDecrementDesiredCapacity'
     -> EnterStandby
 enterStandby pAutoScalingGroupName_ pShouldDecrementDesiredCapacity_ =
-    EnterStandby'
-    { _esInstanceIds = Nothing
-    , _esAutoScalingGroupName = pAutoScalingGroupName_
-    , _esShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
-    }
+  EnterStandby'
+  { _esInstanceIds = Nothing
+  , _esAutoScalingGroupName = pAutoScalingGroupName_
+  , _esShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
+  }
 
+
 -- | One or more instances to move into @Standby@ mode. You must specify at least one instance ID.
 esInstanceIds :: Lens' EnterStandby [Text]
 esInstanceIds = lens _esInstanceIds (\ s a -> s{_esInstanceIds = a}) . _Default . _Coerce;
@@ -102,9 +100,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable EnterStandby
+instance Hashable EnterStandby where
 
-instance NFData EnterStandby
+instance NFData EnterStandby where
 
 instance ToHeaders EnterStandby where
         toHeaders = const mempty
@@ -123,16 +121,13 @@
                "ShouldDecrementDesiredCapacity" =:
                  _esShouldDecrementDesiredCapacity]
 
--- | Contains the output of EnterStandby.
---
---
---
--- /See:/ 'enterStandbyResponse' smart constructor.
+-- | /See:/ 'enterStandbyResponse' smart constructor.
 data EnterStandbyResponse = EnterStandbyResponse'
-    { _ersActivities     :: !(Maybe [Activity])
-    , _ersResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ersActivities     :: !(Maybe [Activity])
+  , _ersResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterStandbyResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,11 +139,10 @@
     :: Int -- ^ 'ersResponseStatus'
     -> EnterStandbyResponse
 enterStandbyResponse pResponseStatus_ =
-    EnterStandbyResponse'
-    { _ersActivities = Nothing
-    , _ersResponseStatus = pResponseStatus_
-    }
+  EnterStandbyResponse'
+  {_ersActivities = Nothing, _ersResponseStatus = pResponseStatus_}
 
+
 -- | The activities related to moving instances into @Standby@ mode.
 ersActivities :: Lens' EnterStandbyResponse [Activity]
 ersActivities = lens _ersActivities (\ s a -> s{_ersActivities = a}) . _Default . _Coerce;
@@ -157,4 +151,4 @@
 ersResponseStatus :: Lens' EnterStandbyResponse Int
 ersResponseStatus = lens _ersResponseStatus (\ s a -> s{_ersResponseStatus = a});
 
-instance NFData EnterStandbyResponse
+instance NFData EnterStandbyResponse where
diff --git a/gen/Network/AWS/AutoScaling/ExecutePolicy.hs b/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
--- a/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
+++ b/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.ExecutePolicy
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,26 +38,23 @@
     , ExecutePolicyResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for ExecutePolicy.
---
---
---
--- /See:/ 'executePolicy' smart constructor.
+-- | /See:/ 'executePolicy' smart constructor.
 data ExecutePolicy = ExecutePolicy'
-    { _epHonorCooldown        :: !(Maybe Bool)
-    , _epMetricValue          :: !(Maybe Double)
-    , _epAutoScalingGroupName :: !(Maybe Text)
-    , _epBreachThreshold      :: !(Maybe Double)
-    , _epPolicyName           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _epHonorCooldown        :: !(Maybe Bool)
+  , _epMetricValue          :: !(Maybe Double)
+  , _epAutoScalingGroupName :: !(Maybe Text)
+  , _epBreachThreshold      :: !(Maybe Double)
+  , _epPolicyName           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExecutePolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,14 +72,15 @@
     :: Text -- ^ 'epPolicyName'
     -> ExecutePolicy
 executePolicy pPolicyName_ =
-    ExecutePolicy'
-    { _epHonorCooldown = Nothing
-    , _epMetricValue = Nothing
-    , _epAutoScalingGroupName = Nothing
-    , _epBreachThreshold = Nothing
-    , _epPolicyName = pPolicyName_
-    }
+  ExecutePolicy'
+  { _epHonorCooldown = Nothing
+  , _epMetricValue = Nothing
+  , _epAutoScalingGroupName = Nothing
+  , _epBreachThreshold = Nothing
+  , _epPolicyName = pPolicyName_
+  }
 
+
 -- | If this parameter is true, Auto Scaling waits for the cooldown period to complete before executing the policy. Otherwise, Auto Scaling executes the policy without waiting for the cooldown period to complete. This parameter is not supported if the policy type is @StepScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html Auto Scaling Cooldowns> in the /Auto Scaling User Guide/ .
 epHonorCooldown :: Lens' ExecutePolicy (Maybe Bool)
 epHonorCooldown = lens _epHonorCooldown (\ s a -> s{_epHonorCooldown = a});
@@ -108,9 +106,9 @@
         request = postQuery autoScaling
         response = receiveNull ExecutePolicyResponse'
 
-instance Hashable ExecutePolicy
+instance Hashable ExecutePolicy where
 
-instance NFData ExecutePolicy
+instance NFData ExecutePolicy where
 
 instance ToHeaders ExecutePolicy where
         toHeaders = const mempty
@@ -131,13 +129,15 @@
 
 -- | /See:/ 'executePolicyResponse' smart constructor.
 data ExecutePolicyResponse =
-    ExecutePolicyResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  ExecutePolicyResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExecutePolicyResponse' with the minimum fields required to make a request.
 --
 executePolicyResponse
     :: ExecutePolicyResponse
 executePolicyResponse = ExecutePolicyResponse'
 
-instance NFData ExecutePolicyResponse
+
+instance NFData ExecutePolicyResponse where
diff --git a/gen/Network/AWS/AutoScaling/ExitStandby.hs b/gen/Network/AWS/AutoScaling/ExitStandby.hs
--- a/gen/Network/AWS/AutoScaling/ExitStandby.hs
+++ b/gen/Network/AWS/AutoScaling/ExitStandby.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.ExitStandby
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Moves the specified instances out of @Standby@ mode.
+-- Moves the specified instances out of the standby state.
 --
 --
--- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
+-- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-enter-exit-standby.html Temporarily Removing Instances from Your Auto Scaling Group> in the /Auto Scaling User Guide/ .
 --
 module Network.AWS.AutoScaling.ExitStandby
     (
@@ -40,23 +40,20 @@
     , esrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for ExitStandby.
---
---
---
--- /See:/ 'exitStandby' smart constructor.
+-- | /See:/ 'exitStandby' smart constructor.
 data ExitStandby = ExitStandby'
-    { _eInstanceIds          :: !(Maybe [Text])
-    , _eAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _eInstanceIds          :: !(Maybe [Text])
+  , _eAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExitStandby' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,11 +65,10 @@
     :: Text -- ^ 'eAutoScalingGroupName'
     -> ExitStandby
 exitStandby pAutoScalingGroupName_ =
-    ExitStandby'
-    { _eInstanceIds = Nothing
-    , _eAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  ExitStandby'
+  {_eInstanceIds = Nothing, _eAutoScalingGroupName = pAutoScalingGroupName_}
 
+
 -- | One or more instance IDs. You must specify at least one instance ID.
 eInstanceIds :: Lens' ExitStandby [Text]
 eInstanceIds = lens _eInstanceIds (\ s a -> s{_eInstanceIds = a}) . _Default . _Coerce;
@@ -92,9 +88,9 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
-instance Hashable ExitStandby
+instance Hashable ExitStandby where
 
-instance NFData ExitStandby
+instance NFData ExitStandby where
 
 instance ToHeaders ExitStandby where
         toHeaders = const mempty
@@ -111,16 +107,13 @@
                  toQuery (toQueryList "member" <$> _eInstanceIds),
                "AutoScalingGroupName" =: _eAutoScalingGroupName]
 
--- | Contains the parameters for ExitStandby.
---
---
---
--- /See:/ 'exitStandbyResponse' smart constructor.
+-- | /See:/ 'exitStandbyResponse' smart constructor.
 data ExitStandbyResponse = ExitStandbyResponse'
-    { _esrsActivities     :: !(Maybe [Activity])
-    , _esrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _esrsActivities     :: !(Maybe [Activity])
+  , _esrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExitStandbyResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -132,11 +125,10 @@
     :: Int -- ^ 'esrsResponseStatus'
     -> ExitStandbyResponse
 exitStandbyResponse pResponseStatus_ =
-    ExitStandbyResponse'
-    { _esrsActivities = Nothing
-    , _esrsResponseStatus = pResponseStatus_
-    }
+  ExitStandbyResponse'
+  {_esrsActivities = Nothing, _esrsResponseStatus = pResponseStatus_}
 
+
 -- | The activities related to moving instances out of @Standby@ mode.
 esrsActivities :: Lens' ExitStandbyResponse [Activity]
 esrsActivities = lens _esrsActivities (\ s a -> s{_esrsActivities = a}) . _Default . _Coerce;
@@ -145,4 +137,4 @@
 esrsResponseStatus :: Lens' ExitStandbyResponse Int
 esrsResponseStatus = lens _esrsResponseStatus (\ s a -> s{_esrsResponseStatus = a});
 
-instance NFData ExitStandbyResponse
+instance NFData ExitStandbyResponse where
diff --git a/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs b/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
--- a/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
+++ b/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.PutLifecycleHook
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -63,36 +63,33 @@
     , plhrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for PutLifecycleHook.
---
---
---
--- /See:/ 'putLifecycleHook' smart constructor.
+-- | /See:/ 'putLifecycleHook' smart constructor.
 data PutLifecycleHook = PutLifecycleHook'
-    { _plhDefaultResult         :: !(Maybe Text)
-    , _plhHeartbeatTimeout      :: !(Maybe Int)
-    , _plhNotificationMetadata  :: !(Maybe Text)
-    , _plhNotificationTargetARN :: !(Maybe Text)
-    , _plhLifecycleTransition   :: !(Maybe Text)
-    , _plhRoleARN               :: !(Maybe Text)
-    , _plhLifecycleHookName     :: !Text
-    , _plhAutoScalingGroupName  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _plhDefaultResult         :: !(Maybe Text)
+  , _plhHeartbeatTimeout      :: !(Maybe Int)
+  , _plhNotificationMetadata  :: !(Maybe Text)
+  , _plhNotificationTargetARN :: !(Maybe Text)
+  , _plhLifecycleTransition   :: !(Maybe Text)
+  , _plhRoleARN               :: !(Maybe Text)
+  , _plhLifecycleHookName     :: !Text
+  , _plhAutoScalingGroupName  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutLifecycleHook' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'plhDefaultResult' - Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. This parameter can be either @CONTINUE@ or @ABANDON@ . The default value is @ABANDON@ .
 --
--- * 'plhHeartbeatTimeout' - The amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' . The default is 3600 seconds (1 hour).
+-- * 'plhHeartbeatTimeout' - The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from 30 to 7200 seconds. The default is 3600 seconds (1 hour). If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
 --
 -- * 'plhNotificationMetadata' - Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.
 --
@@ -110,22 +107,23 @@
     -> Text -- ^ 'plhAutoScalingGroupName'
     -> PutLifecycleHook
 putLifecycleHook pLifecycleHookName_ pAutoScalingGroupName_ =
-    PutLifecycleHook'
-    { _plhDefaultResult = Nothing
-    , _plhHeartbeatTimeout = Nothing
-    , _plhNotificationMetadata = Nothing
-    , _plhNotificationTargetARN = Nothing
-    , _plhLifecycleTransition = Nothing
-    , _plhRoleARN = Nothing
-    , _plhLifecycleHookName = pLifecycleHookName_
-    , _plhAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  PutLifecycleHook'
+  { _plhDefaultResult = Nothing
+  , _plhHeartbeatTimeout = Nothing
+  , _plhNotificationMetadata = Nothing
+  , _plhNotificationTargetARN = Nothing
+  , _plhLifecycleTransition = Nothing
+  , _plhRoleARN = Nothing
+  , _plhLifecycleHookName = pLifecycleHookName_
+  , _plhAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. This parameter can be either @CONTINUE@ or @ABANDON@ . The default value is @ABANDON@ .
 plhDefaultResult :: Lens' PutLifecycleHook (Maybe Text)
 plhDefaultResult = lens _plhDefaultResult (\ s a -> s{_plhDefaultResult = a});
 
--- | The amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' . The default is 3600 seconds (1 hour).
+-- | The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from 30 to 7200 seconds. The default is 3600 seconds (1 hour). If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
 plhHeartbeatTimeout :: Lens' PutLifecycleHook (Maybe Int)
 plhHeartbeatTimeout = lens _plhHeartbeatTimeout (\ s a -> s{_plhHeartbeatTimeout = a});
 
@@ -161,9 +159,9 @@
               (\ s h x ->
                  PutLifecycleHookResponse' <$> (pure (fromEnum s)))
 
-instance Hashable PutLifecycleHook
+instance Hashable PutLifecycleHook where
 
-instance NFData PutLifecycleHook
+instance NFData PutLifecycleHook where
 
 instance ToHeaders PutLifecycleHook where
         toHeaders = const mempty
@@ -185,15 +183,12 @@
                "LifecycleHookName" =: _plhLifecycleHookName,
                "AutoScalingGroupName" =: _plhAutoScalingGroupName]
 
--- | Contains the output of PutLifecycleHook.
---
---
---
--- /See:/ 'putLifecycleHookResponse' smart constructor.
+-- | /See:/ 'putLifecycleHookResponse' smart constructor.
 newtype PutLifecycleHookResponse = PutLifecycleHookResponse'
-    { _plhrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _plhrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutLifecycleHookResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -203,12 +198,11 @@
     :: Int -- ^ 'plhrsResponseStatus'
     -> PutLifecycleHookResponse
 putLifecycleHookResponse pResponseStatus_ =
-    PutLifecycleHookResponse'
-    { _plhrsResponseStatus = pResponseStatus_
-    }
+  PutLifecycleHookResponse' {_plhrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 plhrsResponseStatus :: Lens' PutLifecycleHookResponse Int
 plhrsResponseStatus = lens _plhrsResponseStatus (\ s a -> s{_plhrsResponseStatus = a});
 
-instance NFData PutLifecycleHookResponse
+instance NFData PutLifecycleHookResponse where
diff --git a/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs b/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.PutNotificationConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,24 +40,21 @@
     , PutNotificationConfigurationResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for PutNotificationConfiguration.
---
---
---
--- /See:/ 'putNotificationConfiguration' smart constructor.
+-- | /See:/ 'putNotificationConfiguration' smart constructor.
 data PutNotificationConfiguration = PutNotificationConfiguration'
-    { _pncAutoScalingGroupName :: !Text
-    , _pncTopicARN             :: !Text
-    , _pncNotificationTypes    :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pncAutoScalingGroupName :: !Text
+  , _pncTopicARN             :: !Text
+  , _pncNotificationTypes    :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutNotificationConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,12 +69,13 @@
     -> Text -- ^ 'pncTopicARN'
     -> PutNotificationConfiguration
 putNotificationConfiguration pAutoScalingGroupName_ pTopicARN_ =
-    PutNotificationConfiguration'
-    { _pncAutoScalingGroupName = pAutoScalingGroupName_
-    , _pncTopicARN = pTopicARN_
-    , _pncNotificationTypes = mempty
-    }
+  PutNotificationConfiguration'
+  { _pncAutoScalingGroupName = pAutoScalingGroupName_
+  , _pncTopicARN = pTopicARN_
+  , _pncNotificationTypes = mempty
+  }
 
+
 -- | The name of the Auto Scaling group.
 pncAutoScalingGroupName :: Lens' PutNotificationConfiguration Text
 pncAutoScalingGroupName = lens _pncAutoScalingGroupName (\ s a -> s{_pncAutoScalingGroupName = a});
@@ -98,9 +96,9 @@
         response
           = receiveNull PutNotificationConfigurationResponse'
 
-instance Hashable PutNotificationConfiguration
+instance Hashable PutNotificationConfiguration where
 
-instance NFData PutNotificationConfiguration
+instance NFData PutNotificationConfiguration where
 
 instance ToHeaders PutNotificationConfiguration where
         toHeaders = const mempty
@@ -121,13 +119,16 @@
 
 -- | /See:/ 'putNotificationConfigurationResponse' smart constructor.
 data PutNotificationConfigurationResponse =
-    PutNotificationConfigurationResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutNotificationConfigurationResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutNotificationConfigurationResponse' with the minimum fields required to make a request.
 --
 putNotificationConfigurationResponse
     :: PutNotificationConfigurationResponse
 putNotificationConfigurationResponse = PutNotificationConfigurationResponse'
 
+
 instance NFData PutNotificationConfigurationResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs b/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
--- a/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
+++ b/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.PutScalingPolicy
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -33,102 +33,105 @@
     , pspEstimatedInstanceWarmup
     , pspPolicyType
     , pspStepAdjustments
+    , pspTargetTrackingConfiguration
+    , pspAdjustmentType
     , pspScalingAdjustment
     , pspCooldown
     , pspMetricAggregationType
     , pspMinAdjustmentMagnitude
     , pspAutoScalingGroupName
     , pspPolicyName
-    , pspAdjustmentType
 
     -- * Destructuring the Response
     , putScalingPolicyResponse
     , PutScalingPolicyResponse
     -- * Response Lenses
     , psprsPolicyARN
+    , psprsAlarms
     , psprsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for PutScalingPolicy.
---
---
---
--- /See:/ 'putScalingPolicy' smart constructor.
+-- | /See:/ 'putScalingPolicy' smart constructor.
 data PutScalingPolicy = PutScalingPolicy'
-    { _pspMinAdjustmentStep       :: !(Maybe Int)
-    , _pspEstimatedInstanceWarmup :: !(Maybe Int)
-    , _pspPolicyType              :: !(Maybe Text)
-    , _pspStepAdjustments         :: !(Maybe [StepAdjustment])
-    , _pspScalingAdjustment       :: !(Maybe Int)
-    , _pspCooldown                :: !(Maybe Int)
-    , _pspMetricAggregationType   :: !(Maybe Text)
-    , _pspMinAdjustmentMagnitude  :: !(Maybe Int)
-    , _pspAutoScalingGroupName    :: !Text
-    , _pspPolicyName              :: !Text
-    , _pspAdjustmentType          :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pspMinAdjustmentStep           :: !(Maybe Int)
+  , _pspEstimatedInstanceWarmup     :: !(Maybe Int)
+  , _pspPolicyType                  :: !(Maybe Text)
+  , _pspStepAdjustments             :: !(Maybe [StepAdjustment])
+  , _pspTargetTrackingConfiguration :: !(Maybe TargetTrackingConfiguration)
+  , _pspAdjustmentType              :: !(Maybe Text)
+  , _pspScalingAdjustment           :: !(Maybe Int)
+  , _pspCooldown                    :: !(Maybe Int)
+  , _pspMetricAggregationType       :: !(Maybe Text)
+  , _pspMinAdjustmentMagnitude      :: !(Maybe Int)
+  , _pspAutoScalingGroupName        :: !Text
+  , _pspPolicyName                  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutScalingPolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'pspMinAdjustmentStep' - Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
 --
--- * 'pspEstimatedInstanceWarmup' - The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group. This parameter is not supported if the policy type is @SimpleScaling@ .
+-- * 'pspEstimatedInstanceWarmup' - The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group. This parameter is supported if the policy type is @StepScaling@ or @TargetTrackingScaling@ .
 --
--- * 'pspPolicyType' - The policy type. Valid values are @SimpleScaling@ and @StepScaling@ . If the policy type is null, the value is treated as @SimpleScaling@ .
+-- * 'pspPolicyType' - The policy type. The valid values are @SimpleScaling@ , @StepScaling@ , and @TargetTrackingScaling@ . If the policy type is null, the value is treated as @SimpleScaling@ .
 --
 -- * 'pspStepAdjustments' - A set of adjustments that enable you to scale based on the size of the alarm breach. This parameter is required if the policy type is @StepScaling@ and not supported otherwise.
 --
+-- * 'pspTargetTrackingConfiguration' - A target tracking policy. This parameter is required if the policy type is @TargetTrackingScaling@ and not supported otherwise.
+--
+-- * 'pspAdjustmentType' - The adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ . This parameter is supported if the policy type is @SimpleScaling@ or @StepScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
+--
 -- * 'pspScalingAdjustment' - The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. This parameter is required if the policy type is @SimpleScaling@ and not supported otherwise.
 --
--- * 'pspCooldown' - The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies. This parameter is not supported unless the policy type is @SimpleScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html Auto Scaling Cooldowns> in the /Auto Scaling User Guide/ .
+-- * 'pspCooldown' - The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies. This parameter is supported if the policy type is @SimpleScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html Auto Scaling Cooldowns> in the /Auto Scaling User Guide/ .
 --
--- * 'pspMetricAggregationType' - The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ . If the aggregation type is null, the value is treated as @Average@ . This parameter is not supported if the policy type is @SimpleScaling@ .
+-- * 'pspMetricAggregationType' - The aggregation type for the CloudWatch metrics. The valid values are @Minimum@ , @Maximum@ , and @Average@ . If the aggregation type is null, the value is treated as @Average@ . This parameter is supported if the policy type is @StepScaling@ .
 --
--- * 'pspMinAdjustmentMagnitude' - The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
+-- * 'pspMinAdjustmentMagnitude' - The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ . This parameter is supported if the policy type is @SimpleScaling@ or @StepScaling@ .
 --
 -- * 'pspAutoScalingGroupName' - The name or ARN of the group.
 --
 -- * 'pspPolicyName' - The name of the policy.
---
--- * 'pspAdjustmentType' - The adjustment type. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
 putScalingPolicy
     :: Text -- ^ 'pspAutoScalingGroupName'
     -> Text -- ^ 'pspPolicyName'
-    -> Text -- ^ 'pspAdjustmentType'
     -> PutScalingPolicy
-putScalingPolicy pAutoScalingGroupName_ pPolicyName_ pAdjustmentType_ =
-    PutScalingPolicy'
-    { _pspMinAdjustmentStep = Nothing
-    , _pspEstimatedInstanceWarmup = Nothing
-    , _pspPolicyType = Nothing
-    , _pspStepAdjustments = Nothing
-    , _pspScalingAdjustment = Nothing
-    , _pspCooldown = Nothing
-    , _pspMetricAggregationType = Nothing
-    , _pspMinAdjustmentMagnitude = Nothing
-    , _pspAutoScalingGroupName = pAutoScalingGroupName_
-    , _pspPolicyName = pPolicyName_
-    , _pspAdjustmentType = pAdjustmentType_
-    }
+putScalingPolicy pAutoScalingGroupName_ pPolicyName_ =
+  PutScalingPolicy'
+  { _pspMinAdjustmentStep = Nothing
+  , _pspEstimatedInstanceWarmup = Nothing
+  , _pspPolicyType = Nothing
+  , _pspStepAdjustments = Nothing
+  , _pspTargetTrackingConfiguration = Nothing
+  , _pspAdjustmentType = Nothing
+  , _pspScalingAdjustment = Nothing
+  , _pspCooldown = Nothing
+  , _pspMetricAggregationType = Nothing
+  , _pspMinAdjustmentMagnitude = Nothing
+  , _pspAutoScalingGroupName = pAutoScalingGroupName_
+  , _pspPolicyName = pPolicyName_
+  }
 
+
 -- | Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
 pspMinAdjustmentStep :: Lens' PutScalingPolicy (Maybe Int)
 pspMinAdjustmentStep = lens _pspMinAdjustmentStep (\ s a -> s{_pspMinAdjustmentStep = a});
 
--- | The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group. This parameter is not supported if the policy type is @SimpleScaling@ .
+-- | The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group. This parameter is supported if the policy type is @StepScaling@ or @TargetTrackingScaling@ .
 pspEstimatedInstanceWarmup :: Lens' PutScalingPolicy (Maybe Int)
 pspEstimatedInstanceWarmup = lens _pspEstimatedInstanceWarmup (\ s a -> s{_pspEstimatedInstanceWarmup = a});
 
--- | The policy type. Valid values are @SimpleScaling@ and @StepScaling@ . If the policy type is null, the value is treated as @SimpleScaling@ .
+-- | The policy type. The valid values are @SimpleScaling@ , @StepScaling@ , and @TargetTrackingScaling@ . If the policy type is null, the value is treated as @SimpleScaling@ .
 pspPolicyType :: Lens' PutScalingPolicy (Maybe Text)
 pspPolicyType = lens _pspPolicyType (\ s a -> s{_pspPolicyType = a});
 
@@ -136,19 +139,27 @@
 pspStepAdjustments :: Lens' PutScalingPolicy [StepAdjustment]
 pspStepAdjustments = lens _pspStepAdjustments (\ s a -> s{_pspStepAdjustments = a}) . _Default . _Coerce;
 
+-- | A target tracking policy. This parameter is required if the policy type is @TargetTrackingScaling@ and not supported otherwise.
+pspTargetTrackingConfiguration :: Lens' PutScalingPolicy (Maybe TargetTrackingConfiguration)
+pspTargetTrackingConfiguration = lens _pspTargetTrackingConfiguration (\ s a -> s{_pspTargetTrackingConfiguration = a});
+
+-- | The adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ . This parameter is supported if the policy type is @SimpleScaling@ or @StepScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
+pspAdjustmentType :: Lens' PutScalingPolicy (Maybe Text)
+pspAdjustmentType = lens _pspAdjustmentType (\ s a -> s{_pspAdjustmentType = a});
+
 -- | The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. This parameter is required if the policy type is @SimpleScaling@ and not supported otherwise.
 pspScalingAdjustment :: Lens' PutScalingPolicy (Maybe Int)
 pspScalingAdjustment = lens _pspScalingAdjustment (\ s a -> s{_pspScalingAdjustment = a});
 
--- | The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies. This parameter is not supported unless the policy type is @SimpleScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html Auto Scaling Cooldowns> in the /Auto Scaling User Guide/ .
+-- | The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies. This parameter is supported if the policy type is @SimpleScaling@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html Auto Scaling Cooldowns> in the /Auto Scaling User Guide/ .
 pspCooldown :: Lens' PutScalingPolicy (Maybe Int)
 pspCooldown = lens _pspCooldown (\ s a -> s{_pspCooldown = a});
 
--- | The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ . If the aggregation type is null, the value is treated as @Average@ . This parameter is not supported if the policy type is @SimpleScaling@ .
+-- | The aggregation type for the CloudWatch metrics. The valid values are @Minimum@ , @Maximum@ , and @Average@ . If the aggregation type is null, the value is treated as @Average@ . This parameter is supported if the policy type is @StepScaling@ .
 pspMetricAggregationType :: Lens' PutScalingPolicy (Maybe Text)
 pspMetricAggregationType = lens _pspMetricAggregationType (\ s a -> s{_pspMetricAggregationType = a});
 
--- | The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
+-- | The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ . This parameter is supported if the policy type is @SimpleScaling@ or @StepScaling@ .
 pspMinAdjustmentMagnitude :: Lens' PutScalingPolicy (Maybe Int)
 pspMinAdjustmentMagnitude = lens _pspMinAdjustmentMagnitude (\ s a -> s{_pspMinAdjustmentMagnitude = a});
 
@@ -160,10 +171,6 @@
 pspPolicyName :: Lens' PutScalingPolicy Text
 pspPolicyName = lens _pspPolicyName (\ s a -> s{_pspPolicyName = a});
 
--- | The adjustment type. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ . For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
-pspAdjustmentType :: Lens' PutScalingPolicy Text
-pspAdjustmentType = lens _pspAdjustmentType (\ s a -> s{_pspAdjustmentType = a});
-
 instance AWSRequest PutScalingPolicy where
         type Rs PutScalingPolicy = PutScalingPolicyResponse
         request = postQuery autoScaling
@@ -171,11 +178,14 @@
           = receiveXMLWrapper "PutScalingPolicyResult"
               (\ s h x ->
                  PutScalingPolicyResponse' <$>
-                   (x .@? "PolicyARN") <*> (pure (fromEnum s)))
+                   (x .@? "PolicyARN") <*>
+                     (x .@? "Alarms" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance Hashable PutScalingPolicy
+instance Hashable PutScalingPolicy where
 
-instance NFData PutScalingPolicy
+instance NFData PutScalingPolicy where
 
 instance ToHeaders PutScalingPolicy where
         toHeaders = const mempty
@@ -195,14 +205,16 @@
                "StepAdjustments" =:
                  toQuery
                    (toQueryList "member" <$> _pspStepAdjustments),
+               "TargetTrackingConfiguration" =:
+                 _pspTargetTrackingConfiguration,
+               "AdjustmentType" =: _pspAdjustmentType,
                "ScalingAdjustment" =: _pspScalingAdjustment,
                "Cooldown" =: _pspCooldown,
                "MetricAggregationType" =: _pspMetricAggregationType,
                "MinAdjustmentMagnitude" =:
                  _pspMinAdjustmentMagnitude,
                "AutoScalingGroupName" =: _pspAutoScalingGroupName,
-               "PolicyName" =: _pspPolicyName,
-               "AdjustmentType" =: _pspAdjustmentType]
+               "PolicyName" =: _pspPolicyName]
 
 -- | Contains the output of PutScalingPolicy.
 --
@@ -210,32 +222,42 @@
 --
 -- /See:/ 'putScalingPolicyResponse' smart constructor.
 data PutScalingPolicyResponse = PutScalingPolicyResponse'
-    { _psprsPolicyARN      :: !(Maybe Text)
-    , _psprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _psprsPolicyARN      :: !(Maybe Text)
+  , _psprsAlarms         :: !(Maybe [Alarm])
+  , _psprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutScalingPolicyResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'psprsPolicyARN' - The Amazon Resource Name (ARN) of the policy.
 --
+-- * 'psprsAlarms' - The CloudWatch alarms created for the target tracking policy.
+--
 -- * 'psprsResponseStatus' - -- | The response status code.
 putScalingPolicyResponse
     :: Int -- ^ 'psprsResponseStatus'
     -> PutScalingPolicyResponse
 putScalingPolicyResponse pResponseStatus_ =
-    PutScalingPolicyResponse'
-    { _psprsPolicyARN = Nothing
-    , _psprsResponseStatus = pResponseStatus_
-    }
+  PutScalingPolicyResponse'
+  { _psprsPolicyARN = Nothing
+  , _psprsAlarms = Nothing
+  , _psprsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The Amazon Resource Name (ARN) of the policy.
 psprsPolicyARN :: Lens' PutScalingPolicyResponse (Maybe Text)
 psprsPolicyARN = lens _psprsPolicyARN (\ s a -> s{_psprsPolicyARN = a});
 
+-- | The CloudWatch alarms created for the target tracking policy.
+psprsAlarms :: Lens' PutScalingPolicyResponse [Alarm]
+psprsAlarms = lens _psprsAlarms (\ s a -> s{_psprsAlarms = a}) . _Default . _Coerce;
+
 -- | -- | The response status code.
 psprsResponseStatus :: Lens' PutScalingPolicyResponse Int
 psprsResponseStatus = lens _psprsResponseStatus (\ s a -> s{_psprsResponseStatus = a});
 
-instance NFData PutScalingPolicyResponse
+instance NFData PutScalingPolicyResponse where
diff --git a/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs b/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
--- a/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
+++ b/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -44,30 +44,27 @@
     , PutScheduledUpdateGroupActionResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for PutScheduledUpdateGroupAction.
---
---
---
--- /See:/ 'putScheduledUpdateGroupAction' smart constructor.
+-- | /See:/ 'putScheduledUpdateGroupAction' smart constructor.
 data PutScheduledUpdateGroupAction = PutScheduledUpdateGroupAction'
-    { _psugaStartTime            :: !(Maybe ISO8601)
-    , _psugaTime                 :: !(Maybe ISO8601)
-    , _psugaMaxSize              :: !(Maybe Int)
-    , _psugaRecurrence           :: !(Maybe Text)
-    , _psugaDesiredCapacity      :: !(Maybe Int)
-    , _psugaMinSize              :: !(Maybe Int)
-    , _psugaEndTime              :: !(Maybe ISO8601)
-    , _psugaAutoScalingGroupName :: !Text
-    , _psugaScheduledActionName  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _psugaStartTime            :: !(Maybe ISO8601)
+  , _psugaTime                 :: !(Maybe ISO8601)
+  , _psugaMaxSize              :: !(Maybe Int)
+  , _psugaRecurrence           :: !(Maybe Text)
+  , _psugaDesiredCapacity      :: !(Maybe Int)
+  , _psugaMinSize              :: !(Maybe Int)
+  , _psugaEndTime              :: !(Maybe ISO8601)
+  , _psugaAutoScalingGroupName :: !Text
+  , _psugaScheduledActionName  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutScheduledUpdateGroupAction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,18 +91,19 @@
     -> Text -- ^ 'psugaScheduledActionName'
     -> PutScheduledUpdateGroupAction
 putScheduledUpdateGroupAction pAutoScalingGroupName_ pScheduledActionName_ =
-    PutScheduledUpdateGroupAction'
-    { _psugaStartTime = Nothing
-    , _psugaTime = Nothing
-    , _psugaMaxSize = Nothing
-    , _psugaRecurrence = Nothing
-    , _psugaDesiredCapacity = Nothing
-    , _psugaMinSize = Nothing
-    , _psugaEndTime = Nothing
-    , _psugaAutoScalingGroupName = pAutoScalingGroupName_
-    , _psugaScheduledActionName = pScheduledActionName_
-    }
+  PutScheduledUpdateGroupAction'
+  { _psugaStartTime = Nothing
+  , _psugaTime = Nothing
+  , _psugaMaxSize = Nothing
+  , _psugaRecurrence = Nothing
+  , _psugaDesiredCapacity = Nothing
+  , _psugaMinSize = Nothing
+  , _psugaEndTime = Nothing
+  , _psugaAutoScalingGroupName = pAutoScalingGroupName_
+  , _psugaScheduledActionName = pScheduledActionName_
+  }
 
+
 -- | The time for this action to start, in "YYYY-MM-DDThh:mm:ssZ" format in UTC/GMT only (for example, @2014-06-01T00:00:00Z@ ). If you specify @Recurrence@ and @StartTime@ , Auto Scaling performs the action at this time, and then performs the action based on the specified recurrence. If you try to schedule your action in the past, Auto Scaling returns an error message.
 psugaStartTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
 psugaStartTime = lens _psugaStartTime (\ s a -> s{_psugaStartTime = a}) . mapping _Time;
@@ -150,9 +148,9 @@
         response
           = receiveNull PutScheduledUpdateGroupActionResponse'
 
-instance Hashable PutScheduledUpdateGroupAction
+instance Hashable PutScheduledUpdateGroupAction where
 
-instance NFData PutScheduledUpdateGroupAction
+instance NFData PutScheduledUpdateGroupAction where
 
 instance ToHeaders PutScheduledUpdateGroupAction
          where
@@ -178,13 +176,16 @@
 
 -- | /See:/ 'putScheduledUpdateGroupActionResponse' smart constructor.
 data PutScheduledUpdateGroupActionResponse =
-    PutScheduledUpdateGroupActionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutScheduledUpdateGroupActionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutScheduledUpdateGroupActionResponse' with the minimum fields required to make a request.
 --
 putScheduledUpdateGroupActionResponse
     :: PutScheduledUpdateGroupActionResponse
 putScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse'
 
+
 instance NFData PutScheduledUpdateGroupActionResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs b/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
--- a/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
+++ b/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -55,25 +55,22 @@
     , rlahrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for RecordLifecycleActionHeartbeat.
---
---
---
--- /See:/ 'recordLifecycleActionHeartbeat' smart constructor.
+-- | /See:/ 'recordLifecycleActionHeartbeat' smart constructor.
 data RecordLifecycleActionHeartbeat = RecordLifecycleActionHeartbeat'
-    { _rlahInstanceId           :: !(Maybe Text)
-    , _rlahLifecycleActionToken :: !(Maybe Text)
-    , _rlahLifecycleHookName    :: !Text
-    , _rlahAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rlahInstanceId           :: !(Maybe Text)
+  , _rlahLifecycleActionToken :: !(Maybe Text)
+  , _rlahLifecycleHookName    :: !Text
+  , _rlahAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RecordLifecycleActionHeartbeat' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,13 +87,14 @@
     -> Text -- ^ 'rlahAutoScalingGroupName'
     -> RecordLifecycleActionHeartbeat
 recordLifecycleActionHeartbeat pLifecycleHookName_ pAutoScalingGroupName_ =
-    RecordLifecycleActionHeartbeat'
-    { _rlahInstanceId = Nothing
-    , _rlahLifecycleActionToken = Nothing
-    , _rlahLifecycleHookName = pLifecycleHookName_
-    , _rlahAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  RecordLifecycleActionHeartbeat'
+  { _rlahInstanceId = Nothing
+  , _rlahLifecycleActionToken = Nothing
+  , _rlahLifecycleHookName = pLifecycleHookName_
+  , _rlahAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | The ID of the instance.
 rlahInstanceId :: Lens' RecordLifecycleActionHeartbeat (Maybe Text)
 rlahInstanceId = lens _rlahInstanceId (\ s a -> s{_rlahInstanceId = a});
@@ -126,8 +124,9 @@
                    (pure (fromEnum s)))
 
 instance Hashable RecordLifecycleActionHeartbeat
+         where
 
-instance NFData RecordLifecycleActionHeartbeat
+instance NFData RecordLifecycleActionHeartbeat where
 
 instance ToHeaders RecordLifecycleActionHeartbeat
          where
@@ -147,15 +146,12 @@
                "LifecycleHookName" =: _rlahLifecycleHookName,
                "AutoScalingGroupName" =: _rlahAutoScalingGroupName]
 
--- | Contains the output of RecordLifecycleActionHeartBeat.
---
---
---
--- /See:/ 'recordLifecycleActionHeartbeatResponse' smart constructor.
+-- | /See:/ 'recordLifecycleActionHeartbeatResponse' smart constructor.
 newtype RecordLifecycleActionHeartbeatResponse = RecordLifecycleActionHeartbeatResponse'
-    { _rlahrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rlahrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RecordLifecycleActionHeartbeatResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -165,13 +161,14 @@
     :: Int -- ^ 'rlahrsResponseStatus'
     -> RecordLifecycleActionHeartbeatResponse
 recordLifecycleActionHeartbeatResponse pResponseStatus_ =
-    RecordLifecycleActionHeartbeatResponse'
-    { _rlahrsResponseStatus = pResponseStatus_
-    }
+  RecordLifecycleActionHeartbeatResponse'
+  {_rlahrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 rlahrsResponseStatus :: Lens' RecordLifecycleActionHeartbeatResponse Int
 rlahrsResponseStatus = lens _rlahrsResponseStatus (\ s a -> s{_rlahrsResponseStatus = a});
 
 instance NFData
-         RecordLifecycleActionHeartbeatResponse
+           RecordLifecycleActionHeartbeatResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/ResumeProcesses.hs b/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
--- a/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
+++ b/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.ResumeProcesses
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,23 +37,20 @@
     , ResumeProcessesResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for SuspendProcesses and ResumeProcesses.
---
---
---
--- /See:/ 'resumeProcesses' smart constructor.
+-- | /See:/ 'resumeProcesses' smart constructor.
 data ResumeProcesses = ResumeProcesses'
-    { _rpScalingProcesses     :: !(Maybe [Text])
-    , _rpAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rpScalingProcesses     :: !(Maybe [Text])
+  , _rpAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResumeProcesses' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +62,12 @@
     :: Text -- ^ 'rpAutoScalingGroupName'
     -> ResumeProcesses
 resumeProcesses pAutoScalingGroupName_ =
-    ResumeProcesses'
-    { _rpScalingProcesses = Nothing
-    , _rpAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  ResumeProcesses'
+  { _rpScalingProcesses = Nothing
+  , _rpAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
 rpScalingProcesses :: Lens' ResumeProcesses [Text]
 rpScalingProcesses = lens _rpScalingProcesses (\ s a -> s{_rpScalingProcesses = a}) . _Default . _Coerce;
@@ -83,9 +81,9 @@
         request = postQuery autoScaling
         response = receiveNull ResumeProcessesResponse'
 
-instance Hashable ResumeProcesses
+instance Hashable ResumeProcesses where
 
-instance NFData ResumeProcesses
+instance NFData ResumeProcesses where
 
 instance ToHeaders ResumeProcesses where
         toHeaders = const mempty
@@ -105,13 +103,15 @@
 
 -- | /See:/ 'resumeProcessesResponse' smart constructor.
 data ResumeProcessesResponse =
-    ResumeProcessesResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  ResumeProcessesResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResumeProcessesResponse' with the minimum fields required to make a request.
 --
 resumeProcessesResponse
     :: ResumeProcessesResponse
 resumeProcessesResponse = ResumeProcessesResponse'
 
-instance NFData ResumeProcessesResponse
+
+instance NFData ResumeProcessesResponse where
diff --git a/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs b/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
--- a/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
+++ b/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.SetDesiredCapacity
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,24 +38,21 @@
     , SetDesiredCapacityResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for SetDesiredCapacity.
---
---
---
--- /See:/ 'setDesiredCapacity' smart constructor.
+-- | /See:/ 'setDesiredCapacity' smart constructor.
 data SetDesiredCapacity = SetDesiredCapacity'
-    { _sdcHonorCooldown        :: !(Maybe Bool)
-    , _sdcAutoScalingGroupName :: !Text
-    , _sdcDesiredCapacity      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sdcHonorCooldown        :: !(Maybe Bool)
+  , _sdcAutoScalingGroupName :: !Text
+  , _sdcDesiredCapacity      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetDesiredCapacity' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,12 +67,13 @@
     -> Int -- ^ 'sdcDesiredCapacity'
     -> SetDesiredCapacity
 setDesiredCapacity pAutoScalingGroupName_ pDesiredCapacity_ =
-    SetDesiredCapacity'
-    { _sdcHonorCooldown = Nothing
-    , _sdcAutoScalingGroupName = pAutoScalingGroupName_
-    , _sdcDesiredCapacity = pDesiredCapacity_
-    }
+  SetDesiredCapacity'
+  { _sdcHonorCooldown = Nothing
+  , _sdcAutoScalingGroupName = pAutoScalingGroupName_
+  , _sdcDesiredCapacity = pDesiredCapacity_
+  }
 
+
 -- | By default, @SetDesiredCapacity@ overrides any cooldown period associated with the Auto Scaling group. Specify @True@ to make Auto Scaling to wait for the cool-down period associated with the Auto Scaling group to complete before initiating a scaling activity to set your Auto Scaling group to its new capacity.
 sdcHonorCooldown :: Lens' SetDesiredCapacity (Maybe Bool)
 sdcHonorCooldown = lens _sdcHonorCooldown (\ s a -> s{_sdcHonorCooldown = a});
@@ -94,9 +92,9 @@
         request = postQuery autoScaling
         response = receiveNull SetDesiredCapacityResponse'
 
-instance Hashable SetDesiredCapacity
+instance Hashable SetDesiredCapacity where
 
-instance NFData SetDesiredCapacity
+instance NFData SetDesiredCapacity where
 
 instance ToHeaders SetDesiredCapacity where
         toHeaders = const mempty
@@ -115,13 +113,15 @@
 
 -- | /See:/ 'setDesiredCapacityResponse' smart constructor.
 data SetDesiredCapacityResponse =
-    SetDesiredCapacityResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SetDesiredCapacityResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetDesiredCapacityResponse' with the minimum fields required to make a request.
 --
 setDesiredCapacityResponse
     :: SetDesiredCapacityResponse
 setDesiredCapacityResponse = SetDesiredCapacityResponse'
 
-instance NFData SetDesiredCapacityResponse
+
+instance NFData SetDesiredCapacityResponse where
diff --git a/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs b/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
--- a/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
+++ b/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.SetInstanceHealth
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,24 +38,21 @@
     , SetInstanceHealthResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for SetInstanceHealth.
---
---
---
--- /See:/ 'setInstanceHealth' smart constructor.
+-- | /See:/ 'setInstanceHealth' smart constructor.
 data SetInstanceHealth = SetInstanceHealth'
-    { _sihShouldRespectGracePeriod :: !(Maybe Bool)
-    , _sihInstanceId               :: !Text
-    , _sihHealthStatus             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sihShouldRespectGracePeriod :: !(Maybe Bool)
+  , _sihInstanceId               :: !Text
+  , _sihHealthStatus             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetInstanceHealth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,12 +67,13 @@
     -> Text -- ^ 'sihHealthStatus'
     -> SetInstanceHealth
 setInstanceHealth pInstanceId_ pHealthStatus_ =
-    SetInstanceHealth'
-    { _sihShouldRespectGracePeriod = Nothing
-    , _sihInstanceId = pInstanceId_
-    , _sihHealthStatus = pHealthStatus_
-    }
+  SetInstanceHealth'
+  { _sihShouldRespectGracePeriod = Nothing
+  , _sihInstanceId = pInstanceId_
+  , _sihHealthStatus = pHealthStatus_
+  }
 
+
 -- | If the Auto Scaling group of the specified instance has a @HealthCheckGracePeriod@ specified for the group, by default, this call will respect the grace period. Set this to @False@ , if you do not want the call to respect the grace period associated with the group. For more information, see the description of the health check grace period for 'CreateAutoScalingGroup' .
 sihShouldRespectGracePeriod :: Lens' SetInstanceHealth (Maybe Bool)
 sihShouldRespectGracePeriod = lens _sihShouldRespectGracePeriod (\ s a -> s{_sihShouldRespectGracePeriod = a});
@@ -93,9 +91,9 @@
         request = postQuery autoScaling
         response = receiveNull SetInstanceHealthResponse'
 
-instance Hashable SetInstanceHealth
+instance Hashable SetInstanceHealth where
 
-instance NFData SetInstanceHealth
+instance NFData SetInstanceHealth where
 
 instance ToHeaders SetInstanceHealth where
         toHeaders = const mempty
@@ -115,13 +113,15 @@
 
 -- | /See:/ 'setInstanceHealthResponse' smart constructor.
 data SetInstanceHealthResponse =
-    SetInstanceHealthResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SetInstanceHealthResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetInstanceHealthResponse' with the minimum fields required to make a request.
 --
 setInstanceHealthResponse
     :: SetInstanceHealthResponse
 setInstanceHealthResponse = SetInstanceHealthResponse'
 
-instance NFData SetInstanceHealthResponse
+
+instance NFData SetInstanceHealthResponse where
diff --git a/gen/Network/AWS/AutoScaling/SetInstanceProtection.hs b/gen/Network/AWS/AutoScaling/SetInstanceProtection.hs
--- a/gen/Network/AWS/AutoScaling/SetInstanceProtection.hs
+++ b/gen/Network/AWS/AutoScaling/SetInstanceProtection.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.SetInstanceProtection
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,24 +40,21 @@
     , siprsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for SetInstanceProtection.
---
---
---
--- /See:/ 'setInstanceProtection' smart constructor.
+-- | /See:/ 'setInstanceProtection' smart constructor.
 data SetInstanceProtection = SetInstanceProtection'
-    { _sipInstanceIds          :: ![Text]
-    , _sipAutoScalingGroupName :: !Text
-    , _sipProtectedFromScaleIn :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sipInstanceIds          :: ![Text]
+  , _sipAutoScalingGroupName :: !Text
+  , _sipProtectedFromScaleIn :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetInstanceProtection' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,12 +69,13 @@
     -> Bool -- ^ 'sipProtectedFromScaleIn'
     -> SetInstanceProtection
 setInstanceProtection pAutoScalingGroupName_ pProtectedFromScaleIn_ =
-    SetInstanceProtection'
-    { _sipInstanceIds = mempty
-    , _sipAutoScalingGroupName = pAutoScalingGroupName_
-    , _sipProtectedFromScaleIn = pProtectedFromScaleIn_
-    }
+  SetInstanceProtection'
+  { _sipInstanceIds = mempty
+  , _sipAutoScalingGroupName = pAutoScalingGroupName_
+  , _sipProtectedFromScaleIn = pProtectedFromScaleIn_
+  }
 
+
 -- | One or more instance IDs.
 sipInstanceIds :: Lens' SetInstanceProtection [Text]
 sipInstanceIds = lens _sipInstanceIds (\ s a -> s{_sipInstanceIds = a}) . _Coerce;
@@ -100,9 +98,9 @@
                  SetInstanceProtectionResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable SetInstanceProtection
+instance Hashable SetInstanceProtection where
 
-instance NFData SetInstanceProtection
+instance NFData SetInstanceProtection where
 
 instance ToHeaders SetInstanceProtection where
         toHeaders = const mempty
@@ -120,15 +118,12 @@
                "AutoScalingGroupName" =: _sipAutoScalingGroupName,
                "ProtectedFromScaleIn" =: _sipProtectedFromScaleIn]
 
--- | Contains the output of SetInstanceProtection.
---
---
---
--- /See:/ 'setInstanceProtectionResponse' smart constructor.
+-- | /See:/ 'setInstanceProtectionResponse' smart constructor.
 newtype SetInstanceProtectionResponse = SetInstanceProtectionResponse'
-    { _siprsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _siprsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetInstanceProtectionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -138,12 +133,11 @@
     :: Int -- ^ 'siprsResponseStatus'
     -> SetInstanceProtectionResponse
 setInstanceProtectionResponse pResponseStatus_ =
-    SetInstanceProtectionResponse'
-    { _siprsResponseStatus = pResponseStatus_
-    }
+  SetInstanceProtectionResponse' {_siprsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 siprsResponseStatus :: Lens' SetInstanceProtectionResponse Int
 siprsResponseStatus = lens _siprsResponseStatus (\ s a -> s{_siprsResponseStatus = a});
 
-instance NFData SetInstanceProtectionResponse
+instance NFData SetInstanceProtectionResponse where
diff --git a/gen/Network/AWS/AutoScaling/SuspendProcesses.hs b/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
--- a/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
+++ b/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.SuspendProcesses
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,23 +41,20 @@
     , SuspendProcessesResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for SuspendProcesses and ResumeProcesses.
---
---
---
--- /See:/ 'suspendProcesses' smart constructor.
+-- | /See:/ 'suspendProcesses' smart constructor.
 data SuspendProcesses = SuspendProcesses'
-    { _spScalingProcesses     :: !(Maybe [Text])
-    , _spAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _spScalingProcesses     :: !(Maybe [Text])
+  , _spAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SuspendProcesses' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +66,12 @@
     :: Text -- ^ 'spAutoScalingGroupName'
     -> SuspendProcesses
 suspendProcesses pAutoScalingGroupName_ =
-    SuspendProcesses'
-    { _spScalingProcesses = Nothing
-    , _spAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  SuspendProcesses'
+  { _spScalingProcesses = Nothing
+  , _spAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
 spScalingProcesses :: Lens' SuspendProcesses [Text]
 spScalingProcesses = lens _spScalingProcesses (\ s a -> s{_spScalingProcesses = a}) . _Default . _Coerce;
@@ -87,9 +85,9 @@
         request = postQuery autoScaling
         response = receiveNull SuspendProcessesResponse'
 
-instance Hashable SuspendProcesses
+instance Hashable SuspendProcesses where
 
-instance NFData SuspendProcesses
+instance NFData SuspendProcesses where
 
 instance ToHeaders SuspendProcesses where
         toHeaders = const mempty
@@ -109,13 +107,15 @@
 
 -- | /See:/ 'suspendProcessesResponse' smart constructor.
 data SuspendProcessesResponse =
-    SuspendProcessesResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SuspendProcessesResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SuspendProcessesResponse' with the minimum fields required to make a request.
 --
 suspendProcessesResponse
     :: SuspendProcessesResponse
 suspendProcessesResponse = SuspendProcessesResponse'
 
-instance NFData SuspendProcessesResponse
+
+instance NFData SuspendProcessesResponse where
diff --git a/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,23 +40,20 @@
     , tiiasgrsResponseStatus
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for TerminateInstanceInAutoScalingGroup.
---
---
---
--- /See:/ 'terminateInstanceInAutoScalingGroup' smart constructor.
+-- | /See:/ 'terminateInstanceInAutoScalingGroup' smart constructor.
 data TerminateInstanceInAutoScalingGroup = TerminateInstanceInAutoScalingGroup'
-    { _tiiasgInstanceId                     :: !Text
-    , _tiiasgShouldDecrementDesiredCapacity :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _tiiasgInstanceId                     :: !Text
+  , _tiiasgShouldDecrementDesiredCapacity :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TerminateInstanceInAutoScalingGroup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +66,12 @@
     -> Bool -- ^ 'tiiasgShouldDecrementDesiredCapacity'
     -> TerminateInstanceInAutoScalingGroup
 terminateInstanceInAutoScalingGroup pInstanceId_ pShouldDecrementDesiredCapacity_ =
-    TerminateInstanceInAutoScalingGroup'
-    { _tiiasgInstanceId = pInstanceId_
-    , _tiiasgShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
-    }
+  TerminateInstanceInAutoScalingGroup'
+  { _tiiasgInstanceId = pInstanceId_
+  , _tiiasgShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
+  }
 
+
 -- | The ID of the instance.
 tiiasgInstanceId :: Lens' TerminateInstanceInAutoScalingGroup Text
 tiiasgInstanceId = lens _tiiasgInstanceId (\ s a -> s{_tiiasgInstanceId = a});
@@ -83,7 +81,8 @@
 tiiasgShouldDecrementDesiredCapacity = lens _tiiasgShouldDecrementDesiredCapacity (\ s a -> s{_tiiasgShouldDecrementDesiredCapacity = a});
 
 instance AWSRequest
-         TerminateInstanceInAutoScalingGroup where
+           TerminateInstanceInAutoScalingGroup
+         where
         type Rs TerminateInstanceInAutoScalingGroup =
              TerminateInstanceInAutoScalingGroupResponse
         request = postQuery autoScaling
@@ -95,11 +94,14 @@
                    (x .@? "Activity") <*> (pure (fromEnum s)))
 
 instance Hashable TerminateInstanceInAutoScalingGroup
+         where
 
 instance NFData TerminateInstanceInAutoScalingGroup
+         where
 
 instance ToHeaders
-         TerminateInstanceInAutoScalingGroup where
+           TerminateInstanceInAutoScalingGroup
+         where
         toHeaders = const mempty
 
 instance ToPath TerminateInstanceInAutoScalingGroup
@@ -118,16 +120,13 @@
                "ShouldDecrementDesiredCapacity" =:
                  _tiiasgShouldDecrementDesiredCapacity]
 
--- | Contains the output of TerminateInstancesInAutoScalingGroup.
---
---
---
--- /See:/ 'terminateInstanceInAutoScalingGroupResponse' smart constructor.
+-- | /See:/ 'terminateInstanceInAutoScalingGroupResponse' smart constructor.
 data TerminateInstanceInAutoScalingGroupResponse = TerminateInstanceInAutoScalingGroupResponse'
-    { _tiiasgrsActivity       :: !(Maybe Activity)
-    , _tiiasgrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _tiiasgrsActivity       :: !(Maybe Activity)
+  , _tiiasgrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TerminateInstanceInAutoScalingGroupResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -139,11 +138,10 @@
     :: Int -- ^ 'tiiasgrsResponseStatus'
     -> TerminateInstanceInAutoScalingGroupResponse
 terminateInstanceInAutoScalingGroupResponse pResponseStatus_ =
-    TerminateInstanceInAutoScalingGroupResponse'
-    { _tiiasgrsActivity = Nothing
-    , _tiiasgrsResponseStatus = pResponseStatus_
-    }
+  TerminateInstanceInAutoScalingGroupResponse'
+  {_tiiasgrsActivity = Nothing, _tiiasgrsResponseStatus = pResponseStatus_}
 
+
 -- | A scaling activity.
 tiiasgrsActivity :: Lens' TerminateInstanceInAutoScalingGroupResponse (Maybe Activity)
 tiiasgrsActivity = lens _tiiasgrsActivity (\ s a -> s{_tiiasgrsActivity = a});
@@ -153,4 +151,5 @@
 tiiasgrsResponseStatus = lens _tiiasgrsResponseStatus (\ s a -> s{_tiiasgrsResponseStatus = a});
 
 instance NFData
-         TerminateInstanceInAutoScalingGroupResponse
+           TerminateInstanceInAutoScalingGroupResponse
+         where
diff --git a/gen/Network/AWS/AutoScaling/Types.hs b/gen/Network/AWS/AutoScaling/Types.hs
--- a/gen/Network/AWS/AutoScaling/Types.hs
+++ b/gen/Network/AWS/AutoScaling/Types.hs
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -26,6 +26,12 @@
     -- * LifecycleState
     , LifecycleState (..)
 
+    -- * MetricStatistic
+    , MetricStatistic (..)
+
+    -- * MetricType
+    , MetricType (..)
+
     -- * ScalingActivityStatusCode
     , ScalingActivityStatusCode (..)
 
@@ -99,6 +105,15 @@
     , bdmEBS
     , bdmDeviceName
 
+    -- * CustomizedMetricSpecification
+    , CustomizedMetricSpecification
+    , customizedMetricSpecification
+    , cmsDimensions
+    , cmsUnit
+    , cmsMetricName
+    , cmsNamespace
+    , cmsStatistic
+
     -- * EBS
     , EBS
     , ebs
@@ -172,6 +187,17 @@
     , lhLifecycleTransition
     , lhRoleARN
 
+    -- * LifecycleHookSpecification
+    , LifecycleHookSpecification
+    , lifecycleHookSpecification
+    , lhsDefaultResult
+    , lhsHeartbeatTimeout
+    , lhsNotificationMetadata
+    , lhsNotificationTargetARN
+    , lhsLifecycleTransition
+    , lhsRoleARN
+    , lhsLifecycleHookName
+
     -- * LoadBalancerState
     , LoadBalancerState
     , loadBalancerState
@@ -189,6 +215,12 @@
     , metricCollectionType
     , mctMetric
 
+    -- * MetricDimension
+    , MetricDimension
+    , metricDimension
+    , mdName
+    , mdValue
+
     -- * MetricGranularityType
     , MetricGranularityType
     , metricGranularityType
@@ -201,6 +233,12 @@
     , ncAutoScalingGroupName
     , ncNotificationType
 
+    -- * PredefinedMetricSpecification
+    , PredefinedMetricSpecification
+    , predefinedMetricSpecification
+    , pmsResourceLabel
+    , pmsPredefinedMetricType
+
     -- * ProcessType
     , ProcessType
     , processType
@@ -214,6 +252,7 @@
     , sPolicyName
     , sPolicyType
     , sStepAdjustments
+    , sTargetTrackingConfiguration
     , sAdjustmentType
     , sAutoScalingGroupName
     , sScalingAdjustment
@@ -273,40 +312,50 @@
     , tdKey
     , tdPropagateAtLaunch
     , tdValue
+
+    -- * TargetTrackingConfiguration
+    , TargetTrackingConfiguration
+    , targetTrackingConfiguration
+    , ttcPredefinedMetricSpecification
+    , ttcCustomizedMetricSpecification
+    , ttcDisableScaleIn
+    , ttcTargetValue
     ) where
 
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.AutoScaling.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.AutoScaling.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2011-01-01@ of the Amazon Auto Scaling SDK configuration.
 autoScaling :: Service
 autoScaling =
-    Service
-    { _svcAbbrev = "AutoScaling"
-    , _svcSigner = v4
-    , _svcPrefix = "autoscaling"
-    , _svcVersion = "2011-01-01"
-    , _svcEndpoint = defaultEndpoint autoScaling
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseXMLError "AutoScaling"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "AutoScaling"
+  , _svcSigner = v4
+  , _svcPrefix = "autoscaling"
+  , _svcVersion = "2011-01-01"
+  , _svcEndpoint = defaultEndpoint autoScaling
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseXMLError "AutoScaling"
+  , _svcRetry = retry
+  }
   where
     retry =
-        Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -315,40 +364,51 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+
 -- | You already have an Auto Scaling group or launch configuration with this name.
 --
 --
 _AlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
-_AlreadyExistsFault = _ServiceError . hasStatus 400 . hasCode "AlreadyExists"
+_AlreadyExistsFault =
+  _MatchServiceError autoScaling "AlreadyExists" . hasStatus 400
 
+
 -- | You have already reached a limit for your Auto Scaling resources (for example, groups, launch configurations, or lifecycle hooks). For more information, see 'DescribeAccountLimits' .
 --
 --
 _LimitExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededFault = _ServiceError . hasStatus 400 . hasCode "LimitExceeded"
+_LimitExceededFault =
+  _MatchServiceError autoScaling "LimitExceeded" . hasStatus 400
 
+
 -- | The operation can't be performed because the resource is in use.
 --
 --
 _ResourceInUseFault :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceInUseFault = _ServiceError . hasStatus 400 . hasCode "ResourceInUse"
+_ResourceInUseFault =
+  _MatchServiceError autoScaling "ResourceInUse" . hasStatus 400
 
+
 -- | The @NextToken@ value is not valid.
 --
 --
 _InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidNextToken = _ServiceError . hasStatus 400 . hasCode "InvalidNextToken"
+_InvalidNextToken =
+  _MatchServiceError autoScaling "InvalidNextToken" . hasStatus 400
 
+
 -- | The operation can't be performed because there are scaling activities in progress.
 --
 --
 _ScalingActivityInProgressFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ScalingActivityInProgressFault =
-    _ServiceError . hasStatus 400 . hasCode "ScalingActivityInProgress"
+  _MatchServiceError autoScaling "ScalingActivityInProgress" . hasStatus 400
 
+
 -- | You already have a pending update to an Auto Scaling resource (for example, a group, instance, or load balancer).
 --
 --
 _ResourceContentionFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceContentionFault =
-    _ServiceError . hasStatus 500 . hasCode "ResourceContention"
+  _MatchServiceError autoScaling "ResourceContention" . hasStatus 500
+
diff --git a/gen/Network/AWS/AutoScaling/Types/Product.hs b/gen/Network/AWS/AutoScaling/Types/Product.hs
--- a/gen/Network/AWS/AutoScaling/Types/Product.hs
+++ b/gen/Network/AWS/AutoScaling/Types/Product.hs
@@ -9,2054 +9,2421 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.AutoScaling.Types.Product where
-
-import           Network.AWS.AutoScaling.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-
--- | Describes scaling activity, which is a long-running process that represents a change to your Auto Scaling group, such as changing its size or replacing an instance.
---
---
---
--- /See:/ 'activity' smart constructor.
-data Activity = Activity'
-    { _aProgress             :: !(Maybe Int)
-    , _aStatusMessage        :: !(Maybe Text)
-    , _aEndTime              :: !(Maybe ISO8601)
-    , _aDetails              :: !(Maybe Text)
-    , _aDescription          :: !(Maybe Text)
-    , _aActivityId           :: !Text
-    , _aAutoScalingGroupName :: !Text
-    , _aCause                :: !Text
-    , _aStartTime            :: !ISO8601
-    , _aStatusCode           :: !ScalingActivityStatusCode
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Activity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aProgress' - A value between 0 and 100 that indicates the progress of the activity.
---
--- * 'aStatusMessage' - A friendly, more verbose description of the activity status.
---
--- * 'aEndTime' - The end time of the activity.
---
--- * 'aDetails' - The details about the activity.
---
--- * 'aDescription' - A friendly, more verbose description of the activity.
---
--- * 'aActivityId' - The ID of the activity.
---
--- * 'aAutoScalingGroupName' - The name of the Auto Scaling group.
---
--- * 'aCause' - The reason the activity began.
---
--- * 'aStartTime' - The start time of the activity.
---
--- * 'aStatusCode' - The current status of the activity.
-activity
-    :: Text -- ^ 'aActivityId'
-    -> Text -- ^ 'aAutoScalingGroupName'
-    -> Text -- ^ 'aCause'
-    -> UTCTime -- ^ 'aStartTime'
-    -> ScalingActivityStatusCode -- ^ 'aStatusCode'
-    -> Activity
-activity pActivityId_ pAutoScalingGroupName_ pCause_ pStartTime_ pStatusCode_ =
-    Activity'
-    { _aProgress = Nothing
-    , _aStatusMessage = Nothing
-    , _aEndTime = Nothing
-    , _aDetails = Nothing
-    , _aDescription = Nothing
-    , _aActivityId = pActivityId_
-    , _aAutoScalingGroupName = pAutoScalingGroupName_
-    , _aCause = pCause_
-    , _aStartTime = _Time # pStartTime_
-    , _aStatusCode = pStatusCode_
-    }
-
--- | A value between 0 and 100 that indicates the progress of the activity.
-aProgress :: Lens' Activity (Maybe Int)
-aProgress = lens _aProgress (\ s a -> s{_aProgress = a});
-
--- | A friendly, more verbose description of the activity status.
-aStatusMessage :: Lens' Activity (Maybe Text)
-aStatusMessage = lens _aStatusMessage (\ s a -> s{_aStatusMessage = a});
-
--- | The end time of the activity.
-aEndTime :: Lens' Activity (Maybe UTCTime)
-aEndTime = lens _aEndTime (\ s a -> s{_aEndTime = a}) . mapping _Time;
-
--- | The details about the activity.
-aDetails :: Lens' Activity (Maybe Text)
-aDetails = lens _aDetails (\ s a -> s{_aDetails = a});
-
--- | A friendly, more verbose description of the activity.
-aDescription :: Lens' Activity (Maybe Text)
-aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
-
--- | The ID of the activity.
-aActivityId :: Lens' Activity Text
-aActivityId = lens _aActivityId (\ s a -> s{_aActivityId = a});
-
--- | The name of the Auto Scaling group.
-aAutoScalingGroupName :: Lens' Activity Text
-aAutoScalingGroupName = lens _aAutoScalingGroupName (\ s a -> s{_aAutoScalingGroupName = a});
-
--- | The reason the activity began.
-aCause :: Lens' Activity Text
-aCause = lens _aCause (\ s a -> s{_aCause = a});
-
--- | The start time of the activity.
-aStartTime :: Lens' Activity UTCTime
-aStartTime = lens _aStartTime (\ s a -> s{_aStartTime = a}) . _Time;
-
--- | The current status of the activity.
-aStatusCode :: Lens' Activity ScalingActivityStatusCode
-aStatusCode = lens _aStatusCode (\ s a -> s{_aStatusCode = a});
-
-instance FromXML Activity where
-        parseXML x
-          = Activity' <$>
-              (x .@? "Progress") <*> (x .@? "StatusMessage") <*>
-                (x .@? "EndTime")
-                <*> (x .@? "Details")
-                <*> (x .@? "Description")
-                <*> (x .@ "ActivityId")
-                <*> (x .@ "AutoScalingGroupName")
-                <*> (x .@ "Cause")
-                <*> (x .@ "StartTime")
-                <*> (x .@ "StatusCode")
-
-instance Hashable Activity
-
-instance NFData Activity
-
--- | Describes a policy adjustment type.
---
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
---
---
--- /See:/ 'adjustmentType' smart constructor.
-newtype AdjustmentType = AdjustmentType'
-    { _atAdjustmentType :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdjustmentType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atAdjustmentType' - The policy adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
-adjustmentType
-    :: AdjustmentType
-adjustmentType =
-    AdjustmentType'
-    { _atAdjustmentType = Nothing
-    }
-
--- | The policy adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
-atAdjustmentType :: Lens' AdjustmentType (Maybe Text)
-atAdjustmentType = lens _atAdjustmentType (\ s a -> s{_atAdjustmentType = a});
-
-instance FromXML AdjustmentType where
-        parseXML x
-          = AdjustmentType' <$> (x .@? "AdjustmentType")
-
-instance Hashable AdjustmentType
-
-instance NFData AdjustmentType
-
--- | Describes an alarm.
---
---
---
--- /See:/ 'alarm' smart constructor.
-data Alarm = Alarm'
-    { _aAlarmName :: !(Maybe Text)
-    , _aAlarmARN  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Alarm' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aAlarmName' - The name of the alarm.
---
--- * 'aAlarmARN' - The Amazon Resource Name (ARN) of the alarm.
-alarm
-    :: Alarm
-alarm =
-    Alarm'
-    { _aAlarmName = Nothing
-    , _aAlarmARN = Nothing
-    }
-
--- | The name of the alarm.
-aAlarmName :: Lens' Alarm (Maybe Text)
-aAlarmName = lens _aAlarmName (\ s a -> s{_aAlarmName = a});
-
--- | The Amazon Resource Name (ARN) of the alarm.
-aAlarmARN :: Lens' Alarm (Maybe Text)
-aAlarmARN = lens _aAlarmARN (\ s a -> s{_aAlarmARN = a});
-
-instance FromXML Alarm where
-        parseXML x
-          = Alarm' <$>
-              (x .@? "AlarmName") <*> (x .@? "AlarmARN")
-
-instance Hashable Alarm
-
-instance NFData Alarm
-
--- | Describes an Auto Scaling group.
---
---
---
--- /See:/ 'autoScalingGroup' smart constructor.
-data AutoScalingGroup = AutoScalingGroup'
-    { _asgStatus                           :: !(Maybe Text)
-    , _asgTerminationPolicies              :: !(Maybe [Text])
-    , _asgHealthCheckGracePeriod           :: !(Maybe Int)
-    , _asgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
-    , _asgVPCZoneIdentifier                :: !(Maybe Text)
-    , _asgTargetGroupARNs                  :: !(Maybe [Text])
-    , _asgEnabledMetrics                   :: !(Maybe [EnabledMetric])
-    , _asgLaunchConfigurationName          :: !(Maybe Text)
-    , _asgInstances                        :: !(Maybe [Instance])
-    , _asgAutoScalingGroupARN              :: !(Maybe Text)
-    , _asgPlacementGroup                   :: !(Maybe Text)
-    , _asgSuspendedProcesses               :: !(Maybe [SuspendedProcess])
-    , _asgLoadBalancerNames                :: !(Maybe [Text])
-    , _asgTags                             :: !(Maybe [TagDescription])
-    , _asgAutoScalingGroupName             :: !Text
-    , _asgMinSize                          :: !Int
-    , _asgMaxSize                          :: !Int
-    , _asgDesiredCapacity                  :: !Int
-    , _asgDefaultCooldown                  :: !Int
-    , _asgAvailabilityZones                :: !(List1 Text)
-    , _asgHealthCheckType                  :: !Text
-    , _asgCreatedTime                      :: !ISO8601
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoScalingGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asgStatus' - The current state of the group when 'DeleteAutoScalingGroup' is in progress.
---
--- * 'asgTerminationPolicies' - The termination policies for the group.
---
--- * 'asgHealthCheckGracePeriod' - The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service.
---
--- * 'asgNewInstancesProtectedFromScaleIn' - Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in.
---
--- * 'asgVPCZoneIdentifier' - One or more subnet IDs, if applicable, separated by commas. If you specify @VPCZoneIdentifier@ and @AvailabilityZones@ , ensure that the Availability Zones of the subnets match the values for @AvailabilityZones@ .
---
--- * 'asgTargetGroupARNs' - The Amazon Resource Names (ARN) of the target groups for your load balancer.
---
--- * 'asgEnabledMetrics' - The metrics enabled for the group.
---
--- * 'asgLaunchConfigurationName' - The name of the associated launch configuration.
---
--- * 'asgInstances' - The EC2 instances associated with the group.
---
--- * 'asgAutoScalingGroupARN' - The Amazon Resource Name (ARN) of the group.
---
--- * 'asgPlacementGroup' - The name of the placement group into which you'll launch your instances, if any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups> in the /Amazon Elastic Compute Cloud User Guide/ .
---
--- * 'asgSuspendedProcesses' - The suspended processes associated with the group.
---
--- * 'asgLoadBalancerNames' - One or more load balancers associated with the group.
---
--- * 'asgTags' - The tags for the group.
---
--- * 'asgAutoScalingGroupName' - The name of the group.
---
--- * 'asgMinSize' - The minimum size of the group.
---
--- * 'asgMaxSize' - The maximum size of the group.
---
--- * 'asgDesiredCapacity' - The desired size of the group.
---
--- * 'asgDefaultCooldown' - The amount of time, in seconds, after a scaling activity completes before another scaling activity can start.
---
--- * 'asgAvailabilityZones' - One or more Availability Zones for the group.
---
--- * 'asgHealthCheckType' - The service to use for the health checks. The valid values are @EC2@ and @ELB@ .
---
--- * 'asgCreatedTime' - The date and time the group was created.
-autoScalingGroup
-    :: Text -- ^ 'asgAutoScalingGroupName'
-    -> Int -- ^ 'asgMinSize'
-    -> Int -- ^ 'asgMaxSize'
-    -> Int -- ^ 'asgDesiredCapacity'
-    -> Int -- ^ 'asgDefaultCooldown'
-    -> NonEmpty Text -- ^ 'asgAvailabilityZones'
-    -> Text -- ^ 'asgHealthCheckType'
-    -> UTCTime -- ^ 'asgCreatedTime'
-    -> AutoScalingGroup
-autoScalingGroup pAutoScalingGroupName_ pMinSize_ pMaxSize_ pDesiredCapacity_ pDefaultCooldown_ pAvailabilityZones_ pHealthCheckType_ pCreatedTime_ =
-    AutoScalingGroup'
-    { _asgStatus = Nothing
-    , _asgTerminationPolicies = Nothing
-    , _asgHealthCheckGracePeriod = Nothing
-    , _asgNewInstancesProtectedFromScaleIn = Nothing
-    , _asgVPCZoneIdentifier = Nothing
-    , _asgTargetGroupARNs = Nothing
-    , _asgEnabledMetrics = Nothing
-    , _asgLaunchConfigurationName = Nothing
-    , _asgInstances = Nothing
-    , _asgAutoScalingGroupARN = Nothing
-    , _asgPlacementGroup = Nothing
-    , _asgSuspendedProcesses = Nothing
-    , _asgLoadBalancerNames = Nothing
-    , _asgTags = Nothing
-    , _asgAutoScalingGroupName = pAutoScalingGroupName_
-    , _asgMinSize = pMinSize_
-    , _asgMaxSize = pMaxSize_
-    , _asgDesiredCapacity = pDesiredCapacity_
-    , _asgDefaultCooldown = pDefaultCooldown_
-    , _asgAvailabilityZones = _List1 # pAvailabilityZones_
-    , _asgHealthCheckType = pHealthCheckType_
-    , _asgCreatedTime = _Time # pCreatedTime_
-    }
-
--- | The current state of the group when 'DeleteAutoScalingGroup' is in progress.
-asgStatus :: Lens' AutoScalingGroup (Maybe Text)
-asgStatus = lens _asgStatus (\ s a -> s{_asgStatus = a});
-
--- | The termination policies for the group.
-asgTerminationPolicies :: Lens' AutoScalingGroup [Text]
-asgTerminationPolicies = lens _asgTerminationPolicies (\ s a -> s{_asgTerminationPolicies = a}) . _Default . _Coerce;
-
--- | The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service.
-asgHealthCheckGracePeriod :: Lens' AutoScalingGroup (Maybe Int)
-asgHealthCheckGracePeriod = lens _asgHealthCheckGracePeriod (\ s a -> s{_asgHealthCheckGracePeriod = a});
-
--- | Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in.
-asgNewInstancesProtectedFromScaleIn :: Lens' AutoScalingGroup (Maybe Bool)
-asgNewInstancesProtectedFromScaleIn = lens _asgNewInstancesProtectedFromScaleIn (\ s a -> s{_asgNewInstancesProtectedFromScaleIn = a});
-
--- | One or more subnet IDs, if applicable, separated by commas. If you specify @VPCZoneIdentifier@ and @AvailabilityZones@ , ensure that the Availability Zones of the subnets match the values for @AvailabilityZones@ .
-asgVPCZoneIdentifier :: Lens' AutoScalingGroup (Maybe Text)
-asgVPCZoneIdentifier = lens _asgVPCZoneIdentifier (\ s a -> s{_asgVPCZoneIdentifier = a});
-
--- | The Amazon Resource Names (ARN) of the target groups for your load balancer.
-asgTargetGroupARNs :: Lens' AutoScalingGroup [Text]
-asgTargetGroupARNs = lens _asgTargetGroupARNs (\ s a -> s{_asgTargetGroupARNs = a}) . _Default . _Coerce;
-
--- | The metrics enabled for the group.
-asgEnabledMetrics :: Lens' AutoScalingGroup [EnabledMetric]
-asgEnabledMetrics = lens _asgEnabledMetrics (\ s a -> s{_asgEnabledMetrics = a}) . _Default . _Coerce;
-
--- | The name of the associated launch configuration.
-asgLaunchConfigurationName :: Lens' AutoScalingGroup (Maybe Text)
-asgLaunchConfigurationName = lens _asgLaunchConfigurationName (\ s a -> s{_asgLaunchConfigurationName = a});
-
--- | The EC2 instances associated with the group.
-asgInstances :: Lens' AutoScalingGroup [Instance]
-asgInstances = lens _asgInstances (\ s a -> s{_asgInstances = a}) . _Default . _Coerce;
-
--- | The Amazon Resource Name (ARN) of the group.
-asgAutoScalingGroupARN :: Lens' AutoScalingGroup (Maybe Text)
-asgAutoScalingGroupARN = lens _asgAutoScalingGroupARN (\ s a -> s{_asgAutoScalingGroupARN = a});
-
--- | The name of the placement group into which you'll launch your instances, if any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups> in the /Amazon Elastic Compute Cloud User Guide/ .
-asgPlacementGroup :: Lens' AutoScalingGroup (Maybe Text)
-asgPlacementGroup = lens _asgPlacementGroup (\ s a -> s{_asgPlacementGroup = a});
-
--- | The suspended processes associated with the group.
-asgSuspendedProcesses :: Lens' AutoScalingGroup [SuspendedProcess]
-asgSuspendedProcesses = lens _asgSuspendedProcesses (\ s a -> s{_asgSuspendedProcesses = a}) . _Default . _Coerce;
-
--- | One or more load balancers associated with the group.
-asgLoadBalancerNames :: Lens' AutoScalingGroup [Text]
-asgLoadBalancerNames = lens _asgLoadBalancerNames (\ s a -> s{_asgLoadBalancerNames = a}) . _Default . _Coerce;
-
--- | The tags for the group.
-asgTags :: Lens' AutoScalingGroup [TagDescription]
-asgTags = lens _asgTags (\ s a -> s{_asgTags = a}) . _Default . _Coerce;
-
--- | The name of the group.
-asgAutoScalingGroupName :: Lens' AutoScalingGroup Text
-asgAutoScalingGroupName = lens _asgAutoScalingGroupName (\ s a -> s{_asgAutoScalingGroupName = a});
-
--- | The minimum size of the group.
-asgMinSize :: Lens' AutoScalingGroup Int
-asgMinSize = lens _asgMinSize (\ s a -> s{_asgMinSize = a});
-
--- | The maximum size of the group.
-asgMaxSize :: Lens' AutoScalingGroup Int
-asgMaxSize = lens _asgMaxSize (\ s a -> s{_asgMaxSize = a});
-
--- | The desired size of the group.
-asgDesiredCapacity :: Lens' AutoScalingGroup Int
-asgDesiredCapacity = lens _asgDesiredCapacity (\ s a -> s{_asgDesiredCapacity = a});
-
--- | The amount of time, in seconds, after a scaling activity completes before another scaling activity can start.
-asgDefaultCooldown :: Lens' AutoScalingGroup Int
-asgDefaultCooldown = lens _asgDefaultCooldown (\ s a -> s{_asgDefaultCooldown = a});
-
--- | One or more Availability Zones for the group.
-asgAvailabilityZones :: Lens' AutoScalingGroup (NonEmpty Text)
-asgAvailabilityZones = lens _asgAvailabilityZones (\ s a -> s{_asgAvailabilityZones = a}) . _List1;
-
--- | The service to use for the health checks. The valid values are @EC2@ and @ELB@ .
-asgHealthCheckType :: Lens' AutoScalingGroup Text
-asgHealthCheckType = lens _asgHealthCheckType (\ s a -> s{_asgHealthCheckType = a});
-
--- | The date and time the group was created.
-asgCreatedTime :: Lens' AutoScalingGroup UTCTime
-asgCreatedTime = lens _asgCreatedTime (\ s a -> s{_asgCreatedTime = a}) . _Time;
-
-instance FromXML AutoScalingGroup where
-        parseXML x
-          = AutoScalingGroup' <$>
-              (x .@? "Status") <*>
-                (x .@? "TerminationPolicies" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "HealthCheckGracePeriod")
-                <*> (x .@? "NewInstancesProtectedFromScaleIn")
-                <*> (x .@? "VPCZoneIdentifier")
-                <*>
-                (x .@? "TargetGroupARNs" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*>
-                (x .@? "EnabledMetrics" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "LaunchConfigurationName")
-                <*>
-                (x .@? "Instances" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "AutoScalingGroupARN")
-                <*> (x .@? "PlacementGroup")
-                <*>
-                (x .@? "SuspendedProcesses" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*>
-                (x .@? "LoadBalancerNames" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*>
-                (x .@? "Tags" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@ "AutoScalingGroupName")
-                <*> (x .@ "MinSize")
-                <*> (x .@ "MaxSize")
-                <*> (x .@ "DesiredCapacity")
-                <*> (x .@ "DefaultCooldown")
-                <*>
-                (x .@? "AvailabilityZones" .!@ mempty >>=
-                   parseXMLList1 "member")
-                <*> (x .@ "HealthCheckType")
-                <*> (x .@ "CreatedTime")
-
-instance Hashable AutoScalingGroup
-
-instance NFData AutoScalingGroup
-
--- | Describes an EC2 instance associated with an Auto Scaling group.
---
---
---
--- /See:/ 'autoScalingInstanceDetails' smart constructor.
-data AutoScalingInstanceDetails = AutoScalingInstanceDetails'
-    { _asidLaunchConfigurationName :: !(Maybe Text)
-    , _asidInstanceId              :: !Text
-    , _asidAutoScalingGroupName    :: !Text
-    , _asidAvailabilityZone        :: !Text
-    , _asidLifecycleState          :: !Text
-    , _asidHealthStatus            :: !Text
-    , _asidProtectedFromScaleIn    :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoScalingInstanceDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asidLaunchConfigurationName' - The launch configuration associated with the instance.
---
--- * 'asidInstanceId' - The ID of the instance.
---
--- * 'asidAutoScalingGroupName' - The name of the Auto Scaling group associated with the instance.
---
--- * 'asidAvailabilityZone' - The Availability Zone for the instance.
---
--- * 'asidLifecycleState' - The lifecycle state for the instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
---
--- * 'asidHealthStatus' - The last reported health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
---
--- * 'asidProtectedFromScaleIn' - Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
-autoScalingInstanceDetails
-    :: Text -- ^ 'asidInstanceId'
-    -> Text -- ^ 'asidAutoScalingGroupName'
-    -> Text -- ^ 'asidAvailabilityZone'
-    -> Text -- ^ 'asidLifecycleState'
-    -> Text -- ^ 'asidHealthStatus'
-    -> Bool -- ^ 'asidProtectedFromScaleIn'
-    -> AutoScalingInstanceDetails
-autoScalingInstanceDetails pInstanceId_ pAutoScalingGroupName_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pProtectedFromScaleIn_ =
-    AutoScalingInstanceDetails'
-    { _asidLaunchConfigurationName = Nothing
-    , _asidInstanceId = pInstanceId_
-    , _asidAutoScalingGroupName = pAutoScalingGroupName_
-    , _asidAvailabilityZone = pAvailabilityZone_
-    , _asidLifecycleState = pLifecycleState_
-    , _asidHealthStatus = pHealthStatus_
-    , _asidProtectedFromScaleIn = pProtectedFromScaleIn_
-    }
-
--- | The launch configuration associated with the instance.
-asidLaunchConfigurationName :: Lens' AutoScalingInstanceDetails (Maybe Text)
-asidLaunchConfigurationName = lens _asidLaunchConfigurationName (\ s a -> s{_asidLaunchConfigurationName = a});
-
--- | The ID of the instance.
-asidInstanceId :: Lens' AutoScalingInstanceDetails Text
-asidInstanceId = lens _asidInstanceId (\ s a -> s{_asidInstanceId = a});
-
--- | The name of the Auto Scaling group associated with the instance.
-asidAutoScalingGroupName :: Lens' AutoScalingInstanceDetails Text
-asidAutoScalingGroupName = lens _asidAutoScalingGroupName (\ s a -> s{_asidAutoScalingGroupName = a});
-
--- | The Availability Zone for the instance.
-asidAvailabilityZone :: Lens' AutoScalingInstanceDetails Text
-asidAvailabilityZone = lens _asidAvailabilityZone (\ s a -> s{_asidAvailabilityZone = a});
-
--- | The lifecycle state for the instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
-asidLifecycleState :: Lens' AutoScalingInstanceDetails Text
-asidLifecycleState = lens _asidLifecycleState (\ s a -> s{_asidLifecycleState = a});
-
--- | The last reported health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
-asidHealthStatus :: Lens' AutoScalingInstanceDetails Text
-asidHealthStatus = lens _asidHealthStatus (\ s a -> s{_asidHealthStatus = a});
-
--- | Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
-asidProtectedFromScaleIn :: Lens' AutoScalingInstanceDetails Bool
-asidProtectedFromScaleIn = lens _asidProtectedFromScaleIn (\ s a -> s{_asidProtectedFromScaleIn = a});
-
-instance FromXML AutoScalingInstanceDetails where
-        parseXML x
-          = AutoScalingInstanceDetails' <$>
-              (x .@? "LaunchConfigurationName") <*>
-                (x .@ "InstanceId")
-                <*> (x .@ "AutoScalingGroupName")
-                <*> (x .@ "AvailabilityZone")
-                <*> (x .@ "LifecycleState")
-                <*> (x .@ "HealthStatus")
-                <*> (x .@ "ProtectedFromScaleIn")
-
-instance Hashable AutoScalingInstanceDetails
-
-instance NFData AutoScalingInstanceDetails
-
--- | Describes a block device mapping.
---
---
---
--- /See:/ 'blockDeviceMapping' smart constructor.
-data BlockDeviceMapping = BlockDeviceMapping'
-    { _bdmVirtualName :: !(Maybe Text)
-    , _bdmNoDevice    :: !(Maybe Bool)
-    , _bdmEBS         :: !(Maybe EBS)
-    , _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' - The name of the virtual device (for example, @ephemeral0@ ).
---
--- * 'bdmNoDevice' - Suppresses a device mapping. If this parameter is true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check.
---
--- * 'bdmEBS' - The information about the Amazon EBS volume.
---
--- * 'bdmDeviceName' - The device name exposed to the EC2 instance (for example, @/dev/sdh@ or @xvdh@ ).
-blockDeviceMapping
-    :: Text -- ^ 'bdmDeviceName'
-    -> BlockDeviceMapping
-blockDeviceMapping pDeviceName_ =
-    BlockDeviceMapping'
-    { _bdmVirtualName = Nothing
-    , _bdmNoDevice = Nothing
-    , _bdmEBS = Nothing
-    , _bdmDeviceName = pDeviceName_
-    }
-
--- | The name of the virtual device (for example, @ephemeral0@ ).
-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
-
--- | Suppresses a device mapping. If this parameter is true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check.
-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Bool)
-bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
-
--- | The information about the Amazon EBS volume.
-bdmEBS :: Lens' BlockDeviceMapping (Maybe EBS)
-bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
-
--- | The device name exposed to the EC2 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 Hashable BlockDeviceMapping
-
-instance NFData BlockDeviceMapping
-
-instance ToQuery BlockDeviceMapping where
-        toQuery BlockDeviceMapping'{..}
-          = mconcat
-              ["VirtualName" =: _bdmVirtualName,
-               "NoDevice" =: _bdmNoDevice, "Ebs" =: _bdmEBS,
-               "DeviceName" =: _bdmDeviceName]
-
--- | Describes an Amazon EBS volume.
---
---
---
--- /See:/ 'ebs' smart constructor.
-data EBS = EBS'
-    { _ebsDeleteOnTermination :: !(Maybe Bool)
-    , _ebsVolumeSize          :: !(Maybe Nat)
-    , _ebsIOPS                :: !(Maybe Nat)
-    , _ebsEncrypted           :: !(Maybe Bool)
-    , _ebsVolumeType          :: !(Maybe Text)
-    , _ebsSnapshotId          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EBS' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ebsDeleteOnTermination' - Indicates whether the volume is deleted on instance termination. Default: @true@
---
--- * 'ebsVolumeSize' - The volume size, in GiB. For @standard@ volumes, specify a value from 1 to 1,024. For @io1@ volumes, specify a value from 4 to 16,384. For @gp2@ volumes, specify a value from 1 to 16,384. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the snapshot size.
---
--- * 'ebsIOPS' - The number of I/O operations per second (IOPS) to provision for the volume. Constraint: Required when the volume type is @io1@ .
---
--- * 'ebsEncrypted' - Indicates whether the volume should be encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot. 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/ .
---
--- * 'ebsVolumeType' - The volume type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types> in the /Amazon Elastic Compute Cloud User Guide/ . Valid values: @standard@ | @io1@ | @gp2@  Default: @standard@
---
--- * 'ebsSnapshotId' - The ID of the snapshot.
-ebs
-    :: EBS
-ebs =
-    EBS'
-    { _ebsDeleteOnTermination = Nothing
-    , _ebsVolumeSize = Nothing
-    , _ebsIOPS = Nothing
-    , _ebsEncrypted = Nothing
-    , _ebsVolumeType = Nothing
-    , _ebsSnapshotId = Nothing
-    }
-
--- | Indicates whether the volume is deleted on instance termination. Default: @true@
-ebsDeleteOnTermination :: Lens' EBS (Maybe Bool)
-ebsDeleteOnTermination = lens _ebsDeleteOnTermination (\ s a -> s{_ebsDeleteOnTermination = a});
-
--- | The volume size, in GiB. For @standard@ volumes, specify a value from 1 to 1,024. For @io1@ volumes, specify a value from 4 to 16,384. For @gp2@ volumes, specify a value from 1 to 16,384. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the snapshot size.
-ebsVolumeSize :: Lens' EBS (Maybe Natural)
-ebsVolumeSize = lens _ebsVolumeSize (\ s a -> s{_ebsVolumeSize = a}) . mapping _Nat;
-
--- | The number of I/O operations per second (IOPS) to provision for the volume. Constraint: Required when the volume type is @io1@ .
-ebsIOPS :: Lens' EBS (Maybe Natural)
-ebsIOPS = lens _ebsIOPS (\ s a -> s{_ebsIOPS = a}) . mapping _Nat;
-
--- | Indicates whether the volume should be encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot. 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/ .
-ebsEncrypted :: Lens' EBS (Maybe Bool)
-ebsEncrypted = lens _ebsEncrypted (\ s a -> s{_ebsEncrypted = a});
-
--- | The volume type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types> in the /Amazon Elastic Compute Cloud User Guide/ . Valid values: @standard@ | @io1@ | @gp2@  Default: @standard@
-ebsVolumeType :: Lens' EBS (Maybe Text)
-ebsVolumeType = lens _ebsVolumeType (\ s a -> s{_ebsVolumeType = a});
-
--- | The ID of the snapshot.
-ebsSnapshotId :: Lens' EBS (Maybe Text)
-ebsSnapshotId = lens _ebsSnapshotId (\ s a -> s{_ebsSnapshotId = a});
-
-instance FromXML EBS where
-        parseXML x
-          = EBS' <$>
-              (x .@? "DeleteOnTermination") <*>
-                (x .@? "VolumeSize")
-                <*> (x .@? "Iops")
-                <*> (x .@? "Encrypted")
-                <*> (x .@? "VolumeType")
-                <*> (x .@? "SnapshotId")
-
-instance Hashable EBS
-
-instance NFData EBS
-
-instance ToQuery EBS where
-        toQuery EBS'{..}
-          = mconcat
-              ["DeleteOnTermination" =: _ebsDeleteOnTermination,
-               "VolumeSize" =: _ebsVolumeSize, "Iops" =: _ebsIOPS,
-               "Encrypted" =: _ebsEncrypted,
-               "VolumeType" =: _ebsVolumeType,
-               "SnapshotId" =: _ebsSnapshotId]
-
--- | Describes an enabled metric.
---
---
---
--- /See:/ 'enabledMetric' smart constructor.
-data EnabledMetric = EnabledMetric'
-    { _emGranularity :: !(Maybe Text)
-    , _emMetric      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnabledMetric' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'emGranularity' - The granularity of the metric. The only valid value is @1Minute@ .
---
--- * 'emMetric' - One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
-enabledMetric
-    :: EnabledMetric
-enabledMetric =
-    EnabledMetric'
-    { _emGranularity = Nothing
-    , _emMetric = Nothing
-    }
-
--- | The granularity of the metric. The only valid value is @1Minute@ .
-emGranularity :: Lens' EnabledMetric (Maybe Text)
-emGranularity = lens _emGranularity (\ s a -> s{_emGranularity = a});
-
--- | One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
-emMetric :: Lens' EnabledMetric (Maybe Text)
-emMetric = lens _emMetric (\ s a -> s{_emMetric = a});
-
-instance FromXML EnabledMetric where
-        parseXML x
-          = EnabledMetric' <$>
-              (x .@? "Granularity") <*> (x .@? "Metric")
-
-instance Hashable EnabledMetric
-
-instance NFData EnabledMetric
-
--- | Describes a filter.
---
---
---
--- /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' - The value of the filter.
---
--- * 'fName' - The name of the filter. The valid values are: @"auto-scaling-group"@ , @"key"@ , @"value"@ , and @"propagate-at-launch"@ .
-filter'
-    :: Text -- ^ 'fName'
-    -> Filter
-filter' pName_ =
-    Filter'
-    { _fValues = Nothing
-    , _fName = pName_
-    }
-
--- | The value of the filter.
-fValues :: Lens' Filter [Text]
-fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Default . _Coerce;
-
--- | The name of the filter. The valid values are: @"auto-scaling-group"@ , @"key"@ , @"value"@ , and @"propagate-at-launch"@ .
-fName :: Lens' Filter Text
-fName = lens _fName (\ s a -> s{_fName = a});
-
-instance Hashable Filter
-
-instance NFData Filter
-
-instance ToQuery Filter where
-        toQuery Filter'{..}
-          = mconcat
-              ["Values" =:
-                 toQuery (toQueryList "member" <$> _fValues),
-               "Name" =: _fName]
-
--- | Describes an EC2 instance.
---
---
---
--- /See:/ 'instance'' smart constructor.
-data Instance = Instance'
-    { _iLaunchConfigurationName :: !(Maybe Text)
-    , _iInstanceId              :: !Text
-    , _iAvailabilityZone        :: !Text
-    , _iLifecycleState          :: !LifecycleState
-    , _iHealthStatus            :: !Text
-    , _iProtectedFromScaleIn    :: !Bool
-    } 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:
---
--- * 'iLaunchConfigurationName' - The launch configuration associated with the instance.
---
--- * 'iInstanceId' - The ID of the instance.
---
--- * 'iAvailabilityZone' - The Availability Zone in which the instance is running.
---
--- * 'iLifecycleState' - A description of the current lifecycle state. Note that the @Quarantined@ state is not used.
---
--- * 'iHealthStatus' - The last reported health status of the instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
---
--- * 'iProtectedFromScaleIn' - Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
-instance'
-    :: Text -- ^ 'iInstanceId'
-    -> Text -- ^ 'iAvailabilityZone'
-    -> LifecycleState -- ^ 'iLifecycleState'
-    -> Text -- ^ 'iHealthStatus'
-    -> Bool -- ^ 'iProtectedFromScaleIn'
-    -> Instance
-instance' pInstanceId_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pProtectedFromScaleIn_ =
-    Instance'
-    { _iLaunchConfigurationName = Nothing
-    , _iInstanceId = pInstanceId_
-    , _iAvailabilityZone = pAvailabilityZone_
-    , _iLifecycleState = pLifecycleState_
-    , _iHealthStatus = pHealthStatus_
-    , _iProtectedFromScaleIn = pProtectedFromScaleIn_
-    }
-
--- | The launch configuration associated with the instance.
-iLaunchConfigurationName :: Lens' Instance (Maybe Text)
-iLaunchConfigurationName = lens _iLaunchConfigurationName (\ s a -> s{_iLaunchConfigurationName = a});
-
--- | The ID of the instance.
-iInstanceId :: Lens' Instance Text
-iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
-
--- | The Availability Zone in which the instance is running.
-iAvailabilityZone :: Lens' Instance Text
-iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
-
--- | A description of the current lifecycle state. Note that the @Quarantined@ state is not used.
-iLifecycleState :: Lens' Instance LifecycleState
-iLifecycleState = lens _iLifecycleState (\ s a -> s{_iLifecycleState = a});
-
--- | The last reported health status of the instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
-iHealthStatus :: Lens' Instance Text
-iHealthStatus = lens _iHealthStatus (\ s a -> s{_iHealthStatus = a});
-
--- | Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
-iProtectedFromScaleIn :: Lens' Instance Bool
-iProtectedFromScaleIn = lens _iProtectedFromScaleIn (\ s a -> s{_iProtectedFromScaleIn = a});
-
-instance FromXML Instance where
-        parseXML x
-          = Instance' <$>
-              (x .@? "LaunchConfigurationName") <*>
-                (x .@ "InstanceId")
-                <*> (x .@ "AvailabilityZone")
-                <*> (x .@ "LifecycleState")
-                <*> (x .@ "HealthStatus")
-                <*> (x .@ "ProtectedFromScaleIn")
-
-instance Hashable Instance
-
-instance NFData Instance
-
--- | Describes whether instance monitoring is enabled.
---
---
---
--- /See:/ 'instanceMonitoring' smart constructor.
-newtype InstanceMonitoring = InstanceMonitoring'
-    { _imEnabled :: Maybe Bool
-    } 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:
---
--- * 'imEnabled' - If @True@ , instance monitoring is enabled.
-instanceMonitoring
-    :: InstanceMonitoring
-instanceMonitoring =
-    InstanceMonitoring'
-    { _imEnabled = Nothing
-    }
-
--- | If @True@ , instance monitoring is enabled.
-imEnabled :: Lens' InstanceMonitoring (Maybe Bool)
-imEnabled = lens _imEnabled (\ s a -> s{_imEnabled = a});
-
-instance FromXML InstanceMonitoring where
-        parseXML x
-          = InstanceMonitoring' <$> (x .@? "Enabled")
-
-instance Hashable InstanceMonitoring
-
-instance NFData InstanceMonitoring
-
-instance ToQuery InstanceMonitoring where
-        toQuery InstanceMonitoring'{..}
-          = mconcat ["Enabled" =: _imEnabled]
-
--- | Describes a launch configuration.
---
---
---
--- /See:/ 'launchConfiguration' smart constructor.
-data LaunchConfiguration = LaunchConfiguration'
-    { _lcAssociatePublicIPAddress     :: !(Maybe Bool)
-    , _lcSecurityGroups               :: !(Maybe [Text])
-    , _lcSpotPrice                    :: !(Maybe Text)
-    , _lcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
-    , _lcKeyName                      :: !(Maybe Text)
-    , _lcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
-    , _lcRAMDiskId                    :: !(Maybe Text)
-    , _lcKernelId                     :: !(Maybe Text)
-    , _lcEBSOptimized                 :: !(Maybe Bool)
-    , _lcUserData                     :: !(Maybe Text)
-    , _lcClassicLinkVPCId             :: !(Maybe Text)
-    , _lcIAMInstanceProfile           :: !(Maybe Text)
-    , _lcLaunchConfigurationARN       :: !(Maybe Text)
-    , _lcPlacementTenancy             :: !(Maybe Text)
-    , _lcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
-    , _lcLaunchConfigurationName      :: !Text
-    , _lcImageId                      :: !Text
-    , _lcInstanceType                 :: !Text
-    , _lcCreatedTime                  :: !ISO8601
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LaunchConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcAssociatePublicIPAddress' - [EC2-VPC] Indicates whether to assign a public IP address to each instance.
---
--- * 'lcSecurityGroups' - The security groups to associate with the instances.
---
--- * 'lcSpotPrice' - The price to bid when launching Spot Instances.
---
--- * 'lcInstanceMonitoring' - Controls whether instances in this group are launched with detailed (@true@ ) or basic (@false@ ) monitoring.
---
--- * 'lcKeyName' - The name of the key pair.
---
--- * 'lcClassicLinkVPCSecurityGroups' - The IDs of one or more security groups for the VPC specified in @ClassicLinkVPCId@ . This parameter is required if you specify a ClassicLink-enabled VPC, and cannot be used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
---
--- * 'lcRAMDiskId' - The ID of the RAM disk associated with the AMI.
---
--- * 'lcKernelId' - The ID of the kernel associated with the AMI.
---
--- * 'lcEBSOptimized' - Controls whether the instance is optimized for EBS I/O (@true@ ) or not (@false@ ).
---
--- * 'lcUserData' - The user data available to the instances.
---
--- * 'lcClassicLinkVPCId' - The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
---
--- * 'lcIAMInstanceProfile' - The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.
---
--- * 'lcLaunchConfigurationARN' - The Amazon Resource Name (ARN) of the launch configuration.
---
--- * 'lcPlacementTenancy' - The tenancy of the instance, either @default@ or @dedicated@ . An instance with @dedicated@ tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC.
---
--- * 'lcBlockDeviceMappings' - A block device mapping, which specifies the block devices for the instance.
---
--- * 'lcLaunchConfigurationName' - The name of the launch configuration.
---
--- * 'lcImageId' - The ID of the Amazon Machine Image (AMI).
---
--- * 'lcInstanceType' - The instance type for the instances.
---
--- * 'lcCreatedTime' - The creation date and time for the launch configuration.
-launchConfiguration
-    :: Text -- ^ 'lcLaunchConfigurationName'
-    -> Text -- ^ 'lcImageId'
-    -> Text -- ^ 'lcInstanceType'
-    -> UTCTime -- ^ 'lcCreatedTime'
-    -> LaunchConfiguration
-launchConfiguration pLaunchConfigurationName_ pImageId_ pInstanceType_ pCreatedTime_ =
-    LaunchConfiguration'
-    { _lcAssociatePublicIPAddress = Nothing
-    , _lcSecurityGroups = Nothing
-    , _lcSpotPrice = Nothing
-    , _lcInstanceMonitoring = Nothing
-    , _lcKeyName = Nothing
-    , _lcClassicLinkVPCSecurityGroups = Nothing
-    , _lcRAMDiskId = Nothing
-    , _lcKernelId = Nothing
-    , _lcEBSOptimized = Nothing
-    , _lcUserData = Nothing
-    , _lcClassicLinkVPCId = Nothing
-    , _lcIAMInstanceProfile = Nothing
-    , _lcLaunchConfigurationARN = Nothing
-    , _lcPlacementTenancy = Nothing
-    , _lcBlockDeviceMappings = Nothing
-    , _lcLaunchConfigurationName = pLaunchConfigurationName_
-    , _lcImageId = pImageId_
-    , _lcInstanceType = pInstanceType_
-    , _lcCreatedTime = _Time # pCreatedTime_
-    }
-
--- | [EC2-VPC] Indicates whether to assign a public IP address to each instance.
-lcAssociatePublicIPAddress :: Lens' LaunchConfiguration (Maybe Bool)
-lcAssociatePublicIPAddress = lens _lcAssociatePublicIPAddress (\ s a -> s{_lcAssociatePublicIPAddress = a});
-
--- | The security groups to associate with the instances.
-lcSecurityGroups :: Lens' LaunchConfiguration [Text]
-lcSecurityGroups = lens _lcSecurityGroups (\ s a -> s{_lcSecurityGroups = a}) . _Default . _Coerce;
-
--- | The price to bid when launching Spot Instances.
-lcSpotPrice :: Lens' LaunchConfiguration (Maybe Text)
-lcSpotPrice = lens _lcSpotPrice (\ s a -> s{_lcSpotPrice = a});
-
--- | Controls whether instances in this group are launched with detailed (@true@ ) or basic (@false@ ) monitoring.
-lcInstanceMonitoring :: Lens' LaunchConfiguration (Maybe InstanceMonitoring)
-lcInstanceMonitoring = lens _lcInstanceMonitoring (\ s a -> s{_lcInstanceMonitoring = a});
-
--- | The name of the key pair.
-lcKeyName :: Lens' LaunchConfiguration (Maybe Text)
-lcKeyName = lens _lcKeyName (\ s a -> s{_lcKeyName = a});
-
--- | The IDs of one or more security groups for the VPC specified in @ClassicLinkVPCId@ . This parameter is required if you specify a ClassicLink-enabled VPC, and cannot be used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
-lcClassicLinkVPCSecurityGroups :: Lens' LaunchConfiguration [Text]
-lcClassicLinkVPCSecurityGroups = lens _lcClassicLinkVPCSecurityGroups (\ s a -> s{_lcClassicLinkVPCSecurityGroups = a}) . _Default . _Coerce;
-
--- | The ID of the RAM disk associated with the AMI.
-lcRAMDiskId :: Lens' LaunchConfiguration (Maybe Text)
-lcRAMDiskId = lens _lcRAMDiskId (\ s a -> s{_lcRAMDiskId = a});
-
--- | The ID of the kernel associated with the AMI.
-lcKernelId :: Lens' LaunchConfiguration (Maybe Text)
-lcKernelId = lens _lcKernelId (\ s a -> s{_lcKernelId = a});
-
--- | Controls whether the instance is optimized for EBS I/O (@true@ ) or not (@false@ ).
-lcEBSOptimized :: Lens' LaunchConfiguration (Maybe Bool)
-lcEBSOptimized = lens _lcEBSOptimized (\ s a -> s{_lcEBSOptimized = a});
-
--- | The user data available to the instances.
-lcUserData :: Lens' LaunchConfiguration (Maybe Text)
-lcUserData = lens _lcUserData (\ s a -> s{_lcUserData = a});
-
--- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
-lcClassicLinkVPCId :: Lens' LaunchConfiguration (Maybe Text)
-lcClassicLinkVPCId = lens _lcClassicLinkVPCId (\ s a -> s{_lcClassicLinkVPCId = a});
-
--- | The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.
-lcIAMInstanceProfile :: Lens' LaunchConfiguration (Maybe Text)
-lcIAMInstanceProfile = lens _lcIAMInstanceProfile (\ s a -> s{_lcIAMInstanceProfile = a});
-
--- | The Amazon Resource Name (ARN) of the launch configuration.
-lcLaunchConfigurationARN :: Lens' LaunchConfiguration (Maybe Text)
-lcLaunchConfigurationARN = lens _lcLaunchConfigurationARN (\ s a -> s{_lcLaunchConfigurationARN = a});
-
--- | The tenancy of the instance, either @default@ or @dedicated@ . An instance with @dedicated@ tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC.
-lcPlacementTenancy :: Lens' LaunchConfiguration (Maybe Text)
-lcPlacementTenancy = lens _lcPlacementTenancy (\ s a -> s{_lcPlacementTenancy = a});
-
--- | A block device mapping, which specifies the block devices for the instance.
-lcBlockDeviceMappings :: Lens' LaunchConfiguration [BlockDeviceMapping]
-lcBlockDeviceMappings = lens _lcBlockDeviceMappings (\ s a -> s{_lcBlockDeviceMappings = a}) . _Default . _Coerce;
-
--- | The name of the launch configuration.
-lcLaunchConfigurationName :: Lens' LaunchConfiguration Text
-lcLaunchConfigurationName = lens _lcLaunchConfigurationName (\ s a -> s{_lcLaunchConfigurationName = a});
-
--- | The ID of the Amazon Machine Image (AMI).
-lcImageId :: Lens' LaunchConfiguration Text
-lcImageId = lens _lcImageId (\ s a -> s{_lcImageId = a});
-
--- | The instance type for the instances.
-lcInstanceType :: Lens' LaunchConfiguration Text
-lcInstanceType = lens _lcInstanceType (\ s a -> s{_lcInstanceType = a});
-
--- | The creation date and time for the launch configuration.
-lcCreatedTime :: Lens' LaunchConfiguration UTCTime
-lcCreatedTime = lens _lcCreatedTime (\ s a -> s{_lcCreatedTime = a}) . _Time;
-
-instance FromXML LaunchConfiguration where
-        parseXML x
-          = LaunchConfiguration' <$>
-              (x .@? "AssociatePublicIpAddress") <*>
-                (x .@? "SecurityGroups" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "SpotPrice")
-                <*> (x .@? "InstanceMonitoring")
-                <*> (x .@? "KeyName")
-                <*>
-                (x .@? "ClassicLinkVPCSecurityGroups" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "RamdiskId")
-                <*> (x .@? "KernelId")
-                <*> (x .@? "EbsOptimized")
-                <*> (x .@? "UserData")
-                <*> (x .@? "ClassicLinkVPCId")
-                <*> (x .@? "IamInstanceProfile")
-                <*> (x .@? "LaunchConfigurationARN")
-                <*> (x .@? "PlacementTenancy")
-                <*>
-                (x .@? "BlockDeviceMappings" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@ "LaunchConfigurationName")
-                <*> (x .@ "ImageId")
-                <*> (x .@ "InstanceType")
-                <*> (x .@ "CreatedTime")
-
-instance Hashable LaunchConfiguration
-
-instance NFData LaunchConfiguration
-
--- | Describes a lifecycle hook, which tells Auto Scaling that you want to perform an action when an instance launches or terminates. When you have a lifecycle hook in place, the Auto Scaling group will either:
---
---
---     * Pause the instance after it launches, but before it is put into service
---
---     * Pause the instance as it terminates, but before it is fully terminated
---
---
---
--- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
---
---
--- /See:/ 'lifecycleHook' smart constructor.
-data LifecycleHook = LifecycleHook'
-    { _lhDefaultResult         :: !(Maybe Text)
-    , _lhLifecycleHookName     :: !(Maybe Text)
-    , _lhHeartbeatTimeout      :: !(Maybe Int)
-    , _lhAutoScalingGroupName  :: !(Maybe Text)
-    , _lhNotificationMetadata  :: !(Maybe Text)
-    , _lhGlobalTimeout         :: !(Maybe Int)
-    , _lhNotificationTargetARN :: !(Maybe Text)
-    , _lhLifecycleTransition   :: !(Maybe Text)
-    , _lhRoleARN               :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LifecycleHook' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lhDefaultResult' - Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
---
--- * 'lhLifecycleHookName' - The name of the lifecycle hook.
---
--- * 'lhHeartbeatTimeout' - The maximum time, in seconds, that can elapse before the lifecycle hook times out. The default is 3600 seconds (1 hour). When the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
---
--- * 'lhAutoScalingGroupName' - The name of the Auto Scaling group for the lifecycle hook.
---
--- * 'lhNotificationMetadata' - Additional information that you want to include any time Auto Scaling sends a message to the notification target.
---
--- * 'lhGlobalTimeout' - The maximum time, in seconds, that an instance can remain in a @Pending:Wait@ or @Terminating:Wait@ state. The maximum is 172800 seconds (48 hours) or 100 times @HeartbeatTimeout@ , whichever is smaller.
---
--- * 'lhNotificationTargetARN' - The ARN of the notification target that Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic. The notification message sent to the target includes the following:     * Lifecycle action token     * User account ID     * Name of the Auto Scaling group     * Lifecycle hook name     * EC2 instance ID     * Lifecycle transition     * Notification metadata
---
--- * 'lhLifecycleTransition' - The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
---
--- * 'lhRoleARN' - The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
-lifecycleHook
-    :: LifecycleHook
-lifecycleHook =
-    LifecycleHook'
-    { _lhDefaultResult = Nothing
-    , _lhLifecycleHookName = Nothing
-    , _lhHeartbeatTimeout = Nothing
-    , _lhAutoScalingGroupName = Nothing
-    , _lhNotificationMetadata = Nothing
-    , _lhGlobalTimeout = Nothing
-    , _lhNotificationTargetARN = Nothing
-    , _lhLifecycleTransition = Nothing
-    , _lhRoleARN = Nothing
-    }
-
--- | Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
-lhDefaultResult :: Lens' LifecycleHook (Maybe Text)
-lhDefaultResult = lens _lhDefaultResult (\ s a -> s{_lhDefaultResult = a});
-
--- | The name of the lifecycle hook.
-lhLifecycleHookName :: Lens' LifecycleHook (Maybe Text)
-lhLifecycleHookName = lens _lhLifecycleHookName (\ s a -> s{_lhLifecycleHookName = a});
-
--- | The maximum time, in seconds, that can elapse before the lifecycle hook times out. The default is 3600 seconds (1 hour). When the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
-lhHeartbeatTimeout :: Lens' LifecycleHook (Maybe Int)
-lhHeartbeatTimeout = lens _lhHeartbeatTimeout (\ s a -> s{_lhHeartbeatTimeout = a});
-
--- | The name of the Auto Scaling group for the lifecycle hook.
-lhAutoScalingGroupName :: Lens' LifecycleHook (Maybe Text)
-lhAutoScalingGroupName = lens _lhAutoScalingGroupName (\ s a -> s{_lhAutoScalingGroupName = a});
-
--- | Additional information that you want to include any time Auto Scaling sends a message to the notification target.
-lhNotificationMetadata :: Lens' LifecycleHook (Maybe Text)
-lhNotificationMetadata = lens _lhNotificationMetadata (\ s a -> s{_lhNotificationMetadata = a});
-
--- | The maximum time, in seconds, that an instance can remain in a @Pending:Wait@ or @Terminating:Wait@ state. The maximum is 172800 seconds (48 hours) or 100 times @HeartbeatTimeout@ , whichever is smaller.
-lhGlobalTimeout :: Lens' LifecycleHook (Maybe Int)
-lhGlobalTimeout = lens _lhGlobalTimeout (\ s a -> s{_lhGlobalTimeout = a});
-
--- | The ARN of the notification target that Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic. The notification message sent to the target includes the following:     * Lifecycle action token     * User account ID     * Name of the Auto Scaling group     * Lifecycle hook name     * EC2 instance ID     * Lifecycle transition     * Notification metadata
-lhNotificationTargetARN :: Lens' LifecycleHook (Maybe Text)
-lhNotificationTargetARN = lens _lhNotificationTargetARN (\ s a -> s{_lhNotificationTargetARN = a});
-
--- | The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
-lhLifecycleTransition :: Lens' LifecycleHook (Maybe Text)
-lhLifecycleTransition = lens _lhLifecycleTransition (\ s a -> s{_lhLifecycleTransition = a});
-
--- | The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
-lhRoleARN :: Lens' LifecycleHook (Maybe Text)
-lhRoleARN = lens _lhRoleARN (\ s a -> s{_lhRoleARN = a});
-
-instance FromXML LifecycleHook where
-        parseXML x
-          = LifecycleHook' <$>
-              (x .@? "DefaultResult") <*>
-                (x .@? "LifecycleHookName")
-                <*> (x .@? "HeartbeatTimeout")
-                <*> (x .@? "AutoScalingGroupName")
-                <*> (x .@? "NotificationMetadata")
-                <*> (x .@? "GlobalTimeout")
-                <*> (x .@? "NotificationTargetARN")
-                <*> (x .@? "LifecycleTransition")
-                <*> (x .@? "RoleARN")
-
-instance Hashable LifecycleHook
-
-instance NFData LifecycleHook
-
--- | Describes the state of a Classic load balancer.
---
---
--- If you specify a load balancer when creating the Auto Scaling group, the state of the load balancer is @InService@ .
---
--- If you attach a load balancer to an existing Auto Scaling group, the initial state is @Adding@ . The state transitions to @Added@ after all instances in the group are registered with the load balancer. If ELB health checks are enabled for the load balancer, the state transitions to @InService@ after at least one instance in the group passes the health check. If EC2 health checks are enabled instead, the load balancer remains in the @Added@ state.
---
---
--- /See:/ 'loadBalancerState' smart constructor.
-data LoadBalancerState = LoadBalancerState'
-    { _lbsState            :: !(Maybe Text)
-    , _lbsLoadBalancerName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoadBalancerState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lbsState' - One of the following load balancer states:     * @Adding@ - The instances in the group are being registered with the load balancer.     * @Added@ - All instances in the group are registered with the load balancer.     * @InService@ - At least one instance in the group passed an ELB health check.     * @Removing@ - The instances in the group are being deregistered from the load balancer. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All instances in the group are deregistered from the load balancer.
---
--- * 'lbsLoadBalancerName' - The name of the load balancer.
-loadBalancerState
-    :: LoadBalancerState
-loadBalancerState =
-    LoadBalancerState'
-    { _lbsState = Nothing
-    , _lbsLoadBalancerName = Nothing
-    }
-
--- | One of the following load balancer states:     * @Adding@ - The instances in the group are being registered with the load balancer.     * @Added@ - All instances in the group are registered with the load balancer.     * @InService@ - At least one instance in the group passed an ELB health check.     * @Removing@ - The instances in the group are being deregistered from the load balancer. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All instances in the group are deregistered from the load balancer.
-lbsState :: Lens' LoadBalancerState (Maybe Text)
-lbsState = lens _lbsState (\ s a -> s{_lbsState = a});
-
--- | The name of the load balancer.
-lbsLoadBalancerName :: Lens' LoadBalancerState (Maybe Text)
-lbsLoadBalancerName = lens _lbsLoadBalancerName (\ s a -> s{_lbsLoadBalancerName = a});
-
-instance FromXML LoadBalancerState where
-        parseXML x
-          = LoadBalancerState' <$>
-              (x .@? "State") <*> (x .@? "LoadBalancerName")
-
-instance Hashable LoadBalancerState
-
-instance NFData LoadBalancerState
-
--- | Describes the state of a target group.
---
---
--- If you attach a target group to an existing Auto Scaling group, the initial state is @Adding@ . The state transitions to @Added@ after all Auto Scaling instances are registered with the target group. If ELB health checks are enabled, the state transitions to @InService@ after at least one Auto Scaling instance passes the health check. If EC2 health checks are enabled instead, the target group remains in the @Added@ state.
---
---
--- /See:/ 'loadBalancerTargetGroupState' smart constructor.
-data LoadBalancerTargetGroupState = LoadBalancerTargetGroupState'
-    { _lbtgsState                      :: !(Maybe Text)
-    , _lbtgsLoadBalancerTargetGroupARN :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoadBalancerTargetGroupState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lbtgsState' - The state of the target group.     * @Adding@ - The Auto Scaling instances are being registered with the target group.     * @Added@ - All Auto Scaling instances are registered with the target group.     * @InService@ - At least one Auto Scaling instance passed an ELB health check.     * @Removing@ - The Auto Scaling instances are being deregistered from the target group. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All Auto Scaling instances are deregistered from the target group.
---
--- * 'lbtgsLoadBalancerTargetGroupARN' - The Amazon Resource Name (ARN) of the target group.
-loadBalancerTargetGroupState
-    :: LoadBalancerTargetGroupState
-loadBalancerTargetGroupState =
-    LoadBalancerTargetGroupState'
-    { _lbtgsState = Nothing
-    , _lbtgsLoadBalancerTargetGroupARN = Nothing
-    }
-
--- | The state of the target group.     * @Adding@ - The Auto Scaling instances are being registered with the target group.     * @Added@ - All Auto Scaling instances are registered with the target group.     * @InService@ - At least one Auto Scaling instance passed an ELB health check.     * @Removing@ - The Auto Scaling instances are being deregistered from the target group. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All Auto Scaling instances are deregistered from the target group.
-lbtgsState :: Lens' LoadBalancerTargetGroupState (Maybe Text)
-lbtgsState = lens _lbtgsState (\ s a -> s{_lbtgsState = a});
-
--- | The Amazon Resource Name (ARN) of the target group.
-lbtgsLoadBalancerTargetGroupARN :: Lens' LoadBalancerTargetGroupState (Maybe Text)
-lbtgsLoadBalancerTargetGroupARN = lens _lbtgsLoadBalancerTargetGroupARN (\ s a -> s{_lbtgsLoadBalancerTargetGroupARN = a});
-
-instance FromXML LoadBalancerTargetGroupState where
-        parseXML x
-          = LoadBalancerTargetGroupState' <$>
-              (x .@? "State") <*>
-                (x .@? "LoadBalancerTargetGroupARN")
-
-instance Hashable LoadBalancerTargetGroupState
-
-instance NFData LoadBalancerTargetGroupState
-
--- | Describes a metric.
---
---
---
--- /See:/ 'metricCollectionType' smart constructor.
-newtype MetricCollectionType = MetricCollectionType'
-    { _mctMetric :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MetricCollectionType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mctMetric' - One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
-metricCollectionType
-    :: MetricCollectionType
-metricCollectionType =
-    MetricCollectionType'
-    { _mctMetric = Nothing
-    }
-
--- | One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
-mctMetric :: Lens' MetricCollectionType (Maybe Text)
-mctMetric = lens _mctMetric (\ s a -> s{_mctMetric = a});
-
-instance FromXML MetricCollectionType where
-        parseXML x
-          = MetricCollectionType' <$> (x .@? "Metric")
-
-instance Hashable MetricCollectionType
-
-instance NFData MetricCollectionType
-
--- | Describes a granularity of a metric.
---
---
---
--- /See:/ 'metricGranularityType' smart constructor.
-newtype MetricGranularityType = MetricGranularityType'
-    { _mgtGranularity :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MetricGranularityType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mgtGranularity' - The granularity. The only valid value is @1Minute@ .
-metricGranularityType
-    :: MetricGranularityType
-metricGranularityType =
-    MetricGranularityType'
-    { _mgtGranularity = Nothing
-    }
-
--- | The granularity. The only valid value is @1Minute@ .
-mgtGranularity :: Lens' MetricGranularityType (Maybe Text)
-mgtGranularity = lens _mgtGranularity (\ s a -> s{_mgtGranularity = a});
-
-instance FromXML MetricGranularityType where
-        parseXML x
-          = MetricGranularityType' <$> (x .@? "Granularity")
-
-instance Hashable MetricGranularityType
-
-instance NFData MetricGranularityType
-
--- | Describes a notification.
---
---
---
--- /See:/ 'notificationConfiguration' smart constructor.
-data NotificationConfiguration = NotificationConfiguration'
-    { _ncTopicARN             :: !(Maybe Text)
-    , _ncAutoScalingGroupName :: !(Maybe Text)
-    , _ncNotificationType     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NotificationConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncTopicARN' - The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.
---
--- * 'ncAutoScalingGroupName' - The name of the group.
---
--- * 'ncNotificationType' - One of the following event notification types:     * @autoscaling:EC2_INSTANCE_LAUNCH@      * @autoscaling:EC2_INSTANCE_LAUNCH_ERROR@      * @autoscaling:EC2_INSTANCE_TERMINATE@      * @autoscaling:EC2_INSTANCE_TERMINATE_ERROR@      * @autoscaling:TEST_NOTIFICATION@
-notificationConfiguration
-    :: NotificationConfiguration
-notificationConfiguration =
-    NotificationConfiguration'
-    { _ncTopicARN = Nothing
-    , _ncAutoScalingGroupName = Nothing
-    , _ncNotificationType = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.
-ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)
-ncTopicARN = lens _ncTopicARN (\ s a -> s{_ncTopicARN = a});
-
--- | The name of the group.
-ncAutoScalingGroupName :: Lens' NotificationConfiguration (Maybe Text)
-ncAutoScalingGroupName = lens _ncAutoScalingGroupName (\ s a -> s{_ncAutoScalingGroupName = a});
-
--- | One of the following event notification types:     * @autoscaling:EC2_INSTANCE_LAUNCH@      * @autoscaling:EC2_INSTANCE_LAUNCH_ERROR@      * @autoscaling:EC2_INSTANCE_TERMINATE@      * @autoscaling:EC2_INSTANCE_TERMINATE_ERROR@      * @autoscaling:TEST_NOTIFICATION@
-ncNotificationType :: Lens' NotificationConfiguration (Maybe Text)
-ncNotificationType = lens _ncNotificationType (\ s a -> s{_ncNotificationType = a});
-
-instance FromXML NotificationConfiguration where
-        parseXML x
-          = NotificationConfiguration' <$>
-              (x .@? "TopicARN") <*> (x .@? "AutoScalingGroupName")
-                <*> (x .@? "NotificationType")
-
-instance Hashable NotificationConfiguration
-
-instance NFData NotificationConfiguration
-
--- | Describes a process type.
---
---
--- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-suspend-resume-processes.html#process-types Auto Scaling Processes> in the /Auto Scaling User Guide/ .
---
---
--- /See:/ 'processType' smart constructor.
-newtype ProcessType = ProcessType'
-    { _ptProcessName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProcessType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ptProcessName' - One of the following processes:     * @Launch@      * @Terminate@      * @AddToLoadBalancer@      * @AlarmNotification@      * @AZRebalance@      * @HealthCheck@      * @ReplaceUnhealthy@      * @ScheduledActions@
-processType
-    :: Text -- ^ 'ptProcessName'
-    -> ProcessType
-processType pProcessName_ =
-    ProcessType'
-    { _ptProcessName = pProcessName_
-    }
-
--- | One of the following processes:     * @Launch@      * @Terminate@      * @AddToLoadBalancer@      * @AlarmNotification@      * @AZRebalance@      * @HealthCheck@      * @ReplaceUnhealthy@      * @ScheduledActions@
-ptProcessName :: Lens' ProcessType Text
-ptProcessName = lens _ptProcessName (\ s a -> s{_ptProcessName = a});
-
-instance FromXML ProcessType where
-        parseXML x = ProcessType' <$> (x .@ "ProcessName")
-
-instance Hashable ProcessType
-
-instance NFData ProcessType
-
--- | Describes a scaling policy.
---
---
---
--- /See:/ 'scalingPolicy' smart constructor.
-data ScalingPolicy = ScalingPolicy'
-    { _sMinAdjustmentStep       :: !(Maybe Int)
-    , _sEstimatedInstanceWarmup :: !(Maybe Int)
-    , _sPolicyName              :: !(Maybe Text)
-    , _sPolicyType              :: !(Maybe Text)
-    , _sStepAdjustments         :: !(Maybe [StepAdjustment])
-    , _sAdjustmentType          :: !(Maybe Text)
-    , _sAutoScalingGroupName    :: !(Maybe Text)
-    , _sScalingAdjustment       :: !(Maybe Int)
-    , _sCooldown                :: !(Maybe Int)
-    , _sPolicyARN               :: !(Maybe Text)
-    , _sAlarms                  :: !(Maybe [Alarm])
-    , _sMetricAggregationType   :: !(Maybe Text)
-    , _sMinAdjustmentMagnitude  :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScalingPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sMinAdjustmentStep' - Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
---
--- * 'sEstimatedInstanceWarmup' - The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics.
---
--- * 'sPolicyName' - The name of the scaling policy.
---
--- * 'sPolicyType' - The policy type. Valid values are @SimpleScaling@ and @StepScaling@ .
---
--- * 'sStepAdjustments' - A set of adjustments that enable you to scale based on the size of the alarm breach.
---
--- * 'sAdjustmentType' - The adjustment type, which specifies how @ScalingAdjustment@ is interpreted. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
---
--- * 'sAutoScalingGroupName' - The name of the Auto Scaling group associated with this scaling policy.
---
--- * 'sScalingAdjustment' - The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
---
--- * 'sCooldown' - The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.
---
--- * 'sPolicyARN' - The Amazon Resource Name (ARN) of the policy.
---
--- * 'sAlarms' - The CloudWatch alarms related to the policy.
---
--- * 'sMetricAggregationType' - The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ .
---
--- * 'sMinAdjustmentMagnitude' - The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
-scalingPolicy
-    :: ScalingPolicy
-scalingPolicy =
-    ScalingPolicy'
-    { _sMinAdjustmentStep = Nothing
-    , _sEstimatedInstanceWarmup = Nothing
-    , _sPolicyName = Nothing
-    , _sPolicyType = Nothing
-    , _sStepAdjustments = Nothing
-    , _sAdjustmentType = Nothing
-    , _sAutoScalingGroupName = Nothing
-    , _sScalingAdjustment = Nothing
-    , _sCooldown = Nothing
-    , _sPolicyARN = Nothing
-    , _sAlarms = Nothing
-    , _sMetricAggregationType = Nothing
-    , _sMinAdjustmentMagnitude = Nothing
-    }
-
--- | Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
-sMinAdjustmentStep :: Lens' ScalingPolicy (Maybe Int)
-sMinAdjustmentStep = lens _sMinAdjustmentStep (\ s a -> s{_sMinAdjustmentStep = a});
-
--- | The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics.
-sEstimatedInstanceWarmup :: Lens' ScalingPolicy (Maybe Int)
-sEstimatedInstanceWarmup = lens _sEstimatedInstanceWarmup (\ s a -> s{_sEstimatedInstanceWarmup = a});
-
--- | The name of the scaling policy.
-sPolicyName :: Lens' ScalingPolicy (Maybe Text)
-sPolicyName = lens _sPolicyName (\ s a -> s{_sPolicyName = a});
-
--- | The policy type. Valid values are @SimpleScaling@ and @StepScaling@ .
-sPolicyType :: Lens' ScalingPolicy (Maybe Text)
-sPolicyType = lens _sPolicyType (\ s a -> s{_sPolicyType = a});
-
--- | A set of adjustments that enable you to scale based on the size of the alarm breach.
-sStepAdjustments :: Lens' ScalingPolicy [StepAdjustment]
-sStepAdjustments = lens _sStepAdjustments (\ s a -> s{_sStepAdjustments = a}) . _Default . _Coerce;
-
--- | The adjustment type, which specifies how @ScalingAdjustment@ is interpreted. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
-sAdjustmentType :: Lens' ScalingPolicy (Maybe Text)
-sAdjustmentType = lens _sAdjustmentType (\ s a -> s{_sAdjustmentType = a});
-
--- | The name of the Auto Scaling group associated with this scaling policy.
-sAutoScalingGroupName :: Lens' ScalingPolicy (Maybe Text)
-sAutoScalingGroupName = lens _sAutoScalingGroupName (\ s a -> s{_sAutoScalingGroupName = a});
-
--- | The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
-sScalingAdjustment :: Lens' ScalingPolicy (Maybe Int)
-sScalingAdjustment = lens _sScalingAdjustment (\ s a -> s{_sScalingAdjustment = a});
-
--- | The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.
-sCooldown :: Lens' ScalingPolicy (Maybe Int)
-sCooldown = lens _sCooldown (\ s a -> s{_sCooldown = a});
-
--- | The Amazon Resource Name (ARN) of the policy.
-sPolicyARN :: Lens' ScalingPolicy (Maybe Text)
-sPolicyARN = lens _sPolicyARN (\ s a -> s{_sPolicyARN = a});
-
--- | The CloudWatch alarms related to the policy.
-sAlarms :: Lens' ScalingPolicy [Alarm]
-sAlarms = lens _sAlarms (\ s a -> s{_sAlarms = a}) . _Default . _Coerce;
-
--- | The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ .
-sMetricAggregationType :: Lens' ScalingPolicy (Maybe Text)
-sMetricAggregationType = lens _sMetricAggregationType (\ s a -> s{_sMetricAggregationType = a});
-
--- | The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
-sMinAdjustmentMagnitude :: Lens' ScalingPolicy (Maybe Int)
-sMinAdjustmentMagnitude = lens _sMinAdjustmentMagnitude (\ s a -> s{_sMinAdjustmentMagnitude = a});
-
-instance FromXML ScalingPolicy where
-        parseXML x
-          = ScalingPolicy' <$>
-              (x .@? "MinAdjustmentStep") <*>
-                (x .@? "EstimatedInstanceWarmup")
-                <*> (x .@? "PolicyName")
-                <*> (x .@? "PolicyType")
-                <*>
-                (x .@? "StepAdjustments" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "AdjustmentType")
-                <*> (x .@? "AutoScalingGroupName")
-                <*> (x .@? "ScalingAdjustment")
-                <*> (x .@? "Cooldown")
-                <*> (x .@? "PolicyARN")
-                <*>
-                (x .@? "Alarms" .!@ mempty >>=
-                   may (parseXMLList "member"))
-                <*> (x .@? "MetricAggregationType")
-                <*> (x .@? "MinAdjustmentMagnitude")
-
-instance Hashable ScalingPolicy
-
-instance NFData ScalingPolicy
-
--- | Contains the parameters for SuspendProcesses and ResumeProcesses.
---
---
---
--- /See:/ 'scalingProcessQuery' smart constructor.
-data ScalingProcessQuery = ScalingProcessQuery'
-    { _spqScalingProcesses     :: !(Maybe [Text])
-    , _spqAutoScalingGroupName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScalingProcessQuery' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spqScalingProcesses' - One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
---
--- * 'spqAutoScalingGroupName' - The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-scalingProcessQuery
-    :: Text -- ^ 'spqAutoScalingGroupName'
-    -> ScalingProcessQuery
-scalingProcessQuery pAutoScalingGroupName_ =
-    ScalingProcessQuery'
-    { _spqScalingProcesses = Nothing
-    , _spqAutoScalingGroupName = pAutoScalingGroupName_
-    }
-
--- | One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
-spqScalingProcesses :: Lens' ScalingProcessQuery [Text]
-spqScalingProcesses = lens _spqScalingProcesses (\ s a -> s{_spqScalingProcesses = a}) . _Default . _Coerce;
-
--- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-spqAutoScalingGroupName :: Lens' ScalingProcessQuery Text
-spqAutoScalingGroupName = lens _spqAutoScalingGroupName (\ s a -> s{_spqAutoScalingGroupName = a});
-
-instance Hashable ScalingProcessQuery
-
-instance NFData ScalingProcessQuery
-
-instance ToQuery ScalingProcessQuery where
-        toQuery ScalingProcessQuery'{..}
-          = mconcat
-              ["ScalingProcesses" =:
-                 toQuery
-                   (toQueryList "member" <$> _spqScalingProcesses),
-               "AutoScalingGroupName" =: _spqAutoScalingGroupName]
-
--- | Describes a scheduled update to an Auto Scaling group.
---
---
---
--- /See:/ 'scheduledUpdateGroupAction' smart constructor.
-data ScheduledUpdateGroupAction = ScheduledUpdateGroupAction'
-    { _sugaScheduledActionARN   :: !(Maybe Text)
-    , _sugaStartTime            :: !(Maybe ISO8601)
-    , _sugaTime                 :: !(Maybe ISO8601)
-    , _sugaScheduledActionName  :: !(Maybe Text)
-    , _sugaMaxSize              :: !(Maybe Int)
-    , _sugaRecurrence           :: !(Maybe Text)
-    , _sugaDesiredCapacity      :: !(Maybe Int)
-    , _sugaMinSize              :: !(Maybe Int)
-    , _sugaAutoScalingGroupName :: !(Maybe Text)
-    , _sugaEndTime              :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScheduledUpdateGroupAction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sugaScheduledActionARN' - The Amazon Resource Name (ARN) of the scheduled action.
---
--- * 'sugaStartTime' - The date and time that the action is scheduled to begin. This date and time can be up to one month in the future. When @StartTime@ and @EndTime@ are specified with @Recurrence@ , they form the boundaries of when the recurring action will start and stop.
---
--- * 'sugaTime' - This parameter is deprecated.
---
--- * 'sugaScheduledActionName' - The name of the scheduled action.
---
--- * 'sugaMaxSize' - The maximum size of the group.
---
--- * 'sugaRecurrence' - The recurring schedule for the action.
---
--- * 'sugaDesiredCapacity' - The number of instances you prefer to maintain in the group.
---
--- * 'sugaMinSize' - The minimum size of the group.
---
--- * 'sugaAutoScalingGroupName' - The name of the group.
---
--- * 'sugaEndTime' - The date and time that the action is scheduled to end. This date and time can be up to one month in the future.
-scheduledUpdateGroupAction
-    :: ScheduledUpdateGroupAction
-scheduledUpdateGroupAction =
-    ScheduledUpdateGroupAction'
-    { _sugaScheduledActionARN = Nothing
-    , _sugaStartTime = Nothing
-    , _sugaTime = Nothing
-    , _sugaScheduledActionName = Nothing
-    , _sugaMaxSize = Nothing
-    , _sugaRecurrence = Nothing
-    , _sugaDesiredCapacity = Nothing
-    , _sugaMinSize = Nothing
-    , _sugaAutoScalingGroupName = Nothing
-    , _sugaEndTime = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the scheduled action.
-sugaScheduledActionARN :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaScheduledActionARN = lens _sugaScheduledActionARN (\ s a -> s{_sugaScheduledActionARN = a});
-
--- | The date and time that the action is scheduled to begin. This date and time can be up to one month in the future. When @StartTime@ and @EndTime@ are specified with @Recurrence@ , they form the boundaries of when the recurring action will start and stop.
-sugaStartTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaStartTime = lens _sugaStartTime (\ s a -> s{_sugaStartTime = a}) . mapping _Time;
-
--- | This parameter is deprecated.
-sugaTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaTime = lens _sugaTime (\ s a -> s{_sugaTime = a}) . mapping _Time;
-
--- | The name of the scheduled action.
-sugaScheduledActionName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaScheduledActionName = lens _sugaScheduledActionName (\ s a -> s{_sugaScheduledActionName = a});
-
--- | The maximum size of the group.
-sugaMaxSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaMaxSize = lens _sugaMaxSize (\ s a -> s{_sugaMaxSize = a});
-
--- | The recurring schedule for the action.
-sugaRecurrence :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaRecurrence = lens _sugaRecurrence (\ s a -> s{_sugaRecurrence = a});
-
--- | The number of instances you prefer to maintain in the group.
-sugaDesiredCapacity :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaDesiredCapacity = lens _sugaDesiredCapacity (\ s a -> s{_sugaDesiredCapacity = a});
-
--- | The minimum size of the group.
-sugaMinSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaMinSize = lens _sugaMinSize (\ s a -> s{_sugaMinSize = a});
-
--- | The name of the group.
-sugaAutoScalingGroupName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaAutoScalingGroupName = lens _sugaAutoScalingGroupName (\ s a -> s{_sugaAutoScalingGroupName = a});
-
--- | The date and time that the action is scheduled to end. This date and time can be up to one month in the future.
-sugaEndTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaEndTime = lens _sugaEndTime (\ s a -> s{_sugaEndTime = a}) . mapping _Time;
-
-instance FromXML ScheduledUpdateGroupAction where
-        parseXML x
-          = ScheduledUpdateGroupAction' <$>
-              (x .@? "ScheduledActionARN") <*> (x .@? "StartTime")
-                <*> (x .@? "Time")
-                <*> (x .@? "ScheduledActionName")
-                <*> (x .@? "MaxSize")
-                <*> (x .@? "Recurrence")
-                <*> (x .@? "DesiredCapacity")
-                <*> (x .@? "MinSize")
-                <*> (x .@? "AutoScalingGroupName")
-                <*> (x .@? "EndTime")
-
-instance Hashable ScheduledUpdateGroupAction
-
-instance NFData ScheduledUpdateGroupAction
-
--- | Describes an adjustment based on the difference between the value of the aggregated CloudWatch metric and the breach threshold that you've defined for the alarm.
---
---
--- For the following examples, suppose that you have an alarm with a breach threshold of 50:
---
---     * If you want the adjustment to be triggered when the metric is greater than or equal to 50 and less than 60, specify a lower bound of 0 and an upper bound of 10.
---
---     * If you want the adjustment to be triggered when the metric is greater than 40 and less than or equal to 50, specify a lower bound of -10 and an upper bound of 0.
---
---
---
--- There are a few rules for the step adjustments for your step policy:
---
---     * The ranges of your step adjustments can't overlap or have a gap.
---
---     * At most one step adjustment can have a null lower bound. If one step adjustment has a negative lower bound, then there must be a step adjustment with a null lower bound.
---
---     * At most one step adjustment can have a null upper bound. If one step adjustment has a positive upper bound, then there must be a step adjustment with a null upper bound.
---
---     * The upper and lower bound can't be null in the same step adjustment.
---
---
---
---
--- /See:/ 'stepAdjustment' smart constructor.
-data StepAdjustment = StepAdjustment'
-    { _saMetricIntervalLowerBound :: !(Maybe Double)
-    , _saMetricIntervalUpperBound :: !(Maybe Double)
-    , _saScalingAdjustment        :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StepAdjustment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saMetricIntervalLowerBound' - The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.
---
--- * 'saMetricIntervalUpperBound' - The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound.
---
--- * 'saScalingAdjustment' - The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
-stepAdjustment
-    :: Int -- ^ 'saScalingAdjustment'
-    -> StepAdjustment
-stepAdjustment pScalingAdjustment_ =
-    StepAdjustment'
-    { _saMetricIntervalLowerBound = Nothing
-    , _saMetricIntervalUpperBound = Nothing
-    , _saScalingAdjustment = pScalingAdjustment_
-    }
-
--- | The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.
-saMetricIntervalLowerBound :: Lens' StepAdjustment (Maybe Double)
-saMetricIntervalLowerBound = lens _saMetricIntervalLowerBound (\ s a -> s{_saMetricIntervalLowerBound = a});
-
--- | The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound.
-saMetricIntervalUpperBound :: Lens' StepAdjustment (Maybe Double)
-saMetricIntervalUpperBound = lens _saMetricIntervalUpperBound (\ s a -> s{_saMetricIntervalUpperBound = a});
-
--- | The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
-saScalingAdjustment :: Lens' StepAdjustment Int
-saScalingAdjustment = lens _saScalingAdjustment (\ s a -> s{_saScalingAdjustment = a});
-
-instance FromXML StepAdjustment where
-        parseXML x
-          = StepAdjustment' <$>
-              (x .@? "MetricIntervalLowerBound") <*>
-                (x .@? "MetricIntervalUpperBound")
-                <*> (x .@ "ScalingAdjustment")
-
-instance Hashable StepAdjustment
-
-instance NFData StepAdjustment
-
-instance ToQuery StepAdjustment where
-        toQuery StepAdjustment'{..}
-          = mconcat
-              ["MetricIntervalLowerBound" =:
-                 _saMetricIntervalLowerBound,
-               "MetricIntervalUpperBound" =:
-                 _saMetricIntervalUpperBound,
-               "ScalingAdjustment" =: _saScalingAdjustment]
-
--- | Describes an Auto Scaling process that has been suspended. For more information, see 'ProcessType' .
---
---
---
--- /See:/ 'suspendedProcess' smart constructor.
-data SuspendedProcess = SuspendedProcess'
-    { _spProcessName      :: !(Maybe Text)
-    , _spSuspensionReason :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SuspendedProcess' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spProcessName' - The name of the suspended process.
---
--- * 'spSuspensionReason' - The reason that the process was suspended.
-suspendedProcess
-    :: SuspendedProcess
-suspendedProcess =
-    SuspendedProcess'
-    { _spProcessName = Nothing
-    , _spSuspensionReason = Nothing
-    }
-
--- | The name of the suspended process.
-spProcessName :: Lens' SuspendedProcess (Maybe Text)
-spProcessName = lens _spProcessName (\ s a -> s{_spProcessName = a});
-
--- | The reason that the process was suspended.
-spSuspensionReason :: Lens' SuspendedProcess (Maybe Text)
-spSuspensionReason = lens _spSuspensionReason (\ s a -> s{_spSuspensionReason = a});
-
-instance FromXML SuspendedProcess where
-        parseXML x
-          = SuspendedProcess' <$>
-              (x .@? "ProcessName") <*> (x .@? "SuspensionReason")
-
-instance Hashable SuspendedProcess
-
-instance NFData SuspendedProcess
-
--- | Describes a tag for an Auto Scaling group.
---
---
---
--- /See:/ 'tag' smart constructor.
-data Tag = Tag'
-    { _tagKey               :: !Text
-    , _tagResourceId        :: !Text
-    , _tagResourceType      :: !Text
-    , _tagPropagateAtLaunch :: !Bool
-    , _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' - The tag key.
---
--- * 'tagResourceId' - The name of the group.
---
--- * 'tagResourceType' - The type of resource. The only supported value is @auto-scaling-group@ .
---
--- * 'tagPropagateAtLaunch' - Determines whether the tag is added to new instances as they are launched in the group.
---
--- * 'tagValue' - The tag value.
-tag
-    :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagResourceId'
-    -> Text -- ^ 'tagResourceType'
-    -> Bool -- ^ 'tagPropagateAtLaunch'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag pKey_ pResourceId_ pResourceType_ pPropagateAtLaunch_ pValue_ =
-    Tag'
-    { _tagKey = pKey_
-    , _tagResourceId = pResourceId_
-    , _tagResourceType = pResourceType_
-    , _tagPropagateAtLaunch = pPropagateAtLaunch_
-    , _tagValue = pValue_
-    }
-
--- | The tag key.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
-
--- | The name of the group.
-tagResourceId :: Lens' Tag Text
-tagResourceId = lens _tagResourceId (\ s a -> s{_tagResourceId = a});
-
--- | The type of resource. The only supported value is @auto-scaling-group@ .
-tagResourceType :: Lens' Tag Text
-tagResourceType = lens _tagResourceType (\ s a -> s{_tagResourceType = a});
-
--- | Determines whether the tag is added to new instances as they are launched in the group.
-tagPropagateAtLaunch :: Lens' Tag Bool
-tagPropagateAtLaunch = lens _tagPropagateAtLaunch (\ s a -> s{_tagPropagateAtLaunch = a});
-
--- | The tag value.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
-
-instance Hashable Tag
-
-instance NFData Tag
-
-instance ToQuery Tag where
-        toQuery Tag'{..}
-          = mconcat
-              ["Key" =: _tagKey, "ResourceId" =: _tagResourceId,
-               "ResourceType" =: _tagResourceType,
-               "PropagateAtLaunch" =: _tagPropagateAtLaunch,
-               "Value" =: _tagValue]
-
--- | Describes a tag for an Auto Scaling group.
---
---
---
--- /See:/ 'tagDescription' smart constructor.
-data TagDescription = TagDescription'
-    { _tdResourceId        :: !Text
-    , _tdResourceType      :: !Text
-    , _tdKey               :: !Text
-    , _tdPropagateAtLaunch :: !Bool
-    , _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' - The name of the group.
---
--- * 'tdResourceType' - The type of resource. The only supported value is @auto-scaling-group@ .
---
--- * 'tdKey' - The tag key.
---
--- * 'tdPropagateAtLaunch' - Determines whether the tag is added to new instances as they are launched in the group.
---
--- * 'tdValue' - The tag value.
-tagDescription
-    :: Text -- ^ 'tdResourceId'
-    -> Text -- ^ 'tdResourceType'
-    -> Text -- ^ 'tdKey'
-    -> Bool -- ^ 'tdPropagateAtLaunch'
-    -> Text -- ^ 'tdValue'
-    -> TagDescription
-tagDescription pResourceId_ pResourceType_ pKey_ pPropagateAtLaunch_ pValue_ =
-    TagDescription'
-    { _tdResourceId = pResourceId_
-    , _tdResourceType = pResourceType_
-    , _tdKey = pKey_
-    , _tdPropagateAtLaunch = pPropagateAtLaunch_
-    , _tdValue = pValue_
-    }
-
--- | The name of the group.
-tdResourceId :: Lens' TagDescription Text
-tdResourceId = lens _tdResourceId (\ s a -> s{_tdResourceId = a});
-
--- | The type of resource. The only supported value is @auto-scaling-group@ .
-tdResourceType :: Lens' TagDescription Text
-tdResourceType = lens _tdResourceType (\ s a -> s{_tdResourceType = a});
-
--- | The tag key.
-tdKey :: Lens' TagDescription Text
-tdKey = lens _tdKey (\ s a -> s{_tdKey = a});
-
--- | Determines whether the tag is added to new instances as they are launched in the group.
-tdPropagateAtLaunch :: Lens' TagDescription Bool
-tdPropagateAtLaunch = lens _tdPropagateAtLaunch (\ s a -> s{_tdPropagateAtLaunch = 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 .@ "PropagateAtLaunch")
-                <*> (x .@ "Value")
-
-instance Hashable TagDescription
-
-instance NFData TagDescription
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.AutoScaling.Types.Product where
+
+import Network.AWS.AutoScaling.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+
+-- | Describes scaling activity, which is a long-running process that represents a change to your Auto Scaling group, such as changing its size or replacing an instance.
+--
+--
+--
+-- /See:/ 'activity' smart constructor.
+data Activity = Activity'
+  { _aProgress             :: !(Maybe Int)
+  , _aStatusMessage        :: !(Maybe Text)
+  , _aEndTime              :: !(Maybe ISO8601)
+  , _aDetails              :: !(Maybe Text)
+  , _aDescription          :: !(Maybe Text)
+  , _aActivityId           :: !Text
+  , _aAutoScalingGroupName :: !Text
+  , _aCause                :: !Text
+  , _aStartTime            :: !ISO8601
+  , _aStatusCode           :: !ScalingActivityStatusCode
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Activity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aProgress' - A value between 0 and 100 that indicates the progress of the activity.
+--
+-- * 'aStatusMessage' - A friendly, more verbose description of the activity status.
+--
+-- * 'aEndTime' - The end time of the activity.
+--
+-- * 'aDetails' - The details about the activity.
+--
+-- * 'aDescription' - A friendly, more verbose description of the activity.
+--
+-- * 'aActivityId' - The ID of the activity.
+--
+-- * 'aAutoScalingGroupName' - The name of the Auto Scaling group.
+--
+-- * 'aCause' - The reason the activity began.
+--
+-- * 'aStartTime' - The start time of the activity.
+--
+-- * 'aStatusCode' - The current status of the activity.
+activity
+    :: Text -- ^ 'aActivityId'
+    -> Text -- ^ 'aAutoScalingGroupName'
+    -> Text -- ^ 'aCause'
+    -> UTCTime -- ^ 'aStartTime'
+    -> ScalingActivityStatusCode -- ^ 'aStatusCode'
+    -> Activity
+activity pActivityId_ pAutoScalingGroupName_ pCause_ pStartTime_ pStatusCode_ =
+  Activity'
+  { _aProgress = Nothing
+  , _aStatusMessage = Nothing
+  , _aEndTime = Nothing
+  , _aDetails = Nothing
+  , _aDescription = Nothing
+  , _aActivityId = pActivityId_
+  , _aAutoScalingGroupName = pAutoScalingGroupName_
+  , _aCause = pCause_
+  , _aStartTime = _Time # pStartTime_
+  , _aStatusCode = pStatusCode_
+  }
+
+
+-- | A value between 0 and 100 that indicates the progress of the activity.
+aProgress :: Lens' Activity (Maybe Int)
+aProgress = lens _aProgress (\ s a -> s{_aProgress = a});
+
+-- | A friendly, more verbose description of the activity status.
+aStatusMessage :: Lens' Activity (Maybe Text)
+aStatusMessage = lens _aStatusMessage (\ s a -> s{_aStatusMessage = a});
+
+-- | The end time of the activity.
+aEndTime :: Lens' Activity (Maybe UTCTime)
+aEndTime = lens _aEndTime (\ s a -> s{_aEndTime = a}) . mapping _Time;
+
+-- | The details about the activity.
+aDetails :: Lens' Activity (Maybe Text)
+aDetails = lens _aDetails (\ s a -> s{_aDetails = a});
+
+-- | A friendly, more verbose description of the activity.
+aDescription :: Lens' Activity (Maybe Text)
+aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
+
+-- | The ID of the activity.
+aActivityId :: Lens' Activity Text
+aActivityId = lens _aActivityId (\ s a -> s{_aActivityId = a});
+
+-- | The name of the Auto Scaling group.
+aAutoScalingGroupName :: Lens' Activity Text
+aAutoScalingGroupName = lens _aAutoScalingGroupName (\ s a -> s{_aAutoScalingGroupName = a});
+
+-- | The reason the activity began.
+aCause :: Lens' Activity Text
+aCause = lens _aCause (\ s a -> s{_aCause = a});
+
+-- | The start time of the activity.
+aStartTime :: Lens' Activity UTCTime
+aStartTime = lens _aStartTime (\ s a -> s{_aStartTime = a}) . _Time;
+
+-- | The current status of the activity.
+aStatusCode :: Lens' Activity ScalingActivityStatusCode
+aStatusCode = lens _aStatusCode (\ s a -> s{_aStatusCode = a});
+
+instance FromXML Activity where
+        parseXML x
+          = Activity' <$>
+              (x .@? "Progress") <*> (x .@? "StatusMessage") <*>
+                (x .@? "EndTime")
+                <*> (x .@? "Details")
+                <*> (x .@? "Description")
+                <*> (x .@ "ActivityId")
+                <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "Cause")
+                <*> (x .@ "StartTime")
+                <*> (x .@ "StatusCode")
+
+instance Hashable Activity where
+
+instance NFData Activity where
+
+-- | Describes a policy adjustment type.
+--
+--
+-- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling User Guide/ .
+--
+--
+-- /See:/ 'adjustmentType' smart constructor.
+newtype AdjustmentType = AdjustmentType'
+  { _atAdjustmentType :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdjustmentType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atAdjustmentType' - The policy adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
+adjustmentType
+    :: AdjustmentType
+adjustmentType = AdjustmentType' {_atAdjustmentType = Nothing}
+
+
+-- | The policy adjustment type. The valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
+atAdjustmentType :: Lens' AdjustmentType (Maybe Text)
+atAdjustmentType = lens _atAdjustmentType (\ s a -> s{_atAdjustmentType = a});
+
+instance FromXML AdjustmentType where
+        parseXML x
+          = AdjustmentType' <$> (x .@? "AdjustmentType")
+
+instance Hashable AdjustmentType where
+
+instance NFData AdjustmentType where
+
+-- | Describes an alarm.
+--
+--
+--
+-- /See:/ 'alarm' smart constructor.
+data Alarm = Alarm'
+  { _aAlarmName :: !(Maybe Text)
+  , _aAlarmARN  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Alarm' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAlarmName' - The name of the alarm.
+--
+-- * 'aAlarmARN' - The Amazon Resource Name (ARN) of the alarm.
+alarm
+    :: Alarm
+alarm = Alarm' {_aAlarmName = Nothing, _aAlarmARN = Nothing}
+
+
+-- | The name of the alarm.
+aAlarmName :: Lens' Alarm (Maybe Text)
+aAlarmName = lens _aAlarmName (\ s a -> s{_aAlarmName = a});
+
+-- | The Amazon Resource Name (ARN) of the alarm.
+aAlarmARN :: Lens' Alarm (Maybe Text)
+aAlarmARN = lens _aAlarmARN (\ s a -> s{_aAlarmARN = a});
+
+instance FromXML Alarm where
+        parseXML x
+          = Alarm' <$>
+              (x .@? "AlarmName") <*> (x .@? "AlarmARN")
+
+instance Hashable Alarm where
+
+instance NFData Alarm where
+
+-- | Describes an Auto Scaling group.
+--
+--
+--
+-- /See:/ 'autoScalingGroup' smart constructor.
+data AutoScalingGroup = AutoScalingGroup'
+  { _asgStatus                           :: !(Maybe Text)
+  , _asgTerminationPolicies              :: !(Maybe [Text])
+  , _asgHealthCheckGracePeriod           :: !(Maybe Int)
+  , _asgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
+  , _asgVPCZoneIdentifier                :: !(Maybe Text)
+  , _asgTargetGroupARNs                  :: !(Maybe [Text])
+  , _asgEnabledMetrics                   :: !(Maybe [EnabledMetric])
+  , _asgLaunchConfigurationName          :: !(Maybe Text)
+  , _asgInstances                        :: !(Maybe [Instance])
+  , _asgAutoScalingGroupARN              :: !(Maybe Text)
+  , _asgPlacementGroup                   :: !(Maybe Text)
+  , _asgSuspendedProcesses               :: !(Maybe [SuspendedProcess])
+  , _asgLoadBalancerNames                :: !(Maybe [Text])
+  , _asgTags                             :: !(Maybe [TagDescription])
+  , _asgAutoScalingGroupName             :: !Text
+  , _asgMinSize                          :: !Int
+  , _asgMaxSize                          :: !Int
+  , _asgDesiredCapacity                  :: !Int
+  , _asgDefaultCooldown                  :: !Int
+  , _asgAvailabilityZones                :: !(List1 Text)
+  , _asgHealthCheckType                  :: !Text
+  , _asgCreatedTime                      :: !ISO8601
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutoScalingGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asgStatus' - The current state of the group when 'DeleteAutoScalingGroup' is in progress.
+--
+-- * 'asgTerminationPolicies' - The termination policies for the group.
+--
+-- * 'asgHealthCheckGracePeriod' - The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service.
+--
+-- * 'asgNewInstancesProtectedFromScaleIn' - Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in.
+--
+-- * 'asgVPCZoneIdentifier' - One or more subnet IDs, if applicable, separated by commas. If you specify @VPCZoneIdentifier@ and @AvailabilityZones@ , ensure that the Availability Zones of the subnets match the values for @AvailabilityZones@ .
+--
+-- * 'asgTargetGroupARNs' - The Amazon Resource Names (ARN) of the target groups for your load balancer.
+--
+-- * 'asgEnabledMetrics' - The metrics enabled for the group.
+--
+-- * 'asgLaunchConfigurationName' - The name of the associated launch configuration.
+--
+-- * 'asgInstances' - The EC2 instances associated with the group.
+--
+-- * 'asgAutoScalingGroupARN' - The Amazon Resource Name (ARN) of the group.
+--
+-- * 'asgPlacementGroup' - The name of the placement group into which you'll launch your instances, if any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups> in the /Amazon Elastic Compute Cloud User Guide/ .
+--
+-- * 'asgSuspendedProcesses' - The suspended processes associated with the group.
+--
+-- * 'asgLoadBalancerNames' - One or more load balancers associated with the group.
+--
+-- * 'asgTags' - The tags for the group.
+--
+-- * 'asgAutoScalingGroupName' - The name of the group.
+--
+-- * 'asgMinSize' - The minimum size of the group.
+--
+-- * 'asgMaxSize' - The maximum size of the group.
+--
+-- * 'asgDesiredCapacity' - The desired size of the group.
+--
+-- * 'asgDefaultCooldown' - The amount of time, in seconds, after a scaling activity completes before another scaling activity can start.
+--
+-- * 'asgAvailabilityZones' - One or more Availability Zones for the group.
+--
+-- * 'asgHealthCheckType' - The service to use for the health checks. The valid values are @EC2@ and @ELB@ .
+--
+-- * 'asgCreatedTime' - The date and time the group was created.
+autoScalingGroup
+    :: Text -- ^ 'asgAutoScalingGroupName'
+    -> Int -- ^ 'asgMinSize'
+    -> Int -- ^ 'asgMaxSize'
+    -> Int -- ^ 'asgDesiredCapacity'
+    -> Int -- ^ 'asgDefaultCooldown'
+    -> NonEmpty Text -- ^ 'asgAvailabilityZones'
+    -> Text -- ^ 'asgHealthCheckType'
+    -> UTCTime -- ^ 'asgCreatedTime'
+    -> AutoScalingGroup
+autoScalingGroup pAutoScalingGroupName_ pMinSize_ pMaxSize_ pDesiredCapacity_ pDefaultCooldown_ pAvailabilityZones_ pHealthCheckType_ pCreatedTime_ =
+  AutoScalingGroup'
+  { _asgStatus = Nothing
+  , _asgTerminationPolicies = Nothing
+  , _asgHealthCheckGracePeriod = Nothing
+  , _asgNewInstancesProtectedFromScaleIn = Nothing
+  , _asgVPCZoneIdentifier = Nothing
+  , _asgTargetGroupARNs = Nothing
+  , _asgEnabledMetrics = Nothing
+  , _asgLaunchConfigurationName = Nothing
+  , _asgInstances = Nothing
+  , _asgAutoScalingGroupARN = Nothing
+  , _asgPlacementGroup = Nothing
+  , _asgSuspendedProcesses = Nothing
+  , _asgLoadBalancerNames = Nothing
+  , _asgTags = Nothing
+  , _asgAutoScalingGroupName = pAutoScalingGroupName_
+  , _asgMinSize = pMinSize_
+  , _asgMaxSize = pMaxSize_
+  , _asgDesiredCapacity = pDesiredCapacity_
+  , _asgDefaultCooldown = pDefaultCooldown_
+  , _asgAvailabilityZones = _List1 # pAvailabilityZones_
+  , _asgHealthCheckType = pHealthCheckType_
+  , _asgCreatedTime = _Time # pCreatedTime_
+  }
+
+
+-- | The current state of the group when 'DeleteAutoScalingGroup' is in progress.
+asgStatus :: Lens' AutoScalingGroup (Maybe Text)
+asgStatus = lens _asgStatus (\ s a -> s{_asgStatus = a});
+
+-- | The termination policies for the group.
+asgTerminationPolicies :: Lens' AutoScalingGroup [Text]
+asgTerminationPolicies = lens _asgTerminationPolicies (\ s a -> s{_asgTerminationPolicies = a}) . _Default . _Coerce;
+
+-- | The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service.
+asgHealthCheckGracePeriod :: Lens' AutoScalingGroup (Maybe Int)
+asgHealthCheckGracePeriod = lens _asgHealthCheckGracePeriod (\ s a -> s{_asgHealthCheckGracePeriod = a});
+
+-- | Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in.
+asgNewInstancesProtectedFromScaleIn :: Lens' AutoScalingGroup (Maybe Bool)
+asgNewInstancesProtectedFromScaleIn = lens _asgNewInstancesProtectedFromScaleIn (\ s a -> s{_asgNewInstancesProtectedFromScaleIn = a});
+
+-- | One or more subnet IDs, if applicable, separated by commas. If you specify @VPCZoneIdentifier@ and @AvailabilityZones@ , ensure that the Availability Zones of the subnets match the values for @AvailabilityZones@ .
+asgVPCZoneIdentifier :: Lens' AutoScalingGroup (Maybe Text)
+asgVPCZoneIdentifier = lens _asgVPCZoneIdentifier (\ s a -> s{_asgVPCZoneIdentifier = a});
+
+-- | The Amazon Resource Names (ARN) of the target groups for your load balancer.
+asgTargetGroupARNs :: Lens' AutoScalingGroup [Text]
+asgTargetGroupARNs = lens _asgTargetGroupARNs (\ s a -> s{_asgTargetGroupARNs = a}) . _Default . _Coerce;
+
+-- | The metrics enabled for the group.
+asgEnabledMetrics :: Lens' AutoScalingGroup [EnabledMetric]
+asgEnabledMetrics = lens _asgEnabledMetrics (\ s a -> s{_asgEnabledMetrics = a}) . _Default . _Coerce;
+
+-- | The name of the associated launch configuration.
+asgLaunchConfigurationName :: Lens' AutoScalingGroup (Maybe Text)
+asgLaunchConfigurationName = lens _asgLaunchConfigurationName (\ s a -> s{_asgLaunchConfigurationName = a});
+
+-- | The EC2 instances associated with the group.
+asgInstances :: Lens' AutoScalingGroup [Instance]
+asgInstances = lens _asgInstances (\ s a -> s{_asgInstances = a}) . _Default . _Coerce;
+
+-- | The Amazon Resource Name (ARN) of the group.
+asgAutoScalingGroupARN :: Lens' AutoScalingGroup (Maybe Text)
+asgAutoScalingGroupARN = lens _asgAutoScalingGroupARN (\ s a -> s{_asgAutoScalingGroupARN = a});
+
+-- | The name of the placement group into which you'll launch your instances, if any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups> in the /Amazon Elastic Compute Cloud User Guide/ .
+asgPlacementGroup :: Lens' AutoScalingGroup (Maybe Text)
+asgPlacementGroup = lens _asgPlacementGroup (\ s a -> s{_asgPlacementGroup = a});
+
+-- | The suspended processes associated with the group.
+asgSuspendedProcesses :: Lens' AutoScalingGroup [SuspendedProcess]
+asgSuspendedProcesses = lens _asgSuspendedProcesses (\ s a -> s{_asgSuspendedProcesses = a}) . _Default . _Coerce;
+
+-- | One or more load balancers associated with the group.
+asgLoadBalancerNames :: Lens' AutoScalingGroup [Text]
+asgLoadBalancerNames = lens _asgLoadBalancerNames (\ s a -> s{_asgLoadBalancerNames = a}) . _Default . _Coerce;
+
+-- | The tags for the group.
+asgTags :: Lens' AutoScalingGroup [TagDescription]
+asgTags = lens _asgTags (\ s a -> s{_asgTags = a}) . _Default . _Coerce;
+
+-- | The name of the group.
+asgAutoScalingGroupName :: Lens' AutoScalingGroup Text
+asgAutoScalingGroupName = lens _asgAutoScalingGroupName (\ s a -> s{_asgAutoScalingGroupName = a});
+
+-- | The minimum size of the group.
+asgMinSize :: Lens' AutoScalingGroup Int
+asgMinSize = lens _asgMinSize (\ s a -> s{_asgMinSize = a});
+
+-- | The maximum size of the group.
+asgMaxSize :: Lens' AutoScalingGroup Int
+asgMaxSize = lens _asgMaxSize (\ s a -> s{_asgMaxSize = a});
+
+-- | The desired size of the group.
+asgDesiredCapacity :: Lens' AutoScalingGroup Int
+asgDesiredCapacity = lens _asgDesiredCapacity (\ s a -> s{_asgDesiredCapacity = a});
+
+-- | The amount of time, in seconds, after a scaling activity completes before another scaling activity can start.
+asgDefaultCooldown :: Lens' AutoScalingGroup Int
+asgDefaultCooldown = lens _asgDefaultCooldown (\ s a -> s{_asgDefaultCooldown = a});
+
+-- | One or more Availability Zones for the group.
+asgAvailabilityZones :: Lens' AutoScalingGroup (NonEmpty Text)
+asgAvailabilityZones = lens _asgAvailabilityZones (\ s a -> s{_asgAvailabilityZones = a}) . _List1;
+
+-- | The service to use for the health checks. The valid values are @EC2@ and @ELB@ .
+asgHealthCheckType :: Lens' AutoScalingGroup Text
+asgHealthCheckType = lens _asgHealthCheckType (\ s a -> s{_asgHealthCheckType = a});
+
+-- | The date and time the group was created.
+asgCreatedTime :: Lens' AutoScalingGroup UTCTime
+asgCreatedTime = lens _asgCreatedTime (\ s a -> s{_asgCreatedTime = a}) . _Time;
+
+instance FromXML AutoScalingGroup where
+        parseXML x
+          = AutoScalingGroup' <$>
+              (x .@? "Status") <*>
+                (x .@? "TerminationPolicies" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "HealthCheckGracePeriod")
+                <*> (x .@? "NewInstancesProtectedFromScaleIn")
+                <*> (x .@? "VPCZoneIdentifier")
+                <*>
+                (x .@? "TargetGroupARNs" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "EnabledMetrics" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "LaunchConfigurationName")
+                <*>
+                (x .@? "Instances" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "AutoScalingGroupARN")
+                <*> (x .@? "PlacementGroup")
+                <*>
+                (x .@? "SuspendedProcesses" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "LoadBalancerNames" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "Tags" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "MinSize")
+                <*> (x .@ "MaxSize")
+                <*> (x .@ "DesiredCapacity")
+                <*> (x .@ "DefaultCooldown")
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   parseXMLList1 "member")
+                <*> (x .@ "HealthCheckType")
+                <*> (x .@ "CreatedTime")
+
+instance Hashable AutoScalingGroup where
+
+instance NFData AutoScalingGroup where
+
+-- | Describes an EC2 instance associated with an Auto Scaling group.
+--
+--
+--
+-- /See:/ 'autoScalingInstanceDetails' smart constructor.
+data AutoScalingInstanceDetails = AutoScalingInstanceDetails'
+  { _asidLaunchConfigurationName :: !(Maybe Text)
+  , _asidInstanceId              :: !Text
+  , _asidAutoScalingGroupName    :: !Text
+  , _asidAvailabilityZone        :: !Text
+  , _asidLifecycleState          :: !Text
+  , _asidHealthStatus            :: !Text
+  , _asidProtectedFromScaleIn    :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutoScalingInstanceDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asidLaunchConfigurationName' - The launch configuration used to launch the instance. This value is not available if you attached the instance to the Auto Scaling group.
+--
+-- * 'asidInstanceId' - The ID of the instance.
+--
+-- * 'asidAutoScalingGroupName' - The name of the Auto Scaling group associated with the instance.
+--
+-- * 'asidAvailabilityZone' - The Availability Zone for the instance.
+--
+-- * 'asidLifecycleState' - The lifecycle state for the instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
+--
+-- * 'asidHealthStatus' - The last reported health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
+--
+-- * 'asidProtectedFromScaleIn' - Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
+autoScalingInstanceDetails
+    :: Text -- ^ 'asidInstanceId'
+    -> Text -- ^ 'asidAutoScalingGroupName'
+    -> Text -- ^ 'asidAvailabilityZone'
+    -> Text -- ^ 'asidLifecycleState'
+    -> Text -- ^ 'asidHealthStatus'
+    -> Bool -- ^ 'asidProtectedFromScaleIn'
+    -> AutoScalingInstanceDetails
+autoScalingInstanceDetails pInstanceId_ pAutoScalingGroupName_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pProtectedFromScaleIn_ =
+  AutoScalingInstanceDetails'
+  { _asidLaunchConfigurationName = Nothing
+  , _asidInstanceId = pInstanceId_
+  , _asidAutoScalingGroupName = pAutoScalingGroupName_
+  , _asidAvailabilityZone = pAvailabilityZone_
+  , _asidLifecycleState = pLifecycleState_
+  , _asidHealthStatus = pHealthStatus_
+  , _asidProtectedFromScaleIn = pProtectedFromScaleIn_
+  }
+
+
+-- | The launch configuration used to launch the instance. This value is not available if you attached the instance to the Auto Scaling group.
+asidLaunchConfigurationName :: Lens' AutoScalingInstanceDetails (Maybe Text)
+asidLaunchConfigurationName = lens _asidLaunchConfigurationName (\ s a -> s{_asidLaunchConfigurationName = a});
+
+-- | The ID of the instance.
+asidInstanceId :: Lens' AutoScalingInstanceDetails Text
+asidInstanceId = lens _asidInstanceId (\ s a -> s{_asidInstanceId = a});
+
+-- | The name of the Auto Scaling group associated with the instance.
+asidAutoScalingGroupName :: Lens' AutoScalingInstanceDetails Text
+asidAutoScalingGroupName = lens _asidAutoScalingGroupName (\ s a -> s{_asidAutoScalingGroupName = a});
+
+-- | The Availability Zone for the instance.
+asidAvailabilityZone :: Lens' AutoScalingInstanceDetails Text
+asidAvailabilityZone = lens _asidAvailabilityZone (\ s a -> s{_asidAvailabilityZone = a});
+
+-- | The lifecycle state for the instance. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/ .
+asidLifecycleState :: Lens' AutoScalingInstanceDetails Text
+asidLifecycleState = lens _asidLifecycleState (\ s a -> s{_asidLifecycleState = a});
+
+-- | The last reported health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
+asidHealthStatus :: Lens' AutoScalingInstanceDetails Text
+asidHealthStatus = lens _asidHealthStatus (\ s a -> s{_asidHealthStatus = a});
+
+-- | Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
+asidProtectedFromScaleIn :: Lens' AutoScalingInstanceDetails Bool
+asidProtectedFromScaleIn = lens _asidProtectedFromScaleIn (\ s a -> s{_asidProtectedFromScaleIn = a});
+
+instance FromXML AutoScalingInstanceDetails where
+        parseXML x
+          = AutoScalingInstanceDetails' <$>
+              (x .@? "LaunchConfigurationName") <*>
+                (x .@ "InstanceId")
+                <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "AvailabilityZone")
+                <*> (x .@ "LifecycleState")
+                <*> (x .@ "HealthStatus")
+                <*> (x .@ "ProtectedFromScaleIn")
+
+instance Hashable AutoScalingInstanceDetails where
+
+instance NFData AutoScalingInstanceDetails where
+
+-- | Describes a block device mapping.
+--
+--
+--
+-- /See:/ 'blockDeviceMapping' smart constructor.
+data BlockDeviceMapping = BlockDeviceMapping'
+  { _bdmVirtualName :: !(Maybe Text)
+  , _bdmNoDevice    :: !(Maybe Bool)
+  , _bdmEBS         :: !(Maybe EBS)
+  , _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' - The name of the virtual device (for example, @ephemeral0@ ).
+--
+-- * 'bdmNoDevice' - Suppresses a device mapping. If this parameter is true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check.
+--
+-- * 'bdmEBS' - The information about the Amazon EBS volume.
+--
+-- * 'bdmDeviceName' - The device name exposed to the EC2 instance (for example, @/dev/sdh@ or @xvdh@ ).
+blockDeviceMapping
+    :: Text -- ^ 'bdmDeviceName'
+    -> BlockDeviceMapping
+blockDeviceMapping pDeviceName_ =
+  BlockDeviceMapping'
+  { _bdmVirtualName = Nothing
+  , _bdmNoDevice = Nothing
+  , _bdmEBS = Nothing
+  , _bdmDeviceName = pDeviceName_
+  }
+
+
+-- | The name of the virtual device (for example, @ephemeral0@ ).
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
+
+-- | Suppresses a device mapping. If this parameter is true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Bool)
+bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
+
+-- | The information about the Amazon EBS volume.
+bdmEBS :: Lens' BlockDeviceMapping (Maybe EBS)
+bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
+
+-- | The device name exposed to the EC2 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 Hashable BlockDeviceMapping where
+
+instance NFData BlockDeviceMapping where
+
+instance ToQuery BlockDeviceMapping where
+        toQuery BlockDeviceMapping'{..}
+          = mconcat
+              ["VirtualName" =: _bdmVirtualName,
+               "NoDevice" =: _bdmNoDevice, "Ebs" =: _bdmEBS,
+               "DeviceName" =: _bdmDeviceName]
+
+-- | Configures a customized metric for a target tracking policy.
+--
+--
+--
+-- /See:/ 'customizedMetricSpecification' smart constructor.
+data CustomizedMetricSpecification = CustomizedMetricSpecification'
+  { _cmsDimensions :: !(Maybe [MetricDimension])
+  , _cmsUnit       :: !(Maybe Text)
+  , _cmsMetricName :: !Text
+  , _cmsNamespace  :: !Text
+  , _cmsStatistic  :: !MetricStatistic
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CustomizedMetricSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmsDimensions' - The dimensions of the metric.
+--
+-- * 'cmsUnit' - The unit of the metric.
+--
+-- * 'cmsMetricName' - The name of the metric.
+--
+-- * 'cmsNamespace' - The namespace of the metric.
+--
+-- * 'cmsStatistic' - The statistic of the metric.
+customizedMetricSpecification
+    :: Text -- ^ 'cmsMetricName'
+    -> Text -- ^ 'cmsNamespace'
+    -> MetricStatistic -- ^ 'cmsStatistic'
+    -> CustomizedMetricSpecification
+customizedMetricSpecification pMetricName_ pNamespace_ pStatistic_ =
+  CustomizedMetricSpecification'
+  { _cmsDimensions = Nothing
+  , _cmsUnit = Nothing
+  , _cmsMetricName = pMetricName_
+  , _cmsNamespace = pNamespace_
+  , _cmsStatistic = pStatistic_
+  }
+
+
+-- | The dimensions of the metric.
+cmsDimensions :: Lens' CustomizedMetricSpecification [MetricDimension]
+cmsDimensions = lens _cmsDimensions (\ s a -> s{_cmsDimensions = a}) . _Default . _Coerce;
+
+-- | The unit of the metric.
+cmsUnit :: Lens' CustomizedMetricSpecification (Maybe Text)
+cmsUnit = lens _cmsUnit (\ s a -> s{_cmsUnit = a});
+
+-- | The name of the metric.
+cmsMetricName :: Lens' CustomizedMetricSpecification Text
+cmsMetricName = lens _cmsMetricName (\ s a -> s{_cmsMetricName = a});
+
+-- | The namespace of the metric.
+cmsNamespace :: Lens' CustomizedMetricSpecification Text
+cmsNamespace = lens _cmsNamespace (\ s a -> s{_cmsNamespace = a});
+
+-- | The statistic of the metric.
+cmsStatistic :: Lens' CustomizedMetricSpecification MetricStatistic
+cmsStatistic = lens _cmsStatistic (\ s a -> s{_cmsStatistic = a});
+
+instance FromXML CustomizedMetricSpecification where
+        parseXML x
+          = CustomizedMetricSpecification' <$>
+              (x .@? "Dimensions" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@? "Unit")
+                <*> (x .@ "MetricName")
+                <*> (x .@ "Namespace")
+                <*> (x .@ "Statistic")
+
+instance Hashable CustomizedMetricSpecification where
+
+instance NFData CustomizedMetricSpecification where
+
+instance ToQuery CustomizedMetricSpecification where
+        toQuery CustomizedMetricSpecification'{..}
+          = mconcat
+              ["Dimensions" =:
+                 toQuery (toQueryList "member" <$> _cmsDimensions),
+               "Unit" =: _cmsUnit, "MetricName" =: _cmsMetricName,
+               "Namespace" =: _cmsNamespace,
+               "Statistic" =: _cmsStatistic]
+
+-- | Describes an Amazon EBS volume.
+--
+--
+--
+-- /See:/ 'ebs' smart constructor.
+data EBS = EBS'
+  { _ebsDeleteOnTermination :: !(Maybe Bool)
+  , _ebsVolumeSize          :: !(Maybe Nat)
+  , _ebsIOPS                :: !(Maybe Nat)
+  , _ebsEncrypted           :: !(Maybe Bool)
+  , _ebsVolumeType          :: !(Maybe Text)
+  , _ebsSnapshotId          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EBS' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ebsDeleteOnTermination' - Indicates whether the volume is deleted on instance termination. Default: @true@
+--
+-- * 'ebsVolumeSize' - The volume size, in GiB. For @standard@ volumes, specify a value from 1 to 1,024. For @io1@ volumes, specify a value from 4 to 16,384. For @gp2@ volumes, specify a value from 1 to 16,384. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the snapshot size.
+--
+-- * 'ebsIOPS' - The number of I/O operations per second (IOPS) to provision for the volume. Constraint: Required when the volume type is @io1@ .
+--
+-- * 'ebsEncrypted' - Indicates whether the volume should be encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot. 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/ .
+--
+-- * 'ebsVolumeType' - The volume type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types> in the /Amazon Elastic Compute Cloud User Guide/ . Valid values: @standard@ | @io1@ | @gp2@  Default: @standard@
+--
+-- * 'ebsSnapshotId' - The ID of the snapshot.
+ebs
+    :: EBS
+ebs =
+  EBS'
+  { _ebsDeleteOnTermination = Nothing
+  , _ebsVolumeSize = Nothing
+  , _ebsIOPS = Nothing
+  , _ebsEncrypted = Nothing
+  , _ebsVolumeType = Nothing
+  , _ebsSnapshotId = Nothing
+  }
+
+
+-- | Indicates whether the volume is deleted on instance termination. Default: @true@
+ebsDeleteOnTermination :: Lens' EBS (Maybe Bool)
+ebsDeleteOnTermination = lens _ebsDeleteOnTermination (\ s a -> s{_ebsDeleteOnTermination = a});
+
+-- | The volume size, in GiB. For @standard@ volumes, specify a value from 1 to 1,024. For @io1@ volumes, specify a value from 4 to 16,384. For @gp2@ volumes, specify a value from 1 to 16,384. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the snapshot size.
+ebsVolumeSize :: Lens' EBS (Maybe Natural)
+ebsVolumeSize = lens _ebsVolumeSize (\ s a -> s{_ebsVolumeSize = a}) . mapping _Nat;
+
+-- | The number of I/O operations per second (IOPS) to provision for the volume. Constraint: Required when the volume type is @io1@ .
+ebsIOPS :: Lens' EBS (Maybe Natural)
+ebsIOPS = lens _ebsIOPS (\ s a -> s{_ebsIOPS = a}) . mapping _Nat;
+
+-- | Indicates whether the volume should be encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot. 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/ .
+ebsEncrypted :: Lens' EBS (Maybe Bool)
+ebsEncrypted = lens _ebsEncrypted (\ s a -> s{_ebsEncrypted = a});
+
+-- | The volume type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBS Volume Types> in the /Amazon Elastic Compute Cloud User Guide/ . Valid values: @standard@ | @io1@ | @gp2@  Default: @standard@
+ebsVolumeType :: Lens' EBS (Maybe Text)
+ebsVolumeType = lens _ebsVolumeType (\ s a -> s{_ebsVolumeType = a});
+
+-- | The ID of the snapshot.
+ebsSnapshotId :: Lens' EBS (Maybe Text)
+ebsSnapshotId = lens _ebsSnapshotId (\ s a -> s{_ebsSnapshotId = a});
+
+instance FromXML EBS where
+        parseXML x
+          = EBS' <$>
+              (x .@? "DeleteOnTermination") <*>
+                (x .@? "VolumeSize")
+                <*> (x .@? "Iops")
+                <*> (x .@? "Encrypted")
+                <*> (x .@? "VolumeType")
+                <*> (x .@? "SnapshotId")
+
+instance Hashable EBS where
+
+instance NFData EBS where
+
+instance ToQuery EBS where
+        toQuery EBS'{..}
+          = mconcat
+              ["DeleteOnTermination" =: _ebsDeleteOnTermination,
+               "VolumeSize" =: _ebsVolumeSize, "Iops" =: _ebsIOPS,
+               "Encrypted" =: _ebsEncrypted,
+               "VolumeType" =: _ebsVolumeType,
+               "SnapshotId" =: _ebsSnapshotId]
+
+-- | Describes an enabled metric.
+--
+--
+--
+-- /See:/ 'enabledMetric' smart constructor.
+data EnabledMetric = EnabledMetric'
+  { _emGranularity :: !(Maybe Text)
+  , _emMetric      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EnabledMetric' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'emGranularity' - The granularity of the metric. The only valid value is @1Minute@ .
+--
+-- * 'emMetric' - One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
+enabledMetric
+    :: EnabledMetric
+enabledMetric = EnabledMetric' {_emGranularity = Nothing, _emMetric = Nothing}
+
+
+-- | The granularity of the metric. The only valid value is @1Minute@ .
+emGranularity :: Lens' EnabledMetric (Maybe Text)
+emGranularity = lens _emGranularity (\ s a -> s{_emGranularity = a});
+
+-- | One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
+emMetric :: Lens' EnabledMetric (Maybe Text)
+emMetric = lens _emMetric (\ s a -> s{_emMetric = a});
+
+instance FromXML EnabledMetric where
+        parseXML x
+          = EnabledMetric' <$>
+              (x .@? "Granularity") <*> (x .@? "Metric")
+
+instance Hashable EnabledMetric where
+
+instance NFData EnabledMetric where
+
+-- | Describes a filter.
+--
+--
+--
+-- /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' - The value of the filter.
+--
+-- * 'fName' - The name of the filter. The valid values are: @"auto-scaling-group"@ , @"key"@ , @"value"@ , and @"propagate-at-launch"@ .
+filter'
+    :: Text -- ^ 'fName'
+    -> Filter
+filter' pName_ = Filter' {_fValues = Nothing, _fName = pName_}
+
+
+-- | The value of the filter.
+fValues :: Lens' Filter [Text]
+fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Default . _Coerce;
+
+-- | The name of the filter. The valid values are: @"auto-scaling-group"@ , @"key"@ , @"value"@ , and @"propagate-at-launch"@ .
+fName :: Lens' Filter Text
+fName = lens _fName (\ s a -> s{_fName = a});
+
+instance Hashable Filter where
+
+instance NFData Filter where
+
+instance ToQuery Filter where
+        toQuery Filter'{..}
+          = mconcat
+              ["Values" =:
+                 toQuery (toQueryList "member" <$> _fValues),
+               "Name" =: _fName]
+
+-- | Describes an EC2 instance.
+--
+--
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+  { _iLaunchConfigurationName :: !(Maybe Text)
+  , _iInstanceId              :: !Text
+  , _iAvailabilityZone        :: !Text
+  , _iLifecycleState          :: !LifecycleState
+  , _iHealthStatus            :: !Text
+  , _iProtectedFromScaleIn    :: !Bool
+  } 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:
+--
+-- * 'iLaunchConfigurationName' - The launch configuration associated with the instance.
+--
+-- * 'iInstanceId' - The ID of the instance.
+--
+-- * 'iAvailabilityZone' - The Availability Zone in which the instance is running.
+--
+-- * 'iLifecycleState' - A description of the current lifecycle state. Note that the @Quarantined@ state is not used.
+--
+-- * 'iHealthStatus' - The last reported health status of the instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
+--
+-- * 'iProtectedFromScaleIn' - Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
+instance'
+    :: Text -- ^ 'iInstanceId'
+    -> Text -- ^ 'iAvailabilityZone'
+    -> LifecycleState -- ^ 'iLifecycleState'
+    -> Text -- ^ 'iHealthStatus'
+    -> Bool -- ^ 'iProtectedFromScaleIn'
+    -> Instance
+instance' pInstanceId_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pProtectedFromScaleIn_ =
+  Instance'
+  { _iLaunchConfigurationName = Nothing
+  , _iInstanceId = pInstanceId_
+  , _iAvailabilityZone = pAvailabilityZone_
+  , _iLifecycleState = pLifecycleState_
+  , _iHealthStatus = pHealthStatus_
+  , _iProtectedFromScaleIn = pProtectedFromScaleIn_
+  }
+
+
+-- | The launch configuration associated with the instance.
+iLaunchConfigurationName :: Lens' Instance (Maybe Text)
+iLaunchConfigurationName = lens _iLaunchConfigurationName (\ s a -> s{_iLaunchConfigurationName = a});
+
+-- | The ID of the instance.
+iInstanceId :: Lens' Instance Text
+iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
+
+-- | The Availability Zone in which the instance is running.
+iAvailabilityZone :: Lens' Instance Text
+iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
+
+-- | A description of the current lifecycle state. Note that the @Quarantined@ state is not used.
+iLifecycleState :: Lens' Instance LifecycleState
+iLifecycleState = lens _iLifecycleState (\ s a -> s{_iLifecycleState = a});
+
+-- | The last reported health status of the instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it.
+iHealthStatus :: Lens' Instance Text
+iHealthStatus = lens _iHealthStatus (\ s a -> s{_iHealthStatus = a});
+
+-- | Indicates whether the instance is protected from termination by Auto Scaling when scaling in.
+iProtectedFromScaleIn :: Lens' Instance Bool
+iProtectedFromScaleIn = lens _iProtectedFromScaleIn (\ s a -> s{_iProtectedFromScaleIn = a});
+
+instance FromXML Instance where
+        parseXML x
+          = Instance' <$>
+              (x .@? "LaunchConfigurationName") <*>
+                (x .@ "InstanceId")
+                <*> (x .@ "AvailabilityZone")
+                <*> (x .@ "LifecycleState")
+                <*> (x .@ "HealthStatus")
+                <*> (x .@ "ProtectedFromScaleIn")
+
+instance Hashable Instance where
+
+instance NFData Instance where
+
+-- | Describes whether detailed monitoring is enabled for the Auto Scaling instances.
+--
+--
+--
+-- /See:/ 'instanceMonitoring' smart constructor.
+newtype InstanceMonitoring = InstanceMonitoring'
+  { _imEnabled :: Maybe Bool
+  } 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:
+--
+-- * 'imEnabled' - If @true@ , detailed monitoring is enabled. Otherwise, basic monitoring is enabled.
+instanceMonitoring
+    :: InstanceMonitoring
+instanceMonitoring = InstanceMonitoring' {_imEnabled = Nothing}
+
+
+-- | If @true@ , detailed monitoring is enabled. Otherwise, basic monitoring is enabled.
+imEnabled :: Lens' InstanceMonitoring (Maybe Bool)
+imEnabled = lens _imEnabled (\ s a -> s{_imEnabled = a});
+
+instance FromXML InstanceMonitoring where
+        parseXML x
+          = InstanceMonitoring' <$> (x .@? "Enabled")
+
+instance Hashable InstanceMonitoring where
+
+instance NFData InstanceMonitoring where
+
+instance ToQuery InstanceMonitoring where
+        toQuery InstanceMonitoring'{..}
+          = mconcat ["Enabled" =: _imEnabled]
+
+-- | Describes a launch configuration.
+--
+--
+--
+-- /See:/ 'launchConfiguration' smart constructor.
+data LaunchConfiguration = LaunchConfiguration'
+  { _lcAssociatePublicIPAddress     :: !(Maybe Bool)
+  , _lcSecurityGroups               :: !(Maybe [Text])
+  , _lcSpotPrice                    :: !(Maybe Text)
+  , _lcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
+  , _lcKeyName                      :: !(Maybe Text)
+  , _lcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
+  , _lcRAMDiskId                    :: !(Maybe Text)
+  , _lcKernelId                     :: !(Maybe Text)
+  , _lcEBSOptimized                 :: !(Maybe Bool)
+  , _lcUserData                     :: !(Maybe Text)
+  , _lcClassicLinkVPCId             :: !(Maybe Text)
+  , _lcIAMInstanceProfile           :: !(Maybe Text)
+  , _lcLaunchConfigurationARN       :: !(Maybe Text)
+  , _lcPlacementTenancy             :: !(Maybe Text)
+  , _lcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
+  , _lcLaunchConfigurationName      :: !Text
+  , _lcImageId                      :: !Text
+  , _lcInstanceType                 :: !Text
+  , _lcCreatedTime                  :: !ISO8601
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LaunchConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcAssociatePublicIPAddress' - [EC2-VPC] Indicates whether to assign a public IP address to each instance.
+--
+-- * 'lcSecurityGroups' - The security groups to associate with the instances.
+--
+-- * 'lcSpotPrice' - The price to bid when launching Spot Instances.
+--
+-- * 'lcInstanceMonitoring' - Controls whether instances in this group are launched with detailed (@true@ ) or basic (@false@ ) monitoring.
+--
+-- * 'lcKeyName' - The name of the key pair.
+--
+-- * 'lcClassicLinkVPCSecurityGroups' - The IDs of one or more security groups for the VPC specified in @ClassicLinkVPCId@ . This parameter is required if you specify a ClassicLink-enabled VPC, and cannot be used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
+--
+-- * 'lcRAMDiskId' - The ID of the RAM disk associated with the AMI.
+--
+-- * 'lcKernelId' - The ID of the kernel associated with the AMI.
+--
+-- * 'lcEBSOptimized' - Controls whether the instance is optimized for EBS I/O (@true@ ) or not (@false@ ).
+--
+-- * 'lcUserData' - The user data available to the instances.
+--
+-- * 'lcClassicLinkVPCId' - The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
+--
+-- * 'lcIAMInstanceProfile' - The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.
+--
+-- * 'lcLaunchConfigurationARN' - The Amazon Resource Name (ARN) of the launch configuration.
+--
+-- * 'lcPlacementTenancy' - The tenancy of the instance, either @default@ or @dedicated@ . An instance with @dedicated@ tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC.
+--
+-- * 'lcBlockDeviceMappings' - A block device mapping, which specifies the block devices for the instance.
+--
+-- * 'lcLaunchConfigurationName' - The name of the launch configuration.
+--
+-- * 'lcImageId' - The ID of the Amazon Machine Image (AMI).
+--
+-- * 'lcInstanceType' - The instance type for the instances.
+--
+-- * 'lcCreatedTime' - The creation date and time for the launch configuration.
+launchConfiguration
+    :: Text -- ^ 'lcLaunchConfigurationName'
+    -> Text -- ^ 'lcImageId'
+    -> Text -- ^ 'lcInstanceType'
+    -> UTCTime -- ^ 'lcCreatedTime'
+    -> LaunchConfiguration
+launchConfiguration pLaunchConfigurationName_ pImageId_ pInstanceType_ pCreatedTime_ =
+  LaunchConfiguration'
+  { _lcAssociatePublicIPAddress = Nothing
+  , _lcSecurityGroups = Nothing
+  , _lcSpotPrice = Nothing
+  , _lcInstanceMonitoring = Nothing
+  , _lcKeyName = Nothing
+  , _lcClassicLinkVPCSecurityGroups = Nothing
+  , _lcRAMDiskId = Nothing
+  , _lcKernelId = Nothing
+  , _lcEBSOptimized = Nothing
+  , _lcUserData = Nothing
+  , _lcClassicLinkVPCId = Nothing
+  , _lcIAMInstanceProfile = Nothing
+  , _lcLaunchConfigurationARN = Nothing
+  , _lcPlacementTenancy = Nothing
+  , _lcBlockDeviceMappings = Nothing
+  , _lcLaunchConfigurationName = pLaunchConfigurationName_
+  , _lcImageId = pImageId_
+  , _lcInstanceType = pInstanceType_
+  , _lcCreatedTime = _Time # pCreatedTime_
+  }
+
+
+-- | [EC2-VPC] Indicates whether to assign a public IP address to each instance.
+lcAssociatePublicIPAddress :: Lens' LaunchConfiguration (Maybe Bool)
+lcAssociatePublicIPAddress = lens _lcAssociatePublicIPAddress (\ s a -> s{_lcAssociatePublicIPAddress = a});
+
+-- | The security groups to associate with the instances.
+lcSecurityGroups :: Lens' LaunchConfiguration [Text]
+lcSecurityGroups = lens _lcSecurityGroups (\ s a -> s{_lcSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The price to bid when launching Spot Instances.
+lcSpotPrice :: Lens' LaunchConfiguration (Maybe Text)
+lcSpotPrice = lens _lcSpotPrice (\ s a -> s{_lcSpotPrice = a});
+
+-- | Controls whether instances in this group are launched with detailed (@true@ ) or basic (@false@ ) monitoring.
+lcInstanceMonitoring :: Lens' LaunchConfiguration (Maybe InstanceMonitoring)
+lcInstanceMonitoring = lens _lcInstanceMonitoring (\ s a -> s{_lcInstanceMonitoring = a});
+
+-- | The name of the key pair.
+lcKeyName :: Lens' LaunchConfiguration (Maybe Text)
+lcKeyName = lens _lcKeyName (\ s a -> s{_lcKeyName = a});
+
+-- | The IDs of one or more security groups for the VPC specified in @ClassicLinkVPCId@ . This parameter is required if you specify a ClassicLink-enabled VPC, and cannot be used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
+lcClassicLinkVPCSecurityGroups :: Lens' LaunchConfiguration [Text]
+lcClassicLinkVPCSecurityGroups = lens _lcClassicLinkVPCSecurityGroups (\ s a -> s{_lcClassicLinkVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk associated with the AMI.
+lcRAMDiskId :: Lens' LaunchConfiguration (Maybe Text)
+lcRAMDiskId = lens _lcRAMDiskId (\ s a -> s{_lcRAMDiskId = a});
+
+-- | The ID of the kernel associated with the AMI.
+lcKernelId :: Lens' LaunchConfiguration (Maybe Text)
+lcKernelId = lens _lcKernelId (\ s a -> s{_lcKernelId = a});
+
+-- | Controls whether the instance is optimized for EBS I/O (@true@ ) or not (@false@ ).
+lcEBSOptimized :: Lens' LaunchConfiguration (Maybe Bool)
+lcEBSOptimized = lens _lcEBSOptimized (\ s a -> s{_lcEBSOptimized = a});
+
+-- | The user data available to the instances.
+lcUserData :: Lens' LaunchConfiguration (Maybe Text)
+lcUserData = lens _lcUserData (\ s a -> s{_lcUserData = a});
+
+-- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute Cloud User Guide/ .
+lcClassicLinkVPCId :: Lens' LaunchConfiguration (Maybe Text)
+lcClassicLinkVPCId = lens _lcClassicLinkVPCId (\ s a -> s{_lcClassicLinkVPCId = a});
+
+-- | The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.
+lcIAMInstanceProfile :: Lens' LaunchConfiguration (Maybe Text)
+lcIAMInstanceProfile = lens _lcIAMInstanceProfile (\ s a -> s{_lcIAMInstanceProfile = a});
+
+-- | The Amazon Resource Name (ARN) of the launch configuration.
+lcLaunchConfigurationARN :: Lens' LaunchConfiguration (Maybe Text)
+lcLaunchConfigurationARN = lens _lcLaunchConfigurationARN (\ s a -> s{_lcLaunchConfigurationARN = a});
+
+-- | The tenancy of the instance, either @default@ or @dedicated@ . An instance with @dedicated@ tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC.
+lcPlacementTenancy :: Lens' LaunchConfiguration (Maybe Text)
+lcPlacementTenancy = lens _lcPlacementTenancy (\ s a -> s{_lcPlacementTenancy = a});
+
+-- | A block device mapping, which specifies the block devices for the instance.
+lcBlockDeviceMappings :: Lens' LaunchConfiguration [BlockDeviceMapping]
+lcBlockDeviceMappings = lens _lcBlockDeviceMappings (\ s a -> s{_lcBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The name of the launch configuration.
+lcLaunchConfigurationName :: Lens' LaunchConfiguration Text
+lcLaunchConfigurationName = lens _lcLaunchConfigurationName (\ s a -> s{_lcLaunchConfigurationName = a});
+
+-- | The ID of the Amazon Machine Image (AMI).
+lcImageId :: Lens' LaunchConfiguration Text
+lcImageId = lens _lcImageId (\ s a -> s{_lcImageId = a});
+
+-- | The instance type for the instances.
+lcInstanceType :: Lens' LaunchConfiguration Text
+lcInstanceType = lens _lcInstanceType (\ s a -> s{_lcInstanceType = a});
+
+-- | The creation date and time for the launch configuration.
+lcCreatedTime :: Lens' LaunchConfiguration UTCTime
+lcCreatedTime = lens _lcCreatedTime (\ s a -> s{_lcCreatedTime = a}) . _Time;
+
+instance FromXML LaunchConfiguration where
+        parseXML x
+          = LaunchConfiguration' <$>
+              (x .@? "AssociatePublicIpAddress") <*>
+                (x .@? "SecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "SpotPrice")
+                <*> (x .@? "InstanceMonitoring")
+                <*> (x .@? "KeyName")
+                <*>
+                (x .@? "ClassicLinkVPCSecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "RamdiskId")
+                <*> (x .@? "KernelId")
+                <*> (x .@? "EbsOptimized")
+                <*> (x .@? "UserData")
+                <*> (x .@? "ClassicLinkVPCId")
+                <*> (x .@? "IamInstanceProfile")
+                <*> (x .@? "LaunchConfigurationARN")
+                <*> (x .@? "PlacementTenancy")
+                <*>
+                (x .@? "BlockDeviceMappings" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@ "LaunchConfigurationName")
+                <*> (x .@ "ImageId")
+                <*> (x .@ "InstanceType")
+                <*> (x .@ "CreatedTime")
+
+instance Hashable LaunchConfiguration where
+
+instance NFData LaunchConfiguration where
+
+-- | Describes a lifecycle hook, which tells Auto Scaling that you want to perform an action whenever it launches instances or whenever it terminates instances.
+--
+--
+-- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html Auto Scaling Lifecycle Hooks> in the /Auto Scaling User Guide/ .
+--
+--
+-- /See:/ 'lifecycleHook' smart constructor.
+data LifecycleHook = LifecycleHook'
+  { _lhDefaultResult         :: !(Maybe Text)
+  , _lhLifecycleHookName     :: !(Maybe Text)
+  , _lhHeartbeatTimeout      :: !(Maybe Int)
+  , _lhAutoScalingGroupName  :: !(Maybe Text)
+  , _lhNotificationMetadata  :: !(Maybe Text)
+  , _lhGlobalTimeout         :: !(Maybe Int)
+  , _lhNotificationTargetARN :: !(Maybe Text)
+  , _lhLifecycleTransition   :: !(Maybe Text)
+  , _lhRoleARN               :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LifecycleHook' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhDefaultResult' - Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
+--
+-- * 'lhLifecycleHookName' - The name of the lifecycle hook.
+--
+-- * 'lhHeartbeatTimeout' - The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
+--
+-- * 'lhAutoScalingGroupName' - The name of the Auto Scaling group for the lifecycle hook.
+--
+-- * 'lhNotificationMetadata' - Additional information that you want to include any time Auto Scaling sends a message to the notification target.
+--
+-- * 'lhGlobalTimeout' - The maximum time, in seconds, that an instance can remain in a @Pending:Wait@ or @Terminating:Wait@ state. The maximum is 172800 seconds (48 hours) or 100 times @HeartbeatTimeout@ , whichever is smaller.
+--
+-- * 'lhNotificationTargetARN' - The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic.
+--
+-- * 'lhLifecycleTransition' - The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
+--
+-- * 'lhRoleARN' - The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
+lifecycleHook
+    :: LifecycleHook
+lifecycleHook =
+  LifecycleHook'
+  { _lhDefaultResult = Nothing
+  , _lhLifecycleHookName = Nothing
+  , _lhHeartbeatTimeout = Nothing
+  , _lhAutoScalingGroupName = Nothing
+  , _lhNotificationMetadata = Nothing
+  , _lhGlobalTimeout = Nothing
+  , _lhNotificationTargetARN = Nothing
+  , _lhLifecycleTransition = Nothing
+  , _lhRoleARN = Nothing
+  }
+
+
+-- | Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
+lhDefaultResult :: Lens' LifecycleHook (Maybe Text)
+lhDefaultResult = lens _lhDefaultResult (\ s a -> s{_lhDefaultResult = a});
+
+-- | The name of the lifecycle hook.
+lhLifecycleHookName :: Lens' LifecycleHook (Maybe Text)
+lhLifecycleHookName = lens _lhLifecycleHookName (\ s a -> s{_lhLifecycleHookName = a});
+
+-- | The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
+lhHeartbeatTimeout :: Lens' LifecycleHook (Maybe Int)
+lhHeartbeatTimeout = lens _lhHeartbeatTimeout (\ s a -> s{_lhHeartbeatTimeout = a});
+
+-- | The name of the Auto Scaling group for the lifecycle hook.
+lhAutoScalingGroupName :: Lens' LifecycleHook (Maybe Text)
+lhAutoScalingGroupName = lens _lhAutoScalingGroupName (\ s a -> s{_lhAutoScalingGroupName = a});
+
+-- | Additional information that you want to include any time Auto Scaling sends a message to the notification target.
+lhNotificationMetadata :: Lens' LifecycleHook (Maybe Text)
+lhNotificationMetadata = lens _lhNotificationMetadata (\ s a -> s{_lhNotificationMetadata = a});
+
+-- | The maximum time, in seconds, that an instance can remain in a @Pending:Wait@ or @Terminating:Wait@ state. The maximum is 172800 seconds (48 hours) or 100 times @HeartbeatTimeout@ , whichever is smaller.
+lhGlobalTimeout :: Lens' LifecycleHook (Maybe Int)
+lhGlobalTimeout = lens _lhGlobalTimeout (\ s a -> s{_lhGlobalTimeout = a});
+
+-- | The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic.
+lhNotificationTargetARN :: Lens' LifecycleHook (Maybe Text)
+lhNotificationTargetARN = lens _lhNotificationTargetARN (\ s a -> s{_lhNotificationTargetARN = a});
+
+-- | The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
+lhLifecycleTransition :: Lens' LifecycleHook (Maybe Text)
+lhLifecycleTransition = lens _lhLifecycleTransition (\ s a -> s{_lhLifecycleTransition = a});
+
+-- | The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
+lhRoleARN :: Lens' LifecycleHook (Maybe Text)
+lhRoleARN = lens _lhRoleARN (\ s a -> s{_lhRoleARN = a});
+
+instance FromXML LifecycleHook where
+        parseXML x
+          = LifecycleHook' <$>
+              (x .@? "DefaultResult") <*>
+                (x .@? "LifecycleHookName")
+                <*> (x .@? "HeartbeatTimeout")
+                <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "NotificationMetadata")
+                <*> (x .@? "GlobalTimeout")
+                <*> (x .@? "NotificationTargetARN")
+                <*> (x .@? "LifecycleTransition")
+                <*> (x .@? "RoleARN")
+
+instance Hashable LifecycleHook where
+
+instance NFData LifecycleHook where
+
+-- | Describes a lifecycle hook, which tells Auto Scaling that you want to perform an action whenever it launches instances or whenever it terminates instances.
+--
+--
+-- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html Auto Scaling Lifecycle Hooks> in the /Auto Scaling User Guide/ .
+--
+--
+-- /See:/ 'lifecycleHookSpecification' smart constructor.
+data LifecycleHookSpecification = LifecycleHookSpecification'
+  { _lhsDefaultResult         :: !(Maybe Text)
+  , _lhsHeartbeatTimeout      :: !(Maybe Int)
+  , _lhsNotificationMetadata  :: !(Maybe Text)
+  , _lhsNotificationTargetARN :: !(Maybe Text)
+  , _lhsLifecycleTransition   :: !(Maybe Text)
+  , _lhsRoleARN               :: !(Maybe Text)
+  , _lhsLifecycleHookName     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LifecycleHookSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhsDefaultResult' - Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
+--
+-- * 'lhsHeartbeatTimeout' - The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
+--
+-- * 'lhsNotificationMetadata' - Additional information that you want to include any time Auto Scaling sends a message to the notification target.
+--
+-- * 'lhsNotificationTargetARN' - The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic.
+--
+-- * 'lhsLifecycleTransition' - The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
+--
+-- * 'lhsRoleARN' - The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
+--
+-- * 'lhsLifecycleHookName' - The name of the lifecycle hook.
+lifecycleHookSpecification
+    :: Text -- ^ 'lhsLifecycleHookName'
+    -> LifecycleHookSpecification
+lifecycleHookSpecification pLifecycleHookName_ =
+  LifecycleHookSpecification'
+  { _lhsDefaultResult = Nothing
+  , _lhsHeartbeatTimeout = Nothing
+  , _lhsNotificationMetadata = Nothing
+  , _lhsNotificationTargetARN = Nothing
+  , _lhsLifecycleTransition = Nothing
+  , _lhsRoleARN = Nothing
+  , _lhsLifecycleHookName = pLifecycleHookName_
+  }
+
+
+-- | Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are @CONTINUE@ and @ABANDON@ . The default value is @CONTINUE@ .
+lhsDefaultResult :: Lens' LifecycleHookSpecification (Maybe Text)
+lhsDefaultResult = lens _lhsDefaultResult (\ s a -> s{_lhsDefaultResult = a});
+
+-- | The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling 'RecordLifecycleActionHeartbeat' .
+lhsHeartbeatTimeout :: Lens' LifecycleHookSpecification (Maybe Int)
+lhsHeartbeatTimeout = lens _lhsHeartbeatTimeout (\ s a -> s{_lhsHeartbeatTimeout = a});
+
+-- | Additional information that you want to include any time Auto Scaling sends a message to the notification target.
+lhsNotificationMetadata :: Lens' LifecycleHookSpecification (Maybe Text)
+lhsNotificationMetadata = lens _lhsNotificationMetadata (\ s a -> s{_lhsNotificationMetadata = a});
+
+-- | The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic.
+lhsNotificationTargetARN :: Lens' LifecycleHookSpecification (Maybe Text)
+lhsNotificationTargetARN = lens _lhsNotificationTargetARN (\ s a -> s{_lhsNotificationTargetARN = a});
+
+-- | The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see 'DescribeLifecycleHookTypes' .
+lhsLifecycleTransition :: Lens' LifecycleHookSpecification (Maybe Text)
+lhsLifecycleTransition = lens _lhsLifecycleTransition (\ s a -> s{_lhsLifecycleTransition = a});
+
+-- | The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.
+lhsRoleARN :: Lens' LifecycleHookSpecification (Maybe Text)
+lhsRoleARN = lens _lhsRoleARN (\ s a -> s{_lhsRoleARN = a});
+
+-- | The name of the lifecycle hook.
+lhsLifecycleHookName :: Lens' LifecycleHookSpecification Text
+lhsLifecycleHookName = lens _lhsLifecycleHookName (\ s a -> s{_lhsLifecycleHookName = a});
+
+instance Hashable LifecycleHookSpecification where
+
+instance NFData LifecycleHookSpecification where
+
+instance ToQuery LifecycleHookSpecification where
+        toQuery LifecycleHookSpecification'{..}
+          = mconcat
+              ["DefaultResult" =: _lhsDefaultResult,
+               "HeartbeatTimeout" =: _lhsHeartbeatTimeout,
+               "NotificationMetadata" =: _lhsNotificationMetadata,
+               "NotificationTargetARN" =: _lhsNotificationTargetARN,
+               "LifecycleTransition" =: _lhsLifecycleTransition,
+               "RoleARN" =: _lhsRoleARN,
+               "LifecycleHookName" =: _lhsLifecycleHookName]
+
+-- | Describes the state of a Classic Load Balancer.
+--
+--
+-- If you specify a load balancer when creating the Auto Scaling group, the state of the load balancer is @InService@ .
+--
+-- If you attach a load balancer to an existing Auto Scaling group, the initial state is @Adding@ . The state transitions to @Added@ after all instances in the group are registered with the load balancer. If ELB health checks are enabled for the load balancer, the state transitions to @InService@ after at least one instance in the group passes the health check. If EC2 health checks are enabled instead, the load balancer remains in the @Added@ state.
+--
+--
+-- /See:/ 'loadBalancerState' smart constructor.
+data LoadBalancerState = LoadBalancerState'
+  { _lbsState            :: !(Maybe Text)
+  , _lbsLoadBalancerName :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoadBalancerState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbsState' - One of the following load balancer states:     * @Adding@ - The instances in the group are being registered with the load balancer.     * @Added@ - All instances in the group are registered with the load balancer.     * @InService@ - At least one instance in the group passed an ELB health check.     * @Removing@ - The instances in the group are being deregistered from the load balancer. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All instances in the group are deregistered from the load balancer.
+--
+-- * 'lbsLoadBalancerName' - The name of the load balancer.
+loadBalancerState
+    :: LoadBalancerState
+loadBalancerState =
+  LoadBalancerState' {_lbsState = Nothing, _lbsLoadBalancerName = Nothing}
+
+
+-- | One of the following load balancer states:     * @Adding@ - The instances in the group are being registered with the load balancer.     * @Added@ - All instances in the group are registered with the load balancer.     * @InService@ - At least one instance in the group passed an ELB health check.     * @Removing@ - The instances in the group are being deregistered from the load balancer. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All instances in the group are deregistered from the load balancer.
+lbsState :: Lens' LoadBalancerState (Maybe Text)
+lbsState = lens _lbsState (\ s a -> s{_lbsState = a});
+
+-- | The name of the load balancer.
+lbsLoadBalancerName :: Lens' LoadBalancerState (Maybe Text)
+lbsLoadBalancerName = lens _lbsLoadBalancerName (\ s a -> s{_lbsLoadBalancerName = a});
+
+instance FromXML LoadBalancerState where
+        parseXML x
+          = LoadBalancerState' <$>
+              (x .@? "State") <*> (x .@? "LoadBalancerName")
+
+instance Hashable LoadBalancerState where
+
+instance NFData LoadBalancerState where
+
+-- | Describes the state of a target group.
+--
+--
+-- If you attach a target group to an existing Auto Scaling group, the initial state is @Adding@ . The state transitions to @Added@ after all Auto Scaling instances are registered with the target group. If ELB health checks are enabled, the state transitions to @InService@ after at least one Auto Scaling instance passes the health check. If EC2 health checks are enabled instead, the target group remains in the @Added@ state.
+--
+--
+-- /See:/ 'loadBalancerTargetGroupState' smart constructor.
+data LoadBalancerTargetGroupState = LoadBalancerTargetGroupState'
+  { _lbtgsState                      :: !(Maybe Text)
+  , _lbtgsLoadBalancerTargetGroupARN :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoadBalancerTargetGroupState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbtgsState' - The state of the target group.     * @Adding@ - The Auto Scaling instances are being registered with the target group.     * @Added@ - All Auto Scaling instances are registered with the target group.     * @InService@ - At least one Auto Scaling instance passed an ELB health check.     * @Removing@ - The Auto Scaling instances are being deregistered from the target group. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All Auto Scaling instances are deregistered from the target group.
+--
+-- * 'lbtgsLoadBalancerTargetGroupARN' - The Amazon Resource Name (ARN) of the target group.
+loadBalancerTargetGroupState
+    :: LoadBalancerTargetGroupState
+loadBalancerTargetGroupState =
+  LoadBalancerTargetGroupState'
+  {_lbtgsState = Nothing, _lbtgsLoadBalancerTargetGroupARN = Nothing}
+
+
+-- | The state of the target group.     * @Adding@ - The Auto Scaling instances are being registered with the target group.     * @Added@ - All Auto Scaling instances are registered with the target group.     * @InService@ - At least one Auto Scaling instance passed an ELB health check.     * @Removing@ - The Auto Scaling instances are being deregistered from the target group. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances.     * @Removed@ - All Auto Scaling instances are deregistered from the target group.
+lbtgsState :: Lens' LoadBalancerTargetGroupState (Maybe Text)
+lbtgsState = lens _lbtgsState (\ s a -> s{_lbtgsState = a});
+
+-- | The Amazon Resource Name (ARN) of the target group.
+lbtgsLoadBalancerTargetGroupARN :: Lens' LoadBalancerTargetGroupState (Maybe Text)
+lbtgsLoadBalancerTargetGroupARN = lens _lbtgsLoadBalancerTargetGroupARN (\ s a -> s{_lbtgsLoadBalancerTargetGroupARN = a});
+
+instance FromXML LoadBalancerTargetGroupState where
+        parseXML x
+          = LoadBalancerTargetGroupState' <$>
+              (x .@? "State") <*>
+                (x .@? "LoadBalancerTargetGroupARN")
+
+instance Hashable LoadBalancerTargetGroupState where
+
+instance NFData LoadBalancerTargetGroupState where
+
+-- | Describes a metric.
+--
+--
+--
+-- /See:/ 'metricCollectionType' smart constructor.
+newtype MetricCollectionType = MetricCollectionType'
+  { _mctMetric :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MetricCollectionType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mctMetric' - One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
+metricCollectionType
+    :: MetricCollectionType
+metricCollectionType = MetricCollectionType' {_mctMetric = Nothing}
+
+
+-- | One of the following metrics:     * @GroupMinSize@      * @GroupMaxSize@      * @GroupDesiredCapacity@      * @GroupInServiceInstances@      * @GroupPendingInstances@      * @GroupStandbyInstances@      * @GroupTerminatingInstances@      * @GroupTotalInstances@
+mctMetric :: Lens' MetricCollectionType (Maybe Text)
+mctMetric = lens _mctMetric (\ s a -> s{_mctMetric = a});
+
+instance FromXML MetricCollectionType where
+        parseXML x
+          = MetricCollectionType' <$> (x .@? "Metric")
+
+instance Hashable MetricCollectionType where
+
+instance NFData MetricCollectionType where
+
+-- | Describes the dimension of a metric.
+--
+--
+--
+-- /See:/ 'metricDimension' smart constructor.
+data MetricDimension = MetricDimension'
+  { _mdName  :: !Text
+  , _mdValue :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MetricDimension' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdName' - The name of the dimension.
+--
+-- * 'mdValue' - The value of the dimension.
+metricDimension
+    :: Text -- ^ 'mdName'
+    -> Text -- ^ 'mdValue'
+    -> MetricDimension
+metricDimension pName_ pValue_ =
+  MetricDimension' {_mdName = pName_, _mdValue = pValue_}
+
+
+-- | The name of the dimension.
+mdName :: Lens' MetricDimension Text
+mdName = lens _mdName (\ s a -> s{_mdName = a});
+
+-- | The value of the dimension.
+mdValue :: Lens' MetricDimension Text
+mdValue = lens _mdValue (\ s a -> s{_mdValue = a});
+
+instance FromXML MetricDimension where
+        parseXML x
+          = MetricDimension' <$>
+              (x .@ "Name") <*> (x .@ "Value")
+
+instance Hashable MetricDimension where
+
+instance NFData MetricDimension where
+
+instance ToQuery MetricDimension where
+        toQuery MetricDimension'{..}
+          = mconcat ["Name" =: _mdName, "Value" =: _mdValue]
+
+-- | Describes a granularity of a metric.
+--
+--
+--
+-- /See:/ 'metricGranularityType' smart constructor.
+newtype MetricGranularityType = MetricGranularityType'
+  { _mgtGranularity :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MetricGranularityType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgtGranularity' - The granularity. The only valid value is @1Minute@ .
+metricGranularityType
+    :: MetricGranularityType
+metricGranularityType = MetricGranularityType' {_mgtGranularity = Nothing}
+
+
+-- | The granularity. The only valid value is @1Minute@ .
+mgtGranularity :: Lens' MetricGranularityType (Maybe Text)
+mgtGranularity = lens _mgtGranularity (\ s a -> s{_mgtGranularity = a});
+
+instance FromXML MetricGranularityType where
+        parseXML x
+          = MetricGranularityType' <$> (x .@? "Granularity")
+
+instance Hashable MetricGranularityType where
+
+instance NFData MetricGranularityType where
+
+-- | Describes a notification.
+--
+--
+--
+-- /See:/ 'notificationConfiguration' smart constructor.
+data NotificationConfiguration = NotificationConfiguration'
+  { _ncTopicARN             :: !(Maybe Text)
+  , _ncAutoScalingGroupName :: !(Maybe Text)
+  , _ncNotificationType     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NotificationConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncTopicARN' - The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.
+--
+-- * 'ncAutoScalingGroupName' - The name of the group.
+--
+-- * 'ncNotificationType' - One of the following event notification types:     * @autoscaling:EC2_INSTANCE_LAUNCH@      * @autoscaling:EC2_INSTANCE_LAUNCH_ERROR@      * @autoscaling:EC2_INSTANCE_TERMINATE@      * @autoscaling:EC2_INSTANCE_TERMINATE_ERROR@      * @autoscaling:TEST_NOTIFICATION@
+notificationConfiguration
+    :: NotificationConfiguration
+notificationConfiguration =
+  NotificationConfiguration'
+  { _ncTopicARN = Nothing
+  , _ncAutoScalingGroupName = Nothing
+  , _ncNotificationType = Nothing
+  }
+
+
+-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.
+ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)
+ncTopicARN = lens _ncTopicARN (\ s a -> s{_ncTopicARN = a});
+
+-- | The name of the group.
+ncAutoScalingGroupName :: Lens' NotificationConfiguration (Maybe Text)
+ncAutoScalingGroupName = lens _ncAutoScalingGroupName (\ s a -> s{_ncAutoScalingGroupName = a});
+
+-- | One of the following event notification types:     * @autoscaling:EC2_INSTANCE_LAUNCH@      * @autoscaling:EC2_INSTANCE_LAUNCH_ERROR@      * @autoscaling:EC2_INSTANCE_TERMINATE@      * @autoscaling:EC2_INSTANCE_TERMINATE_ERROR@      * @autoscaling:TEST_NOTIFICATION@
+ncNotificationType :: Lens' NotificationConfiguration (Maybe Text)
+ncNotificationType = lens _ncNotificationType (\ s a -> s{_ncNotificationType = a});
+
+instance FromXML NotificationConfiguration where
+        parseXML x
+          = NotificationConfiguration' <$>
+              (x .@? "TopicARN") <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "NotificationType")
+
+instance Hashable NotificationConfiguration where
+
+instance NFData NotificationConfiguration where
+
+-- | Configures a predefined metric for a target tracking policy.
+--
+--
+--
+-- /See:/ 'predefinedMetricSpecification' smart constructor.
+data PredefinedMetricSpecification = PredefinedMetricSpecification'
+  { _pmsResourceLabel        :: !(Maybe Text)
+  , _pmsPredefinedMetricType :: !MetricType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PredefinedMetricSpecification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmsResourceLabel' - Identifies the resource associated with the metric type. The following predefined metrics are available:     * @ASGAverageCPUUtilization@ - average CPU utilization of the Auto Scaling group     * @ASGAverageNetworkIn@ - average number of bytes received on all network interfaces by the Auto Scaling group     * @ASGAverageNetworkOut@ - average number of bytes sent out on all network interfaces by the Auto Scaling group     * @ALBRequestCountPerTarget@ - number of requests completed per target in an Application Load Balancer target group For predefined metric types @ASGAverageCPUUtilization@ , @ASGAverageNetworkIn@ and @ASGAverageNetworkOut@ , the parameter must not be specified as the resource associated with the metric type is the Auto Scaling group. For predefined metric type @ALBRequestCountPerTarget@ , the parameter must be specified in the format: @app//load-balancer-name/ //load-balancer-id/ /targetgroup//target-group-name/ //target-group-id/ @ , where @app//load-balancer-name/ //load-balancer-id/ @ is the final portion of the load balancer ARN, and @targetgroup//target-group-name/ //target-group-id/ @ is the final portion of the target group ARN. The target group must be attached to the Auto Scaling group.
+--
+-- * 'pmsPredefinedMetricType' - The metric type.
+predefinedMetricSpecification
+    :: MetricType -- ^ 'pmsPredefinedMetricType'
+    -> PredefinedMetricSpecification
+predefinedMetricSpecification pPredefinedMetricType_ =
+  PredefinedMetricSpecification'
+  { _pmsResourceLabel = Nothing
+  , _pmsPredefinedMetricType = pPredefinedMetricType_
+  }
+
+
+-- | Identifies the resource associated with the metric type. The following predefined metrics are available:     * @ASGAverageCPUUtilization@ - average CPU utilization of the Auto Scaling group     * @ASGAverageNetworkIn@ - average number of bytes received on all network interfaces by the Auto Scaling group     * @ASGAverageNetworkOut@ - average number of bytes sent out on all network interfaces by the Auto Scaling group     * @ALBRequestCountPerTarget@ - number of requests completed per target in an Application Load Balancer target group For predefined metric types @ASGAverageCPUUtilization@ , @ASGAverageNetworkIn@ and @ASGAverageNetworkOut@ , the parameter must not be specified as the resource associated with the metric type is the Auto Scaling group. For predefined metric type @ALBRequestCountPerTarget@ , the parameter must be specified in the format: @app//load-balancer-name/ //load-balancer-id/ /targetgroup//target-group-name/ //target-group-id/ @ , where @app//load-balancer-name/ //load-balancer-id/ @ is the final portion of the load balancer ARN, and @targetgroup//target-group-name/ //target-group-id/ @ is the final portion of the target group ARN. The target group must be attached to the Auto Scaling group.
+pmsResourceLabel :: Lens' PredefinedMetricSpecification (Maybe Text)
+pmsResourceLabel = lens _pmsResourceLabel (\ s a -> s{_pmsResourceLabel = a});
+
+-- | The metric type.
+pmsPredefinedMetricType :: Lens' PredefinedMetricSpecification MetricType
+pmsPredefinedMetricType = lens _pmsPredefinedMetricType (\ s a -> s{_pmsPredefinedMetricType = a});
+
+instance FromXML PredefinedMetricSpecification where
+        parseXML x
+          = PredefinedMetricSpecification' <$>
+              (x .@? "ResourceLabel") <*>
+                (x .@ "PredefinedMetricType")
+
+instance Hashable PredefinedMetricSpecification where
+
+instance NFData PredefinedMetricSpecification where
+
+instance ToQuery PredefinedMetricSpecification where
+        toQuery PredefinedMetricSpecification'{..}
+          = mconcat
+              ["ResourceLabel" =: _pmsResourceLabel,
+               "PredefinedMetricType" =: _pmsPredefinedMetricType]
+
+-- | Describes a process type.
+--
+--
+-- For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-suspend-resume-processes.html#process-types Auto Scaling Processes> in the /Auto Scaling User Guide/ .
+--
+--
+-- /See:/ 'processType' smart constructor.
+newtype ProcessType = ProcessType'
+  { _ptProcessName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProcessType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ptProcessName' - One of the following processes:     * @Launch@      * @Terminate@      * @AddToLoadBalancer@      * @AlarmNotification@      * @AZRebalance@      * @HealthCheck@      * @ReplaceUnhealthy@      * @ScheduledActions@
+processType
+    :: Text -- ^ 'ptProcessName'
+    -> ProcessType
+processType pProcessName_ = ProcessType' {_ptProcessName = pProcessName_}
+
+
+-- | One of the following processes:     * @Launch@      * @Terminate@      * @AddToLoadBalancer@      * @AlarmNotification@      * @AZRebalance@      * @HealthCheck@      * @ReplaceUnhealthy@      * @ScheduledActions@
+ptProcessName :: Lens' ProcessType Text
+ptProcessName = lens _ptProcessName (\ s a -> s{_ptProcessName = a});
+
+instance FromXML ProcessType where
+        parseXML x = ProcessType' <$> (x .@ "ProcessName")
+
+instance Hashable ProcessType where
+
+instance NFData ProcessType where
+
+-- | Describes a scaling policy.
+--
+--
+--
+-- /See:/ 'scalingPolicy' smart constructor.
+data ScalingPolicy = ScalingPolicy'
+  { _sMinAdjustmentStep           :: !(Maybe Int)
+  , _sEstimatedInstanceWarmup     :: !(Maybe Int)
+  , _sPolicyName                  :: !(Maybe Text)
+  , _sPolicyType                  :: !(Maybe Text)
+  , _sStepAdjustments             :: !(Maybe [StepAdjustment])
+  , _sTargetTrackingConfiguration :: !(Maybe TargetTrackingConfiguration)
+  , _sAdjustmentType              :: !(Maybe Text)
+  , _sAutoScalingGroupName        :: !(Maybe Text)
+  , _sScalingAdjustment           :: !(Maybe Int)
+  , _sCooldown                    :: !(Maybe Int)
+  , _sPolicyARN                   :: !(Maybe Text)
+  , _sAlarms                      :: !(Maybe [Alarm])
+  , _sMetricAggregationType       :: !(Maybe Text)
+  , _sMinAdjustmentMagnitude      :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ScalingPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sMinAdjustmentStep' - Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
+--
+-- * 'sEstimatedInstanceWarmup' - The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics.
+--
+-- * 'sPolicyName' - The name of the scaling policy.
+--
+-- * 'sPolicyType' - The policy type. Valid values are @SimpleScaling@ and @StepScaling@ .
+--
+-- * 'sStepAdjustments' - A set of adjustments that enable you to scale based on the size of the alarm breach.
+--
+-- * 'sTargetTrackingConfiguration' - A target tracking policy.
+--
+-- * 'sAdjustmentType' - The adjustment type, which specifies how @ScalingAdjustment@ is interpreted. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
+--
+-- * 'sAutoScalingGroupName' - The name of the Auto Scaling group associated with this scaling policy.
+--
+-- * 'sScalingAdjustment' - The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
+--
+-- * 'sCooldown' - The amount of time, in seconds, after a scaling activity completes before any further dynamic scaling activities can start.
+--
+-- * 'sPolicyARN' - The Amazon Resource Name (ARN) of the policy.
+--
+-- * 'sAlarms' - The CloudWatch alarms related to the policy.
+--
+-- * 'sMetricAggregationType' - The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ .
+--
+-- * 'sMinAdjustmentMagnitude' - The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
+scalingPolicy
+    :: ScalingPolicy
+scalingPolicy =
+  ScalingPolicy'
+  { _sMinAdjustmentStep = Nothing
+  , _sEstimatedInstanceWarmup = Nothing
+  , _sPolicyName = Nothing
+  , _sPolicyType = Nothing
+  , _sStepAdjustments = Nothing
+  , _sTargetTrackingConfiguration = Nothing
+  , _sAdjustmentType = Nothing
+  , _sAutoScalingGroupName = Nothing
+  , _sScalingAdjustment = Nothing
+  , _sCooldown = Nothing
+  , _sPolicyARN = Nothing
+  , _sAlarms = Nothing
+  , _sMetricAggregationType = Nothing
+  , _sMinAdjustmentMagnitude = Nothing
+  }
+
+
+-- | Available for backward compatibility. Use @MinAdjustmentMagnitude@ instead.
+sMinAdjustmentStep :: Lens' ScalingPolicy (Maybe Int)
+sMinAdjustmentStep = lens _sMinAdjustmentStep (\ s a -> s{_sMinAdjustmentStep = a});
+
+-- | The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics.
+sEstimatedInstanceWarmup :: Lens' ScalingPolicy (Maybe Int)
+sEstimatedInstanceWarmup = lens _sEstimatedInstanceWarmup (\ s a -> s{_sEstimatedInstanceWarmup = a});
+
+-- | The name of the scaling policy.
+sPolicyName :: Lens' ScalingPolicy (Maybe Text)
+sPolicyName = lens _sPolicyName (\ s a -> s{_sPolicyName = a});
+
+-- | The policy type. Valid values are @SimpleScaling@ and @StepScaling@ .
+sPolicyType :: Lens' ScalingPolicy (Maybe Text)
+sPolicyType = lens _sPolicyType (\ s a -> s{_sPolicyType = a});
+
+-- | A set of adjustments that enable you to scale based on the size of the alarm breach.
+sStepAdjustments :: Lens' ScalingPolicy [StepAdjustment]
+sStepAdjustments = lens _sStepAdjustments (\ s a -> s{_sStepAdjustments = a}) . _Default . _Coerce;
+
+-- | A target tracking policy.
+sTargetTrackingConfiguration :: Lens' ScalingPolicy (Maybe TargetTrackingConfiguration)
+sTargetTrackingConfiguration = lens _sTargetTrackingConfiguration (\ s a -> s{_sTargetTrackingConfiguration = a});
+
+-- | The adjustment type, which specifies how @ScalingAdjustment@ is interpreted. Valid values are @ChangeInCapacity@ , @ExactCapacity@ , and @PercentChangeInCapacity@ .
+sAdjustmentType :: Lens' ScalingPolicy (Maybe Text)
+sAdjustmentType = lens _sAdjustmentType (\ s a -> s{_sAdjustmentType = a});
+
+-- | The name of the Auto Scaling group associated with this scaling policy.
+sAutoScalingGroupName :: Lens' ScalingPolicy (Maybe Text)
+sAutoScalingGroupName = lens _sAutoScalingGroupName (\ s a -> s{_sAutoScalingGroupName = a});
+
+-- | The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
+sScalingAdjustment :: Lens' ScalingPolicy (Maybe Int)
+sScalingAdjustment = lens _sScalingAdjustment (\ s a -> s{_sScalingAdjustment = a});
+
+-- | The amount of time, in seconds, after a scaling activity completes before any further dynamic scaling activities can start.
+sCooldown :: Lens' ScalingPolicy (Maybe Int)
+sCooldown = lens _sCooldown (\ s a -> s{_sCooldown = a});
+
+-- | The Amazon Resource Name (ARN) of the policy.
+sPolicyARN :: Lens' ScalingPolicy (Maybe Text)
+sPolicyARN = lens _sPolicyARN (\ s a -> s{_sPolicyARN = a});
+
+-- | The CloudWatch alarms related to the policy.
+sAlarms :: Lens' ScalingPolicy [Alarm]
+sAlarms = lens _sAlarms (\ s a -> s{_sAlarms = a}) . _Default . _Coerce;
+
+-- | The aggregation type for the CloudWatch metrics. Valid values are @Minimum@ , @Maximum@ , and @Average@ .
+sMetricAggregationType :: Lens' ScalingPolicy (Maybe Text)
+sMetricAggregationType = lens _sMetricAggregationType (\ s a -> s{_sMetricAggregationType = a});
+
+-- | The minimum number of instances to scale. If the value of @AdjustmentType@ is @PercentChangeInCapacity@ , the scaling policy changes the @DesiredCapacity@ of the Auto Scaling group by at least this many instances. Otherwise, the error is @ValidationError@ .
+sMinAdjustmentMagnitude :: Lens' ScalingPolicy (Maybe Int)
+sMinAdjustmentMagnitude = lens _sMinAdjustmentMagnitude (\ s a -> s{_sMinAdjustmentMagnitude = a});
+
+instance FromXML ScalingPolicy where
+        parseXML x
+          = ScalingPolicy' <$>
+              (x .@? "MinAdjustmentStep") <*>
+                (x .@? "EstimatedInstanceWarmup")
+                <*> (x .@? "PolicyName")
+                <*> (x .@? "PolicyType")
+                <*>
+                (x .@? "StepAdjustments" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "TargetTrackingConfiguration")
+                <*> (x .@? "AdjustmentType")
+                <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "ScalingAdjustment")
+                <*> (x .@? "Cooldown")
+                <*> (x .@? "PolicyARN")
+                <*>
+                (x .@? "Alarms" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "MetricAggregationType")
+                <*> (x .@? "MinAdjustmentMagnitude")
+
+instance Hashable ScalingPolicy where
+
+instance NFData ScalingPolicy where
+
+-- | /See:/ 'scalingProcessQuery' smart constructor.
+data ScalingProcessQuery = ScalingProcessQuery'
+  { _spqScalingProcesses     :: !(Maybe [Text])
+  , _spqAutoScalingGroupName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ScalingProcessQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spqScalingProcesses' - One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
+--
+-- * 'spqAutoScalingGroupName' - The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+scalingProcessQuery
+    :: Text -- ^ 'spqAutoScalingGroupName'
+    -> ScalingProcessQuery
+scalingProcessQuery pAutoScalingGroupName_ =
+  ScalingProcessQuery'
+  { _spqScalingProcesses = Nothing
+  , _spqAutoScalingGroupName = pAutoScalingGroupName_
+  }
+
+
+-- | One or more of the following processes. If you omit this parameter, all processes are specified.     * @Launch@      * @Terminate@      * @HealthCheck@      * @ReplaceUnhealthy@      * @AZRebalance@      * @AlarmNotification@      * @ScheduledActions@      * @AddToLoadBalancer@
+spqScalingProcesses :: Lens' ScalingProcessQuery [Text]
+spqScalingProcesses = lens _spqScalingProcesses (\ s a -> s{_spqScalingProcesses = a}) . _Default . _Coerce;
+
+-- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+spqAutoScalingGroupName :: Lens' ScalingProcessQuery Text
+spqAutoScalingGroupName = lens _spqAutoScalingGroupName (\ s a -> s{_spqAutoScalingGroupName = a});
+
+instance Hashable ScalingProcessQuery where
+
+instance NFData ScalingProcessQuery where
+
+instance ToQuery ScalingProcessQuery where
+        toQuery ScalingProcessQuery'{..}
+          = mconcat
+              ["ScalingProcesses" =:
+                 toQuery
+                   (toQueryList "member" <$> _spqScalingProcesses),
+               "AutoScalingGroupName" =: _spqAutoScalingGroupName]
+
+-- | Describes a scheduled update to an Auto Scaling group.
+--
+--
+--
+-- /See:/ 'scheduledUpdateGroupAction' smart constructor.
+data ScheduledUpdateGroupAction = ScheduledUpdateGroupAction'
+  { _sugaScheduledActionARN   :: !(Maybe Text)
+  , _sugaStartTime            :: !(Maybe ISO8601)
+  , _sugaTime                 :: !(Maybe ISO8601)
+  , _sugaScheduledActionName  :: !(Maybe Text)
+  , _sugaMaxSize              :: !(Maybe Int)
+  , _sugaRecurrence           :: !(Maybe Text)
+  , _sugaDesiredCapacity      :: !(Maybe Int)
+  , _sugaMinSize              :: !(Maybe Int)
+  , _sugaAutoScalingGroupName :: !(Maybe Text)
+  , _sugaEndTime              :: !(Maybe ISO8601)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ScheduledUpdateGroupAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sugaScheduledActionARN' - The Amazon Resource Name (ARN) of the scheduled action.
+--
+-- * 'sugaStartTime' - The date and time that the action is scheduled to begin. This date and time can be up to one month in the future. When @StartTime@ and @EndTime@ are specified with @Recurrence@ , they form the boundaries of when the recurring action will start and stop.
+--
+-- * 'sugaTime' - This parameter is deprecated.
+--
+-- * 'sugaScheduledActionName' - The name of the scheduled action.
+--
+-- * 'sugaMaxSize' - The maximum size of the group.
+--
+-- * 'sugaRecurrence' - The recurring schedule for the action.
+--
+-- * 'sugaDesiredCapacity' - The number of instances you prefer to maintain in the group.
+--
+-- * 'sugaMinSize' - The minimum size of the group.
+--
+-- * 'sugaAutoScalingGroupName' - The name of the group.
+--
+-- * 'sugaEndTime' - The date and time that the action is scheduled to end. This date and time can be up to one month in the future.
+scheduledUpdateGroupAction
+    :: ScheduledUpdateGroupAction
+scheduledUpdateGroupAction =
+  ScheduledUpdateGroupAction'
+  { _sugaScheduledActionARN = Nothing
+  , _sugaStartTime = Nothing
+  , _sugaTime = Nothing
+  , _sugaScheduledActionName = Nothing
+  , _sugaMaxSize = Nothing
+  , _sugaRecurrence = Nothing
+  , _sugaDesiredCapacity = Nothing
+  , _sugaMinSize = Nothing
+  , _sugaAutoScalingGroupName = Nothing
+  , _sugaEndTime = Nothing
+  }
+
+
+-- | The Amazon Resource Name (ARN) of the scheduled action.
+sugaScheduledActionARN :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaScheduledActionARN = lens _sugaScheduledActionARN (\ s a -> s{_sugaScheduledActionARN = a});
+
+-- | The date and time that the action is scheduled to begin. This date and time can be up to one month in the future. When @StartTime@ and @EndTime@ are specified with @Recurrence@ , they form the boundaries of when the recurring action will start and stop.
+sugaStartTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaStartTime = lens _sugaStartTime (\ s a -> s{_sugaStartTime = a}) . mapping _Time;
+
+-- | This parameter is deprecated.
+sugaTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaTime = lens _sugaTime (\ s a -> s{_sugaTime = a}) . mapping _Time;
+
+-- | The name of the scheduled action.
+sugaScheduledActionName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaScheduledActionName = lens _sugaScheduledActionName (\ s a -> s{_sugaScheduledActionName = a});
+
+-- | The maximum size of the group.
+sugaMaxSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaMaxSize = lens _sugaMaxSize (\ s a -> s{_sugaMaxSize = a});
+
+-- | The recurring schedule for the action.
+sugaRecurrence :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaRecurrence = lens _sugaRecurrence (\ s a -> s{_sugaRecurrence = a});
+
+-- | The number of instances you prefer to maintain in the group.
+sugaDesiredCapacity :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaDesiredCapacity = lens _sugaDesiredCapacity (\ s a -> s{_sugaDesiredCapacity = a});
+
+-- | The minimum size of the group.
+sugaMinSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaMinSize = lens _sugaMinSize (\ s a -> s{_sugaMinSize = a});
+
+-- | The name of the group.
+sugaAutoScalingGroupName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaAutoScalingGroupName = lens _sugaAutoScalingGroupName (\ s a -> s{_sugaAutoScalingGroupName = a});
+
+-- | The date and time that the action is scheduled to end. This date and time can be up to one month in the future.
+sugaEndTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaEndTime = lens _sugaEndTime (\ s a -> s{_sugaEndTime = a}) . mapping _Time;
+
+instance FromXML ScheduledUpdateGroupAction where
+        parseXML x
+          = ScheduledUpdateGroupAction' <$>
+              (x .@? "ScheduledActionARN") <*> (x .@? "StartTime")
+                <*> (x .@? "Time")
+                <*> (x .@? "ScheduledActionName")
+                <*> (x .@? "MaxSize")
+                <*> (x .@? "Recurrence")
+                <*> (x .@? "DesiredCapacity")
+                <*> (x .@? "MinSize")
+                <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "EndTime")
+
+instance Hashable ScheduledUpdateGroupAction where
+
+instance NFData ScheduledUpdateGroupAction where
+
+-- | Describes an adjustment based on the difference between the value of the aggregated CloudWatch metric and the breach threshold that you've defined for the alarm.
+--
+--
+-- For the following examples, suppose that you have an alarm with a breach threshold of 50:
+--
+--     * If you want the adjustment to be triggered when the metric is greater than or equal to 50 and less than 60, specify a lower bound of 0 and an upper bound of 10.
+--
+--     * If you want the adjustment to be triggered when the metric is greater than 40 and less than or equal to 50, specify a lower bound of -10 and an upper bound of 0.
+--
+--
+--
+-- There are a few rules for the step adjustments for your step policy:
+--
+--     * The ranges of your step adjustments can't overlap or have a gap.
+--
+--     * At most one step adjustment can have a null lower bound. If one step adjustment has a negative lower bound, then there must be a step adjustment with a null lower bound.
+--
+--     * At most one step adjustment can have a null upper bound. If one step adjustment has a positive upper bound, then there must be a step adjustment with a null upper bound.
+--
+--     * The upper and lower bound can't be null in the same step adjustment.
+--
+--
+--
+--
+-- /See:/ 'stepAdjustment' smart constructor.
+data StepAdjustment = StepAdjustment'
+  { _saMetricIntervalLowerBound :: !(Maybe Double)
+  , _saMetricIntervalUpperBound :: !(Maybe Double)
+  , _saScalingAdjustment        :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StepAdjustment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saMetricIntervalLowerBound' - The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.
+--
+-- * 'saMetricIntervalUpperBound' - The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound.
+--
+-- * 'saScalingAdjustment' - The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
+stepAdjustment
+    :: Int -- ^ 'saScalingAdjustment'
+    -> StepAdjustment
+stepAdjustment pScalingAdjustment_ =
+  StepAdjustment'
+  { _saMetricIntervalLowerBound = Nothing
+  , _saMetricIntervalUpperBound = Nothing
+  , _saScalingAdjustment = pScalingAdjustment_
+  }
+
+
+-- | The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.
+saMetricIntervalLowerBound :: Lens' StepAdjustment (Maybe Double)
+saMetricIntervalLowerBound = lens _saMetricIntervalLowerBound (\ s a -> s{_saMetricIntervalLowerBound = a});
+
+-- | The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound.
+saMetricIntervalUpperBound :: Lens' StepAdjustment (Maybe Double)
+saMetricIntervalUpperBound = lens _saMetricIntervalUpperBound (\ s a -> s{_saMetricIntervalUpperBound = a});
+
+-- | The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity.
+saScalingAdjustment :: Lens' StepAdjustment Int
+saScalingAdjustment = lens _saScalingAdjustment (\ s a -> s{_saScalingAdjustment = a});
+
+instance FromXML StepAdjustment where
+        parseXML x
+          = StepAdjustment' <$>
+              (x .@? "MetricIntervalLowerBound") <*>
+                (x .@? "MetricIntervalUpperBound")
+                <*> (x .@ "ScalingAdjustment")
+
+instance Hashable StepAdjustment where
+
+instance NFData StepAdjustment where
+
+instance ToQuery StepAdjustment where
+        toQuery StepAdjustment'{..}
+          = mconcat
+              ["MetricIntervalLowerBound" =:
+                 _saMetricIntervalLowerBound,
+               "MetricIntervalUpperBound" =:
+                 _saMetricIntervalUpperBound,
+               "ScalingAdjustment" =: _saScalingAdjustment]
+
+-- | Describes an Auto Scaling process that has been suspended. For more information, see 'ProcessType' .
+--
+--
+--
+-- /See:/ 'suspendedProcess' smart constructor.
+data SuspendedProcess = SuspendedProcess'
+  { _spProcessName      :: !(Maybe Text)
+  , _spSuspensionReason :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SuspendedProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spProcessName' - The name of the suspended process.
+--
+-- * 'spSuspensionReason' - The reason that the process was suspended.
+suspendedProcess
+    :: SuspendedProcess
+suspendedProcess =
+  SuspendedProcess' {_spProcessName = Nothing, _spSuspensionReason = Nothing}
+
+
+-- | The name of the suspended process.
+spProcessName :: Lens' SuspendedProcess (Maybe Text)
+spProcessName = lens _spProcessName (\ s a -> s{_spProcessName = a});
+
+-- | The reason that the process was suspended.
+spSuspensionReason :: Lens' SuspendedProcess (Maybe Text)
+spSuspensionReason = lens _spSuspensionReason (\ s a -> s{_spSuspensionReason = a});
+
+instance FromXML SuspendedProcess where
+        parseXML x
+          = SuspendedProcess' <$>
+              (x .@? "ProcessName") <*> (x .@? "SuspensionReason")
+
+instance Hashable SuspendedProcess where
+
+instance NFData SuspendedProcess where
+
+-- | Describes a tag for an Auto Scaling group.
+--
+--
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+  { _tagKey               :: !Text
+  , _tagResourceId        :: !Text
+  , _tagResourceType      :: !Text
+  , _tagPropagateAtLaunch :: !Bool
+  , _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' - The tag key.
+--
+-- * 'tagResourceId' - The name of the group.
+--
+-- * 'tagResourceType' - The type of resource. The only supported value is @auto-scaling-group@ .
+--
+-- * 'tagPropagateAtLaunch' - Determines whether the tag is added to new instances as they are launched in the group.
+--
+-- * 'tagValue' - The tag value.
+tag
+    :: Text -- ^ 'tagKey'
+    -> Text -- ^ 'tagResourceId'
+    -> Text -- ^ 'tagResourceType'
+    -> Bool -- ^ 'tagPropagateAtLaunch'
+    -> Text -- ^ 'tagValue'
+    -> Tag
+tag pKey_ pResourceId_ pResourceType_ pPropagateAtLaunch_ pValue_ =
+  Tag'
+  { _tagKey = pKey_
+  , _tagResourceId = pResourceId_
+  , _tagResourceType = pResourceType_
+  , _tagPropagateAtLaunch = pPropagateAtLaunch_
+  , _tagValue = pValue_
+  }
+
+
+-- | The tag key.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | The name of the group.
+tagResourceId :: Lens' Tag Text
+tagResourceId = lens _tagResourceId (\ s a -> s{_tagResourceId = a});
+
+-- | The type of resource. The only supported value is @auto-scaling-group@ .
+tagResourceType :: Lens' Tag Text
+tagResourceType = lens _tagResourceType (\ s a -> s{_tagResourceType = a});
+
+-- | Determines whether the tag is added to new instances as they are launched in the group.
+tagPropagateAtLaunch :: Lens' Tag Bool
+tagPropagateAtLaunch = lens _tagPropagateAtLaunch (\ s a -> s{_tagPropagateAtLaunch = a});
+
+-- | The tag value.
+tagValue :: Lens' Tag Text
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+instance Hashable Tag where
+
+instance NFData Tag where
+
+instance ToQuery Tag where
+        toQuery Tag'{..}
+          = mconcat
+              ["Key" =: _tagKey, "ResourceId" =: _tagResourceId,
+               "ResourceType" =: _tagResourceType,
+               "PropagateAtLaunch" =: _tagPropagateAtLaunch,
+               "Value" =: _tagValue]
+
+-- | Describes a tag for an Auto Scaling group.
+--
+--
+--
+-- /See:/ 'tagDescription' smart constructor.
+data TagDescription = TagDescription'
+  { _tdResourceId        :: !Text
+  , _tdResourceType      :: !Text
+  , _tdKey               :: !Text
+  , _tdPropagateAtLaunch :: !Bool
+  , _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' - The name of the group.
+--
+-- * 'tdResourceType' - The type of resource. The only supported value is @auto-scaling-group@ .
+--
+-- * 'tdKey' - The tag key.
+--
+-- * 'tdPropagateAtLaunch' - Determines whether the tag is added to new instances as they are launched in the group.
+--
+-- * 'tdValue' - The tag value.
+tagDescription
+    :: Text -- ^ 'tdResourceId'
+    -> Text -- ^ 'tdResourceType'
+    -> Text -- ^ 'tdKey'
+    -> Bool -- ^ 'tdPropagateAtLaunch'
+    -> Text -- ^ 'tdValue'
+    -> TagDescription
+tagDescription pResourceId_ pResourceType_ pKey_ pPropagateAtLaunch_ pValue_ =
+  TagDescription'
+  { _tdResourceId = pResourceId_
+  , _tdResourceType = pResourceType_
+  , _tdKey = pKey_
+  , _tdPropagateAtLaunch = pPropagateAtLaunch_
+  , _tdValue = pValue_
+  }
+
+
+-- | The name of the group.
+tdResourceId :: Lens' TagDescription Text
+tdResourceId = lens _tdResourceId (\ s a -> s{_tdResourceId = a});
+
+-- | The type of resource. The only supported value is @auto-scaling-group@ .
+tdResourceType :: Lens' TagDescription Text
+tdResourceType = lens _tdResourceType (\ s a -> s{_tdResourceType = a});
+
+-- | The tag key.
+tdKey :: Lens' TagDescription Text
+tdKey = lens _tdKey (\ s a -> s{_tdKey = a});
+
+-- | Determines whether the tag is added to new instances as they are launched in the group.
+tdPropagateAtLaunch :: Lens' TagDescription Bool
+tdPropagateAtLaunch = lens _tdPropagateAtLaunch (\ s a -> s{_tdPropagateAtLaunch = 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 .@ "PropagateAtLaunch")
+                <*> (x .@ "Value")
+
+instance Hashable TagDescription where
+
+instance NFData TagDescription where
+
+-- | Represents a target tracking policy configuration.
+--
+--
+--
+-- /See:/ 'targetTrackingConfiguration' smart constructor.
+data TargetTrackingConfiguration = TargetTrackingConfiguration'
+  { _ttcPredefinedMetricSpecification :: !(Maybe PredefinedMetricSpecification)
+  , _ttcCustomizedMetricSpecification :: !(Maybe CustomizedMetricSpecification)
+  , _ttcDisableScaleIn                :: !(Maybe Bool)
+  , _ttcTargetValue                   :: !Double
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TargetTrackingConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttcPredefinedMetricSpecification' - A predefined metric. You can specify either a predefined metric or a customized metric.
+--
+-- * 'ttcCustomizedMetricSpecification' - A customized metric.
+--
+-- * 'ttcDisableScaleIn' - Indicates whether scale in by the target tracking policy is disabled. If the value is @true@ , scale in is disabled and the target tracking policy won't remove instances from the Auto Scaling group. Otherwise, scale in is enabled and the target tracking policy can remove instances from the Auto Scaling group. The default value is @false@ .
+--
+-- * 'ttcTargetValue' - The target value for the metric.
+targetTrackingConfiguration
+    :: Double -- ^ 'ttcTargetValue'
+    -> TargetTrackingConfiguration
+targetTrackingConfiguration pTargetValue_ =
+  TargetTrackingConfiguration'
+  { _ttcPredefinedMetricSpecification = Nothing
+  , _ttcCustomizedMetricSpecification = Nothing
+  , _ttcDisableScaleIn = Nothing
+  , _ttcTargetValue = pTargetValue_
+  }
+
+
+-- | A predefined metric. You can specify either a predefined metric or a customized metric.
+ttcPredefinedMetricSpecification :: Lens' TargetTrackingConfiguration (Maybe PredefinedMetricSpecification)
+ttcPredefinedMetricSpecification = lens _ttcPredefinedMetricSpecification (\ s a -> s{_ttcPredefinedMetricSpecification = a});
+
+-- | A customized metric.
+ttcCustomizedMetricSpecification :: Lens' TargetTrackingConfiguration (Maybe CustomizedMetricSpecification)
+ttcCustomizedMetricSpecification = lens _ttcCustomizedMetricSpecification (\ s a -> s{_ttcCustomizedMetricSpecification = a});
+
+-- | Indicates whether scale in by the target tracking policy is disabled. If the value is @true@ , scale in is disabled and the target tracking policy won't remove instances from the Auto Scaling group. Otherwise, scale in is enabled and the target tracking policy can remove instances from the Auto Scaling group. The default value is @false@ .
+ttcDisableScaleIn :: Lens' TargetTrackingConfiguration (Maybe Bool)
+ttcDisableScaleIn = lens _ttcDisableScaleIn (\ s a -> s{_ttcDisableScaleIn = a});
+
+-- | The target value for the metric.
+ttcTargetValue :: Lens' TargetTrackingConfiguration Double
+ttcTargetValue = lens _ttcTargetValue (\ s a -> s{_ttcTargetValue = a});
+
+instance FromXML TargetTrackingConfiguration where
+        parseXML x
+          = TargetTrackingConfiguration' <$>
+              (x .@? "PredefinedMetricSpecification") <*>
+                (x .@? "CustomizedMetricSpecification")
+                <*> (x .@? "DisableScaleIn")
+                <*> (x .@ "TargetValue")
+
+instance Hashable TargetTrackingConfiguration where
+
+instance NFData TargetTrackingConfiguration where
+
+instance ToQuery TargetTrackingConfiguration where
+        toQuery TargetTrackingConfiguration'{..}
+          = mconcat
+              ["PredefinedMetricSpecification" =:
+                 _ttcPredefinedMetricSpecification,
+               "CustomizedMetricSpecification" =:
+                 _ttcCustomizedMetricSpecification,
+               "DisableScaleIn" =: _ttcDisableScaleIn,
+               "TargetValue" =: _ttcTargetValue]
diff --git a/gen/Network/AWS/AutoScaling/Types/Sum.hs b/gen/Network/AWS/AutoScaling/Types/Sum.hs
--- a/gen/Network/AWS/AutoScaling/Types/Sum.hs
+++ b/gen/Network/AWS/AutoScaling/Types/Sum.hs
@@ -9,32 +9,33 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.AutoScaling.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data LifecycleState
-    = Detached
-    | Detaching
-    | EnteringStandby
-    | InService
-    | Pending
-    | PendingProceed
-    | PendingWait
-    | Quarantined
-    | Standby
-    | Terminated
-    | Terminating
-    | TerminatingProceed
-    | TerminatingWait
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Detached
+  | Detaching
+  | EnteringStandby
+  | InService
+  | Pending
+  | PendingProceed
+  | PendingWait
+  | Quarantined
+  | Standby
+  | Terminated
+  | Terminating
+  | TerminatingProceed
+  | TerminatingWait
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText LifecycleState where
     parser = takeLowerText >>= \case
         "detached" -> pure Detached
@@ -78,20 +79,90 @@
 instance FromXML LifecycleState where
     parseXML = parseXMLText "LifecycleState"
 
+data MetricStatistic
+  = Average
+  | Maximum
+  | Minimum
+  | SampleCount
+  | Sum
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText MetricStatistic where
+    parser = takeLowerText >>= \case
+        "average" -> pure Average
+        "maximum" -> pure Maximum
+        "minimum" -> pure Minimum
+        "samplecount" -> pure SampleCount
+        "sum" -> pure Sum
+        e -> fromTextError $ "Failure parsing MetricStatistic from value: '" <> e
+           <> "'. Accepted values: average, maximum, minimum, samplecount, sum"
+
+instance ToText MetricStatistic where
+    toText = \case
+        Average -> "Average"
+        Maximum -> "Maximum"
+        Minimum -> "Minimum"
+        SampleCount -> "SampleCount"
+        Sum -> "Sum"
+
+instance Hashable     MetricStatistic
+instance NFData       MetricStatistic
+instance ToByteString MetricStatistic
+instance ToQuery      MetricStatistic
+instance ToHeader     MetricStatistic
+
+instance FromXML MetricStatistic where
+    parseXML = parseXMLText "MetricStatistic"
+
+data MetricType
+  = ALBRequestCountPerTarget
+  | ASGAverageCPUUtilization
+  | ASGAverageNetworkIn
+  | ASGAverageNetworkOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText MetricType where
+    parser = takeLowerText >>= \case
+        "albrequestcountpertarget" -> pure ALBRequestCountPerTarget
+        "asgaveragecpuutilization" -> pure ASGAverageCPUUtilization
+        "asgaveragenetworkin" -> pure ASGAverageNetworkIn
+        "asgaveragenetworkout" -> pure ASGAverageNetworkOut
+        e -> fromTextError $ "Failure parsing MetricType from value: '" <> e
+           <> "'. Accepted values: albrequestcountpertarget, asgaveragecpuutilization, asgaveragenetworkin, asgaveragenetworkout"
+
+instance ToText MetricType where
+    toText = \case
+        ALBRequestCountPerTarget -> "ALBRequestCountPerTarget"
+        ASGAverageCPUUtilization -> "ASGAverageCPUUtilization"
+        ASGAverageNetworkIn -> "ASGAverageNetworkIn"
+        ASGAverageNetworkOut -> "ASGAverageNetworkOut"
+
+instance Hashable     MetricType
+instance NFData       MetricType
+instance ToByteString MetricType
+instance ToQuery      MetricType
+instance ToHeader     MetricType
+
+instance FromXML MetricType where
+    parseXML = parseXMLText "MetricType"
+
 data ScalingActivityStatusCode
-    = Cancelled
-    | Failed
-    | InProgress
-    | MidLifecycleAction
-    | PendingSpotBidPlacement
-    | PreInService
-    | Successful
-    | WaitingForELBConnectionDraining
-    | WaitingForInstanceId
-    | WaitingForInstanceWarmup
-    | WaitingForSpotInstanceId
-    | WaitingForSpotInstanceRequestId
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Cancelled
+  | Failed
+  | InProgress
+  | MidLifecycleAction
+  | PendingSpotBidPlacement
+  | PreInService
+  | Successful
+  | WaitingForELBConnectionDraining
+  | WaitingForInstanceId
+  | WaitingForInstanceWarmup
+  | WaitingForSpotInstanceId
+  | WaitingForSpotInstanceRequestId
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
 
 instance FromText ScalingActivityStatusCode where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
@@ -12,18 +12,18 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.UpdateAutoScalingGroup
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates the configuration for the specified Auto Scaling group.
 --
 --
--- To update an Auto Scaling group with a launch configuration with @InstanceMonitoring@ set to @False@ , you must first disable the collection of group metrics. Otherwise, you will get an error. If you have previously enabled the collection of group metrics, you can disable it using 'DisableMetricsCollection' .
+-- The new settings take effect on any scaling activities after this call returns. Scaling activities that are currently in progress aren't affected.
 --
--- The new settings are registered upon the completion of this call. Any launch configuration settings take effect on any triggers after this call returns. Scaling activities that are currently in progress aren't affected.
+-- To update an Auto Scaling group with a launch configuration with @InstanceMonitoring@ set to @false@ , you must first disable the collection of group metrics. Otherwise, you will get an error. If you have previously enabled the collection of group metrics, you can disable it using 'DisableMetricsCollection' .
 --
 -- Note the following:
 --
@@ -60,34 +60,31 @@
     , UpdateAutoScalingGroupResponse
     ) where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.AutoScaling.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.AutoScaling.Types
+import Network.AWS.AutoScaling.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Contains the parameters for UpdateAutoScalingGroup.
---
---
---
--- /See:/ 'updateAutoScalingGroup' smart constructor.
+-- | /See:/ 'updateAutoScalingGroup' smart constructor.
 data UpdateAutoScalingGroup = UpdateAutoScalingGroup'
-    { _uasgTerminationPolicies              :: !(Maybe [Text])
-    , _uasgHealthCheckGracePeriod           :: !(Maybe Int)
-    , _uasgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
-    , _uasgVPCZoneIdentifier                :: !(Maybe Text)
-    , _uasgDefaultCooldown                  :: !(Maybe Int)
-    , _uasgMaxSize                          :: !(Maybe Int)
-    , _uasgAvailabilityZones                :: !(Maybe (List1 Text))
-    , _uasgDesiredCapacity                  :: !(Maybe Int)
-    , _uasgMinSize                          :: !(Maybe Int)
-    , _uasgLaunchConfigurationName          :: !(Maybe Text)
-    , _uasgHealthCheckType                  :: !(Maybe Text)
-    , _uasgPlacementGroup                   :: !(Maybe Text)
-    , _uasgAutoScalingGroupName             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uasgTerminationPolicies              :: !(Maybe [Text])
+  , _uasgHealthCheckGracePeriod           :: !(Maybe Int)
+  , _uasgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
+  , _uasgVPCZoneIdentifier                :: !(Maybe Text)
+  , _uasgDefaultCooldown                  :: !(Maybe Int)
+  , _uasgMaxSize                          :: !(Maybe Int)
+  , _uasgAvailabilityZones                :: !(Maybe (List1 Text))
+  , _uasgDesiredCapacity                  :: !(Maybe Int)
+  , _uasgMinSize                          :: !(Maybe Int)
+  , _uasgLaunchConfigurationName          :: !(Maybe Text)
+  , _uasgHealthCheckType                  :: !(Maybe Text)
+  , _uasgPlacementGroup                   :: !(Maybe Text)
+  , _uasgAutoScalingGroupName             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAutoScalingGroup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -121,22 +118,23 @@
     :: Text -- ^ 'uasgAutoScalingGroupName'
     -> UpdateAutoScalingGroup
 updateAutoScalingGroup pAutoScalingGroupName_ =
-    UpdateAutoScalingGroup'
-    { _uasgTerminationPolicies = Nothing
-    , _uasgHealthCheckGracePeriod = Nothing
-    , _uasgNewInstancesProtectedFromScaleIn = Nothing
-    , _uasgVPCZoneIdentifier = Nothing
-    , _uasgDefaultCooldown = Nothing
-    , _uasgMaxSize = Nothing
-    , _uasgAvailabilityZones = Nothing
-    , _uasgDesiredCapacity = Nothing
-    , _uasgMinSize = Nothing
-    , _uasgLaunchConfigurationName = Nothing
-    , _uasgHealthCheckType = Nothing
-    , _uasgPlacementGroup = Nothing
-    , _uasgAutoScalingGroupName = pAutoScalingGroupName_
-    }
+  UpdateAutoScalingGroup'
+  { _uasgTerminationPolicies = Nothing
+  , _uasgHealthCheckGracePeriod = Nothing
+  , _uasgNewInstancesProtectedFromScaleIn = Nothing
+  , _uasgVPCZoneIdentifier = Nothing
+  , _uasgDefaultCooldown = Nothing
+  , _uasgMaxSize = Nothing
+  , _uasgAvailabilityZones = Nothing
+  , _uasgDesiredCapacity = Nothing
+  , _uasgMinSize = Nothing
+  , _uasgLaunchConfigurationName = Nothing
+  , _uasgHealthCheckType = Nothing
+  , _uasgPlacementGroup = Nothing
+  , _uasgAutoScalingGroupName = pAutoScalingGroupName_
+  }
 
+
 -- | A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed. For more information, see <http://docs.aws.amazon.com/autoscaling/latest/userguide/as-instance-termination.html Controlling Which Instances Auto Scaling Terminates During Scale In> in the /Auto Scaling User Guide/ .
 uasgTerminationPolicies :: Lens' UpdateAutoScalingGroup [Text]
 uasgTerminationPolicies = lens _uasgTerminationPolicies (\ s a -> s{_uasgTerminationPolicies = a}) . _Default . _Coerce;
@@ -196,9 +194,9 @@
         response
           = receiveNull UpdateAutoScalingGroupResponse'
 
-instance Hashable UpdateAutoScalingGroup
+instance Hashable UpdateAutoScalingGroup where
 
-instance NFData UpdateAutoScalingGroup
+instance NFData UpdateAutoScalingGroup where
 
 instance ToHeaders UpdateAutoScalingGroup where
         toHeaders = const mempty
@@ -235,13 +233,15 @@
 
 -- | /See:/ 'updateAutoScalingGroupResponse' smart constructor.
 data UpdateAutoScalingGroupResponse =
-    UpdateAutoScalingGroupResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateAutoScalingGroupResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAutoScalingGroupResponse' with the minimum fields required to make a request.
 --
 updateAutoScalingGroupResponse
     :: UpdateAutoScalingGroupResponse
 updateAutoScalingGroupResponse = UpdateAutoScalingGroupResponse'
 
-instance NFData UpdateAutoScalingGroupResponse
+
+instance NFData UpdateAutoScalingGroupResponse where
diff --git a/gen/Network/AWS/AutoScaling/Waiters.hs b/gen/Network/AWS/AutoScaling/Waiters.hs
--- a/gen/Network/AWS/AutoScaling/Waiters.hs
+++ b/gen/Network/AWS/AutoScaling/Waiters.hs
@@ -7,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.AutoScaling.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.AutoScaling.Waiters where
 
-import           Network.AWS.AutoScaling.Types
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.AutoScaling.Types
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
diff --git a/test/Test/AWS/Gen/AutoScaling.hs b/test/Test/AWS/Gen/AutoScaling.hs
--- a/test/Test/AWS/Gen/AutoScaling.hs
+++ b/test/Test/AWS/Gen/AutoScaling.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.AutoScaling
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.AutoScaling where
 
 import Data.Proxy
+import Network.AWS.AutoScaling
+import Test.AWS.AutoScaling.Internal
 import Test.AWS.Fixture
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.AutoScaling
-import Test.AWS.AutoScaling.Internal
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
