Provides an Application AutoScaling Policy resource.
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 } }
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 = "service/clusterName/serviceName" scalable_dimension = "ecs:service:DesiredCount" service_namespace = "ecs" step_scaling_policy_configuration { adjustment_type = "ChangeInCapacity" cooldown = 60 metric_aggregation_type = "Maximum" step_adjustment { metric_interval_upper_bound = 0 scaling_adjustment = -1 } } depends_on = ["aws_appautoscaling_target.ecs_target"] }
resource "aws_ecs_service" "ecs_service" { name = "serviceName" cluster = "clusterName" task_definition = "taskDefinitionFamily:1" desired_count = 2 lifecycle { ignore_changes = ["desired_count"] } }
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 } }
The following arguments are supported:
name
- (Required) The name of the policy. policy_type
- (Optional) For DynamoDB, only TargetTrackingScaling
is supported. For Amazon ECS, Spot Fleet, and Amazon RDS, both StepScaling
and TargetTrackingScaling
are supported. For any other service, only StepScaling
is supported. Defaults to StepScaling
. resource_id
- (Required) The resource type and unique identifier string for the resource associated with the scaling policy. Documentation can be found in the ResourceId
parameter at: AWS Application Auto Scaling API Reference scalable_dimension
- (Required) The scalable dimension of the scalable target. Documentation can be found in the ScalableDimension
parameter at: AWS Application Auto Scaling API Reference service_namespace
- (Required) The AWS service namespace of the scalable target. Documentation can be found in the ServiceNamespace
parameter at: AWS Application Auto Scaling API Reference step_scaling_policy_configuration
- (Optional) Step scaling policy configuration, requires policy_type = "StepScaling"
(default). See supported fields below. target_tracking_scaling_policy_configuration
- (Optional) A target tracking policy, requires policy_type = "TargetTrackingScaling"
. See supported fields below. step_scaling_policy_configuration
adjustment_type
- (Required) Specifies whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity
, ExactCapacity
, and PercentChangeInCapacity
. 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: 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 is false
. 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. adjustment_type
- The scaling policy's adjustment type. arn
- The ARN assigned by AWS to the scaling policy. name
- The scaling policy's name. policy_type
- The scaling policy's type.
© 2018 HashiCorpLicensed under the MPL 2.0 License.
https://www.terraform.io/docs/providers/aws/r/appautoscaling_policy.html