Creates a scaling group. You can call the CreateScalingGroup operation to automate the adjustment of computing power of a specific type based on your business requirements and scaling polices.
Operation description
A scaling group is a group of Elastic Compute Service (ECS) instances that can be used for similar purposes.
You can create only a limited number of scaling groups in a region. To check the quota of the scaling groups, go to Quota Center.
A scaling group does not immediately take effect after you create the scaling group. You can call the EnableScalingGroup operation to enable a scaling group. You can trigger scaling events and execute scaling rules only in scaling groups that are in the Enabled state.
If you want to attach a Classic Load Balancer (CLB, formerly known as SLB) instance and an ApsaraDB RDS instance to the scaling group that you want to create, the scaling group, the CLB instance, and the ApsaraDB RDS instance must reside in the same region. For more information, see Regions and zones.
If you attach a CLB instance to the scaling group that you want to create, Auto Scaling automatically adds the ECS instances in the scaling group to the backend server groups of the CLB instance. You can specify the following types of server groups to add ECS instances:
- Default server group: ECS instances in this group process frontend requests. If no listeners are configured for vServer groups or primary/secondary server groups, the frontend requests are forwarded to the ECS instances in the default server group.
- vServer group: If you want to forward different requests to different backend servers, or you want to forward requests based on domain names or URLs, you can specify vServer groups.
The default weight of each ECS instance as a backend server is 50. If you want to attach a CLB instance to the scaling group that you want to create, make sure that the CLB instance meets the following requirements:
- The CLB instance is in the Active state. You can call the DescribeLoadBalancers operation to query the status of CLB instances.
- Health check must be enabled on all listener ports configured for the CLB instance. Otherwise, the scaling group will fail to be created.
If you attach Application Load Balancer (ALB) or Network Load Balancer (NLB) server groups to the scaling group that you want to create, Auto Scaling adds the ECS instances in your scaling group to the ALB or NLB server groups to process the access requests forwarded by the corresponding ALB or NLB instances. You can attach multiple ALB or NLB server groups to a scaling group. Make sure that the ALB or NLB server groups belong to the same virtual private cloud (VPC). For more information, see AttachAlbServerGroups or AttachServerGroups .
If you attach an ApsaraDB RDS instance to the scaling group that you want to create, Auto Scaling automatically adds the private IP addresses of the ECS instances in your scaling group to the IP address whitelist of the ApsaraDB RDS instance. Before you attach an ApsaraDB RDS instance to your scaling group, make sure that the ApsaraDB RDS instance meets the following requirements:
- The ApsaraDB RDS instance is in the Running state. You can call the DescribeDBInstances state to query the status of ApsaraDB RDS instances.
- The number of IP addresses in the IP address whitelist of the ApsaraDB RDS instance does not reach its upper limit. For more information, see Configure a whitelist.
If you set MultiAZPolicy for the scaling group that you want to create to COST_OPTIMIZED, the following rules apply:
- If you use OnDemandBaseCapacity, OnDemandPercentageAboveBaseCapacity, and SpotInstancePools to specify the instance allocation mode under the cost optimization policy, Auto Scaling prioritizes the implementation of the specified instance allocation mode during scale-out events.
- If you do not specify OnDemandBaseCapacity, OnDemandPercentageAboveBaseCapacity, or SpotInstancePools, Auto Scaling preferentially creates instances of the lowest-priced instance type based on the cost optimization policy.
If you set Tags.Propagate
to true, the following rules will apply:
- Tags that you add to the scaling group cannot be propagated to existing instances in the scaling group. Tags that you add to the scaling group are propagated to only new instances.
- If you specify instance tags in the scaling configuration that is used to create instances and propagate the tags that you add to the scaling group to the instances, all tags exist at the same time.
- If the tag key that you specify in a scaling configuration and the tag key that you add to the scaling group of the scaling configuration are the same, the tag value that you specify in the scaling configuration is preferentially used.
Debugging
Authorization information
The following table shows the authorization information corresponding to the API. The authorization information can be used in the Action
policy element to grant a RAM user or RAM role the permissions to call this API operation. Description:
- Operation: the value that you can use in the Action element to specify the operation on a resource.
- Access level: the access level of each operation. The levels are read, write, and list.
- Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
- The required resource types are displayed in bold characters.
- If the permissions cannot be granted at the resource level,
All Resources
is used in the Resource type column of the operation.
- Condition Key: the condition key that is defined by the cloud service.
- Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
Operation | Access level | Resource type | Condition key | Associated operation |
---|---|---|---|---|
ess:CreateScalingGroup | create |
|
| none |
Request parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
ScalingGroupName | string | No | The name of the scaling group. The name of each scaling group must be unique in a region. 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. If you do not specify this parameter, the value of the ScalingGroupId parameter is used. | scalinggroup**** |
LaunchTemplateId | string | No | The ID of the launch template that provides instance configurations for Auto Scaling to create instances. | lt-m5e3ofjr1zn1aw7**** |
LaunchTemplateVersion | string | No | The version number of the launch template. Valid values:
| Default |
InstanceId | string | No | The ID of the ECS instance. When you create a scaling group, you can specify an existing ECS instance. Auto Scaling obtains the configurations of the ECS instance and automatically creates a scaling configuration from the obtained configurations. | i-28wt4**** |
RegionId | string | Yes | The region ID of the scaling group. | cn-qingdao |
MinSize | integer | Yes | The minimum number of instances that must be contained in the scaling group. When the total number of ECS instances in the scaling group is less than the value of MinSize, Auto Scaling automatically creates ECS instances in the scaling group until the total number reaches the minimum number. 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 that can be contained in the scaling group. When the total number of ECS instances in the scaling group exceeds the value of MaxSize, Auto Scaling automatically removes ECS instances from the scaling group until the total number equals the maximum number. The value range of MaxSize is directly correlated with the degree of dependency your business has on Auto Scaling. You can go to Quota Center to check the maximum number of instances that a single scaling group can contain. If a single scaling group can contain up to 2,000 ECS instances, the value range of MaxSize is 0 to 2,000. | 20 |
DefaultCooldown | integer | No | The cooldown period of the scaling group after a scaling activity is complete in the scaling group. Valid values: 0 to 86400. Unit: seconds. During the cooldown period, Auto Scaling does not execute scaling activities that are triggered by CloudMonitor event-triggered tasks. Default value: 300. | 300 |
LoadBalancerIds | string | No | The IDs of the CLB instances that you want to associate with the scaling group. The value can be a JSON array that contains multiple CLB instance IDs. Separate multiple IDs with commas (,). You can associate only a limited number of CLB instances with a scaling group. Go to Quota Center to check the maximum number of CLB instances that you can associate with a scaling group. | ["lb-bp1u7etiogg38yvwz****", "lb-bp168cqrux9ai9l7f****", "lb-bp1jv3m9zvj22ufxp****"] |
DBInstanceIds | string | No | The IDs of the ApsaraDB RDS instances that you want to associate with the scaling group. The value can be a JSON array that contains multiple ApsaraDB RDS instance IDs. Separate multiple IDs with commas (,). You can associate only a limited number of ApsaraDB RDS instances with a scaling group. Go to Quota Center to check the maximum number of ApsaraDB RDS instances that you can associate with a scaling group. | ["rm-bp142f86de0t7****", "rm-bp18l1z42ar4o****", "rm-bp1lqr97h4aqk****"] |
RemovalPolicies | array | No | The instance removal policies. Valid values:
The scaling configuration source specified by the OldestScalingConfiguration setting can be a scaling configuration or a launch template. The CustomPolicy setting takes effect only if you specify it as the first step to remove instances. If 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 value of the MultiAZPolicy parameter. For more information, see the Configure a combination policy for removing instances topic.
| |
string | No | The instance removal policy. Valid values:
The scaling configuration source specified by the OldestScalingConfiguration setting can be a scaling configuration or a launch template. The CustomPolicy setting takes effect only if you specify it as the first step to remove instances. If 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 value of the MultiAZPolicy parameter. For more information, see the Configure a combination policy for removing instances topic.
| OldestScalingConfiguration | |
VSwitchId | string | No | The ID of the vSwitch. If you specify the VSwitchId parameter, the network type of the scaling group is VPC. Note
If you do not specify the VSwitchId or VSwitchIds parameter, the network type of the scaling group is classic network.
| vsw-bp14zolna43z266bq**** |
MultiAZPolicy | string | No | The scaling policy for ECS instances in the 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
If you want to enable instance health check and load balancer health check at the same time, we recommend that you specify HealthCheckTypes .
| ECS |
ScalingPolicy | string | No | The reclaim mode of the scaling group. Valid values:
ScalingPolicy specifies the reclaim mode of the scaling group. RemovePolicy of the RemoveInstances operation specifies the specific instance removal action. For more information, see RemoveInstances . | recycle |
ClientToken | string | No | The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see Ensure idempotence. | 123e4567-e89b-12d3-a456-42665544**** |
OnDemandBaseCapacity | integer | No | The minimum number of pay-as-you-go instances that must be contained in the scaling group. Valid values: 0 to 1000. If the number of pay-as-you-go instances is less than the value of this parameter, Auto Scaling preferentially creates pay-as-you-go instances. | 30 |
OnDemandPercentageAboveBaseCapacity | integer | No | The percentage of pay-as-you-go instances in the excess instances when the minimum number of pay-as-you-go instances reaches the requirement. Valid values: 0 to 100. | 20 |
SpotInstanceRemedy | boolean | No | Specifies whether to supplement preemptible instances. If you set this parameter to true, Auto Scaling creates an instance to replace a preemptible instance when Auto Scaling receives a system message which indicates that the preemptible instance is to be reclaimed. | true |
CompensateWithOnDemand | boolean | No | Specifies whether to automatically create pay-as-you-go instances to meet the requirement on the number of ECS instances when the expected capacity of preemptible instances cannot be provided due to reasons such as cost-related issues and insufficient resources. This parameter is available only if you set the MultiAZPolicy parameter to COST_OPTIMIZED. Valid values:
Default value: true. | true |
SpotInstancePools | integer | No | The number of available instance types. Auto Scaling evenly creates preemptible instances of multiple instance types that are provided at the lowest cost in the scaling group. Valid values: 1 to 10. | 5 |
DesiredCapacity | integer | No | The expected number of ECS instances in the scaling group. Auto Scaling automatically maintains the specified expected number of ECS instances. The DesiredCapacity value cannot be greater than the MaxSize value or less than the MinSize value. | 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 the instances that are managed by the scaling group. Valid values:
Default value: ECS. | ECS |
ContainerGroupId | string | No | The ID of the elastic container instance. | eci-uf6fonnghi50u374**** |
VSwitchIds | array | No | The IDs of the vSwitches. If you specify VSwitchIds, VSwitchId is ignored. If you specify VSwitchIds, the network type of the scaling group is VPC. If you specify multiple vSwitches, take note of the following items:
Note
If you do not specify VSwitchId or VSwitchIds for your scaling group, the network type of the scaling group is classic network.
| |
string | No | The ID of the vSwitch. If you specify VSwitchIds, VSwitchId is ignored. If you specify VSwitchIds, the network type of the scaling group is VPC. If you specify multiple vSwitches, take note of the following items:
Note
If you do not specify VSwitchId or VSwitchIds for your scaling group, the network type of the scaling group is classic network.
| vsw-bp14zolna43z266bq**** | |
LifecycleHooks | array<object> | No | The lifecycle hooks. | |
object | No | The lifecycle hook. | ||
DefaultResult | string | No | The action that Auto Scaling performs when the lifecycle hook times out. Valid values:
If multiple lifecycle hooks in the scaling group are triggered during scale-in events, and you set DefaultResult to ABANDON for one of the lifecycle hooks, Auto Scaling immediately performs the action after the lifecycle hook whose DefaultResult is set to ABANDON times out. In this case, other lifecycle hooks time out ahead of schedule. In other cases, Auto Scaling performs the action only after all lifecycle hooks time out. The action that Auto Scaling performs is determined by the value of DefaultResult that you specify for the lifecycle hook that most recently times out. Default value: CONTINUE. | CONTINUE |
LifecycleHookName | string | No | The name of the lifecycle hook. After you specify this parameter, you cannot change the name of the lifecycle hook. If you do not specify this parameter, the name of the lifecycle hook is the same as the ID of the lifecycle hook. | lifecyclehook**** |
LifecycleTransition | string | No | The type of the scaling activity to which you want to apply the lifecycle hook. Valid values:
Note
If you specify lifecycle hooks for the scaling group, you must specify LifecycleTransition. Other parameters are optional.
| SCALE_OUT |
NotificationMetadata | string | No | The fixed string that you want to include in notifications. When a lifecycle hook takes effect, Auto Scaling sends a notification. The fixed string can contain up to 4,096 characters in length. When Auto Scaling sends a notification to the recipient party, it includes predefined notification metadata into the notification. This helps in managing and labeling notifications of different categories. NotificationMetadata takes effect only if you specify NotificationArn. | Test |
NotificationArn | string | No | The Alibaba Cloud Resource Name (ARN) of the notification recipient party. You can specify a Simple Message Queue (SMQ, formerly MNS) topic or queue as the recipient party. The value is in the acs:ess:{region}:{account-id}:{resource-relative-id} format.
Examples:
| acs:ess:cn-hangzhou:1111111111:queue/queue2 |
HeartbeatTimeout | integer | No | The period of time before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action that is specified by DefaultResult. Valid values: 30 to 21600. Unit: seconds. After you create a lifecycle hook, you can call the RecordLifecycleActionHeartbeat operation to extend the timeout period of the lifecycle hook. You can also call the CompleteLifecycleAction operation to end the timeout period of the lifecycle hook ahead of schedule. Default value: 600. | 600 |
VServerGroups | array<object> | No | The backend vServer group that you want to associate with the scaling group. | |
object | No | Details of the backend vServer group that you want to associate with the scaling group. | ||
VServerGroupAttributes | array<object> | No | The attributes of the backend vServer group. | |
object | No | The attributes of the backend vServer group. | ||
VServerGroupId | string | No | The ID of the vServer group. | rsp-bp1443g77**** |
Weight | integer | No | The weight of each ECS instance as a backend server in the vServer group. If you increase the weight for an ECS instance, the number of requests that are forwarded to the ECS instance also increases. If you set the weight for an ECS instance to 0, no requests are forwarded to the ECS instance. Valid values: 0 to 100. Default value: 50. | 100 |
Port | integer | No | The port number used by each ECS instance as a backend server in the vServer group. Valid values: 1 to 65535. | 22 |
LoadBalancerId | string | No | The ID of the CLB instance to which the backend vServer group belongs. | lb-bp1u7etiogg38yvwz**** |
Tags | array<object> | No | The tags that you want to add to the scaling group. | |
object | No | Details of the tag that you want to add to the scaling group. | ||
Key | string | No | The tag key that you want to add to the scaling group. | Department |
Value | string | No | The tag value that you want to add to the scaling group. | Finance |
Propagate | boolean | No | Specifies whether to propagate the tag that you want to add to the scaling group. Valid values:
Default value: false. | false |
LaunchTemplateOverrides | array<object> | No | Details of the instance types that you specify by using the Extended Configurations feature of the launch template. | |
object | No | Details of the instance type that you specify by using the Extended Configurations feature of the launch template. | ||
InstanceType | string | No | The instance type that you want to use to override the instance type that is specified in the launch template. If you want to scale instances based on the weighted capacities of the instances, you must specify both the InstanceType and WeightedCapacity parameters. Note
This parameter is available only if you specify the LaunchTemplateId parameter.
You can use the InstanceType parameter to specify only instance types that are available for purchase. | ecs.c5.xlarge |
WeightedCapacity | integer | No | The weight of the instance type. The weight specifies the capacity of an instance of the specified instance type in the scaling group. If you want to scale instances based on the weighted capacities of the instances, you must specify the WeightedCapacity parameter after you specify the InstanceType parameter. A higher weight specifies that a smaller number of instances of the specified instance type are required to meet the expected capacity requirement. Performance metrics, such as the number of vCPUs and the memory size of each instance type, may vary. You can specify different weights for different instance types based on your business requirements. Example:
To meet the expected capacity requirement, Auto Scaling must create and add two ecs.c5.xlarge instances. Note
The capacity of the scaling group cannot exceed the sum of the maximum number of instances that is specified by the MaxSize parameter and the maximum weight of the instance types.
Valid values of the WeightedCapacity parameter: 1 to 500. | 4 |
SpotPriceLimit | float | No | The maximum bid price of the instance type that is specified by the Note
This parameter is available only if you specify the LaunchTemplateId parameter.
| 0.025 |
AlbServerGroups | array<object> | No | The Application Load Balancer (ALB) server groups. | |
object | No | Details of the ALB server group that you want to associate with the scaling group. | ||
AlbServerGroupId | string | No | The ID of the ALB server group. You can attach only a limited number of ALB server groups to a scaling group. To view the predefined quota limit or manually request a quota increase, go to Quota Center. | sgp-ddwb0y0g6y9bjm**** |
Weight | integer | No | The weight of an ECS instance as a backend server in the ALB server group. If you increase the weight for an ECS instance, the number of requests that are forwarded to the ECS instance also increases. If you set the weight for an ECS instance to 0, no requests are forwarded to the ECS instance. Valid values: 0 to 100. | 100 |
Port | integer | No | The port number used by each ECS instance as a backend server in the ALB server group. Valid values: 1 to 65535. | 22 |
ServerGroups | array<object> | No | The server groups. Note
You cannot use AlbServerGroups and ServerGroups to specify the same server group.
| |
object | No | Details of the server group. | ||
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 of each ECS instance as a backend server in the server group. Valid values: 0 to 100. If you increase the weight for an ECS instance, the number of requests that are forwarded to the ECS instance also increases. If you set the weight for an ECS instance to 0, no requests are forwarded to the ECS instance. | 100 |
Port | integer | No | The port number used by each ECS instance as backend server in the vServer group. Valid values: 1 to 65535. | 22 |
AzBalance | boolean | No | Specifies whether to evenly distribute instances in the scaling group across multiple zones. This parameter takes effect only if you set
Note
If you set MultiAZPolicy to COMPOSABLE and enable AzBalance to true , this setting has an equivalent effect to setting MultiAZPolicy to BALANCE .
Default value: false. | false |
AllocationStrategy | string | No | The allocation policy of instances. Auto Scaling selects instance types based on the allocation policy to create the required number of instances. The policy can be applied to pay-as-you-go instances and preemptible instances. This parameter takes effect only when you set the
Default value: priority. | priority |
SpotAllocationStrategy | string | No | The allocation policy of preemptible instances. You can use this parameter to individually specify the allocation policy of preemptible instances. This parameter takes effect only if you set the
Default value: priority. | lowestPrice |
SyncAlarmRuleToCms | boolean | No | Note
This parameter is unavailable.
| false |
MaxInstanceLifetime | integer | No | The maximum life span of an instance in the scaling group. Unit: seconds. Valid values: 86400 to the value of the Integer.maxValue parameter. Default value: null. | null |
CustomPolicyARN | string | No | The Alibaba Cloud Resource Name (ARN) of the custom scale-in policy (Function). This parameter is available only if you specify CustomPolicy as the first step to remove instances. | 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 you want to add the scaling group. Note
If you specify this parameter, new scaling groups are added to the specified resource group. If you do not specify this parameter, new scaling groups are added to the default resource group.
| rg-123****** |
LoadBalancerConfigs | array<object> | No | The load balancer configurations. | |
object | No | The CLB instance configurations. | ||
LoadBalancerId | string | No | The ID of the CLB instance. | lb-2zen1olhfg9yw3f4qgte4 |
Weight | integer | No | The weight of each ECS instance as a backend server in the CLB backend server group. If you increase the weight for an ECS instance, the number of requests that are forwarded to the ECS instance also increases. If you set the weight for an ECS instance to 0, no requests are forwarded to the ECS instance. 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 at the same time. If you specify HealthCheckType , this parameter is ignored.
| |
string | No | The health check modes of the scaling group. Valid values:
Default value: ECS. | ECS | |
DBInstances | array<object> | No | The databases that you want to attach to the scaling group. | |
object | No | |||
DBInstanceId | string | No | The database ID. | rm-m5eqju85s45mu0*** |
Type | string | No | The database type. Valid values:
Default value: RDS. | RDS |
AttachMode | string | No | The mode in which you want to attach the database to the scaling group. Valid values:
| SecurityIp |
StopInstanceTimeout | integer | No | The period of time required by the ECS instance to enter the Stopped state. Unit: seconds. Valid values: 30 to 240. Note
| 60 |
Response parameters
Examples
Sample success responses
JSON
format
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"ScalingGroupId": "asg-bp14wlu85wrpchm0****"
}
Error codes
HTTP status code | Error code | Error message |
---|---|---|
404 | ResourceNotAvailable.VPCNetwork | The specified zone does not support vpc network or sold out. |
For a list of error codes, visit the Service error codes.
Change history
Change time | Summary of changes | Operation |
---|---|---|
2024-10-16 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2024-04-23 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2024-02-01 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2023-11-14 | The Error code has changed | View Change Details |
2023-03-30 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2022-12-22 | The Error code has changed | View Change Details |