Emp*_*nal 11 amazon-web-services autoscaling
我有一个 AutoScaling 组,我在实例启动时摆弄 LifecycleHooks,其中一些由我控制,一些由其他 AWS 服务控制。我一直在添加/删除 LifecycleHooks 并更改 ASG 的大小,但实例陷入了Pending:Wait. 我认为这是因为它正在等待来自 LifecycleHook 的信号,但我无法让它移动。
我尝试了很多事情:
在 EC2 控制台中终止实例
我终止了实例,但 ASG 会等待 LifecycleHook 心跳超时,然后才真正从 ASG 终止实例,这可能需要一个小时。
手动完成 LifecycleHooks
我尝试手动完成 LifecycleHooks,如以下伪代码所示:
describeAutoScalingGroups -> asg {
instances = getPending(asg.instances)
describeLifecycleHooks -> lifecycleHooks {
lifecycleHooks.each {
instances.each {
completeLifecycleAction(instance, hook)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这并不能解决问题。我猜测它正在等待的 LifecycleHook 已从 ASG 中删除,因此无法手动完成 LifecycleHook。
接下来是什么?
显然,我应该更加小心地以正确的顺序删除这些资源,所有这些和减少心跳也会有所帮助,但我如何强制终止 ASG 的实例,无论它在等待什么?
yur*_*rez 13
在控制台中终止 EC2 实例后,手动完成 LifecycleHook 对我有用:
aws autoscaling complete-lifecycle-action --lifecycle-hook-name $HOOK --auto-scaling-group-name $ASG --lifecycle-action-result ABANDON --instance-id $ID
Run Code Online (Sandbox Code Playgroud)
Viv*_*mas -2
今天遇到了这个问题,我可以使用 AWS CLI 强制删除。
aws autoscaling delete-auto-scaling-group --auto-scaling-group-name <asg name> --force-delete
Run Code Online (Sandbox Code Playgroud)
但请注意,要使其起作用,您必须--force-delete在第一次使用该参数本身,如果 ASG 已处于挂起删除状态,则此操作将不起作用。