

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

# 使用实例生命周期策略控制实例保留
<a name="instance-lifecycle-policy"></a>

 实例生命周期策略提供保护，防止在终止生命周期操作被放弃时 Amazon EC2 Auto Scaling 终止。与单独的生命周期挂钩不同，实例生命周期策略旨在确保在正常关闭过程未成功完成时，实例会进入保留状态。

## 何时使用实例生命周期策略
<a name="when-to-use-instance-lifecycle-policies"></a>

 如果应用程序的正常关闭不是可选的，而是强制性的，并且失败的关闭需要手动干预，则使用实例生命周期策略。常见使用案例包括：
+  有状态的应用程序，在终止之前必须完成数据持久化。
+  需要延长耗尽时间且可能超过 48 小时生命周期挂钩超时上限的应用程序。
+  处理敏感数据的工作负载，如果清理失败或不完整，可能会导致数据丢失或损坏。
+  突然关闭会影响可用性的关键任务服务。

 有关如何优雅地处理实例终止的更多信息，请参阅[设计您的应用程序以妥善处理实例终止](gracefully-handle-instance-termination.md)。

## 实例生命周期策略如何与终止生命周期挂钩配合使用
<a name="how-instance-lifecycle-policies-work"></a>

 实例生命周期策略与终止生命周期挂钩结合使用，不能作为替代品。该过程分为几个阶段：

1.  **终止生命周期操作将执行。**当 Amazon EC2 Auto Scaling 选择要终止的实例时，系统会调用您的终止生命周期挂钩，并且该实例进入开始执行终止生命周期操作的`Terminating:Wait`状态。

1.  **优雅的关机尝试开始了。**您的应用程序，无论是在实例上运行还是通过控制平面运行，都会收到终止生命周期操作通知并开始正常关闭过程，例如耗尽连接、完成正在进行的工作或传输数据。

1.  **终止生命周期操作已完成。**终止生命周期操作可能以`CONTINUE`或`ABANDON`结果结束。

1.  **实例生命周期策略对情况进行评估。**如果未配置实例生命周期策略，即使终止生命周期操作已完成并`ABANDON`产生结果，实例也会立即终止。将实例生命周期策略配置为保持实例处于开启状态后`TerminateHookAbandon`，如果终止生命周期操作已完成并`ABANDON`产生结果，则实例将进入保留状态。

1.  **保留的实例等待手动操作。**处于保留状态的实例继续产生标准的 Amazon EC2 费用。这些实例不计入您的 Auto Scaling 组的所需容量，因此 Auto Scaling 会启动替换实例以保持所需的大小。Auto Scaling 功能（例如实例刷新和最大实例生命周期）也会忽略保留的实例。这允许您在手动终止实例之前手动完成清理程序、恢复数据或调查自动关闭失败的原因。

1.  **发生手动终止。**在您对保留的实例完成必要操作后，您需要调用 `TerminateInstanceInAutoScalingGroup` API 来终止该实例。