

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

# 生命周期挂钩在自动扩缩组中如何工作
<a name="lifecycle-hooks-overview"></a>

一个 Amazon EC2 实例从其启动一直到其终止，将经过不同的状态转换。您可以为您的自动扩缩组创建自定义操作，以便在实例因生命周期挂钩而转换到等待状态时执行操作。

下图显示使用生命周期挂钩进行横向扩展和横向缩减时，Auto Scaling 实例状态之间的转换。

![使用生命周期挂钩进行横向扩展和横向缩减时，Auto Scaling 实例状态之间的转换。](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/how-lifecycle-hooks-work.png)


如上图中所示：

1. Auto Scaling 组响应向外扩展事件并开始启动实例。

1. 生命周期钩子将实例置于等待状态 (`Pending:Wait`)，然后执行自定义操作。

   实例将保持等待状态，直到您完成生命周期操作，或者直到超时时段结束。预设情况下，实例将保持等待状态 1 小时，然后 Auto Scaling 组继续启动过程 (`Pending:Proceed`)。如果您需要更长时间，可通过记录检测信号来重新开始超时时段。如果您在自定义操作已完成且超时时段尚未到期时完成生命周期操作，则该时间段结束，Auto Scaling 组将继续启动过程。

1. 实例进入 `InService` 状态并开始运行状况检查宽限期。但是，在实例达到 `InService` 状态之前，如果 Auto Scaling 组与 Elastic Load Balancing 负载均衡器关联，则实例将在负载均衡器中注册，然后负载均衡器开始检查其运行状况。运行状况检查宽限期结束后，Amazon EC2 Auto Scaling 开始检查实例的运行状况。

1. Auto Scaling 组响应缩减事件并开始终止实例。如果 Auto Scaling 组与 Elastic Load Balancing 一起使用，则终止实例要首先从负载均衡器中取消注册。如果为负载均衡器启用了 Connection Draining，则实例将停止接受新连接并等待现有连接耗尽，然后再完成取消注册过程。

1. 生命周期钩子将实例置于等待状态 (`Terminating:Wait`)，然后执行自定义操作。

   该实例将保持等待状态，直到您完成生命周期操作，或者直至超时期结束（预设情况下为 1 小时）。完成生命周期钩子或超时时段过期后，实例将转换到下一个状态 (`Terminating:Proceed`)。

1. 实例已终止。

**重要**  
暖池中的实例也有自己的生命周期以及相对应的等待状态，如 [暖池中实例的生命周期状态转换](warm-pool-instance-lifecycle.md#lifecycle-state-transitions) 中所述。

## 正在更换根卷的实例的生命周期状态转换
<a name="rvr-lifecycle-state-transitions"></a>

下图显示了使用生命周期挂钩替换根卷时 Auto Scaling 实例状态之间的过渡：

![当您使用生命周期挂钩替换根卷时，Auto Scaling 实例状态之间的转换。](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/root-volume-replacement-lifecycle-states.png)


如上图中所示：

1. Auto Scaling 组对实例刷新做出响应，并选择一个实例进行根卷替换。实例进入`ReplacingRootVolume`状态。如果实例已向负载均衡器注册，则该实例将从负载均衡器中注销。

1. 生命周期钩子将实例置于等待状态 (`ReplacingRootVolume:Wait`)，然后执行自定义操作。实例将保持等待状态，直到您完成生命周期操作，或者直到超时时段结束。如果您在自定义操作已完成且超时时间尚未到期时完成生命周期操作，则超时期限将结束，Auto Scaling 组将继续根卷更换过程。

1. 实例完成根卷更换并进入`RootVolumeReplaced`状态。

1. 实例进入`Pending`状态。

1. 生命周期钩子将实例置于等待状态 (`Pending:Wait`)，然后执行自定义操作。在您完成生命周期操作或超时时间结束之前，实例将保持等待状态。完成生命周期钩子或超时时段过期后，实例将转换到下一个状态 (`Pending:Proceed`)。

1. 实例进入`InService`状态。但是，在实例进入`InService`状态之前，如果 Auto Scaling 组与 Elastic Load Balancing 负载均衡器相关联，则该实例已在负载均衡器中注册。