我正在寻找一种以编程方式终止长时间运行的 AWS EC2 实例的方法。
我在谷歌上搜索了一些,但我似乎没有找到一种方法来查找一个实例运行了多长时间,以便我可以编写一个脚本来删除运行时间超过某个时间段的实例......
以前有人处理过这个问题吗?
EC2 服务为每个实例存储一个LaunchTime
值,您可以通过执行DescribeInstances
调用找到该值。 但是,如果您停止实例,然后重新启动它,则此值将使用新的启动时间进行更新,因此这不是确定实例自原始启动以来运行了多长时间的可靠方法。
我能想到的确定原始启动时间的唯一方法是使用 CloudTrail(假设您为您的帐户启用了它)。 您可以在 CloudTrail 中搜索原始发布事件,这将具有与之关联的EventTime
。
我注意到你的问题上有 cron 标签,所以也许你可以使用这个 Bash 脚本:
UPTIME=`uptime | awk {print $3}`
# Reboot if uptime longer than 180 days (6 months)
if [ $UPTIME -gt 180 ]
then
# Whatever you want to do here...
fi
如果您想要更精细的控制,您还可以使用如下方法从/proc/uptime
获得正常运行时间:
UPTIME=$(awk -F. '{print $1}' /proc/uptime)
注意 {print $2}
将为您提供以秒为单位的空闲时间