本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將生命週期掛鉤新增至 Auto Scaling 群組
若要將 Auto Scaling 執行個體置於等待狀態並對其執行自訂動作,您可以將 lifecycle hook 新增至 Auto Scaling 群組。自訂動作會在執行個體啟動時或終止之前執行。在您完成生命週期動作前,或逾時期限結束前,執行個體都保持在等待狀態。
從 建立 Auto Scaling 群組之後 AWS Management Console,您可以將一或多個生命週期掛鉤新增至其中,總共 50 個生命週期掛鉤。您也可以在建立 Auto Scaling 群組時 AWS CLI AWS CloudFormation,使用 或 SDK 將生命週期掛鉤新增至該群組。
預設情況下,您在主控台中新增 lifecycle hook 時,Amazon EC2 Auto Scaling 便會向 Amazon EventBridge 傳送生命週期事件通知。使用 EventBridge 或使用者資料指令碼是建議的最佳實務。若要建立將通知直接傳送至 Amazon SNS 或 Amazon SQS 的 lifecycle hook,您可以使用 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
至120
秒的短暫逾時時間,具體視您執行任何最終任務 (例如從 CloudWatch 提取 EC2 日誌) 所需的時間而定。 -
對於 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-hook3600
秒 (1 小時) 的活動訊號逾時。
若要變更現有 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-heartbeat