

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Auto Scaling 群組中完成生命週期動作
<a name="completing-lifecycle-hooks"></a>

當 Auto Scaling 群組回應生命週期事件時，它會使執行個體進入等待狀態並傳送事件通知。當執行個體處於等待狀態，您可以執行自訂動作。

如果您在逾時期限到期之前完成生命週期動作且結果為 `CONTINUE`，將會對您有所幫助。如果您未完成生命週期動作，逾時期間結束後，lifecycle hook 便會移至您為**預設結果**指定的狀態。

**Topics**
+ [完成生命週期動作 (手動)](#completing-lifecycle-hooks-aws-cli)
+ [完成生命週期動作 (自動)](#completing-lifecycle-hooks-automatic)

## 完成生命週期動作 (手動)
<a name="completing-lifecycle-hooks-aws-cli"></a>

下列步驟適用於命令列介面，不受主控台不支援。必須取代的資訊會以斜體顯示，例如執行個體 ID 或 Auto Scaling 群組的名稱。

**完成生命週期動作 (AWS CLI)**

1. 如果您需要更多時間來完成自訂動作，請使用 [record-lifecycle-action-heartbeat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/record-lifecycle-action-heartbeat.html) 命令重新啟動逾時期限和保持執行個體的等待狀態。例如，如果逾時期限為 1 小時，且您在 30 分鐘後呼叫此命令，執行個體將再維持 1 小時的等待狀態，則總共為 90 分鐘。

   您可以指定隨[通知](prepare-for-lifecycle-notifications.md#notification-message-example)接收到的生命週期動作字符，如以下命令所示。

   ```
   aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name {{my-launch-hook}} \
     --auto-scaling-group-name {{my-asg}} --lifecycle-action-token {{bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635}}
   ```

   或者，您也可以指定您隨[通知](prepare-for-lifecycle-notifications.md#notification-message-example)收到的執行個體 ID，如以下命令所示。

   ```
   aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name {{my-launch-hook}} \
     --auto-scaling-group-name {{my-asg}} --instance-id {{i-1a2b3c4d}}
   ```

1. 如果您在逾時期限結束之前完成自訂動作，請使用 [complete-lifecycle-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html) 命令，讓 Auto Scaling 群組可以繼續啟動或終止執行個體。您可以指定生命週期動作字符，如以下命令所示。

   ```
   aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
     --lifecycle-hook-name {{my-launch-hook}} --auto-scaling-group-name {{my-asg}} \
     --lifecycle-action-token {{bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635}}
   ```

   或者，您也可以指定執行個體 ID，如下列命令所示。

   ```
   aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
     --instance-id {{i-1a2b3c4d}} --lifecycle-hook-name {{my-launch-hook}} \
     --auto-scaling-group-name {{my-asg}}
   ```

## 完成生命週期動作 (自動)
<a name="completing-lifecycle-hooks-automatic"></a>

如果擁有在啟動後設定執行個體的使用者資料指令碼，則您不需要手動完成生命週期動作。您可以新增 [complete-lifecycle-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html) 命令至指令碼。該指令碼可以從執行個體中繼資料中擷取執行個體 ID，並在引導指令碼成功完成時向 Amazon EC2 Auto Scaling 傳送訊號。

如果您不是這樣做的，那麼更新您的指令碼來從執行個體的中繼資料擷取執行個體中的執行個體 ID。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[擷取執行個體中繼資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)。

如果使用 Lambda，您也可以在函數的程式碼中設定回呼，在自訂動作成功完成時，讓執行個體的生命週期繼續執行。如需詳細資訊，請參閱[教學課程：設定叫用 Lambda 函數的 lifecycle hook](tutorial-lifecycle-hook-lambda.md)。