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。 |
ScalingGroupId | String | 是 | asg-bp1eyv4qn8ssgv43**** | 目标伸缩组的ID。 |
LifecycleHookName | String | 否 | lifecyclehook**** | 生命周期挂钩的名称。不能与当前伸缩组其他生命周期挂钩重名,长度为2~64个英文或中文字符,以数字、大小写字母或中文开头,可包含数字、下划线(_)、短划线(-)和半角句号(.)。 默认值为LifecycleHookId的值。 |
LifecycleTransition | String | 是 | SCALE_OUT | 生命周期挂钩适用的伸缩活动类型。取值范围:
|
DefaultResult | String | 否 | CONTINUE | 等待状态结束后的下一步动作。取值范围:
当伸缩组发生弹性收缩活动(SCALE_IN)并触发多个生命周期挂钩时,如果一个生命周期挂钩的 默认值:CONTINUE。 |
HeartbeatTimeout | Integer | 否 | 600 | 生命周期挂钩为伸缩组活动设置的等待时间,等待状态超时后会执行下一步动作。取值范围:30~21600,单位:秒。 创建了生命周期挂钩后,您可以调用RecordLifecycleActionHeartbeat延长ECS实例的等待时间,也可以调用CompleteLifecycleAction提前结束伸缩活动的等待状态。 默认值:600。 |
NotificationMetadata | String | 否 | Test lifecycle hook. | 生命周期挂钩暂停伸缩活动时推送给 如果 例如,
|
NotificationArn | String | 否 | acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo**** | 生命周期挂钩通知对象标识符,不设置本参数表示不发送通知,设置本参数时支持以下通知方式:
参数格式中的变量含义如下:
|
返回数据
名称 |
类型 |
示例值 |
描述 |
RequestId | String | 473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** | 请求ID。 |
LifecycleHookId | String | ash-bp1at9ufhmcf9cmy**** | 生命周期挂钩的ID。 |
示例
请求示例
http(s)://ess.aliyuncs.com/?Action=CreateLifecycleHook
&ScalingGroupId=asg-bp1eyv4qn8ssgv43****
&LifecycleHookName=lifecyclehook****
&LifecycleTransition=SCALE_OUT
&DefaultResult=CONTINUE
&HeartbeatTimeout=600
&NotificationMetadata=Test lifecycle hook.
&NotificationArn=acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo****
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<CreateLifecycleHookResponse>
<RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
<LifecycleHookId>ash-bp1at9ufhmcf9cmy****</LifecycleHookId>
</CreateLifecycleHookResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"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个生命周期挂钩。 |