

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在自动扩缩组中完成生命周期操作
<a name="completing-lifecycle-hooks"></a>

当 Auto Scaling 组响应生命周期事件时，它会将实例置于等待状态并发送事件通知。当实例处于等待状态时，您可以执行自定义操作。

如果您在超时周期过期之前完成生命周期操作，那么以 `CONTINUE` 的结果完成生命周期操作会很有帮助。如果您未完成生命周期操作，则生命周期挂钩将在超时周期结束后进入您为**默认结果**指定的状态。

**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) 命令重新开始超时时段，并将实例保持为等待状态。例如，如果超时时段为一小时，而您在 30 分钟后调用该命令，则实例将继续保持等待状态一小时（总共为 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 函数的生命周期钩子](tutorial-lifecycle-hook-lambda.md)。