Creates lifecycle hooks. A lifecycle hook allows you to execute custom actions like 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 HeartbeatTimeout setting. 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, the private IP addresses of ECS instances are removed from the IP address whitelists of the associated ApsaraDB RDS instances. However, the ECS instances are only removed from the backend server groups of the associated SLB instances after lifecycle hooks time out.
You must specify a notification receiver for each lifecycle hook. When lifecycle hooks are triggered, notifications can be sent by using Message Service (MNS) topics, MNS 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 Use RAM to grant 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 non-ApsaraDB RDS cloud databases, 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. 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 scaling events 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:
When 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. When the lifecycle hook times out, Auto Scaling performs the action that is specified by DefaultResult. 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 receiver specified by If you use For example, if your OOS template contains
|
NotificationArn | String | No | acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo**** | The Alibaba Cloud Resource Name (ARN) of the notification receiver. 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 request ID. |
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 | Error message | 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 type is not supported in the region where the scaling group resides. |
400 | QueueNotExist | The specified queue does not exist. | The specified MNS 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. |