调用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个生命周期挂钩。 |