-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon Application Auto Scaling SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.ApplicationAutoScaling</a> or <a>the AWS
--   documentation</a> to get started.
@package amazonka-application-autoscaling
@version 1.4.5


module Network.AWS.ApplicationAutoScaling.Types

-- | API version <tt>2016-02-06</tt> of the Amazon Application Auto Scaling
--   SDK configuration.
applicationAutoScaling :: Service

-- | An exception was thrown for a validation issue. Review the available
--   parameters for the API request.
_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Failed access to resources caused an exception. This exception
--   currently only applies to <tt>DescribeScalingPolicies</tt> . It is
--   thrown when Application Auto Scaling is unable to retrieve the alarms
--   associated with a scaling policy due to a client error, for example,
--   if the role ARN specified for a scalable target does not have the
--   proper permissions to call the CloudWatch <a>DescribeAlarms</a> API
--   operation on behalf of your account.
_FailedResourceAccessException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The next token supplied was invalid.
_InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Concurrent updates caused an exception, for example, if you request an
--   update to an Application Auto Scaling resource that already has a
--   pending update.
_ConcurrentUpdateException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The service encountered an internal error.
_InternalServiceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified object could not be found. For any <tt>Put</tt> or
--   <tt>Register</tt> API operation, which depends on the existence of a
--   scalable target, this exception is thrown if the scalable target with
--   the specified service namespace, resource ID, and scalable dimension
--   does not exist. For any <tt>Delete</tt> or <tt>Deregister</tt> API
--   operation, this exception is thrown if the resource that is to be
--   deleted or deregistered cannot be found.
_ObjectNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your account exceeded a limit. This exception is thrown when a
--   per-account resource limit is exceeded. For more information, see
--   <a>Application Auto Scaling Limits</a> .
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
data AdjustmentType
ChangeInCapacity :: AdjustmentType
ExactCapacity :: AdjustmentType
PercentChangeInCapacity :: AdjustmentType
data MetricAggregationType
Average :: MetricAggregationType
Maximum :: MetricAggregationType
Minimum :: MetricAggregationType
data PolicyType
StepScaling :: PolicyType
data ScalableDimension
EC2SpotFleetRequestTargetCapacity :: ScalableDimension
EcsServiceDesiredCount :: ScalableDimension
ElasticmapreduceInstancegroupInstanceCount :: ScalableDimension
data ScalingActivityStatusCode
Failed :: ScalingActivityStatusCode
InProgress :: ScalingActivityStatusCode
Overridden :: ScalingActivityStatusCode
Pending :: ScalingActivityStatusCode
Successful :: ScalingActivityStatusCode
Unfulfilled :: ScalingActivityStatusCode
data ServiceNamespace
EC2 :: ServiceNamespace
Ecs :: ServiceNamespace
Elasticmapreduce :: ServiceNamespace

-- | Represents a CloudWatch alarm associated with a scaling policy.
--   
--   <i>See:</i> <a>alarm</a> smart constructor.
data Alarm

-- | Creates a value of <a>Alarm</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAlarmName</a> - The name of the alarm.</li>
--   <li><a>aAlarmARN</a> - The Amazon Resource Name (ARN) of the
--   alarm.</li>
--   </ul>
alarm :: Text -> Text -> Alarm

-- | The name of the alarm.
aAlarmName :: Lens' Alarm Text

-- | The Amazon Resource Name (ARN) of the alarm.
aAlarmARN :: Lens' Alarm Text

-- | Represents a scalable target.
--   
--   <i>See:</i> <a>scalableTarget</a> smart constructor.
data ScalableTarget

-- | Creates a value of <a>ScalableTarget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>stServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>stResourceId</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>stScalableDimension</a> - The scalable dimension associated
--   with the scalable target. This string consists of the service
--   namespace, resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>stMinCapacity</a> - The minimum value to scale to in response
--   to a scale in event.</li>
--   <li><a>stMaxCapacity</a> - The maximum value to scale to in response
--   to a scale out event.</li>
--   <li><a>stRoleARN</a> - The ARN of an IAM role that allows Application
--   Auto Scaling to modify the scalable target on your behalf.</li>
--   <li><a>stCreationTime</a> - The Unix timestamp for when the scalable
--   target was created.</li>
--   </ul>
scalableTarget :: ServiceNamespace -> Text -> ScalableDimension -> Int -> Int -> Text -> UTCTime -> ScalableTarget

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
stServiceNamespace :: Lens' ScalableTarget ServiceNamespace

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
stResourceId :: Lens' ScalableTarget Text

-- | The scalable dimension associated with the scalable target. This
--   string consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
stScalableDimension :: Lens' ScalableTarget ScalableDimension

-- | The minimum value to scale to in response to a scale in event.
stMinCapacity :: Lens' ScalableTarget Int

-- | The maximum value to scale to in response to a scale out event.
stMaxCapacity :: Lens' ScalableTarget Int

-- | The ARN of an IAM role that allows Application Auto Scaling to modify
--   the scalable target on your behalf.
stRoleARN :: Lens' ScalableTarget Text

-- | The Unix timestamp for when the scalable target was created.
stCreationTime :: Lens' ScalableTarget UTCTime

-- | Represents a scaling activity.
--   
--   <i>See:</i> <a>scalingActivity</a> smart constructor.
data ScalingActivity

-- | Creates a value of <a>ScalingActivity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saStatusMessage</a> - A simple message about the current status
--   of the scaling activity.</li>
--   <li><a>saEndTime</a> - The Unix timestamp for when the scaling
--   activity ended.</li>
--   <li><a>saDetails</a> - The details about the scaling activity.</li>
--   <li><a>saActivityId</a> - The unique identifier of the scaling
--   activity.</li>
--   <li><a>saServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>saResourceId</a> - The identifier of the resource associated
--   with the scaling activity. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>saScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>saDescription</a> - A simple description of what action the
--   scaling activity intends to accomplish.</li>
--   <li><a>saCause</a> - A simple description of what caused the scaling
--   activity to happen.</li>
--   <li><a>saStartTime</a> - The Unix timestamp for when the scaling
--   activity began.</li>
--   <li><a>saStatusCode</a> - Indicates the status of the scaling
--   activity.</li>
--   </ul>
scalingActivity :: Text -> ServiceNamespace -> Text -> ScalableDimension -> Text -> Text -> UTCTime -> ScalingActivityStatusCode -> ScalingActivity

-- | A simple message about the current status of the scaling activity.
saStatusMessage :: Lens' ScalingActivity (Maybe Text)

-- | The Unix timestamp for when the scaling activity ended.
saEndTime :: Lens' ScalingActivity (Maybe UTCTime)

-- | The details about the scaling activity.
saDetails :: Lens' ScalingActivity (Maybe Text)

-- | The unique identifier of the scaling activity.
saActivityId :: Lens' ScalingActivity Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
saServiceNamespace :: Lens' ScalingActivity ServiceNamespace

-- | The identifier of the resource associated with the scaling activity.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
saResourceId :: Lens' ScalingActivity Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
saScalableDimension :: Lens' ScalingActivity ScalableDimension

-- | A simple description of what action the scaling activity intends to
--   accomplish.
saDescription :: Lens' ScalingActivity Text

