本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將生命週期掛鉤添加到您的 Auto Scaling 組
若要將 Auto Scaling 執行個體置於等待狀態並對其執行自訂動作,您可以將 lifecycle hook 新增至 Auto Scaling 群組。自訂動作會在執行個體啟動時或終止之前執行。在您完成生命週期動作前,或逾時期限結束前,執行個體都保持在等待狀態。
從建立 Auto Scaling 群組之後 AWS Management Console,您可以在其中新增一或多個生命週期勾點,最多總共 50 個生命週期勾點。您也可以使用 AWS CLI、或 SDK AWS CloudFormation,在建立時將生命週期掛接新增至 Auto Scaling 群組。
根據預設,當您在主控台中新增生命週期勾點時,Amazon EC2 Auto Scaling 會將生命週期事件通知傳送給 Amazon EventBridge。建議使用 EventBridge 或使用者資料指令碼。若要建立直接將通知傳送至 Amazon SNS 或 Amazon SQS 的生命週期勾點,您可以使用put-lifecycle-hook命令,如本主題範例所示。
新增 lifecycle hook (主控台)
請遵循以下步驟,將生命週期關聯新增至您的 Auto Scaling 群組。若要新增用於橫向擴展 (執行個體啟動) 和縮減 (執行個體終止或返回暖集區) 的生命週期關聯,您必須建立兩個單獨的關聯。
開始之前,請確認您已視需要設定自訂動作,如 準備將 lifecycle hook 新增至您的 Auto Scaling 群組 所述。
新增橫向擴展的 lifecycle hook
前往網址 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組。 -
選取 Auto Scaling 群組旁的核取方塊。頁面底部會開啟一個分割窗格。
-
在 Instance management (執行個體管理) 索引標籤的 Lifecycle hooks (lifecycle hook) 中,選擇 Create lifecycle hook (建立 lifecycle hook)。
-
若要定義橫向擴展 (執行個體啟動) 的 lifecycle hook,請執行以下操作:
-
對於 Lifecycle hook name (lifecycle hook 名稱),指定 lifecycle hook 的名稱。
-
對於 Lifecycle transition (生命週期轉移),選擇 Instance launch (執行個體啟動)。
-
在活動訊號逾時中,請指定在關聯逾時之前橫向擴展時,執行個體保持等待狀態的時間長度,單位為秒。範圍是從
30
至7200
秒。設定較長的逾時期限,可為完成自訂動作提供更多時間。然後,如果您在逾時期限結束之前完成,請傳送complete-lifecycle-action指令以允許執行個體進入下一個狀態。 -
在 Default result (預設結果) 中,請指定當 lifecycle hook 逾時或發生意外失敗時要採取的動作。您可以選擇繼續或捨棄。
-
如果您選擇繼續,Auto Scaling 群組可以用任何其他生命週期關聯繼續操作,然後將執行個體投入服務。
-
如果選擇捨棄,Auto Scaling 群組會立即終止任何其餘的動作,並會立即終止執行個體。
-
-
(選用) 針對通知中繼資料,指定在 Amazon EC2 Auto Scaling 將訊息傳送至通知目標時您想要包含的其他資訊。
-
-
選擇建立。
新增縮減的 lifecycle hook
-
選擇建立 lifecycle hook,即可在您建立橫向擴展 lifecycle hook 後的位置繼續處理。
-
若要定義縮減的 lifecycle hook (執行個體終止或返回暖集區),請執行以下操作:
-
對於 Lifecycle hook name (lifecycle hook 名稱),指定 lifecycle hook 的名稱。
-
對於 Lifecycle transition (生命週期轉移),選擇 Instance terminate (執行個體終止)。
-
在活動訊號逾時中,請指定在關聯逾時之前橫向擴展時,執行個體保持等待狀態的時間長度,單位為秒。根據執行任
30
何最終任務 (例如從中提取 EC2 日誌) 所需的時間,我們建議您將短暫的逾時期限設為120
秒 CloudWatch。 -
對於 Default result (預設結果),指定逾時或發生意外失敗時,Auto Scaling 群組會採取的動作。ABANDON (放棄) 和 CONTINUE (繼續) 皆允許執行個體終止。
-
如果選擇 CONTINUE (繼續),Auto Scaling 群組可以在終止前繼續執行任何剩餘的動作,如其他 lifecycle hook。
-
如果選擇捨棄,Auto Scaling 群組會立即終止執行個體。
-
-
(選用) 針對通知中繼資料,指定在 Amazon EC2 Auto Scaling 將訊息傳送至通知目標時您想要包含的其他資訊。
-
-
選擇建立。
新增 lifecycle hook (AWS CLI)
使用指令建立和更新生put-lifecycle-hook命週期掛接。
若要在擴增時執行某一動作,請使用下列命令。
aws autoscaling put-lifecycle-hook --lifecycle-hook-name
my-launch-hook
\ --auto-scaling-group-namemy-asg
\ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING
若要在縮減時執行某一動作,請使用下列命令。
aws autoscaling put-lifecycle-hook --lifecycle-hook-name
my-termination-hook
\ --auto-scaling-group-namemy-asg
\ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING
若要使用 Amazon SNS 或 Amazon SQS 接收通知,請新增 --notification-target-arn
和 --role-arn
選項。
以下範例會建立了一個 lifecycle hook,該掛鉤會指定名為
的 SNS 主題作為通知目標。my-sns-topic
aws autoscaling put-lifecycle-hook --lifecycle-hook-name
my-termination-hook
\ --auto-scaling-group-namemy-asg
\ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \ --notification-target-arn arn:aws:sns:region
:123456789012
:my-sns-topic
\ --role-arn arn:aws:iam::123456789012
:role/my-notification-role
該主題接收測試下列含有鍵值對的通知。
"Event": "autoscaling:TEST_NOTIFICATION"
依預設,此命put-lifecycle-hook令會建立具有3600
秒 (一小時) 活動訊號逾時的生命週期掛接。
若要變更現有 lifecycle hook 的活動訊號逾時,請新增 --heartbeat-timeout
選項,如以下範例所示。
aws autoscaling put-lifecycle-hook --lifecycle-hook-name
my-termination-hook
\ --auto-scaling-group-namemy-asg
--heartbeat-timeout120
如果執行個體已處於等待狀態,您可以使用 record-lifecycle-action-heartbeatCLI 命令記錄活動訊號,以防止生命週期掛接逾時。這樣做會將逾時期限延長到您在建立 lifecycle hook 時所指定的逾時值。如果您在逾時期限結束之前完成,您可以傳送 complete-lifecycle-actionCLI 命令以允許執行個體進入下一個狀態。如需詳細資訊和範例,請參閱 在「Auto Scaling」群組中完成生命週期動作。