Creates a lifecycle hook. A lifecycle hook allows you to execute custom actions such as sending notifications or automating script execution at critical stages (such as startup and termination) in the lifecycle of an instance. Implementing the lifecycle hook feature allows for finer control and management of instances. For example, you can verify configurations, set up custom tasks, or back up data on your instances when lifecycle hooks take effect, thus enhancing the flexibility and reliability of application deployment.
Usage notes
You can create up to six lifecycle hooks for each scaling group. During scaling events, Elastic Compute Service (ECS) instances are not immediately added to or removed from scaling groups that have active lifecycle hooks. Instead, the instances are added to or removed from the scaling groups only after the lifecycle hooks time out. The period for which a lifecycle hook remains active is determined by the value of HeartbeatTimeout. You can execute custom operations, such as initializing the configurations of ECS instances and querying data on ECS instances, before lifecycle hooks time out.
During scale-out events, the private IP addresses of ECS instances are added to the IP address whitelists of the associated ApsaraDB RDS instances. However, the ECS instances are added to the backend server groups of the associated Server Load Balancer (SLB) instances only after lifecycle hooks time out. During scale-in events, ECS instances are removed from the backend server groups of the associated SLB instances. However, the private IP addresses of the ECS instances are removed from the IP address whitelists of the associated ApsaraDB RDS instances only after lifecycle hooks time out.
You must specify a notification recipient for each lifecycle hook. When lifecycle hooks are triggered, notifications can be sent by using Simple Message Queue (SMQ, formerly MNS) topics, SMQ queues, or CloudOps Orchestration Service (OOS) templates. If you want to configure an OOS template, you must create a Resource Access Management (RAM) role for OOS. For more information, see Grant RAM permissions to OOS.
If your scaling group contains existing ECS instances, and you have specified an OOS template to add or remove their private IP addresses to or from the IP address whitelists of cloud databases other than ApsaraDB RDS instances, you must manually add or remove the private IP addresses to or from the whitelists.
Debugging
Request parameters
Parameter | Type | Required | Example | Description |
Action | String | Yes | CreateLifecycleHook | The operation that you want to perform. Set the value to CreateLifecycleHook. |
ScalingGroupId | String | Yes | asg-bp1eyv4qn8ssgv43**** | The ID of the scaling group. |
LifecycleHookName | String | No | lifecyclehook**** | The name of the lifecycle hook that you want to create. Each lifecycle hook name must be unique in a scaling group. The name must be 2 to 64 characters in length and can contain letters, digits, underscores (_), hyphens (-), and periods (.). The name must start with a letter or a digit. If you do not specify this parameter, the value of LifecycleHookId is used. |
LifecycleTransition | String | Yes | SCALE_OUT | The type of the scaling event to which you want to apply the lifecycle hook. Valid values:
|
DefaultResult | String | No | CONTINUE | The action that Auto Scaling performs after the lifecycle hook times out. Valid values:
If a scaling group has multiple lifecycle hooks in effect and you set Default value: CONTINUE. |
HeartbeatTimeout | Integer | No | 600 | The period of time before the lifecycle hook times out. After the lifecycle hook times out, Auto Scaling performs the default action. Valid values: 30 to 21600. Unit: seconds. After you create a lifecycle hook, you can call the RecordLifecycleActionHeartbeat operation to extend the timeout period of the lifecycle hook. You can also call the CompleteLifecycleAction operation to end the timeout period ahead of schedule. Default value: 600. |
NotificationMetadata | String | No | Test lifecycle hook. | The notification information that Auto Scaling sends to the recipient specified by If you use For example, if your CloudOps Orchestration Service (OOS) template contains
|
NotificationArn | String | No | acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo**** | The Alibaba Cloud Resource Name (ARN) of the notification recipient. If you do not specify this parameter, no notification is sent when the lifecycle hook takes effect. If you specify this parameter, the following rules apply:
The variables in the preceding value formats have the following meanings:
|
Response parameters
Parameter | Type | Example | Description |
RequestId | String | 473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** | The ID of the request. |
LifecycleHookId | String | ash-bp1at9ufhmcf9cmy**** | The ID of the lifecycle hook. |
Examples
Sample requests
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****
&<Common request parameters>
Sample success responses
XML
format
HTTP/1.1 200 OK
Content-Type:application/xml
<CreateLifecycleHookResponse>
<RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
<LifecycleHookId>ash-bp1at9ufhmcf9cmy****</LifecycleHookId>
</CreateLifecycleHookResponse>
JSON
format
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"LifecycleHookId" : "ash-bp1at9ufhmcf9cmy****"
}
Error codes
For a list of error codes, see Service error codes.
HTTP status code | Error code | Description | Description |
400 | InvalidParamter | The specified value of parameter is not valid. | The value of a parameter is invalid. |
400 | InvalidNotificationArn | The specified parameter notificationArn is invalid. | The value of NotificationArn is invalid. |
400 | UnsupportedNotificationType.CurrentRegion | The notificationType is not supported in the special region which scalingGroup belongs to. | The notification recipient is not supported in the current region. |
400 | QueueNotExist | The specified queue does not exist. | The specified SMQ queue does not exist. |
400 | TopicNotExist | The specified topic does not exist. | The MNS topic does not exist. |
400 | InvalidLifecycleHookName.Duplicate | The specified value of parameter lifecycleHookName is duplicated. | The name of the lifecycle hook already exists. |
400 | QuotaExceeded.LifecycleHook | Lifecycle hook quota exceeded in the specified scaling group. | The maximum number of lifecycle hooks that you can create has been reached. |