-- | A simple description of what caused the scaling activity to happen.
saCause :: Lens' ScalingActivity Text

-- | The Unix timestamp for when the scaling activity began.
saStartTime :: Lens' ScalingActivity UTCTime

-- | Indicates the status of the scaling activity.
saStatusCode :: Lens' ScalingActivity ScalingActivityStatusCode

-- | Represents a scaling policy.
--   
--   <i>See:</i> <a>scalingPolicy</a> smart constructor.
data ScalingPolicy

-- | Creates a value of <a>ScalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spStepScalingPolicyConfiguration</a> - The configuration for
--   the step scaling policy.</li>
--   <li><a>spAlarms</a> - The CloudWatch alarms associated with the
--   scaling policy.</li>
--   <li><a>spPolicyARN</a> - The Amazon Resource Name (ARN) of the scaling
--   policy.</li>
--   <li><a>spPolicyName</a> - The name of the scaling policy.</li>
--   <li><a>spServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>spResourceId</a> - The identifier of the resource associated
--   with the scaling policy. This string consists of the resource type and
--   unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>spScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>spPolicyType</a> - The scaling policy type.</li>
--   <li><a>spCreationTime</a> - The Unix timestamp for when the scaling
--   policy was created.</li>
--   </ul>
scalingPolicy :: Text -> Text -> ServiceNamespace -> Text -> ScalableDimension -> PolicyType -> UTCTime -> ScalingPolicy

-- | The configuration for the step scaling policy.
spStepScalingPolicyConfiguration :: Lens' ScalingPolicy (Maybe StepScalingPolicyConfiguration)

-- | The CloudWatch alarms associated with the scaling policy.
spAlarms :: Lens' ScalingPolicy [Alarm]

-- | The Amazon Resource Name (ARN) of the scaling policy.
spPolicyARN :: Lens' ScalingPolicy Text

-- | The name of the scaling policy.
spPolicyName :: Lens' ScalingPolicy Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
spServiceNamespace :: Lens' ScalingPolicy ServiceNamespace

-- | The identifier of the resource associated with the scaling policy.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
spResourceId :: Lens' ScalingPolicy Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
spScalableDimension :: Lens' ScalingPolicy ScalableDimension

-- | The scaling policy type.
spPolicyType :: Lens' ScalingPolicy PolicyType

-- | The Unix timestamp for when the scaling policy was created.
spCreationTime :: Lens' ScalingPolicy UTCTime

-- | Represents a step adjustment for a
--   <a>StepScalingPolicyConfiguration</a> . 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:
--   
--   <ul>
--   <li>To trigger the adjustment 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.</li>
--   <li>To trigger the adjustment 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.</li>
--   </ul>
--   
--   There are a few rules for the step adjustments for your step policy:
--   
--   <ul>
--   <li>The ranges of your step adjustments can't overlap or have a
--   gap.</li>
--   <li>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.</li>
--   <li>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.</li>
--   <li>The upper and lower bound can't be null in the same step
--   adjustment.</li>
--   </ul>
--   
--   <i>See:</i> <a>stepAdjustment</a> smart constructor.
data StepAdjustment

-- | Creates a value of <a>StepAdjustment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saMetricIntervalLowerBound</a> - 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.</li>
--   <li><a>saMetricIntervalUpperBound</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.</li>
--   <li><a>saScalingAdjustment</a> - The amount by which to scale, based
--   on the specified adjustment type. A positive value adds to the current
--   scalable dimension while a negative number removes from the current
--   scalable dimension.</li>
--   </ul>
stepAdjustment :: Int -> StepAdjustment

-- | 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)

-- | 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)

-- | The amount by which to scale, based on the specified adjustment type.
--   A positive value adds to the current scalable dimension while a
--   negative number removes from the current scalable dimension.
saScalingAdjustment :: Lens' StepAdjustment Int

-- | Represents a step scaling policy configuration.
--   
--   <i>See:</i> <a>stepScalingPolicyConfiguration</a> smart constructor.
data StepScalingPolicyConfiguration

-- | Creates a value of <a>StepScalingPolicyConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sspcStepAdjustments</a> - A set of adjustments that enable you
--   to scale based on the size of the alarm breach.</li>
--   <li><a>sspcAdjustmentType</a> - The adjustment type, which specifies
--   how the <tt>ScalingAdjustment</tt> parameter in a
--   <a>StepAdjustment</a> is interpreted.</li>
--   <li><a>sspcCooldown</a> - The amount of time, in seconds, after a
--   scaling activity completes where previous trigger-related scaling
--   activities can influence future scaling events. For scale out
--   policies, while <tt>Cooldown</tt> is in effect, the capacity that has
--   been added by the previous scale out event that initiated the
--   <tt>Cooldown</tt> is calculated as part of the desired capacity for
--   the next scale out. The intention is to continuously (but not
--   excessively) scale out. For example, an alarm triggers a step scaling
--   policy to scale out an Amazon ECS service by 2 tasks, the scaling
--   activity completes successfully, and a <tt>Cooldown</tt> period of 5
--   minutes starts. During the <tt>Cooldown</tt> period, if the alarm
--   triggers the same policy again but at a more aggressive step
--   adjustment to scale out the service by 3 tasks, the 2 tasks that were
--   added in the previous scale out event are considered part of that
--   capacity and only 1 additional task is added to the desired count. For
--   scale in policies, the <tt>Cooldown</tt> period is used to block
--   subsequent scale in requests until it has expired. The intention is to
--   scale in conservatively to protect your application's availability.
--   However, if another alarm triggers a scale out policy during the
--   <tt>Cooldown</tt> period after a scale-in, Application Auto Scaling
--   scales out your scalable target immediately.</li>
--   <li><a>sspcMetricAggregationType</a> - The aggregation type for the
--   CloudWatch metrics. Valid values are <tt>Minimum</tt> ,
--   <tt>Maximum</tt> , and <tt>Average</tt> .</li>
--   <li><a>sspcMinAdjustmentMagnitude</a> - The minimum number to adjust
--   your scalable dimension as a result of a scaling activity. If the
--   adjustment type is <tt>PercentChangeInCapacity</tt> , the scaling
--   policy changes the scalable dimension of the scalable target by this
--   amount.</li>
--   </ul>
stepScalingPolicyConfiguration :: StepScalingPolicyConfiguration

-- | A set of adjustments that enable you to scale based on the size of the
--   alarm breach.
sspcStepAdjustments :: Lens' StepScalingPolicyConfiguration [StepAdjustment]

-- | The adjustment type, which specifies how the
--   <tt>ScalingAdjustment</tt> parameter in a <a>StepAdjustment</a> is
--   interpreted.
sspcAdjustmentType :: Lens' StepScalingPolicyConfiguration (Maybe AdjustmentType)

