我有一个带有起始钩和终止钩的自动缩放钩 .

启动挂钩由机器本身上的脚本在成功启动时完成(其中包括连接到Amazon ECS) .

终止挂钩由一个单独的调度程序守护程序完成,该守护程序监视SQS队列中的消息 . 它在确定机器完全耗尽时完成挂钩,这是基于来自ECS的数据 .

这里的问题是如果启动挂钩失败,机器可能永远不会进入ECS,因此驱动调度程序完成启动挂钩的操作永远不会发生 . 如果机器不在ECS中,我可以让调度程序自动完成终止挂钩,但是我可以想象这里有一些竞争条件 .

我真正想要的是做以下之一:

(a)如果启动挂钩失败,将我的终止挂钩配置为自动完成 .

(b)能够在我的调度程序中运行某种自动调节API,以便让它知道现在处于Terminating:Wait的机器是否已成功启动 .

但是,我没有看到一个能够证明这一点的API . DescribeAutoScalingInstances只是说机器在终止:等待,而不是某种理论终止:等待:NeverStartedUp . 我可以运行DescribeScalingActivities来查找StatusCode Canceled的活动,该活动在描述中有实例ID,但这看起来真的很糟糕!

有什么直截了当的我错过了吗?