# 创建弹性伸缩策略（V2版本） - CreateScalingV2Policy
#### 功能介绍
可针对不同类型资源如伸缩组或带宽，创建弹性伸缩策略。
创建弹性伸缩策略V2版本与V1版本的区别在于，V2版本支持创建对带宽资源进行调整的策略，通过伸缩资源类型区分伸缩资源。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AS/doc?api=CreateScalingV2Policy)中调试该接口。
#### URI
POST /autoscaling-api/v2/{project_id}/scaling_policy
表1参数说明 
| 参数        | 是否必选 | 参数类型 | 描述                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| project_id | 是 | String | **参数解释：** 项目ID。获取方式请参见[获取项目ID](https://support.huaweicloud.com/api-as/as_04_0106.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求参数
表2请求参数 
| 参数                     | 是否必选 | 参数类型                                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| scaling_policy_name     | 是      | String                                                                         | **参数解释：** 伸缩策略名称。 **约束限制：** 不涉及 **取值范围：** 1-64个字符，只能包含中文、字母、数字、下划线或中划线。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| scaling_resource_id     | 是      | String                                                                        | **参数解释：** 伸缩资源ID，伸缩组唯一标识或带宽唯一标识。伸缩组ID可通过[查询弹性伸缩组列表 - ListScalingGroups](https://support.huaweicloud.com/api-as/as_06_0102.html)获取，带宽ID可通过[查询带宽列表](https://support.huaweicloud.com/api-eip/eip_apiBandwidth_0002.html)获取。 - 如果scaling_resource_type为SCALING_GROUP，对应伸缩组唯一标识即伸缩组ID。  - 如果scaling_resource_type为BANDWIDTH，对应带宽唯一标识即带宽ID。   **约束限制：** 弹性伸缩不支持对包年包月的带宽进行调整。 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| scaling_resource_type   | 是     | string                                                                       | **参数解释：** 伸缩资源类型 **约束限制：** 不涉及 **取值范围：** - 伸缩组：SCALING_GROUP  - 带宽：BANDWIDTH   **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                             |
| scaling_policy_type    | 是      | String                                                                       | **参数解释：** 策略类型 **约束限制：** 不涉及 **取值范围：** - 告警策略：ALARM(与alarm_id对应)  - 定时策略：SCHEDULED(与scheduled_policy对应)  - 周期策略：RECURRENCE(与scheduled_policy对应)  - 区间策略：INTERVAL_ALARM(与alarm_id对应)   **默认取值：** 不涉及                                                                                                 |
| alarm_id               | 否      | String                                                                       | **参数解释：** 告警ID，即告警规则的ID。创建告警策略成功后，会自动为该告警ID对应的告警规则的alarm_actions字段增加类型为autoscaling的告警触发动作。 告警ID通过查询云监控告警规则列表获取，请参考《云监控API参考》的"[查询告警规则列表](https://support.huaweicloud.com/zh-cn/api-ces/ces_03_0027.html)"。 **约束限制：** 当scaling_policy_type为ALARM时该项必选，此时scheduled_policy不生效。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                        |
| scheduled_policy         | 否    | [scheduled_policy] object | **参数解释：** 定时、周期任务策略。详情请见[表 scheduled_policy字段数据结构说明]。 **约束限制：** 当scaling_policy_type为SCHEDULED或RECURRENCE时该项必选，此时alarm_id不生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| scaling_policy_action   | 否     | [scaling_policy_action] object               | **参数解释：** 策略执行具体动作。详情请见[表 scaling_policy_action字段数据结构说明]。 **约束限制：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| interval_alarm_actions | 否    | Array of [interval_alarm_actions] objects       | **参数解释：** 伸缩策略告警区间，详情请见[表 interval_alarm_actions字段数据结构说明]。 **约束限制：** 当scaling_policy_type为INTERVAL_ALARM时，该参数生效且必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| cool_down_time           | 否    | Integer                                                                        | **参数解释：** 冷却时间，单位是秒。 **约束限制：** 伸缩组在冷却时间内，会拒绝告警策略的触发，其他类型的伸缩策略（如定时策略和周期策略）及手动触发不受限制。 **取值范围：** 0-86400秒。 **默认取值：** 300                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| description             | 否        | String                                                                            | **参数解释：** 伸缩策略描述。 **约束限制：** 不涉及 **取值范围：** 1-256个字符 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表3scheduled_policy字段数据结构说明 
| 参数              | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| launch_time     | 是 | String    | **参数解释：** 触发时间，遵循UTC时间。 **约束限制：** - 如果scaling_policy_type为SCHEDULED，则格式为：YYYY-MM-DDThh:mmZ。  - 如果scaling_policy_type为RECURRENCE，则格式为：hh:mm。   **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                            |
| recurrence_type | 否   | String | **参数解释：** 周期触发类型。 **约束限制：** scaling_policy_type为RECURRENCE时该项必选。 **取值范围：** - Daily：每天执行一次  - Weekly：每周指定天执行一次。  - Monthly：每月指定天执行一次。   **默认取值：** 不涉及                                                                                                                                                                                                                                                                      |
| recurrence_value  | 否   | String  | **参数解释：** 周期触发任务数值。 **约束限制：** - scaling_policy_type为RECURRENCE时该项必选。  - 当recurrence_type类型为Daily时，recurrence_value参数不生效。   **取值范围：** - 类型为Daily时，该字段为null，表示每天执行  - 类型为Weekly时，该字段取值范围为1-7，1表示星期日，以此类推，以","分隔，例如：1,3,5。  - 类型为Monthly时，该字段取值范围为1-31，分别表示每月的日期，以","分隔，例如：1,10,13,28。   **默认取值：** 不涉及 |
| start_time    | 否   | String | **参数解释：** 周期策略重复执行开始时间，遵循UTC时间。 格式为：YYYY-MM-DDThh:mmZ。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 默认为当前时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| end_time         | 否    | String | **参数解释：** 周期策略重复执行结束时间，遵循UTC时间。 格式为：YYYY-MM-DDThh:mmZ。 **约束限制：** - scaling_policy_type为RECURRENCE时该项必选。  - 当为周期类型策略时，不得早于当前时间和开始时间。   **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                       |
   
 表4scaling_policy_action字段数据结构说明 
| 参数          | 是否必选 | 参数类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| operation | 否    | String   | **参数解释：** 操作选项。 **约束限制：** 不涉及 **取值范围：** - 当scaling_resource_type为SCALING_GROUP，支持如下操作： - ADD：增加  - REMOVE/REDUCE：减少  - SET：设置为    - 当scaling_resource_type为BANDWIDTH，支持如下操作： - ADD：增加  - REDUCE：减少  - SET：设置为     **默认取值：** 默认为ADD。 |
| size         | 否   | Integer   | **参数解释：** 操作大小。 **约束限制：** - 只有操作为SET时取值可以为0，其余操作取值均不能为0。  - 当scaling_resource_type为SCALING_GROUP时，size和percentage参数只能选其中一个进行配置。   **取值范围：** - 当scaling_resource_type为SCALING_GROUP时，size为实例个数，取值范围为0到300的整数，默认为1。  - 当scaling_resource_type为BANDWIDTH时，size表示带宽大小，单位为Mbit/s，取值范围为1到300的整数，默认为1。   **默认取值：** 默认为1。                                                                                                                                                                                                                                          |
| percentage   | 否      | Integer | **参数解释：** 操作百分比。 **约束限制：** - 当scaling_resource_type为SCALING_GROUP时，size和percentage参数只能选其中一个进行配置，如果size和percentage参数均无配置，则size默认为1。  - 当scaling_resource_type为BANDWIDTH时，不支持配置percentage参数。   **取值范围：** - 操作为ADD或REMOVE/REDUCE时取值范围为1到20000的整数。  - 操作为SET时取值范围为0到20000的整数。   **默认取值：** 默认为1。                                                                                                                                                                                                                                                                  |
| limits      | 否     | Integer    | **参数解释：** 操作限制。 - 当operation为ADD时，limits表示带宽可调整的上限；  - 当operation为REDUCE时，limits表示带宽可调整的下限。   **约束限制：** 当scaling_resource_type为BANDWIDTH，且operation不为SET时，limits参数生效，单位为Mbit/s。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表5interval_alarm_actions字段数据结构说明 
| 参数           | 是否必选 | 参数类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| lower_bound    | 否       | double   | **参数解释：** 区间下限。 **约束限制：** - 区间下限为空时，区间上限必须小于等于0。  - 区间下限最小值为-1.174271E108。   **取值范围：** 不涉及 **默认取值：** 默认为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| upper_bound | 否      | double    | **参数解释：** 区间上限。 **约束限制：** - 区间上限为空时，区间下限必须大于等于0。  - 区间上限最大值为1.174271E108。   **取值范围：** 不涉及 **默认取值：** 默认为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| operation     | 否    | String      | **参数解释：** 操作选项。 **约束限制：** 不涉及 **取值范围：** - 当scaling_resource_type为SCALING_GROUP，支持如下操作： - ADD：增加  - REMOVE/REDUCE：减少  - SET：设置为    - 当scaling_resource_type为BANDWIDTH，支持如下操作： - ADD：增加  - REDUCE：减少  - SET：设置为     **默认取值：** 默认为ADD。 |
| size        | 否    | Integer  | **参数解释：** 操作大小。 **约束限制：** - 只有操作为SET时，取值可以为0，其余操作取值均不能为0。  - 当scaling_resource_type为SCALING_GROUP时，size和percentage参数只能选其中一个进行配置。   **取值范围：** - 当scaling_resource_type为SCALING_GROUP时，size为实例个数，取值范围为0到300的整数，默认为1。  - 当scaling_resource_type为BANDWIDTH时，size表示带宽大小，单位为Mbit/s，取值范围为1到300的整数，默认为1。   **默认取值：** 默认为1。                                                                                                                                                                                                                                      |
| percentage  | 否     | Integer | **参数解释：** 操作百分比。 **约束限制：** - 当scaling_resource_type为SCALING_GROUP时，size和percentage参数只能选其中一个进行配置，若size和percentage参数均无配置，则size默认为1。  - 当scaling_resource_type为BANDWIDTH时，不支持配置percentage参数。   **取值范围：** - 操作为ADD或REMOVE或REDUCE时，取值范围为1到20000的整数。  - 操作为SET时，取值范围为0到20000的整数。   **默认取值：** 不涉及                                                                                                                                                                                                                                                                 |
| limits    | 否     | Integer | **参数解释：** 操作限制。 - 当operation为ADD时，limits表示带宽可调整的上限；    - 当operation为REDUCE时，limits表示带宽可调整的下限。   **约束限制：** 当scaling_resource_type为BANDWIDTH，且operation不为SET时，limits参数生效，单位为Mbit/s。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                     |
   
![](https://support.huaweicloud.com/api-as/public_sys-resources/note_3.0-zh-cn.png)
- 区间策略的告警数据范围实际为：告警规则的阈值 + 区间上下限。
- 区间下限为空时，实际告警数据范围下限为负无限，区间上限为空时，实际告警数据范围上限为正无限。
如：
伸缩策略使用的告警规则为"CPU利用率 \>= 30%" ，添加两个区间：
执行动作为 "30% \<= CPU利用率 \< 60% ，增加一个实例"， 区间下限应设置为0，区间上限应设置为30。
执行动作为 "60% \<= CPU利用率 \< 正无限 ，增加两个实例"， 区间下限应设置为30，区间上限可不传入或设置为空。
- 区间上下限同时不为空时，必须同时大于等于0，或者同时小于等于0。

- 当为区间告警策略添加多个区间时，各区间不能重叠。

- 告警规则的运算比较符为"="时，无法添加区间。
 
#### 请求示例
创建一个名称为hth_aspolicy_1的告警策略，使用的告警规则ID为al1513822380493GvlJKZwA8，每当告警规则达到告警阈值后，该策略会使ID为8ade64b5-d685-40b8-8582-4ce306ea37a6的带宽增加1Mbit/s，直到带宽值达到限制10Mbit/s。
```
POST https://{Endpoint}/autoscaling-api/v2/{project_id}/scaling_policy
{ 
    "alarm_id": "al1513822380493GvlJKZwA8",
    "cool_down_time": 900,
    "scaling_resource_id": "8ade64b5-d685-40b8-8582-4ce306ea37a6",
    "scaling_resource_type": "BANDWIDTH",
    "scaling_policy_action": {
           "size": 1,
           "operation": "ADD",
           "limits": 10
    },
    "scaling_policy_name": "hth_aspolicy_1",
    "scaling_policy_type": "ALARM"
}
```
#### 响应参数
表6响应参数 
| 参数                 | 参数类型    | 描述                                                                                                                    |
|:---|:---|:---|
| scaling_policy_id | String | **参数解释：** 伸缩策略ID **取值范围：** 不涉及 |
   
#### 响应示例
```
{ 
     "scaling_policy_id": "0h327883-324n-4dzd-9c61-68d03ee191dd"  
}
```
#### 返回值
- 正常 200
  
- 异常
  
  | 返回值                                  | 说明                            |
  |:---|:---|
  | 400 Bad Request                     | 服务器未能处理请求。                    |
  | 401 Unauthorized                  | 被请求的页面需要用户名和密码。             |
  | 403 Forbidden                      | 对被请求的页面访问禁止。                 |
  | 404 Not Found                    | 服务器无法找到被请求的页面。               |
  | 405 Method Not Allowed             | 请求中指定的方法不被允许。                 |
  | 406 Not Acceptable                 | 服务器生成的响应无法被客户端所接受。             |
  | 407 Proxy Authentication Required | 用户必须首先使用代理服务器进行验证，这样请求才会被处理。 |
  | 408 Request Timeout                | 请求超出了服务器的等待时间。                |
  | 409 Conflict                      | 由于冲突，请求无法被完成。                |
  | 500 Internal Server Error          | 请求未完成。服务异常。                  |
  | 501 Not Implemented               | 请求未完成。服务器不支持所请求的功能。          |
  | 502 Bad Gateway                    | 请求未完成。服务器从上游服务器收到一个无效的响应。    |
  | 503 Service Unavailable            | 请求未完成。系统暂时异常。               |
  | 504 Gateway Timeout                 | 网关超时。                         |
     
  
 
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-as/as_07_0102.html)。