-- | The amount of time, in seconds, after a scaling activity completes
--   where previous trigger-related scaling activities can influence future
--   scaling events. For scale out policies, while <tt>Cooldown</tt> is in
--   effect, the capacity that has been added by the previous scale out
--   event that initiated the <tt>Cooldown</tt> is calculated as part of
--   the desired capacity for the next scale out. The intention is to
--   continuously (but not excessively) scale out. For example, an alarm
--   triggers a step scaling policy to scale out an Amazon ECS service by 2
--   tasks, the scaling activity completes successfully, and a
--   <tt>Cooldown</tt> period of 5 minutes starts. During the
--   <tt>Cooldown</tt> period, if the alarm triggers the same policy again
--   but at a more aggressive step adjustment to scale out the service by 3
--   tasks, the 2 tasks that were added in the previous scale out event are
--   considered part of that capacity and only 1 additional task is added
--   to the desired count. For scale in policies, the <tt>Cooldown</tt>
--   period is used to block subsequent scale in requests until it has
--   expired. The intention is to scale in conservatively to protect your
--   application's availability. However, if another alarm triggers a scale
--   out policy during the <tt>Cooldown</tt> period after a scale-in,
--   Application Auto Scaling scales out your scalable target immediately.
sspcCooldown :: Lens' StepScalingPolicyConfiguration (Maybe Int)

-- | The aggregation type for the CloudWatch metrics. Valid values are
--   <tt>Minimum</tt> , <tt>Maximum</tt> , and <tt>Average</tt> .
sspcMetricAggregationType :: Lens' StepScalingPolicyConfiguration (Maybe MetricAggregationType)

-- | The minimum number to adjust your scalable dimension as a result of a
--   scaling activity. If the adjustment type is
--   <tt>PercentChangeInCapacity</tt> , the scaling policy changes the
--   scalable dimension of the scalable target by this amount.
sspcMinAdjustmentMagnitude :: Lens' StepScalingPolicyConfiguration (Maybe Int)


module Network.AWS.ApplicationAutoScaling.Waiters


-- | Registers or updates a scalable target. A scalable target is a
--   resource that Application Auto Scaling can scale out or scale in.
--   After you have registered a scalable target, you can use this
--   operation to update the minimum and maximum values for your scalable
--   dimension.
--   
--   After you register a scalable target, you can create and apply scaling
--   policies using <tt>PutScalingPolicy</tt> . You can view the scaling
--   policies for a service namespace using
--   <tt>DescribeScalableTargets</tt> . If you are no longer using a
--   scalable target, you can deregister it using
--   <tt>DeregisterScalableTarget</tt> .
module Network.AWS.ApplicationAutoScaling.RegisterScalableTarget

-- | Creates a value of <a>RegisterScalableTarget</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rstMaxCapacity</a> - The maximum value to scale to in response
--   to a scale out event. This parameter is required if you are
--   registering a scalable target and optional if you are updating
--   one.</li>
--   <li><a>rstMinCapacity</a> - The minimum value to scale to in response
--   to a scale in event. This parameter is required if you are registering
--   a scalable target and optional if you are updating one.</li>
--   <li><a>rstRoleARN</a> - The ARN of an IAM role that allows Application
--   Auto Scaling to modify the scalable target on your behalf. This
--   parameter is required when you register a scalable target and optional
--   when you update one.</li>
--   <li><a>rstServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>rstResourceId</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>rstScalableDimension</a> - The scalable dimension associated
--   with the scalable target. This string consists of the service
--   namespace, resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   </ul>
registerScalableTarget :: ServiceNamespace -> Text -> ScalableDimension -> RegisterScalableTarget

-- | <i>See:</i> <a>registerScalableTarget</a> smart constructor.
data RegisterScalableTarget

-- | The maximum value to scale to in response to a scale out event. This
--   parameter is required if you are registering a scalable target and
--   optional if you are updating one.
rstMaxCapacity :: Lens' RegisterScalableTarget (Maybe Int)

-- | The minimum value to scale to in response to a scale in event. This
--   parameter is required if you are registering a scalable target and
--   optional if you are updating one.
rstMinCapacity :: Lens' RegisterScalableTarget (Maybe Int)

-- | The ARN of an IAM role that allows Application Auto Scaling to modify
--   the scalable target on your behalf. This parameter is required when
--   you register a scalable target and optional when you update one.
rstRoleARN :: Lens' RegisterScalableTarget (Maybe Text)

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
rstServiceNamespace :: Lens' RegisterScalableTarget ServiceNamespace

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
rstResourceId :: Lens' RegisterScalableTarget Text

-- | The scalable dimension associated with the scalable target. This
--   string consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
rstScalableDimension :: Lens' RegisterScalableTarget ScalableDimension

-- | Creates a value of <a>RegisterScalableTargetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rstrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
registerScalableTargetResponse :: Int -> RegisterScalableTargetResponse

-- | <i>See:</i> <a>registerScalableTargetResponse</a> smart constructor.
data RegisterScalableTargetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rstrsResponseStatus :: Lens' RegisterScalableTargetResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTarget
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.RegisterScalableTarget.RegisterScalableTargetResponse


-- | Creates or updates a policy for an Application Auto Scaling scalable
--   target.
--   
--   Each scalable target is identified by a service namespace, resource
--   ID, and scalable dimension. A scaling policy applies to the scalable
--   target identified by those three attributes. You cannot create a
--   scaling policy without first registering a scalable target using
--   <tt>RegisterScalableTarget</tt> .
--   
--   To update a policy, specify its policy name and the parameters that
--   you want to change. Any parameters that you don't specify are not
--   changed by this update request.
--   
--   You can view the scaling policies for a service namespace using
--   <tt>DescribeScalingPolicies</tt> . If you are no longer using a
--   scaling policy, you can delete it using <tt>DeleteScalingPolicy</tt> .
module Network.AWS.ApplicationAutoScaling.PutScalingPolicy

-- | Creates a value of <a>PutScalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pspPolicyType</a> - The policy type. If you are creating a new
--   policy, this parameter is required. If you are updating a policy, this
--   parameter is not required.</li>
--   <li><a>pspStepScalingPolicyConfiguration</a> - The configuration for
--   the step scaling policy. If you are creating a new policy, this
--   parameter is required. If you are updating a policy, this parameter is
--   not required. For more information, see
--   <a>StepScalingPolicyConfiguration</a> and <a>StepAdjustment</a> .</li>
--   <li><a>pspPolicyName</a> - The name of the scaling policy.</li>
--   <li><a>pspServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>pspResourceId</a> - The identifier of the resource associated
--   with the scaling policy. This string consists of the resource type and
--   unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>pspScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   </ul>
putScalingPolicy :: Text -> ServiceNamespace -> Text -> ScalableDimension -> PutScalingPolicy

-- | <i>See:</i> <a>putScalingPolicy</a> smart constructor.
data PutScalingPolicy

-- | The policy type. If you are creating a new policy, this parameter is
--   required. If you are updating a policy, this parameter is not
--   required.
pspPolicyType :: Lens' PutScalingPolicy (Maybe PolicyType)

-- | The configuration for the step scaling policy. If you are creating a
--   new policy, this parameter is required. If you are updating a policy,
--   this parameter is not required. For more information, see
--   <a>StepScalingPolicyConfiguration</a> and <a>StepAdjustment</a> .
pspStepScalingPolicyConfiguration :: Lens' PutScalingPolicy (Maybe StepScalingPolicyConfiguration)

