CreateLifecycleHook 用於在指定的Auto Scaling組中建立一個或多個生命週期掛鈎。這些掛鈎在執行個體的生命週期關鍵階段(如啟動、終止前)介入,使您能夠執行自訂動作,如發送通知或執行自動化指令碼等。通過此功能,您可以實現更細粒度的控制和管理,例如在執行個體被自動調整活動影響前後執行驗證、配置或資料備份任務,從而增強應用部署的靈活性和可靠性。
介面說明
- 一個伸縮組最多可以建立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個生命週期掛鈎。 |