All Products
Search
Document Center

Auto Scaling:CreateScalingRule

Last Updated:Jun 11, 2024

Creates a scaling rule. The purpose of a scaling rule varies based on its type. You can use a scaling rule to trigger a scaling activity or adjust the boundary values for a scaling group. You can call the CreateScalingRule operation to create different types of scaling rules based on your business requirements. For example, if your business requires only automatic adjustment of the boundary values for your scaling group, you can call this operation to create a predictive scaling rule.

Usage notes

Before you call this operation, take note of the following items:

  • If you set AdjustmentType to TotalCapacity, the total number of Elastic Compute Service (ECS) instances or elastic container instances in your scaling group will be adjusted to a specified number when the scaling rule that you create by calling this operation is executed. You must set AdjustmentValue to an integer that is greater than 0.

  • If you set AdjustmentType to QuantityChangeInCapacity or PercentChangeInCapacity, a positive value of AdjustmentValue specifies that a specific number of ECS instances or elastic container instances will be added to your scaling group, and a negative value of AdjustmentValue specifies that a specific number of ECS instances or elastic container instances will be removed from the scaling group.

  • If you set AdjustmentType to PercentChangeInCapacity, Auto Scaling calculates the number of ECS instances or elastic container instances to add or remove by multiplying the current capacity of the scaling group (Total Capacity) by the value of AdjustmentValue divided by 100, rounding off the result to determine the final adjustment count.

  • If you specify a cooldown period for a scaling rule, the cooldown period of the scaling rule takes effect after you execute the scaling rule. If you do not specify a cooldown period for a scaling rule, the value of DefaultCooldown of the scaling group takes effect after you execute the scaling rule.

  • You can create only a limited number of scaling rules for a scaling group. For more information, see Limits.

  • The following API operations may use the unique identifier of a scaling rule (ScalingRuleAri) that is returned after you call the CreateScalingRule operation:

    • ExecuteScalingRule: You can call this operation to manually execute a scaling rule. In this operation, you can set ScalingRuleAri to the unique identifier of the scaling rule that you want to execute.

    • CreateScheduledTask: You can call this operation to create a scheduled task for a scaling rule. In this operation, you can set ScalingRuleAri to the unique identifier of the scaling rule for which you want to create a scheduled task.

Debugging

OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.

Request parameters

Parameter

Type

Required

Example

Description

Action

String

Yes

CreateScalingRule

The operation that you want to perform. Set the value to CreateScalingRule.

ScalingGroupId

String

Yes

asg-bp1ffogfdauy0jw0****

The ID of the scaling group for which you want to create the scaling rule.

ScalingRuleName

String

No

scalingrule****

The name of the scaling rule. The name must be 2 to 64 characters in length, and can contain letters, digits, underscores (_), hyphens (-), and periods (.). The name must start with a letter or a digit.

The name of each scaling rule must be unique within the same account and region.

Note

If you leave this parameter empty, the scaling rule ID is used.

Cooldown

Integer

No

60

The cooldown period of the scaling rule. This parameter is available only if you set ScalingRuleType to SimpleScalingRule. Valid values: 0 to 86400. Unit: seconds.

You can leave this parameter empty.

MinAdjustmentMagnitude

Integer

No

1

The minimum number of instances that must be scaled. This parameter takes effect if you set ScalingRuleType to SimpleScalingRule or StepScalingRule, and AdjustmentType to PercentChangeInCapacity.

AdjustmentType

String

No

QuantityChangeInCapacity

The adjustment method of the scaling rule. If you set ScalingRuleType to SimpleScalingRule or StepScalingRule, you must specify this parameter. Valid values:

  • QuantityChangeInCapacity: adds the specified number of ECS instances to or removes the specified number of ECS instances from the scaling group.

  • PercentChangeInCapacity: adds the specified percentage of ECS instances to or removes the specified percentage of ECS instances from the scaling group.

  • TotalCapacity: adjusts the number of ECS instances in the scaling group to a specified number.

AdjustmentValue

Integer

No

100

