# 创建弹性伸缩策略 - CreateScalingPolicy
#### 功能介绍
创建弹性伸缩策略。
- 伸缩策略定义了伸缩组内实例的扩张和收缩操作。如果执行伸缩策略造成伸缩组期望实例数与伸缩组内实例数不符，弹性伸缩会自动调整实例资源，以匹配期望实例数。
- 当前伸缩策略支持告警触发策略，周期触发策略，定时触发策略。
- 在策略执行具体动作中，可设置实例变化的个数，或根据当前实例的百分比数进行伸缩。
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AS/doc?api=CreateScalingPolicy)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-as/as_07_0200.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                       | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                           | 别名                            | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | as:scalingPolicy:create | write | -       | [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2) | as:policies:create | -    |
     
  
 
#### URI
POST /autoscaling-api/v1/{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_group_id | 是 | String                                                                       | **参数解释：** 伸缩组ID，通过查询弹性伸缩组列表获取，请参考[查询弹性伸缩组列表 - ListScalingGroups](https://support.huaweicloud.com/api-as/as_06_0102.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                           |
| scaling_policy_type    | 是       | String                                                                             | **参数解释：** 策略类型 **约束限制：** 不涉及 **取值范围：** - 告警策略：ALARM(与alarm_id对应)  - 定时策略：SCHEDULED(与scheduled_policy对应)  - 周期策略：RECURRENCE(与scheduled_policy对应)   **默认取值：** 不涉及 |
| 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字段数据结构说明]。 **约束限制：** 不涉及                                                                                                                                                                                                                                                                                                                                                                        |
| cool_down_time         | 否        | Integer                                                                            | **参数解释：** 冷却时间，单位是秒。 **约束限制：** 伸缩组在冷却时间内，会拒绝告警策略的触发，其他类型的伸缩策略（如定时策略和周期策略）及手动触发不受限制。 **取值范围：** 0-86400秒 **默认取值：** 300                                                                                                                                                                                                                                      |
   
 表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时该项必选。 **取值范围：** - 类型为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。 |
| instance_number             | 否  | Integer                  | **参数解释：** 操作实例个数。 **约束限制：** 配置参数时，instance_number和instance_percentage参数只能选其中一个进行配置。 **取值范围：** - operation为SET时，取值范围为：0\~300。  - operation为ADD或REMOVE/REDUCE时，取值范围为：1\~300。   **默认取值：** 默认为1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| instance_percentage         | 否  | Integer                  | **参数解释：** 操作实例百分比，将伸缩组容量增加、减少或设置为伸缩组当前实例个数的百分比。 配置参数时，instance_number和instance_percentage参数只能选其中一个进行配置。 **约束限制：** - 当instance_number和instance_percentage参数均无配置时，则操作实例个数为1。  - 配置参数时，instance_number和instance_percentage参数只能选其中一个进行配置。   **取值范围：** - 操作为ADD或REMOVE/REDUCE时取值范围为1到20000的整数。  - 操作为SET时取值范围为0到20000的整数。   **默认取值：** 不涉及                                                                                                                                                                                                                |
   
#### 请求示例
创建一个名称为as-policy-7a75的周期策略，该策略的生效时间为2015-12-14T03:34Z到2015-12-27T03:34Z，每天16:00在ID为5bc3aa02-b83e-454c-aba1-4d2095c68f8b的伸缩组中增加一个实例。
```
POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_policy
{
    "scaling_policy_name": "as-policy-7a75",
    "scaling_policy_action": {
        "operation": "ADD",
        "instance_number": 1
    },
    "cool_down_time": 900,
    "scheduled_policy": {
        "launch_time": "16:00",
        "recurrence_type": "Daily",
        "start_time": "2015-12-14T03:34Z",
        "end_time": "2015-12-27T03:34Z"
    },
    "scaling_policy_type": "RECURRENCE",
    "scaling_group_id": "5bc3aa02-b83e-454c-aba1-4d2095c68f8b"
}
```
#### 响应参数
表5响应参数 
| 参数                | 参数类型  | 描述                                                                                                                      |
|:---|:---|:---|
| 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)。