-- | The name of the scaling policy.
pspPolicyName :: Lens' PutScalingPolicy Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
pspServiceNamespace :: Lens' PutScalingPolicy ServiceNamespace

-- | The identifier of the resource associated with the scaling policy.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
pspResourceId :: Lens' PutScalingPolicy Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
pspScalableDimension :: Lens' PutScalingPolicy ScalableDimension

-- | Creates a value of <a>PutScalingPolicyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psprsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>psprsPolicyARN</a> - The Amazon Resource Name (ARN) of the
--   resulting scaling policy.</li>
--   </ul>
putScalingPolicyResponse :: Int -> Text -> PutScalingPolicyResponse

-- | <i>See:</i> <a>putScalingPolicyResponse</a> smart constructor.
data PutScalingPolicyResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
psprsResponseStatus :: Lens' PutScalingPolicyResponse Int

-- | The Amazon Resource Name (ARN) of the resulting scaling policy.
psprsPolicyARN :: Lens' PutScalingPolicyResponse Text
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicy
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.PutScalingPolicy.PutScalingPolicyResponse


-- | Provides descriptive information about the scaling policies in the
--   specified namespace.
--   
--   You can filter the results using the <tt>ResourceId</tt> ,
--   <tt>ScalableDimension</tt> , and <tt>PolicyNames</tt> parameters.
--   
--   To create a scaling policy or update an existing one, see
--   <tt>PutScalingPolicy</tt> . If you are no longer using a scaling
--   policy, you can delete it using <tt>DeleteScalingPolicy</tt> .
--   
--   This operation returns paginated results.
module Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies

-- | Creates a value of <a>DescribeScalingPolicies</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dPolicyNames</a> - The names of the scaling policies to
--   describe.</li>
--   <li><a>dScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. If you specify a scalable dimension, you must also specify a
--   resource ID. * <tt>ecs:service:DesiredCount</tt> - The desired task
--   count of an ECS service. *
--   <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target capacity
--   of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>dResourceId</a> - The identifier of the resource associated
--   with the scaling policy. This string consists of the resource type and
--   unique identifier. If you specify a scalable dimension, you must also
--   specify a resource ID. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>dNextToken</a> - The token for the next set of results.</li>
--   <li><a>dMaxResults</a> - The maximum number of scalable target
--   results. This value can be between 1 and 50. The default value is 50.
--   If this parameter is used, the operation returns up to
--   <tt>MaxResults</tt> results at a time, along with a <tt>NextToken</tt>
--   value. To get the next set of results, include the <tt>NextToken</tt>
--   value in a subsequent call. If this parameter is not used, the
--   operation returns up to 50 results and a <tt>NextToken</tt> value, if
--   applicable.</li>
--   <li><a>dServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   </ul>
describeScalingPolicies :: ServiceNamespace -> DescribeScalingPolicies

-- | <i>See:</i> <a>describeScalingPolicies</a> smart constructor.
data DescribeScalingPolicies

-- | The names of the scaling policies to describe.
dPolicyNames :: Lens' DescribeScalingPolicies [Text]

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. If you specify a scalable
--   dimension, you must also specify a resource ID. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
dScalableDimension :: Lens' DescribeScalingPolicies (Maybe ScalableDimension)

-- | The identifier of the resource associated with the scaling policy.
--   This string consists of the resource type and unique identifier. If
--   you specify a scalable dimension, you must also specify a resource ID.
--   * ECS service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
dResourceId :: Lens' DescribeScalingPolicies (Maybe Text)

-- | The token for the next set of results.
dNextToken :: Lens' DescribeScalingPolicies (Maybe Text)

-- | The maximum number of scalable target results. This value can be
--   between 1 and 50. The default value is 50. If this parameter is used,
--   the operation returns up to <tt>MaxResults</tt> results at a time,
--   along with a <tt>NextToken</tt> value. To get the next set of results,
--   include the <tt>NextToken</tt> value in a subsequent call. If this
--   parameter is not used, the operation returns up to 50 results and a
--   <tt>NextToken</tt> value, if applicable.
dMaxResults :: Lens' DescribeScalingPolicies (Maybe Int)

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
dServiceNamespace :: Lens' DescribeScalingPolicies ServiceNamespace

-- | Creates a value of <a>DescribeScalingPoliciesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsNextToken</a> - The token required to get the next set of
--   results. This value is <tt>null</tt> if there are no more results to
--   return.</li>
--   <li><a>drsScalingPolicies</a> - A list of scaling policy objects.</li>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeScalingPoliciesResponse :: Int -> DescribeScalingPoliciesResponse

-- | <i>See:</i> <a>describeScalingPoliciesResponse</a> smart constructor.
data DescribeScalingPoliciesResponse

-- | The token required to get the next set of results. This value is
--   <tt>null</tt> if there are no more results to return.
drsNextToken :: Lens' DescribeScalingPoliciesResponse (Maybe Text)

-- | A list of scaling policy objects.
drsScalingPolicies :: Lens' DescribeScalingPoliciesResponse [ScalingPolicy]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DescribeScalingPoliciesResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Network.AWS.Pager.AWSPager Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPolicies
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalingPolicies.DescribeScalingPoliciesResponse


-- | Provides descriptive information about the scaling activities in the
--   specified namespace from the previous six weeks.
--   
--   You can filter the results using the <tt>ResourceId</tt> and
--   <tt>ScalableDimension</tt> parameters.
--   
--   Scaling activities are triggered by CloudWatch alarms that are
--   associated with scaling policies. To view the scaling policies for a
--   service namespace, see <tt>DescribeScalingPolicies</tt> . To create a
--   scaling policy or update an existing one, see
--   <tt>PutScalingPolicy</tt> .
--   
--   This operation returns paginated results.
module Network.AWS.ApplicationAutoScaling.DescribeScalingActivities

-- | Creates a value of <a>DescribeScalingActivities</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsaScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. If you specify a scalable dimension, you must also specify a
--   resource ID. * <tt>ecs:service:DesiredCount</tt> - The desired task
--   count of an ECS service. *
--   <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target capacity
--   of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>dsaResourceId</a> - The identifier of the resource associated
--   with the scaling activity. This string consists of the resource type
--   and unique identifier. If you specify a scalable dimension, you must
--   also specify a resource ID. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>dsaNextToken</a> - The token for the next set of results.</li>
--   <li><a>dsaMaxResults</a> - The maximum number of scalable target
--   results. This value can be between 1 and 50. The default value is 50.
--   If this parameter is used, the operation returns up to
--   <tt>MaxResults</tt> results at a time, along with a <tt>NextToken</tt>
--   value. To get the next set of results, include the <tt>NextToken</tt>
--   value in a subsequent call. If this parameter is not used, the
--   operation returns up to 50 results and a <tt>NextToken</tt> value, if
--   applicable.</li>
--   <li><a>dsaServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   </ul>
describeScalingActivities :: ServiceNamespace -> DescribeScalingActivities

-- | <i>See:</i> <a>describeScalingActivities</a> smart constructor.
data DescribeScalingActivities

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. If you specify a scalable
--   dimension, you must also specify a resource ID. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
dsaScalableDimension :: Lens' DescribeScalingActivities (Maybe ScalableDimension)