The number of instances that must be scaled based on the scaling rule. If you set ScalingRuleType to SimpleScalingRule or StepScalingRule, you must specify this parameter. Regardless of the scenario, the maximum number of ECS instances that can be added or removed in a single scaling operation is 1000. The value range of this parameter varies based on the value of AdjustmentType.

  • Valid values if you set AdjustmentType to QuantityChangeInCapacity: -1000 to 1000.

  • Valid values if you set AdjustmentType to PercentChangeInCapacity: -100 to 10000.

  • Valid values if you set AdjustmentType to TotalCapacity: 0 to 2000.

ScalingRuleType

String

No

SimpleScalingRule

The type of the scaling rule. Valid values:

  • SimpleScalingRule: a simple scaling rule. Once a simple scaling rule is executed, Auto Scaling adjusts the number of ECS instances or elastic container instances in the scaling group based on the values of AdjustmentType and AdjustmentValue.

  • TargetTrackingScalingRule: a target tracking scaling rule. Once a target tracking scaling rule is executed, Auto Scaling dynamically calculates the number of ECS instances or elastic container instances to scale based on the predefined metric (MetricName) and attempts to maintain the metric value close to the specified target value (TargetValue).

  • StepScalingRule: a step scaling rule. Once a step scaling rule is executed, Auto Scaling scales instances step by step based on the predefined thresholds and metric values.

  • PredictiveScalingRule: a predictive scaling rule. Once a predictive scaling rule is executed, Auto Scaling analyzes the historical monitoring data based on the machine learning technology and predicts the trends of metric data. Auto Scaling also creates scheduled tasks to enable dynamic adjustment of the boundary values for the scaling group.

Default value: SimpleScalingRule.

EstimatedInstanceWarmup

Integer

No

300

The warmup period of instances to scale. You can specify this parameter only for simple scaling rules and step scaling rules. Auto Scaling adds ECS instances that are in the Warmup state to a scaling group but does not report monitoring data of the ECS instances to CloudMonitor during the warmup period.

Note

When Auto Scaling calculates the number of ECS instances to scale, ECS instances in the Warmup state are not counted towards the current capacity of the scaling group.

Valid values: 0 to 86400. Unit: seconds.

Default value: 300.

MetricName

String

No

CpuUtilization

The predefined metric of the scaling rule. If you set ScalingRuleType to TargetTrackingScalingRule or PredictiveScalingRule, you must specify this parameter.

Valid values if you set ScalingRuleType to TargetTrackingScalingRule:

  • CpuUtilization: the average CPU utilization.

  • IntranetTx: the average outbound traffic over an internal network.

  • IntranetRx: the average inbound traffic over an internal network.

  • VpcInternetTx: the average outbound traffic from a virtual private cloud (VPC) to the Internet.

  • VpcInternetRx: the average inbound traffic from the Internet to a VPC.

  • MemoryUtilization: the memory usage.

  • LoadBalancerRealServerAverageQps: the queries per second (QPS) per Application Load Balancer (ALB) server group.

Valid values if you set ScalingRuleType to PredictiveScalingRule:

  • CpuUtilization: the average CPU utilization.

  • IntranetRx: the average inbound traffic over an internal network.

  • IntranetTx: the average outbound traffic over an internal network.

TargetValue

Float

No

0.125

The target value. If you set ScalingRuleType to TargetTrackingScalingRule or PredictiveScalingRule, you must specify this parameter. The value must be greater than 0 and can have a maximum of three decimal places.

DisableScaleIn

Boolean

No

false

Specifies whether to disable scale-in. This parameter is available if you set ScalingRuleType to TargetTrackingScalingRule.

Default value: false.

ScaleInEvaluationCount

Integer

No

15

The number of consecutive times that the event-triggered task for scale-in purposes must meet the threshold conditions before an alert is triggered. After a target tracking scaling rule is created, an event-triggered task is automatically created and associated with the target tracking scaling rule.

Default value: 15.

ScaleOutEvaluationCount

Integer

No

3

The number of consecutive times that the event-triggered task created for scale-out purposes must meet the threshold conditions before an alert is triggered. After a target tracking scaling rule is created, an event-triggered task is automatically created and associated with the target tracking scaling rule.

