缩容时 EC2 spot 实例终止通知

EC2 spot instance termination notice when downscaling

每次安排我的 Spot 实例终止时,我都需要 运行 清理脚本。我有两个终止原因:

  1. 现货实例价格超出我的出价
  2. 由自动缩放组的缩放策略引起的缩减(基于 5 分钟内集群 cpu 的平均使用率,随机实例被终止)。

我确实喜欢下面在 this 博客上找到的简单脚本。它涵盖了第一种情况,并给我 2 分钟的时间在关机前进行清理。

有没有一种简单的方法可以让第二种情况得到这样的 2 分钟通知?

警告可能会通过相同的 url 提供吗?

#!/bin/bash
while true
  do
    if [ -z $(curl -Is http://169.254.169.254/latest/meta-data/spot/termination-time | head -1 | grep 404 | cut -d \  -f 2) ]
      then
        logger "Running shutdown hook."
        # Call your shutdown script here.
        break
      else
        # Spot instance not yet marked for termination.
        sleep 5
    fi
  done

Auto Scaling Hooks 允许您创建实例将要终止(或启动)的事件通知。

好处:你有更多的时间。默认为 60 分钟,您可以发送心跳消息来延长时间,或者您可以在清理完成时通知服务。如果您不响应,活动将超时并结束。

缺点:通知不会像现场终止警告那样发送到实例本身。他们去 SNS 或 SQS。您要么必须为实例订阅通知(例如,在实例启动时为每个实例订阅 SNS 主题),要么您需要启动自己的系统来管理消息并与实例通信。