Creates a scaling rule.

Usage notes

A scaling rule specifies a specific scaling action, such as adding or removing N Elastic Compute Service (ECS) instances. If the number of ECS instances in a scaling group is less than the minimum number allowed or greater than the maximum number allowed after a scaling rule is executed, Auto Scaling adjusts the number of ECS instances to ensure that the number of ECS instances is still within the valid range after the scaling rule is executed. Examples:

  • If your scaling group contains two ECS instances and allows up to three ECS instances, only one ECS instance is added to your scaling group after you execute a scale-out rule in which three ECS instances are specified.
  • If your scaling group contains three ECS instances and requires at least two ECS instances, only one ECS instance is removed from your scaling group after you execute a scale-in rule in which five ECS instances are specified.

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

  • If you set AdjustmentType to TotalCapacity, the number of ECS instances in the scaling group is adjusted to a specified value. The value of AdjustmentValue must be greater than or equal to 0.
  • If you set AdjustmentType to QuantityChangeInCapacity, a positive value of AdjustmentValue specifies the number of ECS instances that are added to the scaling group, and a negative value specifies the number of ECS instances that are removed from the scaling group.
  • If you set AdjustmentType to PercentChangeInCapacity, Auto Scaling calculates a value by using the following formula, and then rounds the value to the nearest integer to obtain the number of ECS instances that must be scaled: Value of TotalCapacity × Value of AdjustmentValue/100.
  • 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 by 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

ParameterTypeRequiredExampleDescription
ActionStringYesCreateScalingRule

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

ScalingGroupIdStringYesasg-bp1ffogfdauy0jw0****

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

ScalingRuleNameStringNoscalingrule****

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 a scaling rule must be unique within an Alibaba Cloud account in a region.

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

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.

MinAdjustmentMagnitudeIntegerNo1

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.

AdjustmentTypeStringNoQuantityChangeInCapacity

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.
AdjustmentValueIntegerNo100

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. The number of ECS instances that must be scaled in a scaling activity cannot exceed 1,000. Valid values of AdjustmentValue vary based on the value of AdjustmentType.

  • Valid values if AdjustmentType is set to QuantityChangeInCapacity: -1000 to 1000.
  • Valid values if AdjustmentType is set to PercentChangeInCapacity: -100 to 10000.
  • Valid values if AdjustmentType is set to TotalCapacity: 0 to 2000.
ScalingRuleTypeStringNoSimpleScalingRule

The type of the scaling rule. Valid values:

  • SimpleScalingRule: scales the number of ECS instances based on the values of AdjustmentType and AdjustmentValue.
  • TargetTrackingScalingRule: calculates the number of ECS instances that must be scaled and maintains the value of a predefined metric close to the value of TargetValue.
  • StepScalingRule: scales ECS instances in steps based on the specified thresholds and metric values.
  • PredictiveScalingRule: uses machine learning to analyze historical monitoring data of the scaling group and predicts the future values of metrics. In addition, Auto Scaling automatically creates scheduled tasks to specify the value range for the scaling group.

Default value: SimpleScalingRule

EstimatedInstanceWarmupIntegerNo300

The warmup period of an ECS instance. This parameter is available only if you set ScalingRuleType to TargetTrackingScalingRule or PredictiveScalingRule. 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 that must be scaled, ECS instances in the Warmup state are not counted toward the current capacity of the scaling group.

Valid values: 0 to 86400. Unit: seconds.

Default value: 300

MetricNameStringNoCpuUtilization

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

Valid values if ScalingRuleType is set to TargetTrackingScalingRule:

  • CpuUtilization: the average CPU utilization
  • ClassicInternetRx: the average inbound Internet traffic over the classic network
  • ClassicInternetTx: the average outbound Internet traffic over the classic network
  • VpcInternetRx: the average inbound Internet traffic over a virtual private cloud (VPC)
  • VpcInternetTx: the average outbound Internet traffic over a VPC
  • IntranetRx: the average inbound traffic over the internal network
  • IntranetTx: the average outbound traffic over the internal network

Valid values if ScalingRuleType is set to PredictiveScalingRule:

  • CpuUtilization: the average CPU utilization
  • IntranetRx: the average inbound traffic over the internal network
  • IntranetTx: the average outbound traffic over the internal network