Default value: 3.

PredictiveScalingMode

String

No

PredictAndScale

The mode of the predictive scaling rule. Valid values:

  • PredictAndScale: provides predictions and creates prediction tasks.

  • PredictOnly: provides predictions but does not create prediction tasks.

Default value: PredictAndScale.

PredictiveValueBehavior

String

No

MaxOverridePredictiveValue

The action on the predicted maximum value. Valid values:

  • MaxOverridePredictiveValue: uses the initial maximum capacity as the maximum value for prediction tasks if the predicted value is greater than the initial maximum capacity.

  • PredictiveValueOverrideMax: uses the predicted value as the maximum value for prediction tasks if the predicted value is greater than the initial maximum capacity.

  • PredictiveValueOverrideMaxWithBuffer: increases the predicted value by a ratio that is specified by PredictiveValueBuffer, and uses the increased value as the maximum value for prediction tasks if the predicted value increased by the ratio is greater than the initial maximum capacity.

Default value: MaxOverridePredictiveValue.

PredictiveValueBuffer

Integer

No

50

The ratio based on which the predicted value is increased when you set PredictiveValueBehavior to PredictiveValueOverrideMaxWithBuffer. If the predicted value increased by this ratio is greater than the initial maximum capacity, the increased value is used as the maximum value for prediction tasks. Valid values: 0 to 100.

Default value: 0.

PredictiveTaskBufferTime

Integer

No

30

The amount of buffer time before prediction tasks are executed. By default, all prediction tasks that are automatically created based on a predictive scaling rule are executed on the hour. You can specify a buffer time for resource preparation before prediction tasks are executed. Valid values: 0 to 60. Unit: minutes.

Default value: 0.

InitialMaxSize

Integer

No

100

The maximum number of ECS instances that can be contained in the scaling group. If you specify InitialMaxSize, you must specify PredictiveValueBehavior.

The default value of this parameter is the value of MaxSize.

StepAdjustment.N.MetricIntervalUpperBound

Float

No

5.0

The upper limit of a step adjustment. This parameter takes effect only if you set ScalingRuleType to StepScalingRule. Valid values: -9.999999E18 to 9.999999E18.

StepAdjustment.N.ScalingAdjustment

Integer

No

1

The number of ECS instances that you want to scale in each step adjustment. This parameter is available only if you set ScalingRuleType to StepScalingRule.

StepAdjustment.N.MetricIntervalLowerBound

Float

No

1.0

The lower limit that is specified in a step adjustment. This parameter takes effect only if you set ScalingRuleType to StepScalingRule. Valid values: -9.999999E18 to 9.999999E18.

RegionId

String

No

cn-hangzhou

The region ID of the scaling group.

AlarmDimension.N.DimensionKey

String

No

rulePool

The dimension key of the metric.

AlarmDimension.N.DimensionValue

String

No

sgp-l1cbirz451yxu2****

The dimension value of the metric.

Response parameters

Parameter

Type

Example

Description

ScalingRuleAri

String

ari:acs:ess:cn-hangzhou:140692647406****:scalingrule/asr-bp1dvirgwkoowxk7****

The unique identifier of the scaling rule.

RequestId

String

473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

The request ID.

ScalingRuleId

String

asr-bp1dvirgwkoowxk7****

The ID of the scaling rule, which is generated by the system and is globally unique.

Examples

Sample requests

http(s)://ess.aliyuncs.com/?Action=CreateScalingRule
&ScalingGroupId=asg-bp1ffogfdauy0jw0****
&ScalingRuleName=scalingrule****
&Cooldown=60
&MinAdjustmentMagnitude=1
&AdjustmentType=QuantityChangeInCapacity
&AdjustmentValue=100
&ScalingRuleType=SimpleScalingRule
&EstimatedInstanceWarmup=300
&MetricName=CpuUtilization
&TargetValue=0.125
&DisableScaleIn=false
&ScaleInEvaluationCount=15
&ScaleOutEvaluationCount=3
&PredictiveScalingMode=PredictAndScale
&PredictiveValueBehavior=MaxOverridePredictiveValue
&PredictiveValueBuffer=50
&PredictiveTaskBufferTime=30
&InitialMaxSize=100
&StepAdjustment=[{"MetricIntervalUpperBound":5.0,"ScalingAdjustment":1,"MetricIntervalLowerBound":1.0}]
&RegionId=cn-hangzhou
&AlarmDimension=[{"DimensionKey":"rulePool","DimensionValue":"sgp-l1cbirz451yxu2****"}]
&<Common request parameters>

