» Resource: aws_appautoscaling_policy
Provides an Application AutoScaling Policy resource.
» Example Usage
» DynamoDB Table Autoscaling
resource "aws_appautoscaling_target" "dynamodb_table_read_target" {
max_capacity = 100
min_capacity = 5
resource_id = "table/tableName"
role_arn = "${data.aws_iam_role.DynamoDBAutoscaleRole.arn}"
scalable_dimension = "dynamodb:table:ReadCapacityUnits"
service_namespace = "dynamodb"
}
resource "aws_appautoscaling_policy" "dynamodb_table_read_policy" {
name = "DynamoDBReadCapacityUtilization:${aws_appautoscaling_target.dynamodb_table_read_target.resource_id}"
policy_type = "TargetTrackingScaling"
resource_id = "${aws_appautoscaling_target.dynamodb_table_read_target.resource_id}"
scalable_dimension = "${aws_appautoscaling_target.dynamodb_table_read_target.scalable_dimension}"
service_namespace = "${aws_appautoscaling_target.dynamodb_table_read_target.service_namespace}"
target_tracking_scaling_policy_configuration {
predefined_metric_specification {
predefined_metric_type = "DynamoDBReadCapacityUtilization"
}
target_value = 70
}
}
» ECS Service Autoscaling
resource "aws_appautoscaling_target" "ecs_target" {
max_capacity = 4
min_capacity = 1
resource_id = "service/clusterName/serviceName"
role_arn = "${var.ecs_iam_role}"
scalable_dimension = "ecs:service:DesiredCount"
service_namespace = "ecs"
}
resource "aws_appautoscaling_policy" "ecs_policy" {
name = "scale-down"
policy_type = "StepScaling"
resource_id = "${aws_appautoscaling_target.ecs_target.resource_id}"
scalable_dimension = "${aws_appautoscaling_target.ecs_target.scalable_dimension}"
service_namespace = "${aws_appautoscaling_target.ecs_target.service_namespace}"
step_scaling_policy_configuration {
adjustment_type = "ChangeInCapacity"
cooldown = 60
metric_aggregation_type = "Maximum"
step_adjustment {
metric_interval_upper_bound = 0
scaling_adjustment = -1
}
}
}
» Preserve desired count when updating an autoscaled ECS Service
resource "aws_ecs_service" "ecs_service" {
name = "serviceName"
cluster = "clusterName"
task_definition = "taskDefinitionFamily:1"
desired_count = 2
lifecycle {
ignore_changes = ["desired_count"]
}
}
» Aurora Read Replica Autoscaling
resource "aws_appautoscaling_target" "replicas" {
service_namespace = "rds"
scalable_dimension = "rds:cluster:ReadReplicaCount"
resource_id = "cluster:${aws_rds_cluster.example.id}"
min_capacity = 1
max_capacity = 15
}
resource "aws_appautoscaling_policy" "replicas" {
name = "cpu-auto-scaling"
service_namespace = "${aws_appautoscaling_target.replicas.service_namespace}"
scalable_dimension = "${aws_appautoscaling_target.replicas.scalable_dimension}"
resource_id = "${aws_appautoscaling_target.replicas.resource_id}"
policy_type = "TargetTrackingScaling"
target_tracking_scaling_policy_configuration {
predefined_metric_specification {
predefined_metric_type = "RDSReaderAverageCPUUtilization"
}
target_value = 75
scale_in_cooldown = 300
scale_out_cooldown = 300
}
}
» Argument Reference
The following arguments are supported:
-
name
- (Required) The name of the policy. -
policy_type
- (Optional) For DynamoDB, onlyTargetTrackingScaling
is supported. For Amazon ECS, Spot Fleet, and Amazon RDS, bothStepScaling
andTargetTrackingScaling
are supported. For any other service, onlyStepScaling
is supported. Defaults toStepScaling
. -
resource_id
- (Required) The resource type and unique identifier string for the resource associated with the scaling policy. Documentation can be found in theResourceId
parameter at: AWS Application Auto Scaling API Reference -
scalable_dimension
- (Required) The scalable dimension of the scalable target. Documentation can be found in theScalableDimension
parameter at: AWS Application Auto Scaling API Reference -
service_namespace
- (Required) The AWS service namespace of the scalable target. Documentation can be found in theServiceNamespace
parameter at: AWS Application Auto Scaling API Reference -
step_scaling_policy_configuration
- (Optional) Step scaling policy configuration, requirespolicy_type = "StepScaling"
(default). See supported fields below. -
target_tracking_scaling_policy_configuration
- (Optional) A target tracking policy, requirespolicy_type = "TargetTrackingScaling"
. See supported fields below.
» Nested fields
»
step_scaling_policy_configuration
-
adjustment_type
- (Required) Specifies whether the adjustment is an absolute number or a percentage of the current capacity. Valid values areChangeInCapacity
,ExactCapacity
, andPercentChangeInCapacity
. -
cooldown
- (Required) The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. -
metric_aggregation_type
- (Optional) The aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average". -
min_adjustment_magnitude
- (Optional) The minimum number to adjust your scalable dimension as a result of a scaling activity. If the adjustment type is PercentChangeInCapacity, the scaling policy changes the scalable dimension of the scalable target by this amount. -
step_adjustment
- (Optional) A set of adjustments that manage scaling. These have the following structure:
resource "aws_appautoscaling_policy" "ecs_policy" {
# ...
step_scaling_policy_configuration {
# insert config here
step_adjustment {
metric_interval_lower_bound = 1.0
metric_interval_upper_bound = 2.0
scaling_adjustment = -1
}
step_adjustment {
metric_interval_lower_bound = 2.0
metric_interval_upper_bound = 3.0
scaling_adjustment = 1
}
}
}
-
metric_interval_lower_bound
- (Optional) The lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity. -
metric_interval_upper_bound
- (Optional) The upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as infinity. The upper bound must be greater than the lower bound. -
scaling_adjustment
- (Required) The number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
»
target_tracking_scaling_policy_configuration
-
target_value
- (Required) The target value for the metric. -
disable_scale_in
- (Optional) Indicates whether scale in by the target tracking policy is disabled. If the value is true, scale in is disabled and the target tracking policy won't remove capacity from the scalable resource. Otherwise, scale in is enabled and the target tracking policy can remove capacity from the scalable resource. The default value isfalse
. -
scale_in_cooldown
- (Optional) The amount of time, in seconds, after a scale in activity completes before another scale in activity can start. -
scale_out_cooldown
- (Optional) The amount of time, in seconds, after a scale out activity completes before another scale out activity can start. -
customized_metric_specification
- (Optional) Reserved for future use. See supported fields below. -
predefined_metric_specification
- (Optional) A predefined metric. See supported fields below.
»
customized_metric_specification
-
dimensions
- (Optional) The dimensions of the metric. -
metric_name
- (Required) The name of the metric. -
namespace
- (Required) The namespace of the metric. -
statistic
- (Required) The statistic of the metric. -
unit
- (Optional) The unit of the metric.
»
predefined_metric_specification
-
predefined_metric_type
- (Required) The metric type. -
resource_label
- (Optional) Reserved for future use.
» Attribute Reference
-
arn
- The ARN assigned by AWS to the scaling policy. -
name
- The scaling policy's name. -
policy_type
- The scaling policy's type.
» Import
Application AutoScaling Policy can be imported using the service-namespace
, resource-id
, scalable-dimension
and policy-name
separated by /
.
$ terraform import aws_appautoscaling_policy.test-policy service-namespace/resource-id/scalable-dimension/policy-name