如何从我的 Auto Scaling 组中删除已终止的 EC2 实例?

上次更新时间:2019 年 4 月 15 日

我有一个已终止的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。但是,该实例在 Amazon EC2 控制台中显示为正常运行状态 (Healthy) 和处于待机状态 (InStandby)。如何从我的 Amazon EC2 Auto Scaling (EC2 Auto Scaling) 组中删除这一已终止的实例?

简短描述

EC2 Auto Scaling 不会对处于待机状态的实例执行运行状况检查。EC2 Auto Scaling 不知道待机状态下实例的实例终止。

您可以使用以下方法之一从 EC2 Auto Scaling 组中删除仍被列为正常运行和处于待机状态的已终止实例:

  • 使用 AWS 命令行界面 (AWS CLI) 终止该实例。
  • 从 EC2 Auto Scaling 组中分离该实例,这会将其从EC2 Auto Scaling 控制台中删除。
  • 使该实例脱离待机状态,这样 Auto Scaling 便可使用运行状况检查发现实例终止。

解决方法

使用适合您的使用案例的方法,从 EC2 Auto Scaling 组中删除已终止的实例。

终止实例

使用以下命令终止您的实例。确保将 YOUR-INSTANCE-ID 替换为实例的资源 ID

aws autoscaling terminate-instance-in-auto-scaling-group --instance-id YOUR-INSTANCE-ID --no-should-decrement-desired-capacity

重要提示:如果您已配置 EC2 Auto Scaling 组的生命周期挂钩 EC2_INSTANCE_TERMINATING,请使用 CompleteLifecycleAction 立即从组中删除该实例。

分离实例

使用以下命令从 EC2 Auto Scaling 组中分离您的实例。请确保将 YOUR-INSTANCE-ID 替换为实例的资源 ID,并将 YOUR_ASG_NAME 替换为 EC2 Auto Scaling 组的名称。

aws autoscaling detach-instances --instance-ids YOUR-INSTANCE-ID --no-should-decrement-desired-capacity --auto-scaling-group-name YOUR-ASG-NAME

使实例脱离待机状态

1.    使用 AWS CLI 或 Amazon EC2 控制台编辑 EC2 Auto Scaling 组的最大大小。当您将实例重新投入使用时,所需的容量将加 1,并且不得超过该组的最大大小值。将最大大小设置为当前值 + 重新投入使用的实例数 (1),否则您可能会收到类似于以下内容的错误:

An error occurred (ValidationError) when calling the ExitStandby operation: AutoScalingGroup YOUR-ASG-NAME has min-size=1, max-size=1, and desired-size=1. To place in service 1 instance, please update the AutoScalingGroup sizes appropriately.

注意:在您的预期实例终止后,将启动替换实例以匹配所需的容量。

2.    使用以下命令使您的实例脱离待机状态。请确保将 YOUR-INSTANCE-ID 替换为实例的资源 ID,并将 YOUR_ASG_NAME 替换为 EC2 Auto Scaling 组的名称。

aws autoscaling exit-standby --instance-ids YOUR-INSTANCE-ID --auto-scaling-group-name YOUR-ASG-NAME

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?