Sample success responses

XML format

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateScalingRuleResponse>
    <ScalingRuleAri>ari:acs:ess:cn-hangzhou:140692647406****:scalingrule/asr-bp1dvirgwkoowxk7****</ScalingRuleAri>
    <RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
    <ScalingRuleId>asr-bp1dvirgwkoowxk7****</ScalingRuleId>
</CreateScalingRuleResponse>

JSON format

HTTP/1.1 200 OK
Content-Type:application/json

{
  "ScalingRuleAri" : "ari:acs:ess:cn-hangzhou:140692647406****:scalingrule/asr-bp1dvirgwkoowxk7****",
  "RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
  "ScalingRuleId" : "asr-bp1dvirgwkoowxk7****"
}

Error codes

For a list of error codes, see Service error codes.

HTTP status code

Error code

Error message

Description

404

InvalidScalingGroupId.NotFound

The specified scaling group does not exist.

The specified scaling group does not exist within your Alibaba Cloud account.

400

InvalidScalingRuleName.Duplicate

The specified value of parameter <parameter name> is duplicated.

The name of the scaling rule already exists.

400

QuotaExceeded.ScalingRule

Scaling rule quota exceeded in the specified scaling group.

The maximum number of scaling rules in the current scaling group has been reached.

400

TargetTrackingScalingRule.UnsupportedMetric

Specific metric is not supported for target tracking scaling rule.

The target tracking scaling rule does not support the specified metric.

400

TargetTrackingScalingRule.DumplicateMetric

Only one TargetTrackingScaling rule for a given metric specification is allowed.

The metric is already specified for another target tracking scaling rule in the scaling group.

400

InvalidMinAdjustmentMagnitudeMismatchAdjustmentType

MinAdjustmentMagnitude is not supported by the specified adjustment type.

MinAdjustmentMagnitude does not support the adjustment method of the scaling rule.

400

InvalidStepAdjustments.MultipleNullUpperBound

At most one StepAdjustment may have an unspecified upper bound.

A step adjustment that does not have an upper limit already exists.

400

InvalidStepAdjustments.MultipleNullLowerBound

At most one StepAdjustment may have an unspecified lower bound.

A step adjustment that does not have a lower limit already exists.

400

InvalidStepAdjustments.NoNullLowerBound

There must be a StepAdjustment with an unspecified lower bound when one StepAdjustment has a negative lower bound.

A step adjustment has a negative lower limit, but no step adjustment without a lower limit exists.

400

InvalidStepAdjustments.NoNullUpperBound

There must be a StepAdjustment with an unspecified upper bound when one StepAdjustment has a positive upper bound.

A step adjustment has a positive upper limit, but no step adjustment without an upper limit exists.

400

InvalidStepAdjustments.Gap

StepAdjustment intervals can not have gaps between them.

The step adjustments have gaps.

400

InvalidStepAdjustments.Overlap

StepAdjustment intervals can not overlap.

The ranges of step adjustments overlap.

400

InvalidStepAdjustments.LowerGtUpper

LowerBound must be less than the UpperBound for StepAdjustment :%s.

The lower limit of a step adjustment is greater than or equal to the upper limit.

400

InvalidStepAdjustments.BothNull

Both lower and upper bounds of a StepAdjustment can not be left unspecified.

The upper limit or lower limit are not specified for a step adjustment.

400

InvalidStepAdjustments.MaxNum

Your scaling rule can have at most %s StepAdjustments.

The maximum number of step adjustments in a scaling group has been reached.

400

StepBeyondPermitRange

Specific parameter "%s" beyond permit range.

The upper limit or lower limit specified for a step adjustment is invalid.