首页 > 解决方案 > 如何使用 Boto 自行终止正在运行的实例?

问题描述

我需要从 AutoScalingGroup 终止一个实例,因为 ASG 的策略使横向扩展的实例运行的时间比预期的要长。在完成运行 python 进程后,我需要终止所述实例。

该代码已经使用 Boto 访问其他 AWS 服务,因此我希望利用 Boto 自行终止。有人告诉我,我需要在终止之前将实例与其 ASG 分离以避免副作用。

知道我该如何进行这种分离和自我终止吗?

标签: pythonamazon-web-servicesamazon-ec2boto

解决方案


可以使用以下命令从 Auto Scaling 组中删除实例detach_instances()

从指定的 Auto Scaling 组中删除一个或多个实例。

分离实例后,您可以独立于 Auto Scaling 组对其进行管理。

如果您未指定减少所需容量的选项,Amazon EC2 Auto Scaling 会启动实例以替换分离的实例。

response = client.detach_instances(
    InstanceIds=[
        'string',
    ],
    AutoScalingGroupName='string',
    ShouldDecrementDesiredCapacity=True|False
)

因此,步骤将是:

  • 获取要移除的Instance ID
  • 称呼detach_instances(InstanceIds=['i-xxx'], ShouldDecrementDesiredCapacity=True)
  • 称呼terminate_instances(InstanceIds=['i-xxx'])

这可以从实例本身运行,也可以从 Internet 上的任何位置运行。


推荐阅读