全部產品
Search
文件中心

Auto Scaling:CreateLifecycleHook

更新時間:Jan 14, 2025

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

介面說明

  • 一個伸縮組最多可以建立6個生命週期掛鈎。建立了生命週期掛鈎的伸縮組,在發生伸縮活動時,生命週期掛鈎會暫停伸縮活動一段時間,具體等待時間長度可以通過HeartbeatTimeout參數指定。您可以在等待期間進行初始化ECS執行個體配置、擷取ECS執行個體資料等操作。
  • 彈性擴張活動時,ECS執行個體添加至RDS執行個體白名單後進入等待狀態,等待狀態結束後再加入SLB執行個體後端伺服器組。彈性收縮活動時,ECS執行個體從SLB執行個體後端伺服器組移出後進入等待狀態,等待狀態結束後再從RDS執行個體白名單移出。
  • 生命週期掛鈎可以配置通知方式,支援MNS主題、MNS隊列和OOS模板。如果配置OOS模板,您需要為OOS服務建立RAM角色。具體操作,請參見為OOS服務設定RAM許可權
說明 如果伸縮組有存量的ECS執行個體,且配置的OOS模板用於加入或移出除RDS外的其他雲資料庫白名單,則您必須手動將存量的ECS執行個體加入雲資料庫的白名單。

調試

您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。

請求參數

名稱

類型

是否必選

樣本值

描述

Action String CreateLifecycleHook

系統規定參數。取值:CreateLifecycleHook

ScalingGroupId String asg-bp1eyv4qn8ssgv43****

目標伸縮組的ID。

LifecycleHookName String lifecyclehook****

生命週期掛鈎的名稱。不能與當前伸縮組其他生命週期掛鈎重名,長度為2~64個英文或中文字元,以數字、大小寫字母或中文開頭,可包含數字、底線(_)、短劃線(-)和半形句號(.)。

預設值為LifecycleHookId的值。

LifecycleTransition String SCALE_OUT

生命週期掛鈎適用的伸縮活動類型。取值範圍:

  • SCALE_OUT:伸縮組彈性擴張活動。
  • SCALE_IN:伸縮組彈性收縮活動。
DefaultResult String CONTINUE

等待狀態結束後的下一步動作。取值範圍:

  • CONTINUE:繼續響應彈性擴張活動或者繼續響應彈性收縮活動。
  • ABANDON:直接釋放彈性擴張活動建立出來的ECS執行個體或者直接將彈性收縮活動中的ECS執行個體從伸縮組移除。
  • ROLLBACK:針對彈性收縮活動,會拒絕釋放ECS執行個體,進行復原;針對彈性擴張活動,會直接釋放建立出來的ECS執行個體,效果同ABANDON一樣。

當伸縮組發生彈性收縮活動(SCALE_IN)並觸發多個生命週期掛鈎時,如果一個生命週期掛鈎的DefaultResult取值為ABANDONROLLBACK,且該掛鈎等待狀態結束時,會提前將其他生命週期掛鈎對應的等待狀態提前結束。其他情況下,下一步動作均以最後一個結束等待狀態的下一步動作為準。

預設值:CONTINUE。

HeartbeatTimeout Integer 600

生命週期掛鈎為伸縮組活動設定的等待時間,等待狀態逾時後會執行下一步動作。取值範圍:30~21600,單位:秒。

建立了生命週期掛鈎後,您可以調用RecordLifecycleActionHeartbeat延長ECS執行個體的等待時間,也可以調用CompleteLifecycleAction提前結束伸縮活動的等待狀態。

預設值:600。

NotificationMetadata String Test lifecycle hook.

生命週期掛鈎暫停伸縮活動時推送給NotificationArn(通知對象)的通知資訊,便於管理和標記不同類別的通知資訊。必須同時指定NotificationArn。參數長度不能超過4096個字元。

如果NotificationArn指定為OOS模板,包括公用模板或者自訂模板,則NotificationMetadata必須指定為JSON字串,且與OOS模板的參數相符。

例如,{"dbInstanceId": "dds-bp17661e0135****", "modifyMode": "Append"}dbInstanceIdmodifyMode為OOS模板中已定義的參數。OOS模板的部分參數有預設值,NotificationMetadata必須指定無預設值的參數,指定有預設值的參數時會覆蓋原預設值,但以下參數請保持預設值,用於在伸縮活動運行時擷取相關資訊:

  • regionId:伸縮活動執行的地區,預設為${regionId}。
  • instanceIds:伸縮活動關聯的執行個體列表,預設為${instanceIds}。
  • lifecycleHookId:生命週期掛鈎ID,預設為${lifecycleHookId}。
  • lifecycleActionToken:伸縮活動的等待狀態標識符,用於提前結束當前的掛起活動,預設為${lifecycleActionToken}。
  • scalingGroupId:伸縮活動所屬的伸縮組ID,預設為${scalingGroupId}。
  • lifecycleActionResult:生命週期掛鈎等待狀態結束後的下一步動作,用於在OOS模板執行失敗時提前結束當前的掛起活動,當DefaultResultROLLBACK時,參數值預設為ROLLBACK,其餘情況預設為ABANDON
    說明
    • 您可以根據需要設定lifecycleActionResult的值來覆蓋當前預設值,取值範圍為ABANDON、CONTINUE、ROLLBACK、${lifecycleActionResult}。其中,${lifecycleActionResult}表示lifecycleActionResult的值和DefaultResult保持一致。
    • 您可以在OOS控制台擷取對應模板的參數的詳細資料。
NotificationArn String acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo****

生命週期掛鈎通知物件識別碼,不設定本參數表示不發送通知,設定本參數時支援以下通知方式:

  • MNS隊列,參數取值格式:acs:mns:{region-id}:{account-id}:queue/{queuename}
  • MNS主題,參數取值格式:acs:mns:{region-id}:{account-id}:topic/{topicname}
  • OOS模板,參數取值格式:acs:oos:{region-id}:{account-id}:template/{templatename}
  • 事件匯流排 ,參數取值格式:acs:eventbridge:{region-id}:{account-id}:eventbus/default

參數格式中的變數含義如下:

  • region-id:伸縮組所在的地區的ID。
  • account-id:阿里雲帳號ID,不支援RAM使用者的帳號ID。
  • queuename:MNS隊列的名稱。
  • topicname:MNS主題的名稱。
  • templatename:OOS模板的名稱。

返回資料

名稱

類型

樣本值

描述

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個生命週期掛鈎。