TargetValueFloatNo0.125

The target value. If you set ScalingRuleType to TargetTrackingScalingRule or PredictiveScalingRule, you must also specify this parameter. The value must be greater than 0 and can contain up to three decimal places.

DisableScaleInBooleanNofalse

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

Default value: false

ScaleInEvaluationCountIntegerNo15

The number of consecutive times that the event-triggered task created for scale-ins 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

ScaleOutEvaluationCountIntegerNo3

The number of consecutive times that the event-triggered task created for scale-outs 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

PredictiveScalingModeStringNoPredictAndScale

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

PredictiveValueBehaviorStringNoMaxOverridePredictiveValue

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

PredictiveValueBufferIntegerNo50

The ratio based on which the predicted value is increased if 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

PredictiveTaskBufferTimeIntegerNo30

The amount of buffer time before the prediction task runs. By default, all prediction tasks that are automatically created by a predictive scaling rule run on the hour. You can specify a buffer time to run prediction tasks and prepare resources in advance. Valid values: 0 to 60. Unit: minutes.

Default value: 0

InitialMaxSizeIntegerNo100

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

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

StepAdjustment.N.MetricIntervalUpperBoundFloatNo5.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.ScalingAdjustmentIntegerNo1

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

StepAdjustment.N.MetricIntervalLowerBoundFloatNo1.0

The lower limit of a step adjustment. This parameter is available if you set ScalingRuleType to StepScalingRule. Valid values: -9.999999E18 to 9.999999E18.

RegionIdStringNocn-hangzhou

The region ID of the scaling group.

AlarmDimension.N.DimensionKeyStringNorulePool

The dimension key of the metric.

AlarmDimension.N.DimensionValueStringNosgp-l1cbirz451yxu2****

The dimension value of the metric.

Response parameters

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

The unique identifier of the scaling rule.

RequestIdString473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

The ID of the request.

ScalingRuleIdStringasr-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 error message returned because the specified scaling group does not exist within the Alibaba Cloud account.

400

InvalidScalingRuleName.Duplicate

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

The error message returned because the name of the scaling rule already exists.

400

QuotaExceeded.ScalingRule

Scaling rule quota exceeded in the specified scaling group.

The error message returned because the maximum number of scaling rules in the scaling group has been reached.

400

TargetTrackingScalingRule.UnsupportedMetric

Specific metric is not supported for target tracking scaling rule.

The error message returned because 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 error message returned because the metric is already specified for a target tracking scaling rule in the scaling group.

400

InvalidMinAdjustmentMagnitudeMismatchAdjustmentType

MinAdjustmentMagnitude is not supported by the specified adjustment type.

The error message returned because MinAdjustmentMagnitude does not support the adjustment method of the scaling rule.

400

InvalidStepAdjustments.MultipleNullUpperBound

At most one StepAdjustment may have an unspecified upper bound.

The error message returned because a step adjustment for which an upper limit is not specified already exists.

400

InvalidStepAdjustments.MultipleNullLowerBound

At most one StepAdjustment may have an unspecified lower bound.

The error message returned because a step adjustment for which a lower limit is not specified already exists.

400

InvalidStepAdjustments.NoNullLowerBound

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

The error message returned because the lower limit of a step adjustment is a negative value, but a different step adjustment without a lower limit does not exist.

400

InvalidStepAdjustments.NoNullUpperBound

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

The error message returned because the upper limit of a step adjustment is a positive value, but a different step adjustment without an upper limit does not exist.

400

InvalidStepAdjustments.Gap

StepAdjustment intervals can not have gaps between them.

The error message returned because the ranges of step adjustments have gaps.

400

InvalidStepAdjustments.Overlap

StepAdjustment intervals can not overlap.

The error message returned because the ranges of step adjustments overlap.

400

InvalidStepAdjustments.LowerGtUpper

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

The error message returned because 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 error message returned because the upper limit and the lower limit of a step adjustment are not specified.

400

InvalidStepAdjustments.MaxNum

Your scaling rule can have at most %s StepAdjustments.

The error message returned because the maximum number of step adjustments in the scaling group has been reached.

400

StepBeyondPermitRange

Specific parameter "%s" beyond permit range.

The error message returned because the upper limit or lower limit of a step adjustment is invalid.