-- | The identifier of the resource associated with the scaling activity.
--   This string consists of the resource type and unique identifier. If
--   you specify a scalable dimension, you must also specify a resource ID.
--   * ECS service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
dsaResourceId :: Lens' DescribeScalingActivities (Maybe Text)

-- | The token for the next set of results.
dsaNextToken :: Lens' DescribeScalingActivities (Maybe Text)

-- | The maximum number of scalable target results. This value can be
--   between 1 and 50. The default value is 50. If this parameter is used,
--   the operation returns up to <tt>MaxResults</tt> results at a time,
--   along with a <tt>NextToken</tt> value. To get the next set of results,
--   include the <tt>NextToken</tt> value in a subsequent call. If this
--   parameter is not used, the operation returns up to 50 results and a
--   <tt>NextToken</tt> value, if applicable.
dsaMaxResults :: Lens' DescribeScalingActivities (Maybe Int)

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
dsaServiceNamespace :: Lens' DescribeScalingActivities ServiceNamespace

-- | Creates a value of <a>DescribeScalingActivitiesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsarsScalingActivities</a> - A list of scaling activity
--   objects.</li>
--   <li><a>dsarsNextToken</a> - The token required to get the next set of
--   results. This value is <tt>null</tt> if there are no more results to
--   return.</li>
--   <li><a>dsarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeScalingActivitiesResponse :: Int -> DescribeScalingActivitiesResponse

-- | <i>See:</i> <a>describeScalingActivitiesResponse</a> smart
--   constructor.
data DescribeScalingActivitiesResponse

-- | A list of scaling activity objects.
dsarsScalingActivities :: Lens' DescribeScalingActivitiesResponse [ScalingActivity]

-- | The token required to get the next set of results. This value is
--   <tt>null</tt> if there are no more results to return.
dsarsNextToken :: Lens' DescribeScalingActivitiesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsarsResponseStatus :: Lens' DescribeScalingActivitiesResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Network.AWS.Pager.AWSPager Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivities
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalingActivities.DescribeScalingActivitiesResponse


-- | Provides descriptive information about the scalable targets in the
--   specified namespace.
--   
--   You can filter the results using the <tt>ResourceIds</tt> and
--   <tt>ScalableDimension</tt> parameters.
--   
--   To create a scalable target or update an existing one, see
--   <tt>RegisterScalableTarget</tt> . If you are no longer using a
--   scalable target, you can deregister it using
--   <tt>DeregisterScalableTarget</tt> .
--   
--   This operation returns paginated results.
module Network.AWS.ApplicationAutoScaling.DescribeScalableTargets

-- | Creates a value of <a>DescribeScalableTargets</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dstResourceIds</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. If you specify a scalable dimension, you must
--   also specify a resource ID. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>dstScalableDimension</a> - The scalable dimension associated
--   with the scalable target. This string consists of the service
--   namespace, resource type, and scaling property. If you specify a
--   scalable dimension, you must also specify a resource ID. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>dstNextToken</a> - The token for the next set of results.</li>
--   <li><a>dstMaxResults</a> - The maximum number of scalable target
--   results. This value can be between 1 and 50. The default value is 50.
--   If this parameter is used, the operation returns up to
--   <tt>MaxResults</tt> results at a time, along with a <tt>NextToken</tt>
--   value. To get the next set of results, include the <tt>NextToken</tt>
--   value in a subsequent call. If this parameter is not used, the
--   operation returns up to 50 results and a <tt>NextToken</tt> value, if
--   applicable.</li>
--   <li><a>dstServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   </ul>
describeScalableTargets :: ServiceNamespace -> DescribeScalableTargets

-- | <i>See:</i> <a>describeScalableTargets</a> smart constructor.
data DescribeScalableTargets

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. If
--   you specify a scalable dimension, you must also specify a resource ID.
--   * ECS service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
dstResourceIds :: Lens' DescribeScalableTargets [Text]

-- | The scalable dimension associated with the scalable target. This
--   string consists of the service namespace, resource type, and scaling
--   property. If you specify a scalable dimension, you must also specify a
--   resource ID. * <tt>ecs:service:DesiredCount</tt> - The desired task
--   count of an ECS service. *
--   <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target capacity
--   of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
dstScalableDimension :: Lens' DescribeScalableTargets (Maybe ScalableDimension)

-- | The token for the next set of results.
dstNextToken :: Lens' DescribeScalableTargets (Maybe Text)

-- | The maximum number of scalable target results. This value can be
--   between 1 and 50. The default value is 50. If this parameter is used,
--   the operation returns up to <tt>MaxResults</tt> results at a time,
--   along with a <tt>NextToken</tt> value. To get the next set of results,
--   include the <tt>NextToken</tt> value in a subsequent call. If this
--   parameter is not used, the operation returns up to 50 results and a
--   <tt>NextToken</tt> value, if applicable.
dstMaxResults :: Lens' DescribeScalableTargets (Maybe Int)

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
dstServiceNamespace :: Lens' DescribeScalableTargets ServiceNamespace

-- | Creates a value of <a>DescribeScalableTargetsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dstsrsNextToken</a> - The token required to get the next set of
--   results. This value is <tt>null</tt> if there are no more results to
--   return.</li>
--   <li><a>dstsrsScalableTargets</a> - The list of scalable targets that
--   matches the request parameters.</li>
--   <li><a>dstsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeScalableTargetsResponse :: Int -> DescribeScalableTargetsResponse

-- | <i>See:</i> <a>describeScalableTargetsResponse</a> smart constructor.
data DescribeScalableTargetsResponse

-- | The token required to get the next set of results. This value is
--   <tt>null</tt> if there are no more results to return.
dstsrsNextToken :: Lens' DescribeScalableTargetsResponse (Maybe Text)

-- | The list of scalable targets that matches the request parameters.
dstsrsScalableTargets :: Lens' DescribeScalableTargetsResponse [ScalableTarget]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dstsrsResponseStatus :: Lens' DescribeScalableTargetsResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Network.AWS.Pager.AWSPager Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargets
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DescribeScalableTargets.DescribeScalableTargetsResponse


-- | Deregisters a scalable target.
--   
--   Deregistering a scalable target deletes the scaling policies that are
--   associated with it.
--   
--   To create a scalable target or update an existing one, see
--   <tt>RegisterScalableTarget</tt> .
module Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget

-- | Creates a value of <a>DeregisterScalableTarget</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>derServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>derResourceId</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>derScalableDimension</a> - The scalable dimension associated
--   with the scalable target. This string consists of the service
--   namespace, resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   </ul>
deregisterScalableTarget :: ServiceNamespace -> Text -> ScalableDimension -> DeregisterScalableTarget

-- | <i>See:</i> <a>deregisterScalableTarget</a> smart constructor.
data DeregisterScalableTarget

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
derServiceNamespace :: Lens' DeregisterScalableTarget ServiceNamespace

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
derResourceId :: Lens' DeregisterScalableTarget Text

-- | The scalable dimension associated with the scalable target. This
--   string consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
derScalableDimension :: Lens' DeregisterScalableTarget ScalableDimension

