在 Auto Scaling 组中完成生命周期操作 - Amazon EC2 Auto Scaling

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

在 Auto Scaling 组中完成生命周期操作

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

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

完成生命周期操作(手动)

以下过程适用于命令行界面,在控制台中不受支持。必须替换的信息(如实例 ID 或 Auto Scaling 组的名称)以斜体显示。

完成生命周期操作 (AWS CLI)
  1. 如果您需要更多时间来完成自定义操作,请使用record-lifecycle-action-heartbeat命令重新启动超时时间并使实例保持等待状态。例如,如果超时时段为一小时,而您在 30 分钟后调用该命令,则实例将继续保持等待状态一小时(总共为 90 分钟)。

    您可以指定随通知一起接收的生命周期操作令牌,如以下命令所示。

    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

    或者,您可以指定随通知一起接收的实例的 ID,如以下命令所示。

    aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg --instance-id i-1a2b3c4d
  2. 如果您在超时期限结束之前完成了自定义操作,请使用complete-lifecycle-action命令以便 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

完成生命周期操作(自动)

如果您拥有在实例启动后配置这些实例的用户数据脚本,则无需手动完成生命周期操作。您可以将complete-lifecycle-action命令添加到脚本中。该脚本可以从实例元数据中检索实例 ID,并在引导启动脚本成功完成后向 Amazon EC2 Auto Scaling 发出信号。

如果您尚未这样做,请更新脚本,从实例元数据中检索实例的实例 ID。有关更多信息,请参阅 Amazon EC2 用户指南中的检索实例元数据

如果您使用 Lambda,则还可以在函数的代码中设置回调,以便在自定义操作成功时能让实例的生命周期继续。有关更多信息,请参阅 教程:配置调用 Lambda 函数的生命周期钩子