本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在自动扩缩组中完成生命周期操作
当 Auto Scaling 组响应生命周期事件时,它会将实例置于等待状态并发送事件通知。当实例处于等待状态时,您可以执行自定义操作。
如果您在超时周期过期之前完成生命周期操作,那么以 CONTINUE
的结果完成生命周期操作会很有帮助。如果您未完成生命周期操作,则生命周期挂钩将在超时周期结束后进入您为默认结果指定的状态。
完成生命周期操作(手动)
以下过程适用于命令行界面,在控制台中不受支持。必须替换的信息(如实例 ID 或 Auto Scaling 组的名称)以斜体显示。
完成生命周期操作 (Amazon CLI)
-
如果需要更多时间来完成自定义操作,请使用 record-lifecycle-action-heartbeat 命令重新启动超时时段并使实例保持等待状态。例如,如果超时时段为一小时,而您在 30 分钟后调用该命令,则实例将继续保持等待状态一小时(总共为 90 分钟)。
您可以指定随通知一起接收的生命周期操作令牌,如以下命令所示。
aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name
my-launch-hook
\ --auto-scaling-group-namemy-asg
--lifecycle-action-tokenbcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635
或者,您可以指定随通知一起接收的实例的 ID,如以下命令所示。
aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name
my-launch-hook
\ --auto-scaling-group-namemy-asg
--instance-idi-1a2b3c4d
-
如果您在超时时段结束前已完成自定义操作,请使用 complete-lifecycle-action 命令,以便 Auto Scaling 组能够继续启动或终止实例。您可以指定生命周期操作令牌,如以下命令所示。
aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \ --lifecycle-hook-name
my-launch-hook
--auto-scaling-group-namemy-asg
\ --lifecycle-action-tokenbcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635
或者,您可以指定实例的 ID,如以下命令所示。
aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \ --instance-id
i-1a2b3c4d
--lifecycle-hook-namemy-launch-hook
\ --auto-scaling-group-namemy-asg
完成生命周期操作(自动)
如果您拥有在实例启动后配置这些实例的用户数据脚本,则无需手动完成生命周期操作。可以将 complete-lifecycle-action 命令添加到脚本中。该脚本可以从实例元数据中检索实例 ID,并在引导启动脚本成功完成后向 Amazon EC2 Auto Scaling 发出信号。
如果您尚未这样做,请更新脚本,从实例元数据中检索实例的实例 ID。有关更多信息,请参阅《Amazon EC2 用户指南》中的检索实例元数据。
如果您使用 Lambda,则还可以在函数的代码中设置回调,以便在自定义操作成功时能让实例的生命周期继续。有关更多信息,请参阅 教程:配置调用 Lambda 函数的生命周期钩子。