调用CreateLifecycleHook为伸缩组创建一个或多个生命周期挂钩。
接口说明
一个伸缩组最多可以创建6个生命周期挂钩。创建了生命周期挂钩的伸缩组,在发生伸缩活动时,生命周期挂钩会暂停伸缩活动一段时间,具体等待时长可以通过HeartbeatTimeout参数指定。您可以在等待期间进行初始化ECS实例配置、获取ECS实例数据等操作。
弹性扩张活动时,ECS实例添加至RDS实例白名单后进入等待状态,等待状态结束后再加入SLB实例后端服务器组。弹性收缩活动时,ECS实例从SLB实例后端服务器组移出后进入等待状态,等待状态结束后再从RDS实例白名单移出。
生命周期挂钩可以配置通知方式,支持MNS主题、MNS队列和OOS模板。如果配置OOS模板,您需要为OOS服务创建RAM角色。具体操作,请参见为OOS服务设置RAM权限。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
| 名称 | 类型 | 是否必选 | 示例值 | 描述 | 
|---|---|---|---|---|
| Action | String | 是 | CreateLifecycleHook | 系统规定参数。取值:CreateLifecycleHook | 
| LifecycleTransition | String | 是 | SCALE_OUT | 生命周期挂钩适用的伸缩活动类型,取值范围: 
 | 
| ScalingGroupId | String | 是 | asg-bp1eyv4qn8ssgv43**** | 伸缩组的ID。 | 
| LifecycleHookName | String | 否 | lifecyclehook**** | 生命周期挂钩的名称。不能与当前伸缩组其他生命周期挂钩重名,长度为2~64个英文或中文字符,以数字、大小写字母或中文开头,可包含数字、下划线(_)、短划线(-)和英文句号(.)。 默认值为LifecycleHookId的值。 | 
| DefaultResult | String | 否 | CONTINUE | 等待状态结束后的下一步动作,取值范围: 
 当伸缩组发生弹性收缩活动(SCALE_IN)并触发多个生命周期挂钩时,DefaultResult为ABANDON的生命周期挂钩触发的等待状态结束时,会提前将其它对应的等待状态提前结束。其他情况下,下一步动作均以最后一个结束等待状态的下一步动作为准。 默认值:CONTINUE | 
| HeartbeatTimeout | Integer | 否 | 600 | 生命周期挂钩为伸缩组活动设置的等待时间,等待状态超时后会执行下一步动作。取值范围:30~21600,单位:秒。 创建了生命周期挂钩后,您可以调用RecordLifecycleActionHeartbeat延长ECS实例的等待时间,也可以调用CompleteLifecycleAction提前结束伸缩活动的等待状态。 默认值:600 | 
| NotificationMetadata | String | 否 | Test lifecycle hook. | 生命周期挂钩暂停伸缩活动时推送给NotificationArn(通知对象)的通知信息,便于管理和标记不同类别的通知信息。必须同时指定NotificationArn。参数长度不能超过4096个字符。 如果NotificationArn指定为OOS模板,包括公共模板或者自定义模板,则NotificationMetadata必须指定为JSON字符串,且与OOS模板的参数相符。比如, 
  
           说明 您可以在 
           OOS控制台获取对应模板的参数信息。 
           | 
| NotificationArn | String | 否 | acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo**** | 生命周期挂钩通知对象标识符,不设置本参数表示不发送通知,设置本参数时支持以下通知方式: 
 参数格式中的变量含义如下: 
 | 
返回数据
| 名称 | 类型 | 示例值 | 描述 | 
|---|---|---|---|
| LifecycleHookId | String | ash-bp1at9ufhmcf9cmy**** | 生命周期挂钩的D。 | 
| RequestId | String | 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E | 请求ID。 | 
示例
请求示例
https://ess.aliyuncs.com/?Action=CreateLifecycleHook &ScalingGroupId=asg-bp1eyv4qn8ssgv43**** &LifecycleHookName=lifecyclehook**** &LifecycleTransition=SCALE_OUT &NotificationArn=acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo**** &NotificationMetadata=Test lifecycle hook. &<公共请求参数>
正常返回示例
XML格式 
<CreateLifecycleHookResponse>
      <RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E</RequestId>
      <LifecycleHookId>ash-bp1at9ufhmcf9cmy****</LifecycleHookId>
</CreateLifecycleHookResponse> 
     JSON格式 
{
    "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E",
    "LifecycleHookId": "ash-bp1at9ufhmcf9cmy****"
} 
    错误码
访问错误中心查看更多错误码。
| HttpCode | 错误码 | 错误信息 | 描述 | 
|---|---|---|---|
| 400 | InvalidParamter | The specified value of parameter is not valid. | 参数值不合法。 | 
| 400 | InvalidNotificationArn | The specified parameter notificationArn is invalid. | 指定的NotificationArn不合法。 | 
| 400 | UnsupportedNotificationType.CurrentRegion | The notificationType is not supported in the special region which scalingGroup belongs to. | 当前地域不支持该通知方式。 | 
| 400 | QueueNotExist | The specified queue does not exist. | 指定的MNS队列不存在。 | 
| 400 | TopicNotExist | The specified topic does not exist. | 指定的MNS主题不存在。 | 
| 400 | InvalidLifecycleHookName.Duplicate | The specified value of parameter lifecycleHookName is duplicated. | 生命周期挂钩已存在。 | 
| 400 | QuotaExceeded.LifecycleHook | Lifecycle hook quota exceeded in the specified scaling group. | 一个伸缩组最多可以创建6个生命周期挂钩。 | 
 
                 
            
