Auto Scaling selects which instances to add or remove during a scale-out or scale-in event based on the active scaling policy. Choosing the right policy determines how instances are distributed across zones, how spot and pay-as-you-go capacity is balanced, and how costs are managed at scale.
Choose a scaling policy
Auto Scaling provides four scaling policies. The table below summarizes when to use each one.
| Policy | Best for | Multi-zone support | Spot instances | Complexity |
|---|---|---|---|---|
| Priority Policy (default) | Simple workloads with a preferred zone | Fallback only | No | Low |
| Balanced Distribution Policy | Workloads requiring zone redundancy and disaster recovery | Active balancing | No | Low |
| Cost Optimization Policy (recommended for cost-sensitive workloads) | Cost-sensitive workloads using multiple instance types or spot instances | Fallback only | Yes | Medium |
| Custom Combination Policy | Workloads needing precise control over spot/pay-as-you-go ratio, zone distribution, and instance selection | Active balancing | Yes | High |
The scaling policy can only be changed when the scaling group Type is ECS. For ECI scaling groups, the policy is always Priority Policy and cannot be changed.
Policy descriptions
Priority Policy
Balanced Distribution Policy
Cost Optimization Policy
Custom Combination Policy
Configure the scaling policy
Change the policy on an existing scaling group
-
Log on to the Auto Scaling console.
Log on to the Auto Scaling console.
In the left navigation pane, click Scaling Groups.
In the top navigation bar, select the region where Auto Scaling is activated.
On the Scaling Group Management page, find the target scaling group. In the Actions column, click Modify.
In the Modify Scaling Group window, set Scaling Policy to the desired policy. If you select the Balanced Distribution Policy, Cost Optimization Policy, or Custom Combination Policy, configure the related child items described in the sections above.
Click OK.
Set the policy when creating a scaling group
Set Scaling Policy on the creation page as shown below.

If you select the Cost Optimization Policy or Custom Combination Policy, configure the related child items.
Change the scaling policy using the API
Use the ModifyScalingGroup operation to change the scaling policy programmatically. The required parameters vary by policy.
Priority Policy
| Parameter | Type | Required | Value |
|---|---|---|---|
ScalingGroupId | string | Yes | The ID of the scaling group. |
MultiAZPolicy | string | Yes | Set to PRIORITY. |
Balanced Distribution Policy
The scaling group must have vSwitches configured in multiple zones.
| Parameter | Type | Required | Description |
|---|---|---|---|
ScalingGroupId | string | Yes | The ID of the scaling group. |
MultiAZPolicy | string | Yes | Set to BALANCE. |
BalanceMode | string | No | BalancedBestEffort (default): falls back to another zone if creation fails. BalancedOnly: does not fall back. |
AutoRebalance | boolean | No | true: enables automatic zone rebalancing. false (default): disabled. Takes effect only when BalanceMode=BalancedOnly. |
To manually trigger rebalancing, see RebalanceInstances.
Cost Optimization Policy
This policy takes effect only if the scaling configuration specifies multiple instance types or enables spot instances.
| Parameter | Type | Required | Range | Default | Description |
|---|---|---|---|---|---|
ScalingGroupId | string | Yes | — | — | The ID of the scaling group. |
MultiAZPolicy | string | Yes | — | — | Set to COST_OPTIMIZED. |
OnDemandBaseCapacity | integer | No | 0–1000 | 0 | The minimum number of pay-as-you-go instances. When the current count falls below this value, pay-as-you-go instances are created first. |
OnDemandPercentageAboveBaseCapacity | integer | No | 0–100 | 0 | The percentage of pay-as-you-go instances among instances above OnDemandBaseCapacity. |
SpotInstancePools | integer | No | 0–10 | 2 | The number of lowest-priced instance types for spot instance creation. Spot instances are distributed evenly across these types. |
SpotInstanceRemedy | boolean | No | true/false | — | true: creates a replacement spot instance approximately 5 minutes before reclamation. |
CompensateWithOnDemand | boolean | No | true/false | — | true: creates pay-as-you-go instances when spot capacity is insufficient. |
CapacityOptions.SpotAutoReplaceOnDemand | boolean | No | true/false | — | true: replaces excess pay-as-you-go instances with spot instances when CompensateWithOnDemand is enabled. |
Custom Combination Policy
| Parameter | Type | Required | Range | Default | Description |
|---|---|---|---|---|---|
ScalingGroupId | string | Yes | — | — | The ID of the scaling group. |
MultiAZPolicy | string | Yes | — | — | Set to COMPOSABLE. |
OnDemandBaseCapacity | integer | No | 0–1000 | 0 | The minimum number of pay-as-you-go instances. |
OnDemandPercentageAboveBaseCapacity | integer | No | 0–100 | 100 | The percentage of pay-as-you-go instances among instances above OnDemandBaseCapacity. |
AzBalance | boolean | No | true/false | — | true: distributes ECS instances evenly across all configured zones. |
AllocationStrategy | string | No | priority / lowestPrice | priority | Determines how instance types are selected. priority: uses configured order. lowestPrice: uses ascending vCPU price order. |
SpotAllocationStrategy | string | No | priority / lowestPrice | — | A separate allocation strategy for spot instances. |
SpotInstancePools | integer | No | 0–10 | 2 | The number of lowest-priced instance types for spot creation. Required when AllocationStrategy or SpotAllocationStrategy is lowestPrice. |
SpotInstanceRemedy | boolean | No | true/false | — | true: creates a replacement spot instance approximately 5 minutes before reclamation. Required when AllocationStrategy or SpotAllocationStrategy is lowestPrice. |
CompensateWithOnDemand | boolean | No | true/false | — | true: creates pay-as-you-go instances when spot capacity is insufficient. Required when AllocationStrategy or SpotAllocationStrategy is lowestPrice. |
CapacityOptions.SpotAutoReplaceOnDemand | boolean | No | true/false | — | true: replaces excess pay-as-you-go instances with spot instances. |