-- | Creates a value of <a>DeregisterScalableTargetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dstrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deregisterScalableTargetResponse :: Int -> DeregisterScalableTargetResponse

-- | <i>See:</i> <a>deregisterScalableTargetResponse</a> smart constructor.
data DeregisterScalableTargetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dstrsResponseStatus :: Lens' DeregisterScalableTargetResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTarget
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DeregisterScalableTarget.DeregisterScalableTargetResponse


-- | Deletes the specified Application Auto Scaling scaling policy.
--   
--   Deleting a policy deletes the underlying alarm action, but does not
--   delete the CloudWatch alarm associated with the scaling policy, even
--   if it no longer has an associated action.
--   
--   To create a scaling policy or update an existing one, see
--   <tt>PutScalingPolicy</tt> .
module Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy

-- | Creates a value of <a>DeleteScalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dspPolicyName</a> - The name of the scaling policy.</li>
--   <li><a>dspServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>dspResourceId</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>dspScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   </ul>
deleteScalingPolicy :: Text -> ServiceNamespace -> Text -> ScalableDimension -> DeleteScalingPolicy

-- | <i>See:</i> <a>deleteScalingPolicy</a> smart constructor.
data DeleteScalingPolicy

-- | The name of the scaling policy.
dspPolicyName :: Lens' DeleteScalingPolicy Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
dspServiceNamespace :: Lens' DeleteScalingPolicy ServiceNamespace

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
dspResourceId :: Lens' DeleteScalingPolicy Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
dspScalableDimension :: Lens' DeleteScalingPolicy ScalableDimension

-- | Creates a value of <a>DeleteScalingPolicyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteScalingPolicyResponse :: Int -> DeleteScalingPolicyResponse

-- | <i>See:</i> <a>deleteScalingPolicyResponse</a> smart constructor.
data DeleteScalingPolicyResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsprsResponseStatus :: Lens' DeleteScalingPolicyResponse Int
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse
instance GHC.Generics.Generic Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Data.Data.Data Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance GHC.Show.Show Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance GHC.Read.Read Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance GHC.Classes.Eq Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Network.AWS.Types.AWSRequest Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Data.Hashable.Class.Hashable Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Network.AWS.Data.Path.ToPath Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Network.AWS.Data.Query.ToQuery Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicy
instance Control.DeepSeq.NFData Network.AWS.ApplicationAutoScaling.DeleteScalingPolicy.DeleteScalingPolicyResponse


-- | With Application Auto Scaling, you can automatically scale your AWS
--   resources. The experience similar to that of <a>Auto Scaling</a> . You
--   can use Application Auto Scaling to accomplish the following tasks:
--   
--   <ul>
--   <li>Define scaling policies to automatically scale your AWS
--   resources</li>
--   <li>Scale your resources in response to CloudWatch alarms</li>
--   <li>View the history of your scaling events</li>
--   </ul>
--   
--   Application Auto Scaling can scale the following AWS resources:
--   
--   <ul>
--   <li>Amazon ECS services. For more information, see <a>Service Auto
--   Scaling</a> in the <i>Amazon EC2 Container Service Developer Guide</i>
--   .</li>
--   <li>Amazon EC2 Spot fleets. For more information, see <a>Automatic
--   Scaling for Spot Fleet</a> in the <i>Amazon EC2 User Guide</i> .</li>
--   <li>Amazon EMR clusters. For more information, see <a>Using Automatic
--   Scaling in Amazon EMR</a> in the <i>Amazon EMR Management Guide</i>
--   .</li>
--   </ul>
--   
--   For a list of supported regions, see <a>AWS Regions and Endpoints:
--   Application Auto Scaling</a> in the <i>AWS General Reference</i> .
module Network.AWS.ApplicationAutoScaling

-- | API version <tt>2016-02-06</tt> of the Amazon Application Auto Scaling
--   SDK configuration.
applicationAutoScaling :: Service

-- | An exception was thrown for a validation issue. Review the available
--   parameters for the API request.
_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Failed access to resources caused an exception. This exception
--   currently only applies to <tt>DescribeScalingPolicies</tt> . It is
--   thrown when Application Auto Scaling is unable to retrieve the alarms
--   associated with a scaling policy due to a client error, for example,
--   if the role ARN specified for a scalable target does not have the
--   proper permissions to call the CloudWatch <a>DescribeAlarms</a> API
--   operation on behalf of your account.
_FailedResourceAccessException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The next token supplied was invalid.
_InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Concurrent updates caused an exception, for example, if you request an
--   update to an Application Auto Scaling resource that already has a
--   pending update.
_ConcurrentUpdateException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The service encountered an internal error.
_InternalServiceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified object could not be found. For any <tt>Put</tt> or
--   <tt>Register</tt> API operation, which depends on the existence of a
--   scalable target, this exception is thrown if the scalable target with
--   the specified service namespace, resource ID, and scalable dimension
--   does not exist. For any <tt>Delete</tt> or <tt>Deregister</tt> API
--   operation, this exception is thrown if the resource that is to be
--   deleted or deregistered cannot be found.
_ObjectNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your account exceeded a limit. This exception is thrown when a
--   per-account resource limit is exceeded. For more information, see
--   <a>Application Auto Scaling Limits</a> .
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
data AdjustmentType
ChangeInCapacity :: AdjustmentType
ExactCapacity :: AdjustmentType
PercentChangeInCapacity :: AdjustmentType
data MetricAggregationType
Average :: MetricAggregationType
Maximum :: MetricAggregationType
Minimum :: MetricAggregationType
data PolicyType
StepScaling :: PolicyType
data ScalableDimension
EC2SpotFleetRequestTargetCapacity :: ScalableDimension
EcsServiceDesiredCount :: ScalableDimension
ElasticmapreduceInstancegroupInstanceCount :: ScalableDimension
data ScalingActivityStatusCode
Failed :: ScalingActivityStatusCode
InProgress :: ScalingActivityStatusCode
Overridden :: ScalingActivityStatusCode
Pending :: ScalingActivityStatusCode
Successful :: ScalingActivityStatusCode
Unfulfilled :: ScalingActivityStatusCode
data ServiceNamespace
EC2 :: ServiceNamespace
Ecs :: ServiceNamespace
Elasticmapreduce :: ServiceNamespace

-- | Represents a CloudWatch alarm associated with a scaling policy.
--   
--   <i>See:</i> <a>alarm</a> smart constructor.
data Alarm

-- | Creates a value of <a>Alarm</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAlarmName</a> - The name of the alarm.</li>
--   <li><a>aAlarmARN</a> - The Amazon Resource Name (ARN) of the
--   alarm.</li>
--   </ul>
alarm :: Text -> Text -> Alarm

-- | The name of the alarm.
aAlarmName :: Lens' Alarm Text

-- | The Amazon Resource Name (ARN) of the alarm.
aAlarmARN :: Lens' Alarm Text

-- | Represents a scalable target.
--   
--   <i>See:</i> <a>scalableTarget</a> smart constructor.
data ScalableTarget

