Creates a scaling group to automatically adjust your compute capacity (the number of instances) based on business changes and policies.
Operation description
A scaling group is a collection of ECS instances that serve the same common scenarios.
The number of scaling groups that can be created in a region depends on your Auto Scaling usage. Go to Quota Center to view the quota for the total number of scaling groups.
A scaling group does not take effect immediately after it is created. You must invoke EnableScalingGroup to enable the scaling group before it can trigger scaling activities and execute scaling rules.
The scaling group, associated Classic Load Balancer (CLB) instances, and associated ApsaraDB RDS instances must be in the same region. For more information, see Regions and zones.
If you associate CLB instances with the scaling group, the scaling group automatically adds ECS instances that join the scaling group to the backend server groups of the CLB instances. You can specify the server groups to which ECS instances are added. The following two types of server groups are supported:
-
Default server group: used to accept frontend requests. If no virtual server group or primary/secondary server group is configured for a listener, requests are forwarded to ECS instances in the default server group by default.
-
Virtual service group: use virtual service groups when you want to forward different requests to different backend servers, or when you want to forward requests based on domain names or URLs.
If you specify both the default server group and multiple virtual service groups, ECS instances are added to all of these server groups.
After an instance is added to the backend server group of a CLB instance, the default weight is 50. The CLB instance must meet the following conditions:
-
The CLB instance must be in the active state. You can call DescribeLoadBalancers to query the status of the specified CLB instance.
-
Health checks must be enabled for all listener ports configured on the CLB instance. Otherwise, the scaling group fails to be created.
If you associate Application Load Balancer (ALB) server groups, Network Load Balancer (NLB) server groups, or Gateway Load Balancer (GWLB) server groups with the scaling group, the scaling group automatically adds ECS instances that join the scaling group as backend servers of the ALB, NLB, or GWLB server groups to process access requests distributed by the ALB, NLB, or GWLB instances. You can specify multiple ALB, NLB, or GWLB server groups, but the server groups must belong to the same VPC as the scaling group. For more information, see AttachAlbServerGroups or AttachServerGroups.
If you associate ApsaraDB RDS instances with the scaling group, the scaling group automatically adds the internal IP addresses of ECS instances that join the scaling group to the whitelists of the RDS instances. The RDS instances must meet the following conditions:
-
The RDS instance must be in the Running state. You can call DescribeDBInstances to query the status of the specified RDS instance.
-
The number of IP addresses in the whitelist of the RDS instance must not exceed the upper limit. For more information, see Configure a whitelist in the ApsaraDB RDS documentation.
If MultiAZPolicy of the scaling group is set to COST_OPTIMIZED:
-
When you specify the OnDemandBaseCapacity, OnDemandPercentageAboveBaseCapacity, and SpotInstancePools parameters, the instance allocation method under the cost optimization policy is specified and takes priority during scale-out and scale-in events.
-
When you do not specify the OnDemandBaseCapacity, OnDemandPercentageAboveBaseCapacity, or SpotInstancePools parameters, the cost optimization policy creates instances at the lowest cost. (In this pattern, instances cannot be created through elasticity assurance or capacity reservation. Settings for the vSwitch parameter for secondary elastic network interfaces (ENIs) of the network interface controller (NIC) are not supported.)
If you set propagatable tags for the scaling group, that is, Tags.Propagate is set to true:
-
Tags on the scaling group are propagated only to newly created instances, not to instances that are already running in the scaling group.
-
If you specify instance tags in the scaling configuration and choose to propagate the scaling group tags to the instance, all tags coexist.
-
If a propagatable tag in the scaling group and a tag in the scaling configuration have the same tag key, the tag value in the scaling configuration takes precedence.
Try it now
Test
RAM authorization
|
Action |
Access level |
Resource type |
Condition key |
Dependent action |
|
ess:CreateScalingGroup |
create |
*ScalingGroup
|
None | None |
Request parameters
|
Parameter |
Type |
Required |
Description |
Example |
| ScalingGroupName |
string |
No |
The name of the scaling group. The name must be unique within a region. The name must be 2 to 64 characters in length and can contain letters, digits, underscores (_), hyphens (-), and periods (.). It must start with a digit, letter, or Chinese character. Default value: the value of ScalingGroupId. |
scalinggroup**** |
| LaunchTemplateId |
string |
No |
The ID of the launch template from which the scaling group obtains launch configuration information. |
lt-m5e3ofjr1zn1aw7**** |
| LaunchTemplateVersion |
string |
No |
The version of the launch template. Valid values:
|
Default |
| InstanceId |
string |
No |
The instance ID. When you create a scaling group, the required configuration information is obtained from the specified instance, and a scaling configuration is subject to automatic creation. |
i-28wt4**** |
| RegionId |
string |
Yes |
The region ID of the scaling group. |
cn-qingdao |
| MinSize |
integer |
Yes |
The minimum number of instances in the scaling group. When the number of instances in the scaling group is less than the MinSize value, Auto Scaling performs automatic creation of instances. Note
The value of MinSize must be less than or equal to the value of MaxSize. |
2 |
| MaxSize |
integer |
Yes |
The maximum number of instances in the scaling group. When the number of instances in the scaling group exceeds the MaxSize value, Auto Scaling automatically removes instances. The valid values of MaxSize depend on your Auto Scaling usage. Go to Quota Center to view the quota for the maximum number of instances in a single scaling group. If the quota for the maximum number of instances in a single scaling group is 2000, the valid values of MaxSize are 0 to 2000. |
20 |
| DefaultCooldown |
integer |
No |
The cooldown time after a scaling activity (adding or removing instances) is complete. Valid values: 0 to 86400. Unit: seconds. During the cooldown time, the scaling group does not execute other scaling activities. This applies only to scaling activities triggered by CloudMonitor event-triggered tasks. Default value: 300. |
300 |
| LoadBalancerIds |
string |
No |
The IDs of CLB instances. The value can be a JSON array that consists of multiple CLB instance IDs. Separate multiple IDs with commas (,). The total number of CLB instances that can be associated with a single scaling group depends on your Auto Scaling usage. Go to Quota Center to view the quota for the total number of load balancing instances that can be associated with a single scaling group. |
["lb-bp1u7etiogg38yvwz****", "lb-bp168cqrux9ai9l7f****", "lb-bp1jv3m9zvj22ufxp****"] |
| DBInstanceIds |
string |
No |
The IDs of ApsaraDB RDS instances. The value can be a JSON array that consists of multiple RDS instance IDs. Separate multiple IDs with commas (,). The total number of RDS instances that can be associated with a single scaling group depends on your Auto Scaling usage. Go to Quota Center to view the quota for the total number of RDS instances that can be associated with a single scaling group. |
["rm-bp142f86de0t7****", "rm-bp18l1z42ar4o****", "rm-bp1lqr97h4aqk****"] |
| RemovalPolicies |
array |
No |
The filter policy for the scale-in policy. Valid values:
The scaling configuration mentioned in OldestScalingConfiguration refers to the instance configuration source in the scaling group, including scaling configurations and launch templates. CustomPolicy can only be set as the first scale-in policy. When you specify CustomPolicy, you must also specify the CustomPolicyARN parameter. Note
The removal of ECS instances from a scaling group is also affected by the scaling policy (MultiAZPolicy) of the scaling group. For more information, see Configure a combination policy for removing instances. |
|
|
string |
No |
The filter policy for the scale-in policy. Valid values:
The scaling configuration mentioned in OldestScalingConfiguration refers to the instance configuration source in the scaling group, including scaling configurations and launch templates. CustomPolicy can only be set as the first scale-in policy. When you specify CustomPolicy, you must also specify the CustomPolicyARN parameter. Note
The removal of ECS instances from a scaling group is also affected by the scaling policy (MultiAZPolicy) of the scaling group. For more information, see Configure a combination policy for removing instances. |
OldestScalingConfiguration |
|
| VSwitchId |
string |
No |
The ID of the vSwitch. If you specify this parameter, the network type of the scaling group is VPC. Note
If neither VSwitchId nor VSwitchIds is specified, the network type of the scaling group defaults to classic network. |
vsw-bp14zolna43z266bq**** |
| MultiAZPolicy |
string |
No |
The scaling policy for ECS instances in a multi-zone scaling group. Valid values:
Default value: PRIORITY. |
PRIORITY |
| HealthCheckType |
string |
No |
The health check mode of the scaling group. Valid values:
Default value: ECS. Note
To enable both instance health checks and load balancing health checks, use the |
ECS |
| ScalingPolicy |
string |
No |
Specifies the revoke mode of the scaling group. Valid values:
ScalingPolicy specifies the revoke mode of the scaling group, but the specific action when an instance is removed from the scaling group is determined by the RemovePolicy parameter of RemoveInstances. For more information, see RemoveInstances. |
recycle |
| ClientToken |
string |
No |
Ensures the idempotence of the request. Generate a parameter value from your client that is unique across different requests. The value can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see How to ensure idempotence. |
123e4567-e89b-12d3-a456-42665544**** |
| OnDemandBaseCapacity |
integer |
No |
The minimum number of pay-as-you-go instances required in the scaling group. Valid values: 0 to 1000. When the number of pay-as-you-go instances is less than this value, pay-as-you-go instances are preferentially created. |
30 |
| OnDemandPercentageAboveBaseCapacity |
integer |
No |
The percentage of pay-as-you-go instances among the excess instances after the minimum number of pay-as-you-go instances (OnDemandBaseCapacity) is met. Valid values: 0 to 100. |
20 |
| SpotInstanceRemedy |
boolean |
No |
Specifies whether to enable the supplemental spot instance policy. After this policy is enabled, when Auto Scaling group receives a system message that a spot instance is about to be reclaimed, Auto Scaling group attempts to create a new instance to replace the spot instance that is about to be reclaimed. |
true |
| CompensateWithOnDemand |
boolean |
No |
Specifies whether to automatically create pay-as-you-go instances to meet the required number of ECS instances when spot instances cannot be created due to price, inventory, or other reasons. This parameter takes effect only when MultiAZPolicy is set to COST_OPTIMIZED. Valid values:
Default value: true. |
true |
| SpotInstancePools |
integer |
No |
The number of available instance types. The scaling group creates spot instances across multiple instance types at the lowest cost in a balanced manner. Valid values: 1 to 10. |
5 |
| DesiredCapacity |
integer |
No |
The expected number of instances in the scaling group. The scaling group automatically maintains the number of instances at the expected number. The value must not be greater than MaxSize or less than MinSize. |
5 |
| GroupDeletionProtection |
boolean |
No |
Specifies whether to enable deletion protection for the scaling group. Valid values:
Default value: false. |
true |
| GroupType |
string |
No |
The type of instances managed by the scaling group. Valid values:
Default value: ECS. |
ECS |
| ContainerGroupId |
string |
No |
The ECI instance ID, which is the container group ID. |
eci-uf6fonnghi50u374**** |
| VSwitchIds |
array |
No |
The IDs of one or more vSwitches. If you specify VSwitchIds, the VSwitchId parameter is ignored. If you specify this parameter, the network type of the scaling group is VPC. When you specify multiple vSwitches:
Note
If neither VSwitchId nor VSwitchIds is specified, the network type of the scaling group defaults to classic network. |
|
|
string |
No |
The IDs of one or more vSwitches. If you specify VSwitchIds, the VSwitchId parameter is ignored. If you specify this parameter, the network type of the scaling group is VPC. When you specify multiple vSwitches:
Note
If neither VSwitchId nor VSwitchIds is specified, the network type of the scaling group defaults to classic network. |
vsw-bp14zolna43z266bq**** |
|
| LifecycleHooks |
array<object> |
No |
The list of lifecycle hook information. |
|
|
object |
No |
The list of lifecycle hook information. |
||
| DefaultResult |
string |
No |
The next action after the wait state ends. Valid values:
When a scale-in activity (SCALE_IN) triggers multiple lifecycle hooks, if the wait state of a lifecycle hook with DefaultResult set to ABANDON ends, the wait states of other corresponding lifecycle hooks end early. In other cases, the next action is determined by the last lifecycle hook whose wait state ends. Default value: CONTINUE. |
CONTINUE |
| LifecycleHookName |
string |
No |
The name of the lifecycle hook. After the name is specified, it cannot be modified. If not specified, the name defaults to the lifecycle hook ID. |
lifecyclehook**** |
| LifecycleTransition |
string |
No |
The type of scaling activity to which the lifecycle hook applies. Valid values:
Note
If lifecycle hooks are specified for the scaling group, this parameter is required. Other related parameters are optional. |
SCALE_OUT |
| NotificationMetadata |
string |
No |
The fixed string information for the wait state of the scaling activity. The parameter value cannot exceed 4096 characters in length. Each time Auto Scaling pushes a message to the Notification Recipient, it also sends the notificationmetadata parameter value that you specified in advance, which helps you manage and mark different categories of notification information. This parameter takes effect only when the notificationarn parameter is also specified. |
Test |
| NotificationArn |
string |
No |
The Notification Recipient identity for the lifecycle hook. The following types of notification objects are supported: Simple Message Queue (formerly MNS) queues and topics. The parameter value is in the following format: acs:ess:{region}:{account-id}:{resource-relative-id}.
Examples:
|
acs:ess:cn-hangzhou:1111111111:queue/queue2 |
| HeartbeatTimeout |
integer |
No |
The wait time set by the lifecycle hook for the scaling group activity. After the wait state times out, the next action is performed. Valid values: 30 to 21600. Unit: seconds. After a lifecycle hook is created, you can call RecordLifecycleActionHeartbeat to extend the wait time of the instance, or call CompleteLifecycleAction to end the wait state of the scaling activity early. Default value: 600. |
600 |
| VServerGroups |
array<object> |
No |
The information about the virtual service groups associated with the scaling group. |
|
|
array<object> |
No |
The information about the virtual service groups associated with the scaling group. |
||
| VServerGroupAttributes |
array<object> |
No |
The attributes of the backend server group. |
|
|
object |
No |
The attributes of the backend server group. |
||
| VServerGroupId |
string |
No |
The ID of the virtual service group. |
rsp-bp1443g77**** |
| Weight |
integer |
No |
The weight of the instance as a backend server after Auto Scaling adds the instance to the virtual service group. A higher weight results in more access requests being allocated to the instance. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. Default value: 50. |
100 |
| Port |
integer |
No |
The port number used by the instance after Auto Scaling adds the instance to the virtual service group. Valid values: 1 to 65535. |
22 |
| LoadBalancerId |
string |
No |
The ID of the CLB (Classic Load Balancer) instance to which the virtual service group belongs. |
lb-bp1u7etiogg38yvwz**** |
| Tags |
array<object> |
No |
The tags of the scaling group. |
|
|
object |
No |
The tags of the scaling group. |
||
| Key |
string |
No |
The tag key of the scaling group. |
Department |
| Value |
string |
No |
The tag value of the scaling group. |
Finance |
| Propagate |
boolean |
No |
Specifies whether the tag is a propagatable tag. Valid values:
Default value: false. |
false |
| LaunchTemplateOverrides |
array<object> |
No |
The instance type information that extends the launch template. |
|
|
object |
No |
The instance type information that extends the launch template. |
||
| InstanceType |
string |
No |
When you want the scaling group to scale based on instance type capacity, specify both this parameter and LaunchTemplateOverrides.WeightedCapacity. This parameter specifies the instance type and overrides the instance type in the launch template. Note
This parameter takes effect only when the LaunchTemplateId parameter specifies a launch template. Valid values of InstanceType: ECS instance types that are available for purchase. |
ecs.c5.xlarge |
| WeightedCapacity |
integer |
No |
When you want the scaling group to scale based on instance type capacity, specify this parameter after specifying LaunchTemplateOverrides.InstanceType. This parameter specifies the weight of the instance type, which represents the capacity of a single instance of this type in the scaling group. A larger weight means fewer instances of this type are needed to meet the expected capacity. Because performance metrics such as the number of vCPUs and memory size vary across instance types, you can assign different weights to different instance types based on your requirements. Examples:
To meet the expected capacity, the scaling group scales out 2 ecs.c5.xlarge instances. Note
During scale-out, the capacity of the scaling group must not exceed the sum of the maximum capacity (MaxSize) and the maximum weight of the instance types. Valid values of WeightedCapacity: 1 to 500. |
4 |
| SpotPriceLimit |
number |
No |
The maximum bid price for the instance type specified in the launch template override ( Note
This parameter takes effect only when the |
0.025 |
| AlbServerGroups |
array<object> |
No |
The information about ALB server groups. |
|
|
object |
No |
The information about ALB server groups. |
||
| AlbServerGroupId |
string |
No |
The ID of the ALB server group. The number of ALB server groups that can be associated with a scaling group is limited. To view or request a quota increase, go to Quota Center. |
sgp-ddwb0y0g6y9bjm**** |
| Weight |
integer |
No |
The weight of the instance as a backend server after Auto Scaling adds the instance to the ALB server group. A higher weight results in more access requests being distributed to the instance. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. |
100 |
| Port |
integer |
No |
The port number used by the instance after Auto Scaling adds the instance to the ALB server group. Valid values: 1 to 65535. |
22 |
| ServerGroups |
array<object> |
No |
The information about load balancing server groups. Note
You cannot specify the same server group information in both AlbServerGroups and ServerGroups. |
|
|
object |
No |
The information about load balancing server groups. |
||
| ServerGroupId |
string |
No |
The server group ID. |
sgp-5yc3bd9lfyh***** |
| Type |
string |
No |
The type of the server group. Valid values:
|
ALB |
| Weight |
integer |
No |
The weight of the instance as a backend server after Auto Scaling adds the instance to the server group. Valid values: 0 to 100. A higher weight results in more access requests being allocated to the instance. If the weight is 0, the instance does not receive access requests. Note
This parameter is required for ALB and NLB type load balancing server groups. This parameter cannot be set for GWLB type load balancing server groups. |
100 |
| Port |
integer |
No |
The port number used by the instance after Auto Scaling adds the instance to the server group. Valid values: 1 to 65535. |
22 |
| AzBalance |
boolean |
No |
Specifies whether the capacity of the scaling group is evenly distributed across multiple zones. This parameter takes effect only when
Note
When Default value: false. |
false |
| AllocationStrategy |
string |
No |
The capacity allocation strategy that determines how the scaling group selects available instance types to meet capacity requirements. The capacity allocation strategy applies to both pay-as-you-go and spot capacity. This parameter takes effect only when
Default value: priority. |
priority |
| SpotAllocationStrategy |
string |
No |
The spot capacity allocation strategy. You can use this parameter to separately specify the allocation strategy for spot capacity. This parameter takes effect only when
Default value: priority. |
lowestPrice |
| SyncAlarmRuleToCms |
boolean |
No |
Note
This parameter is not available for use. |
false |
| MaxInstanceLifetime |
integer |
No |
The maximum time that an instance can exist in the scaling group. Unit: seconds. Valid values: [86400, Integer.maxValue]. Default value: null. |
null |
| CustomPolicyARN |
string |
No |
The Alibaba Cloud Resource Name (ARN) of the custom scale-in policy (Function). This parameter takes effect only when the first scale-in policy in RemovalPolicies is set to CustomPolicy. |
acs:fc:cn-zhangjiakou:16145688****:services/ess_custom_terminate_policy.LATEST/functions/ess_custom_terminate_policy_name |
| ResourceGroupId |
string |
No |
The ID of the resource group to which the newly created scaling group belongs. Note
The newly created scaling group is added to the specified resource group. If you do not specify this parameter, the scaling group is added to the default resource group. |
rg-123****** |
| LoadBalancerConfigs |
array<object> |
No |
The list of load balancing configurations. |
|
|
object |
No |
The list of load balancing CLB (formerly SLB) configurations. |
||
| LoadBalancerId |
string |
No |
The ID of the load balancing CLB (formerly SLB) instance. |
lb-2zen1olhfg9yw3f4q**** |
| Weight |
integer |
No |
The weight of the instance as a backend server after Auto Scaling adds the instance to the SLB server group. A higher weight results in more access requests being distributed to the instance. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. |
10 |
| HealthCheckTypes |
array |
No |
The health check modes of the scaling group. Note
You can use this parameter to set multiple values and enable multiple health check options. If the |
|
|
string |
No |
The list of health check modes for the scaling group. Valid values:
Default value: ECS. [_single. |
ECS |
|
| DBInstances |
array<object> |
No |
The list of databases associated with the scaling group. |
|
|
object |
No |
The configuration information of the database associated with the scaling group. |
||
| DBInstanceId |
string |
No |
The database instance ID. |
rm-m5eqju85s45mu0*** |
| Type |
string |
No |
The database type. Valid values:
Default value: RDS. |
RDS |
| AttachMode |
string |
No |
The association mode between the scaling group and the database. Valid values:
|
SecurityIp |
| StopInstanceTimeout |
integer |
No |
The timeout period for waiting for an ECS instance to stop during the scale-in process. Unit: seconds. Valid values: 30 to 240. Note
|
60 |
| CapacityOptions |
object |
No |
The capacity options. |
|
| OnDemandBaseCapacity |
integer |
No |
The minimum number of pay-as-you-go instances required in the existing scaling group. When the number of pay-as-you-go instances is less than this value, pay-as-you-go instances are preferentially created. Valid values: 0 to 1000. When |
30 |
| OnDemandPercentageAboveBaseCapacity |
integer |
No |
The percentage of pay-as-you-go instances among the excess instances after the minimum number of pay-as-you-go instances ( When |
20 |
| CompensateWithOnDemand |
boolean |
No |
Specifies whether to automatically create pay-as-you-go instances when spot instances cannot be created due to price or inventory reasons, if
Default value: true. |
true |
| SpotAutoReplaceOnDemand |
boolean |
No |
Specifies whether to attempt to replace pay-as-you-go instances with spot instances when
Default value: false. |
false |
| PriceComparisonMode |
string |
No |
The price comparison mode of the cost optimization policy for the scaling group. Valid values:
Default value: PricePerUnit. |
PricePerUnit |
| BalanceMode |
string |
No |
The zone balancing mode. This parameter takes effect only when zone balancing is enabled. Valid values:
Default value: BalancedBestEffort. |
BalancedBestEffort |
| AutoRebalance |
boolean |
No |
Specifies whether to enable automatic rebalancing for the scaling group. This parameter takes effect only when BalancedOnly is enabled for a zone-balanced scaling group. Valid values:
Default value: false. |
false |
Response elements
|
Element |
Type |
Description |
Example |
|
object |
|||
| RequestId |
string |
The request ID. |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
| ScalingGroupId |
string |
The scaling group ID. |
asg-bp14wlu85wrpchm0**** |
Examples
Success response
JSON format
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"ScalingGroupId": "asg-bp14wlu85wrpchm0****"
}
Error codes
|
HTTP status code |
Error code |
Error message |
Description |
|---|---|---|---|
| 404 | ResourceNotAvailable.VPCNetwork | The specified zone does not support vpc network or sold out. |
See Error Codes for a complete list.
Release notes
See Release Notes for a complete list.