class Aws::ApplicationAutoScaling::Types::TargetTrackingScalingPolicyConfiguration

Represents a target tracking scaling policy configuration to use with Application Auto Scaling.

@note When making an API call, you may pass TargetTrackingScalingPolicyConfiguration

data as a hash:

    {
      target_value: 1.0, # required
      predefined_metric_specification: {
        predefined_metric_type: "DynamoDBReadCapacityUtilization", # required, accepts DynamoDBReadCapacityUtilization, DynamoDBWriteCapacityUtilization, ALBRequestCountPerTarget, RDSReaderAverageCPUUtilization, RDSReaderAverageDatabaseConnections, EC2SpotFleetRequestAverageCPUUtilization, EC2SpotFleetRequestAverageNetworkIn, EC2SpotFleetRequestAverageNetworkOut, SageMakerVariantInvocationsPerInstance, ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization, AppStreamAverageCapacityUtilization, ComprehendInferenceUtilization, LambdaProvisionedConcurrencyUtilization, CassandraReadCapacityUtilization, CassandraWriteCapacityUtilization, KafkaBrokerStorageUtilization, ElastiCachePrimaryEngineCPUUtilization, ElastiCacheReplicaEngineCPUUtilization, ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage
        resource_label: "ResourceLabel",
      },
      customized_metric_specification: {
        metric_name: "MetricName", # required
        namespace: "MetricNamespace", # required
        dimensions: [
          {
            name: "MetricDimensionName", # required
            value: "MetricDimensionValue", # required
          },
        ],
        statistic: "Average", # required, accepts Average, Minimum, Maximum, SampleCount, Sum
        unit: "MetricUnit",
      },
      scale_out_cooldown: 1,
      scale_in_cooldown: 1,
      disable_scale_in: false,
    }

@!attribute [rw] target_value

The target value for the metric. Although this property accepts
numbers of type Double, it won't accept values that are either too
small or too large. Values must be in the range of -2^360 to 2^360.
The value must be a valid number based on the choice of metric. For
example, if the metric is CPU utilization, then the target value is
a percent value that represents how much of the CPU can be used
before scaling out.
@return [Float]

@!attribute [rw] predefined_metric_specification

A predefined metric. You can specify either a predefined metric or a
customized metric.
@return [Types::PredefinedMetricSpecification]

@!attribute [rw] customized_metric_specification

A customized metric. You can specify either a predefined metric or a
customized metric.
@return [Types::CustomizedMetricSpecification]

@!attribute [rw] scale_out_cooldown

The amount of time, in seconds, to wait for a previous scale-out
activity to take effect.

With the *scale-out cooldown period*, the intention is to
continuously (but not excessively) scale out. After Application Auto
Scaling successfully scales out using a target tracking scaling
policy, it starts to calculate the cooldown time. The scaling policy
won't increase the desired capacity again unless either a larger
scale out is triggered or the cooldown period ends. While the
cooldown period is in effect, the capacity added by the initiating
scale-out activity is calculated as part of the desired capacity for
the next scale-out activity.

Application Auto Scaling provides a default value of 600 for Amazon
ElastiCache replication groups and a default value of 300 for the
following scalable targets:

* ECS services

* Spot Fleet requests

* EMR clusters

* AppStream 2.0 fleets

* Aurora DB clusters

* Amazon SageMaker endpoint variants

* Custom resources

For all other scalable targets, the default value is 0:

* DynamoDB tables

* DynamoDB global secondary indexes

* Amazon Comprehend document classification and entity recognizer
  endpoints

* Lambda provisioned concurrency

* Amazon Keyspaces tables

* Amazon MSK broker storage
@return [Integer]

@!attribute [rw] scale_in_cooldown

The amount of time, in seconds, after a scale-in activity completes
before another scale-in activity can start.

With the *scale-in cooldown period*, the intention is to scale in
conservatively to protect your application’s availability, so
scale-in activities are blocked until the cooldown period has
expired. However, if another alarm triggers a scale-out activity
during the scale-in cooldown period, Application Auto Scaling scales
out the target immediately. In this case, the scale-in cooldown
period stops and doesn't complete.

Application Auto Scaling provides a default value of 600 for Amazon
ElastiCache replication groups and a default value of 300 for the
following scalable targets:

* ECS services

* Spot Fleet requests

* EMR clusters

* AppStream 2.0 fleets

* Aurora DB clusters

* Amazon SageMaker endpoint variants

* Custom resources

For all other scalable targets, the default value is 0:

* DynamoDB tables

* DynamoDB global secondary indexes

* Amazon Comprehend document classification and entity recognizer
  endpoints

* Lambda provisioned concurrency

* Amazon Keyspaces tables

* Amazon MSK broker storage
@return [Integer]

@!attribute [rw] disable_scale_in

Indicates whether scale in by the target tracking scaling policy is
disabled. If the value is `true`, scale in is disabled and the
target tracking scaling policy won't remove capacity from the
scalable target. Otherwise, scale in is enabled and the target
tracking scaling policy can remove capacity from the scalable
target. The default value is `false`.
@return [Boolean]

@see docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/TargetTrackingScalingPolicyConfiguration AWS API Documentation

Constants

SENSITIVE