-- | Creates a value of <a>ScalableTarget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>stServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>stResourceId</a> - The identifier of the resource associated
--   with the scalable target. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>stScalableDimension</a> - The scalable dimension associated
--   with the scalable target. This string consists of the service
--   namespace, resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>stMinCapacity</a> - The minimum value to scale to in response
--   to a scale in event.</li>
--   <li><a>stMaxCapacity</a> - The maximum value to scale to in response
--   to a scale out event.</li>
--   <li><a>stRoleARN</a> - The ARN of an IAM role that allows Application
--   Auto Scaling to modify the scalable target on your behalf.</li>
--   <li><a>stCreationTime</a> - The Unix timestamp for when the scalable
--   target was created.</li>
--   </ul>
scalableTarget :: ServiceNamespace -> Text -> ScalableDimension -> Int -> Int -> Text -> UTCTime -> ScalableTarget

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
stServiceNamespace :: Lens' ScalableTarget ServiceNamespace

-- | The identifier of the resource associated with the scalable target.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
stResourceId :: Lens' ScalableTarget Text

-- | The scalable dimension associated with the scalable target. This
--   string consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
stScalableDimension :: Lens' ScalableTarget ScalableDimension

-- | The minimum value to scale to in response to a scale in event.
stMinCapacity :: Lens' ScalableTarget Int

-- | The maximum value to scale to in response to a scale out event.
stMaxCapacity :: Lens' ScalableTarget Int

-- | The ARN of an IAM role that allows Application Auto Scaling to modify
--   the scalable target on your behalf.
stRoleARN :: Lens' ScalableTarget Text

-- | The Unix timestamp for when the scalable target was created.
stCreationTime :: Lens' ScalableTarget UTCTime

-- | Represents a scaling activity.
--   
--   <i>See:</i> <a>scalingActivity</a> smart constructor.
data ScalingActivity

-- | Creates a value of <a>ScalingActivity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saStatusMessage</a> - A simple message about the current status
--   of the scaling activity.</li>
--   <li><a>saEndTime</a> - The Unix timestamp for when the scaling
--   activity ended.</li>
--   <li><a>saDetails</a> - The details about the scaling activity.</li>
--   <li><a>saActivityId</a> - The unique identifier of the scaling
--   activity.</li>
--   <li><a>saServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>saResourceId</a> - The identifier of the resource associated
--   with the scaling activity. This string consists of the resource type
--   and unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>saScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>saDescription</a> - A simple description of what action the
--   scaling activity intends to accomplish.</li>
--   <li><a>saCause</a> - A simple description of what caused the scaling
--   activity to happen.</li>
--   <li><a>saStartTime</a> - The Unix timestamp for when the scaling
--   activity began.</li>
--   <li><a>saStatusCode</a> - Indicates the status of the scaling
--   activity.</li>
--   </ul>
scalingActivity :: Text -> ServiceNamespace -> Text -> ScalableDimension -> Text -> Text -> UTCTime -> ScalingActivityStatusCode -> ScalingActivity

-- | A simple message about the current status of the scaling activity.
saStatusMessage :: Lens' ScalingActivity (Maybe Text)

-- | The Unix timestamp for when the scaling activity ended.
saEndTime :: Lens' ScalingActivity (Maybe UTCTime)

-- | The details about the scaling activity.
saDetails :: Lens' ScalingActivity (Maybe Text)

-- | The unique identifier of the scaling activity.
saActivityId :: Lens' ScalingActivity Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
saServiceNamespace :: Lens' ScalingActivity ServiceNamespace

-- | The identifier of the resource associated with the scaling activity.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
saResourceId :: Lens' ScalingActivity Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
saScalableDimension :: Lens' ScalingActivity ScalableDimension

-- | A simple description of what action the scaling activity intends to
--   accomplish.
saDescription :: Lens' ScalingActivity Text

-- | A simple description of what caused the scaling activity to happen.
saCause :: Lens' ScalingActivity Text

-- | The Unix timestamp for when the scaling activity began.
saStartTime :: Lens' ScalingActivity UTCTime

-- | Indicates the status of the scaling activity.
saStatusCode :: Lens' ScalingActivity ScalingActivityStatusCode

-- | Represents a scaling policy.
--   
--   <i>See:</i> <a>scalingPolicy</a> smart constructor.
data ScalingPolicy

-- | Creates a value of <a>ScalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spStepScalingPolicyConfiguration</a> - The configuration for
--   the step scaling policy.</li>
--   <li><a>spAlarms</a> - The CloudWatch alarms associated with the
--   scaling policy.</li>
--   <li><a>spPolicyARN</a> - The Amazon Resource Name (ARN) of the scaling
--   policy.</li>
--   <li><a>spPolicyName</a> - The name of the scaling policy.</li>
--   <li><a>spServiceNamespace</a> - The namespace of the AWS service. For
--   more information, see <a>AWS Service Namespaces</a> in the <i>Amazon
--   Web Services General Reference</i> .</li>
--   <li><a>spResourceId</a> - The identifier of the resource associated
--   with the scaling policy. This string consists of the resource type and
--   unique identifier. * ECS service - The resource type is
--   <tt>service</tt> and the unique identifier is the cluster name and
--   service name. Example: <tt>service<i>default</i>sample-webapp</tt> . *
--   Spot fleet request - The resource type is <tt>spot-fleet-request</tt>
--   and the unique identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .</li>
--   <li><a>spScalableDimension</a> - The scalable dimension. This string
--   consists of the service namespace, resource type, and scaling
--   property. * <tt>ecs:service:DesiredCount</tt> - The desired task count
--   of an ECS service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> -
--   The target capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.</li>
--   <li><a>spPolicyType</a> - The scaling policy type.</li>
--   <li><a>spCreationTime</a> - The Unix timestamp for when the scaling
--   policy was created.</li>
--   </ul>
scalingPolicy :: Text -> Text -> ServiceNamespace -> Text -> ScalableDimension -> PolicyType -> UTCTime -> ScalingPolicy

-- | The configuration for the step scaling policy.
spStepScalingPolicyConfiguration :: Lens' ScalingPolicy (Maybe StepScalingPolicyConfiguration)

-- | The CloudWatch alarms associated with the scaling policy.
spAlarms :: Lens' ScalingPolicy [Alarm]

-- | The Amazon Resource Name (ARN) of the scaling policy.
spPolicyARN :: Lens' ScalingPolicy Text

-- | The name of the scaling policy.
spPolicyName :: Lens' ScalingPolicy Text

-- | The namespace of the AWS service. For more information, see <a>AWS
--   Service Namespaces</a> in the <i>Amazon Web Services General
--   Reference</i> .
spServiceNamespace :: Lens' ScalingPolicy ServiceNamespace

-- | The identifier of the resource associated with the scaling policy.
--   This string consists of the resource type and unique identifier. * ECS
--   service - The resource type is <tt>service</tt> and the unique
--   identifier is the cluster name and service name. Example:
--   <tt>service<i>default</i>sample-webapp</tt> . * Spot fleet request -
--   The resource type is <tt>spot-fleet-request</tt> and the unique
--   identifier is the Spot fleet request ID. Example:
--   <tt>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</tt> .
--   * EMR cluster - The resource type is <tt>instancegroup</tt> and the
--   unique identifier is the cluster ID and instance group ID. Example:
--   <tt>instancegroup<i>j-2EEZNYKUA1NTV</i>ig-1791Y4E1L8YI0</tt> .
spResourceId :: Lens' ScalingPolicy Text

