温池实例生命周期 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

温池实例生命周期

温池中的实例维护自己独立的生命周期,以帮助您为每次转换创建适当的生命周期操作。此生命周期旨在便于使用事件通知来调用目标服务中的操作(例如,Lambda 函数)。

请注意,用于创建和管理生命周期钩子的 API 未更改(仅实例生命周期已更改)。

Amazon EC2 实例从启动一直到其终止,将经过不同的状态转换。当实例从一个状态转换到另一个状态时,您可以创建生命周期钩子来处理这些事件状态。

下图显示每种状态之间的转换:

¹ 如果您选择将加热实例放入Running状态时,加热池中的实例从Warmed:PendingWarmed:Running相反。

如上图所示:

  • 生命周期挂钩在实例启动到温池后立即运行,当它转换到Warmed:Pending:Wait状态。

  • 另一个生命周期挂钩在实例进入InService状态,当它转换到Pending:Wait状态。

  • 最终生命周期钩子会在实例终止之前运行,当实例转换到Terminating:Wait状态。

添加生命周期挂钩时,请考虑以下事项:

  • 当您添加启动生命周期钩子时,Amazon EC2 Auto Scaling 会暂停一个实例,该实例将转换到Warmed:Pending:Wait状态和Pending:Wait状态。

  • 如果对您的应用程序的需求耗尽了热池,则 Amazon EC2 Auto Scaling 可以直接将实例启动到 Auto Scaling 组中,如果该组尚未达到其最大容量。在这种情况下,您的启动生命周期挂钩仅在Pending:Wait状态。

以下是您可能为离开热池的实例创建生命周期操作的一些原因:

  • 您可以利用此时间准备 EC2 实例以供使用,例如,如果您有必须启动应用程序才能正常工作的服务。

  • 您希望预填充缓存数据,以确保新服务器不会使用完全空的缓存启动。

  • 您希望将新实例注册为托管实例到配置管理服务。

支持的通知目标

Amazon EC2 Auto Scaling 可以将生命周期事件通知消息发送到以下通知目标。

  • Lambda 函数(通过 EventBridge)

  • Amazon SNS 主题

  • Amazon SQS 队列

以下信息可帮助您在基于以下步骤创建生命周期挂钩时配置这些通知目标:

EventBridge 规则:Amazon EventBridge,您可以创建触发编程操作以响应温暖池事件的规则。例如,您可以创建两个 EventBridge 规则,一个用于当实例进入温池时,另一个用于实例离开温池时。

EventBridge 规则可以触发 Lambda 函数以在实例上执行编程操作,具体取决于您的使用案例和应用程序。使用 Auto Scaling 组发出的传入事件调用 Lambda 函数。Lambda 根据 EventBridge 规则中的事件模式来确定要调用的 Lambda 函数。

有关更多信息,请参阅 为温水池事件创建 EventBridge 规则

Amazon SNS 通知目标:您可以添加生命周期挂钩以便在生命周期操作开始时接收 Amazon SNS 通知。对于您指定的 Amazon SNS 主题,通知将发送到已订阅 Amazon SNS 主题的接收人。

在添加通知 Amazon SNS 主题的生命周期钩子之前,您必须已设置主题和 IAM 服务角色,该角色授予 Amazon EC2 Auto Scaling 发布到 Amazon SNS 的权限。

要接收有关实例离开和进入温池的单独通知,您还必须设置 Amazon SNS 筛选。

Amazon SQS 通知目标:您可以将生命周期挂钩添加到 Auto Scaling 组,并使用 Amazon SQS 设置通知目标以便在生命周期操作开始时接收通知。这些通知将发送到您指定的 Amazon SQS 队列。

在添加通知 Amazon SQS 队列的生命周期钩子之前,您必须已设置队列和 IAM 服务角色,该角色授予 Amazon EC2 Auto Scaling 向 Amazon SQS 发送通知消息的权限。

如果希望队列使用者处理有关实例离开但未进入温池的单独通知(反之亦然),则还必须设置队列使用器以解析消息,然后在特定属性与所需值匹配时对消息执行操作。