
# 创建生命周期挂钩 - CreateLifyCycleHook
#### 功能介绍
创建生命周期挂钩，可为伸缩组添加一个或多个生命周期挂钩，最多添加5个。
- 添加生命周期挂钩后，当伸缩组进行伸缩活动时，实例将被生命周期挂钩挂起并置于等待状态（正在加入伸缩组或正在移出伸缩组），实例将保持此状态直至超时时间结束或者用户手动回调。
- 用户能够在实例保持等待状态的时间段内执行自定义操作，例如，用户可以在新启动的实例上安装或配置软件，也可以在实例终止前从实例中下载日志文件。
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AS/doc?api=CreateLifyCycleHook)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-as/as_07_0200.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                                 | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                | 别名                       | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | as:scalingGroup:createLifecycleHook | write | -           | [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2) | as:lifecycleHooks:create | -      |
     
  
 
#### URI
POST /autoscaling-api/v1/{project_id}/scaling_lifecycle_hook/{scaling_group_id}
表1参数说明 
| 参数               | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| project_id       | 是    | String | 项目ID  |
| scaling_group_id | 是    | String | 伸缩组ID |
   
#### 请求参数
表2请求参数 
| 参数                     | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| lifecycle_hook_name    | 是    | String  | 生命周期挂钩名称(1-32个字符)，只能包含字母、数字、下划线或中划线。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| lifecycle_hook_type    | 是    | String  | 生命周期挂钩类型。取值如下： - INSTANCE_TERMINATING：该类型挂钩负责在实例终止时将实例挂起。  - INSTANCE_LAUNCHING：该类型挂钩负责在实例启动时将实例挂起。                                                                                                                                                                                                                                                                                                                                                                                             |
| default_result         | 否    | String  | 生命周期挂钩默认回调操作。默认情况下，到达超时时间后执行的操作。 - ABANDON  - CONTINUE   说明： - 如果实例正在启动，则 CONTINUE 表示用户自定义操作已成功，可将实例投入使用。否则，ABANDON 表示用户自定义操作未成功，终止实例，伸缩活动置为失败，重新创建新实例。  - 如果实例正在终止，则 ABANDON 和 CONTINUE 都允许终止实例。不过，ABANDON 将停止其他生命周期挂钩，而 CONTINUE 将允许完成其他生命周期挂钩。  - 该字段缺省时默认为 ABANDON。   |
| default_timeout        | 否    | Integer | 生命周期挂钩超时时间，取值范围60-86400，默认为3600，单位是秒。 默认情况下，实例保持等待状态的时间。您可以延长超时时间，也可以在超时时间结束前进行 CONTINUE 或 ABANDON 操作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| notification_topic_urn | 是    | String  | SMN 服务中 Topic 的唯一的资源标识。 为生命周期挂钩定义一个通知目标，当实例被生命周期挂钩挂起时向该通知目标发送消息。该消息包含实例的基本信息、用户自定义通知消息，以及可用于控制生命周期操作的令牌信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| notification_metadata  | 否    | String  | 自定义通知消息，长度不超过256位，不能包含字符\< \> \& ' ( )。 当配置了通知目标时，可向其发送用户自定义的通知内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
#### 请求示例
创建一个名称为test-hook1的生命周期挂钩，伸缩组ID为e5d27f5c-dd76-4a61-b4bc-a67c5686719a，回调操作为ABANDON，超时时间为3600秒，消息通知topic_urn为urn:smn:*regionId*:b53e5554fad0494d96206fb84296510b:gsh，挂钩类型为在实例启动时挂起实例。
```
POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_lifecycle_hook/e5d27f5c-dd76-4a61-b4bc-a67c5686719a
{
    "lifecycle_hook_name": "test-hook1",
    "default_result": "ABANDON",
    "default_timeout": 3600,
    "notification_topic_urn": "urn:smn:regionId:b53e5554fad0494d96206fb84296510b:gsh",
    "lifecycle_hook_type": "INSTANCE_LAUNCHING"
}
```
#### 响应参数
表3响应参数 
| 参数                      | 参数类型    | 描述                                                                                                                                                                                                                                |
|:---|:---|:---|
| lifecycle_hook_name     | String  | 生命周期挂钩名称                                                                                                                                                                                                                          |
| lifecycle_hook_type     | String  | 生命周期挂钩类型。 - INSTANCE_TERMINATING  - INSTANCE_LAUNCHING   |
| default_result          | String  | 生命周期挂钩默认回调操作。 - ABANDON  - CONTINUE                     |
| default_timeout         | Integer | 生命周期挂钩超时时间，单位秒。                                                                                                                                                                                                                   |
| notification_topic_urn  | String  | SMN 服务中 Topic 的唯一的资源标识。                                                                                                                                                                                                           |
| notification_topic_name | String  | SMN 服务中 Topic 的资源名称。                                                                                                                                                                                                              |
| notification_metadata   | String  | 自定义通知消息                                                                                                                                                                                                                           |
| create_time             | String  | 生命周期挂钩创建时间，遵循UTC时间。                                                                                                                                                                                                               |
   
#### 响应示例
```
{
    "lifecycle_hook_name": "test-hook1",
    "default_result": "ABANDON",
    "default_timeout": 3600,
    "notification_topic_urn": "urn:smn:regionId:b53e5554fad0494d96206fb84296510b:gsh",
    "notification_topic_name": "gsh",
    "lifecycle_hook_type": "INSTANCE_LAUNCHING",
    "notification_metadata": null,
    "create_time": "2019-03-18T16:00:11Z"
}
```
#### 返回值
- 正常 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)。