-- | The scalable dimension. This string consists of the service namespace,
--   resource type, and scaling property. *
--   <tt>ecs:service:DesiredCount</tt> - The desired task count of an ECS
--   service. * <tt>ec2:spot-fleet-request:TargetCapacity</tt> - The target
--   capacity of a Spot fleet request. *
--   <tt>elasticmapreduce:instancegroup:InstanceCount</tt> - The instance
--   count of an EMR Instance Group.
spScalableDimension :: Lens' ScalingPolicy ScalableDimension

-- | The scaling policy type.
spPolicyType :: Lens' ScalingPolicy PolicyType

-- | The Unix timestamp for when the scaling policy was created.
spCreationTime :: Lens' ScalingPolicy UTCTime

-- | Represents a step adjustment for a
--   <a>StepScalingPolicyConfiguration</a> . 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:
--   
--   <ul>
--   <li>To trigger the adjustment 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.</li>
--   <li>To trigger the adjustment 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.</li>
--   </ul>
--   
--   There are a few rules for the step adjustments for your step policy:
--   
--   <ul>
--   <li>The ranges of your step adjustments can't overlap or have a
--   gap.</li>
--   <li>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.</li>
--   <li>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.</li>
--   <li>The upper and lower bound can't be null in the same step
--   adjustment.</li>
--   </ul>
--   
--   <i>See:</i> <a>stepAdjustment</a> smart constructor.
data StepAdjustment

-- | Creates a value of <a>StepAdjustment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saMetricIntervalLowerBound</a> - 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.</li>
--   <li><a>saMetricIntervalUpperBound</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.</li>
--   <li><a>saScalingAdjustment</a> - The amount by which to scale, based
--   on the specified adjustment type. A positive value adds to the current
--   scalable dimension while a negative number removes from the current
--   scalable dimension.</li>
--   </ul>
stepAdjustment :: Int -> StepAdjustment

-- | 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)

-- | 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)

-- | The amount by which to scale, based on the specified adjustment type.
--   A positive value adds to the current scalable dimension while a
--   negative number removes from the current scalable dimension.
saScalingAdjustment :: Lens' StepAdjustment Int

-- | Represents a step scaling policy configuration.
--   
--   <i>See:</i> <a>stepScalingPolicyConfiguration</a> smart constructor.
data StepScalingPolicyConfiguration

-- | Creates a value of <a>StepScalingPolicyConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sspcStepAdjustments</a> - A set of adjustments that enable you
--   to scale based on the size of the alarm breach.</li>
--   <li><a>sspcAdjustmentType</a> - The adjustment type, which specifies
--   how the <tt>ScalingAdjustment</tt> parameter in a
--   <a>StepAdjustment</a> is interpreted.</li>
--   <li><a>sspcCooldown</a> - The amount of time, in seconds, after a
--   scaling activity completes where previous trigger-related scaling
--   activities can influence future scaling events. For scale out
--   policies, while <tt>Cooldown</tt> is in effect, the capacity that has
--   been added by the previous scale out event that initiated the
--   <tt>Cooldown</tt> is calculated as part of the desired capacity for
--   the next scale out. The intention is to continuously (but not
--   excessively) scale out. For example, an alarm triggers a step scaling
--   policy to scale out an Amazon ECS service by 2 tasks, the scaling
--   activity completes successfully, and a <tt>Cooldown</tt> period of 5
--   minutes starts. During the <tt>Cooldown</tt> period, if the alarm
--   triggers the same policy again but at a more aggressive step
--   adjustment to scale out the service by 3 tasks, the 2 tasks that were
--   added in the previous scale out event are considered part of that
--   capacity and only 1 additional task is added to the desired count. For
--   scale in policies, the <tt>Cooldown</tt> period is used to block
--   subsequent scale in requests until it has expired. The intention is to
--   scale in conservatively to protect your application's availability.
--   However, if another alarm triggers a scale out policy during the
--   <tt>Cooldown</tt> period after a scale-in, Application Auto Scaling
--   scales out your scalable target immediately.</li>
--   <li><a>sspcMetricAggregationType</a> - The aggregation type for the
--   CloudWatch metrics. Valid values are <tt>Minimum</tt> ,
--   <tt>Maximum</tt> , and <tt>Average</tt> .</li>
--   <li><a>sspcMinAdjustmentMagnitude</a> - The minimum number to adjust
--   your scalable dimension as a result of a scaling activity. If the
--   adjustment type is <tt>PercentChangeInCapacity</tt> , the scaling
--   policy changes the scalable dimension of the scalable target by this
--   amount.</li>
--   </ul>
stepScalingPolicyConfiguration :: StepScalingPolicyConfiguration

-- | A set of adjustments that enable you to scale based on the size of the
--   alarm breach.
sspcStepAdjustments :: Lens' StepScalingPolicyConfiguration [StepAdjustment]

-- | The adjustment type, which specifies how the
--   <tt>ScalingAdjustment</tt> parameter in a <a>StepAdjustment</a> is
--   interpreted.
sspcAdjustmentType :: Lens' StepScalingPolicyConfiguration (Maybe AdjustmentType)

-- | The amount of time, in seconds, after a scaling activity completes
--   where previous trigger-related scaling activities can influence future
--   scaling events. For scale out policies, while <tt>Cooldown</tt> is in
--   effect, the capacity that has been added by the previous scale out
--   event that initiated the <tt>Cooldown</tt> is calculated as part of
--   the desired capacity for the next scale out. The intention is to
--   continuously (but not excessively) scale out. For example, an alarm
--   triggers a step scaling policy to scale out an Amazon ECS service by 2
--   tasks, the scaling activity completes successfully, and a
--   <tt>Cooldown</tt> period of 5 minutes starts. During the
--   <tt>Cooldown</tt> period, if the alarm triggers the same policy again
--   but at a more aggressive step adjustment to scale out the service by 3
--   tasks, the 2 tasks that were added in the previous scale out event are
--   considered part of that capacity and only 1 additional task is added
--   to the desired count. For scale in policies, the <tt>Cooldown</tt>
--   period is used to block subsequent scale in requests until it has
--   expired. The intention is to scale in conservatively to protect your
--   application's availability. However, if another alarm triggers a scale
--   out policy during the <tt>Cooldown</tt> period after a scale-in,
--   Application Auto Scaling scales out your scalable target immediately.
sspcCooldown :: Lens' StepScalingPolicyConfiguration (Maybe Int)

-- | The aggregation type for the CloudWatch metrics. Valid values are
--   <tt>Minimum</tt> , <tt>Maximum</tt> , and <tt>Average</tt> .
sspcMetricAggregationType :: Lens' StepScalingPolicyConfiguration (Maybe MetricAggregationType)

-- | The minimum number to adjust your scalable dimension as a result of a
--   scaling activity. If the adjustment type is
--   <tt>PercentChangeInCapacity</tt> , the scaling policy changes the
--   scalable dimension of the scalable target by this amount.
sspcMinAdjustmentMagnitude :: Lens' StepScalingPolicyConfiguration (Maybe Int)
