Create an application auto scaling policy.
Operation description
Usage notes
You can create up to five elasticity policies per application.
For each scheduled elasticity policy, you can create up to 20 trigger points per day.
While an elasticity policy is enabled, do not manually perform operations on the application, such as scaling, deployment, changing specifications, restarting, or stopping. To perform these operations, disable the policy first.
You cannot add or enable an elasticity policy for an application that is undergoing a scale-out, scale-in, deployment (single-batch, phased, or canary), specification change, restart, or stop.
To scale out an application to more than 50 instances, contact SAE technical support to be added to the whitelist. For more information, see Contact us.
Try it now
Test
RAM authorization
|
Action |
Access level |
Resource type |
Condition key |
Dependent action |
|
sae:CreateApplicationScalingRule |
create |
*All Resource
|
None | None |
Request syntax
POST /pop/v1/sam/scale/applicationScalingRule HTTP/1.1
Request parameters
|
Parameter |
Type |
Required |
Description |
Example |
| AppId |
string |
Yes |
The application ID. |
7171a6ca-d1cd-4928-8642-7d5cfe69**** |
| ScalingRuleName |
string |
Yes |
The name of the auto scaling policy. The name must be unique within an application, start with a lowercase letter, and contain only lowercase letters, digits, and hyphens (-). The name can be up to 32 characters long. Note
The policy name cannot be changed after creation. |
timer-0800-2100 |
| ScalingRuleType |
string |
Yes |
The type of the auto scaling policy. Valid values:
Note
|
timing |
| ScalingRuleTimer |
string |
No |
Configurations for the scheduled auto scaling policy. This parameter is required if The parameter is a JSON string that contains the following fields:
|
{"beginDate":null,"endDate":null,"period":"* * *","schedules":[{"atTime":"08:00","targetReplicas":10},{"atTime":"20:00","targetReplicas":3}]} |
| ScalingRuleMetric |
string |
No |
Configurations for the metric-based auto scaling policy. This parameter is required if The parameter is a JSON string that contains the following fields:
Note
You can configure one or more metrics. If you configure multiple metrics, the application scales out when any of the metrics meets or exceeds its target value, up to the specified maximum number of instances. The application scales in only when all metrics are below their target values, down to the specified minimum number of instances. |
{"maxReplicas":3,"minReplicas":1,"metrics":[{"metricType":"CPU","metricTargetAverageUtilization":20},{"metricType":"MEMORY","metricTargetAverageUtilization":30},{"metricType":"tcpActiveConn","metricTargetAverageUtilization":20},{"metricType":"SLB_QPS","MetricTargetAverageUtilization":25,"slbId":"lb-xxx","slbProject":"aliyun-fc-cn-hangzhou-d95881d9-5d3c-5f26-a6b8-************","slbLogstore":"function-log","vport":"80"},{"metricType":"SLB_RT","MetricTargetAverageUtilization":35,"slbId":"lb-xxx","slbProject":"aliyun-fc-cn-hangzhou-d95881d9-5d3c-5f26-a6b8-************","slbLogstore":"function-log","vport":"80"}],"scaleUpRules":{"step":"100","disabled":false,"stabilizationWindowSeconds":0},"scaleDownRules":{"step":"100","disabled":false,"stabilizationWindowSeconds":300}} |
| MinReadyInstances |
integer |
No |
The minimum number of ready instances. Valid values:
Note
To ensure service continuity during a rolling deployment, we recommend setting the minimum number of ready instances to 1 or more. |
3 |
| MinReadyInstanceRatio |
integer |
No |
The minimum number of ready instances, specified as a percentage of the total number of instances. Valid values:
Note
If you specify both |
-1 |
| ScalingRuleEnable |
boolean |
No |
Specifies whether to enable the auto scaling policy. Valid values:
|
true |
| EnableIdle |
boolean |
No |
Specifies whether to enable idle mode for the application. |
Response elements
|
Element |
Type |
Description |
Example |
|
object |
The response object. |
||
| RequestId |
string |
The request ID. |
91F93257-7A4A-4BD3-9A7E-2F6EAE6D**** |
| TraceId |
string |
The trace ID. You can use this ID to query the details of a request. |
0a98a02315955564772843261e**** |
| Data |
object |
The returned data. |
|
| Timer |
object |
The configurations for the scheduled auto scaling policy. |
|
| EndDate |
string |
The end date of the scheduled auto scaling policy.
|
2021-04-25 |
| BeginDate |
string |
The start date of the scheduled auto scaling policy.
|
2021-03-25 |
| Schedules |
array<object> |
The trigger points for the scheduled auto scaling policy. |
|
|
object |
The configuration for a single trigger within the schedule. |
||
| AtTime |
string |
The trigger time. The format is HH:mm. |
08:00 |
| TargetReplicas |
integer |
The target number of instances. |
3 |
| MaxReplicas |
integer |
The maximum number of instances. |
10 |
| MinReplicas |
integer |
The minimum number of instances. |
5 |
| Period |
string |
The recurrence pattern for the scheduled auto scaling policy. Valid values:
|
* * * |
| UpdateTime |
integer |
The time when the policy was last updated, in milliseconds. |
1616642248938 |
| AppId |
string |
The ID of the application. |
7171a6ca-d1cd-4928-8642-7d5cfe69**** |
| CreateTime |
integer |
The time when the policy was created, in milliseconds. |
1616642248938 |
| LastDisableTime |
integer |
The time when the auto scaling policy was last disabled, in milliseconds. |
1641882854484 |
| ScaleRuleEnabled |
boolean |
Indicates whether the auto scaling policy is enabled. Valid values:
|
true |
| ScaleRuleType |
string |
The type of the auto scaling policy. Valid values:
|
timing |
| Metric |
object |
The configurations for the metric-based auto scaling policy. |
|
| Metrics |
array<object> |
An array of objects that define the metrics for the metric-based auto scaling policy. |
|
|
object |
The configuration for a single metric. |
||
| MetricTargetAverageUtilization |
integer |
The target value for the metric.
|
20 |
| MetricType |
string |
The type of the metric that triggers the auto scaling policy. Valid values:
|
CPU |
| SlbProject |
string |
The Log Service project for SLB access logs. |
test |
| SlbLogstore |
string |
The Log Service Logstore for SLB access logs. |
test |
| Vport |
string |
The port of the SLB instance. |
80 |
| SlbId |
string |
The ID of the SLB instance. |
lb-xxx |
| MaxReplicas |
integer |
The maximum number of instances. |
3 |
| MinReplicas |
integer |
The minimum number of instances. |
1 |
| ScaleRuleName |
string |
The name of the auto scaling policy. |
test |
| EnableIdle |
boolean |
Indicates whether idle mode is enabled. |
|
| Message |
string |
The response message. Valid values:
|
success |
| ErrorCode |
string |
The error code. Valid values:
|
|
| Code |
string |
The HTTP status code. Valid values:
|
200 |
| Success |
boolean |
Indicates whether the request was successful. Valid values:
|
true |
Examples
Success response
JSON format
{
"RequestId": "91F93257-7A4A-4BD3-9A7E-2F6EAE6D****",
"TraceId": "0a98a02315955564772843261e****",
"Data": {
"Timer": {
"EndDate": "2021-04-25",
"BeginDate": "2021-03-25",
"Schedules": [
{
"AtTime": "08:00",
"TargetReplicas": 3,
"MaxReplicas": 10,
"MinReplicas": 5
}
],
"Period": "* * *"
},
"UpdateTime": 1616642248938,
"AppId": "7171a6ca-d1cd-4928-8642-7d5cfe69****",
"CreateTime": 1616642248938,
"LastDisableTime": 1641882854484,
"ScaleRuleEnabled": true,
"ScaleRuleType": "timing",
"Metric": {
"Metrics": [
{
"MetricTargetAverageUtilization": 20,
"MetricType": "CPU",
"SlbProject": "test",
"SlbLogstore": "test",
"Vport": "80",
"SlbId": "lb-xxx"
}
],
"MaxReplicas": 3,
"MinReplicas": 1
},
"ScaleRuleName": "test",
"EnableIdle": false
},
"Message": "success",
"ErrorCode": "",
"Code": "200",
"Success": true
}
Error codes
|
HTTP status code |
Error code |
Error message |
Description |
|---|---|---|---|
| 400 | InstanceExist.ScalingRuleName | The specified ScalingRuleName already exists. | The specified ScalingRuleName already exists. |
| 400 | InvalidScalingRuleDate.BeginAfterEnd | The specified beginning time is later than the ending time. | The specified begin date is later than the end date. |
| 400 | InvalidScalingRuleDate.Format | The specified date is invalid. | The specified date is invalid. The correct format is yyyy-MM-dd . |
| 400 | InvalidScalingRuleName.NotFound | The specified ScalingRuleName does not exist. | The specified ScalingRuleName does not exist. |
| 400 | InvalidScalingRuleTime.Conflict | The specified scaling rule time is invalid. Another schedule has been set for the specified time range. Please set a different time. | The specified scaling rule time is invalid. Another schedule has been set for the specified time range. Please set a different time. |
| 400 | InvalidScalingRuleTime.Format | The specified time is invalid. | The specified time is invalid. The correct format is HH:mm . |
| 400 | QuotaExceeded.ScalingRule | The maximum number of application scaling rules is exceeded. | The maximum number of application scaling rules is exceeded. |
| 400 | QuotaExceeded.ScalingRuleTime | The maximum number of scaling policy trigger time is exceeded. | Scaling rule time quota exceeded. |
| 400 | NoComputeResourceQuota.App.Exceed | You can create %s instances for each application. Please submit a ticket to raise the quota. | You can create %s instances for each application. please join the DingTalk group 32874633 for technical support. |
| 400 | NoComputeResourceQuota.Exceed | Your compute resource is insufficient. Please contact us to raise the quota. | |
| 400 | NoComputeResourceQuota.User.Exceed | Your account is limited to create %s instances. Please submit a ticket to raise the quota. | Your account is limited to create %s instances. please join the DingTalk group 32874633 for technical support. |
| 400 | System.Upgrading | The system is being upgraded. Please try again later. | |
| 400 | OperationDenied.SDKNotSupported | Metrics is not supported in SDK | |
| 400 | MinReadyInstances.Not.Smaller.Replicas | The minimum number of available instances must be less than the number of application instances. | The minimum number of available instances must be less than the number of application instances. |
| 400 | MinReadyInstanceRatio.Invalid | The ratio of minimum available instances must be between 0 and 100. |
See Error Codes for a complete list.
Release notes
See Release Notes for a complete list.