CreateScalingGroup
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 are used in 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 the EnableScalingGroup operation to enable the scaling group before it can trigger scaling activities and execute scaling rules.
The scaling group, the associated Classic Load Balancer (CLB, formerly SLB) instances, and the associated ApsaraDB RDS instances must be in the same region. For more information, see Regions and active zones.
If you associate a CLB instance with the scaling group, the scaling group automatically adds ECS instances that are added to the scaling group to the backend server group of the CLB instance. 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 the ECS instances in the default server group by default.
-
Virtual service group: when you need to forward different requests to different backend servers, or forward requests based on domain names or URLs, you can use virtual service groups.
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 of the instance is 50. The CLB instance must meet the following requirements:
-
The CLB instance must be in the active state. You can call the DescribeLoadBalancers operation 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 an Application Load Balancer (ALB) server group, a Network Load Balancer (NLB) server group, or a Gateway Load Balancer (GWLB) server group with the scaling group, the scaling group automatically adds ECS instances that are added to the scaling group as backend servers of the ALB, NLB, or GWLB server group to process access requests distributed by the ALB, NLB, or GWLB instance. 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 an ApsaraDB RDS instance with the scaling group, the scaling group automatically adds the internal IP addresses of ECS instances that are added to the scaling group to the whitelist of the ApsaraDB RDS instance. The ApsaraDB RDS instance must meet the following requirements:
-
The ApsaraDB RDS instance must be in the Running state. You can call the DescribeDBInstances operation to query the status of the specified ApsaraDB RDS instance.
-
The number of IP addresses in the whitelist of the ApsaraDB 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 strategy 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 only in the most cost-effective manner. (In this pattern, instances cannot be created through Elasticity Assurance or Capacity Reservation. The vSwitch parameter for secondary elastic network interface controllers (NICs) is 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 on 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 ID of the instance. When you create a scaling group, the required configuration information is obtained from the specified instance, and a scaling configuration is created through automatic creation. |
i-28wt4**** |
| RegionId |
string |
Yes |
The region ID of the scaling group. For more information, see Regions and zones. |
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 value of Note
The value of |
2 |
| MaxSize |
integer |
Yes |
The maximum number of instances in the scaling group. When the number of instances in the scaling group is greater than the value of The value range of MaxSize depends on your Auto Scaling usage. Go to Quota Center to view the quota for Maximum Number of Instances in a Scaling Group. If the quota for Maximum Number of Instances in a Scaling Group is 2000, the value range of |
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 (formerly SLB) instances. The value is a JSON array that consists of CLB instance IDs separated by 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 Total Number of Load Balancing Instances That Can Be Associated with a Scaling Group. |
["lb-bp1u7etiogg38yvwz****", "lb-bp168cqrux9ai9l7f****", "lb-bp1jv3m9zvj22ufxp****"] |
| DBInstanceIds |
string |
No |
The IDs of ApsaraDB RDS instances. The value is a JSON array that consists of ApsaraDB RDS instance IDs separated by commas (,). The total number of ApsaraDB 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 Total Number of RDS Instances That Can Be Associated with a Scaling Group. |
["rm-bp142f86de0t7****", "rm-bp18l1z42ar4o****", "rm-bp1lqr97h4aqk****"] |
| RemovalPolicy.1 |
string |
No |
The first-round filter strategy for the scale-in policy. The value must be different from the values of RemovalPolicy.2 and RemovalPolicy.3. 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-round 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 |
| RemovalPolicy.2 |
string |
No |
The second-round filter strategy for the scale-in policy. The value must be different from the values of RemovalPolicy.1 and RemovalPolicy.3. Valid values:
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. |
OldestInstance |
| RemovalPolicy.3 |
string |
No |
The third-round filter strategy for the scale-in policy. The value must be different from the values of RemovalPolicy.1 and RemovalPolicy.2. Valid values:
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. |
NewestInstance |
| 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.N is specified for the scaling group, 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 reclaim pattern of the scaling group. Valid values:
ScalingPolicy specifies the revoke pattern of the scaling group. The specific action taken 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 |
The client token that is used to ensure the idempotence of the request. Generate a value from your client that is unique among 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. 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 (OnDemandBaseCapacity) is met. Valid values: 0 to 100. When |
20 |
| SpotInstanceRemedy |
boolean |
No |
Specifies whether to supplement spot instances. When enabled, the scaling group attempts to create new instances to replace spot instances that are about to be reclaimed after a reclamation notification is received. |
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 or inventory reasons. This parameter takes effect only when
Default value: true. |
true |
| SpotInstancePools |
integer |
No |
The number of available instance types. The scaling group creates spot instances across multiple types at the lowest cost. Valid values: 1 to 10. When |
5 |
| DesiredCapacity |
integer |
No |
The expected number of instances in the scaling group. The scaling group automatically maintains the number of ECS instances at the expected number of instances. 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 instance ID of the ECI instance, which is the container group ID. |
eci-uf6fonnghi50u374**** |
| VSwitchIds |
array |
No |
The IDs of one or more vSwitches. If you specify the VSwitchIds parameter, 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 for the scaling group, the network type of the scaling group defaults to classic network. |
vsw-bp14zolna43z266bq**** |
|
string |
No |
The IDs of one or more vSwitches. If you specify the VSwitchIds.N parameter, 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.N is specified for the scaling group, the network type of the scaling group defaults to classic network. |
vsw-bp14zolna43z266bq**** |
|
| LifecycleHook |
array<object> |
No |
The lifecycle hook information. |
|
|
object |
No |
The lifecycle hook information. |
||
| DefaultResult |
string |
No |
The action to take after the wait state ends. Valid values:
When a scale-in event (SCALE_IN) occurs in the scaling group and 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. The name cannot be modified after it is specified. If not specified, the default value is the lifecycle hook ID. |
lifecyclehook**** |
| LifecycleTransition |
string |
No |
The type of scaling activity to which the lifecycle hook applies. Valid values:
Note
If a lifecycle hook is 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 a scaling activity. The value cannot exceed 128 characters in length. Each time Auto Scaling pushes a notification to the Notification Recipient, it also sends the predefined NotificationMetadata parameter value, which helps you manage and mark notification information of different categories. This parameter takes effect only when the NotificationArn parameter is also specified. |
Test |
| NotificationArn |
string |
No |
The identifier of the notification object 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 format of 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 activity. After the wait state times out, the next action is taken. Valid values: 30 to 21600. Unit: seconds. After a lifecycle hook is created, you can call the RecordLifecycleActionHeartbeat operation to extend the wait time of an ECS instance, or call the CompleteLifecycleAction operation to end the wait state of a scaling activity early. Default value: 600. |
600 |
| VServerGroup |
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. |
||
| VServerGroupAttribute |
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. For more information, see AttachVServerGroups. |
rsp-bp1443g77**** |
| Weight |
integer |
No |
The weight allocated to an ECS instance as a backend server after Auto Scaling adds the instance to the virtual service group. A higher weight indicates that the instance receives more access requests. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. Default value: 50. For more information, see AttachVServerGroups. |
100 |
| Port |
integer |
No |
The port number used by the ECS instance after Auto Scaling adds the instance to the virtual service group. Valid values: 1 to 65535. For more information, see AttachVServerGroups. |
22 |
| LoadBalancerId |
string |
No |
The ID of the CLB (formerly SLB) instance to which the virtual service group belongs. For more information, see AttachVServerGroups. |
lb-bp1u7etiogg38yvwz**** |
| Tag |
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 |
| LaunchTemplateOverride |
array<object> |
No |
The launch template override information. |
|
|
object |
No |
The launch template override information. |
||
| InstanceType |
string |
No |
When you want the scaling group to scale based on the capacity of instance types, specify both this parameter and LaunchTemplateOverride.N.WeightedCapacity. This parameter specifies the instance type and overrides the instance type in the launch template. You can specify N values for this parameter to extend the launch template to support N instance types. Valid values of N: 1 to 20. 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. For more information, see Instance families. |
ecs.c5.xlarge |
| WeightedCapacity |
integer |
No |
When you want the scaling group to scale based on the capacity of instance types, specify this parameter after you specify LaunchTemplateOverride.N.InstanceType. The two parameters correspond to each other, and N must be consistent. 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 higher weight means fewer instances of this type are needed to meet the expected capacity. Because instance types differ in the number of vCPUs, memory size, and other performance metrics, you can assign different weights to different instance types based on your requirements. Example:
To meet the expected capacity, the scaling group scales out 2 ecs.c5.xlarge instances. Note
During scale-out events, 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 by Note
This parameter takes effect only when the |
0.025 |
| AlbServerGroup |
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. N is the serial number 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 an ECS instance as a backend server after Auto Scaling adds the instance to the ALB server group. A higher weight indicates that the instance receives more access requests. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. N is the serial number of the ALB server group. |
100 |
| Port |
integer |
No |
The port number used by the ECS instance after Auto Scaling adds the instance to the ALB server group. Valid values: 1 to 65535. N is the serial number of the ALB server group. Note
If N is the same but Port is different, the system associates multiple ALB server groups with different ports to the scaling group. |
22 |
| ServerGroup |
array<object> |
No |
The information about load balancing server groups. Note
You cannot specify the same server group information in both |
|
|
object |
No |
The information about load balancing server groups. |
||
| ServerGroupId |
string |
No |
The ID of the server group. |
sgp-5yc3bd9lfyh***** |
| Type |
string |
No |
The type of the server group. Valid values:
|
ALB |
| Weight |
integer |
No |
The weight allocated to an ECS instance as a backend server after Auto Scaling adds the instance to the server group. Valid values: 0 to 100. A higher weight indicates that the instance receives more access requests. If the weight is 0, the instance does not receive access requests. Note
This parameter is required for ALB and NLB load balancing server groups. This parameter cannot be set for GWLB load balancing server groups. |
100 |
| Port |
integer |
No |
The port number used by the ECS instance after Auto Scaling adds the instance to the server group. Valid values: 1 to 65535. Note
This parameter is required for ALB and NLB load balancing server groups. This parameter cannot be set for GWLB load balancing server groups, and the default value is 6081. |
22 |
| AzBalance |
boolean |
No |
Specifies whether to evenly distribute the capacity of the scaling group across multiple zones. This parameter takes effect only 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 specify the allocation strategy for spot capacity separately. This parameter takes effect only when
Default value: priority. |
lowestPrice |
| MaxInstanceLifetime |
integer |
No |
The maximum amount of time that an instance can exist in the scaling group. Unit: seconds. Valid values: Default value: null. Note
This parameter is not supported for ECI-type scaling groups or scaling groups with the economical mode enabled. |
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 removal 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**** |
| LoadBalancerConfig |
array<object> |
No |
The list of Classic Load Balancer (CLB) (formerly SLB) load balancing configurations. |
|
|
object |
No |
The list of Classic Load Balancer (CLB) (formerly SLB) load balancing configurations. |
||
| LoadBalancerId |
string |
No |
The ID of the Classic Load Balancer (CLB) (formerly SLB) load balancing instance. |
147b46d767c-cn-qingdao-cm5**** |
| Weight |
integer |
No |
The weight of the instance as a backend server after Auto Scaling adds the instance to the Classic Load Balancer (CLB) (formerly SLB) load balancing server group. A higher weight indicates that the instance is allocated more access requests. If the weight is 0, the instance does not receive access requests. Valid values: 0 to 100. |
10 |
| HealthCheckTypes |
array |
No |
The health check mode of the scaling group. Note
You can specify multiple values for this parameter to enable multiple health check options. If the |
|
|
string |
No |
The health check modes of the scaling group. Valid values:
Default value: ECS. |
ECS |
|
| DBInstance |
array<object> |
No |
The list of databases associated with the scaling group. |
|
|
object |
No |
The configuration of a database associated with the scaling group. |
||
| DBInstanceId |
string |
No |
The database instance ID. |
rm-m5eqju85s45mu0*** |
| Type |
string |
No |
The type of the database. Valid values:
Default value: RDS. |
RDS |
| AttachMode |
string |
No |
The mode in which the scaling group is associated with the database. Valid values:
|
SecurityIp |
| StopInstanceTimeout |
integer |
No |
The timeout period for waiting for an ECS instance to be stopped during a 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 scaling group. If the number of pay-as-you-go instances in the scaling group is less than this value, the system preferentially creates pay-as-you-go instances. Valid values: 0 to 1000. If |
30 |
| OnDemandPercentageAboveBaseCapacity |
integer |
No |
The percentage of pay-as-you-go instances among the instances that exceed the minimum number of pay-as-you-go instances specified by If |
20 |
| 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 or inventory reasons. This parameter takes effect only when
Default value: true. |
true |
| SpotAutoReplaceOnDemand |
boolean |
No |
Specifies whether to use spot instances to replace pay-as-you-go instances when the pay-as-you-go percentage exceeds the
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.