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

完成生命周期操作

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

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

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

完成生命周期操作 (Amazon 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。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的检索实例元数据

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