Я столкнулся с той же проблемой с экземплярами EC2, но решил ее по-другому - вместо того, чтобы отслеживать экземпляры, я заставил их автоматически убивать себя через определенное время. Из вашего описания это звучит так, как будто это не практично в вашей среде, но я подумал, что поделюсь на всякий случай, если это поможет. Мой AMI был основан на Fedora, поэтому я создал следующий скрипт bash, зарегистрировал его как службу и запустил при запуске:
#!/bin/bash
# chkconfig: 2345 68 20
# description: 50 Minute Kill
# Source Functions
. /etc/rc.d/init.d/functions
start()
{
# Shut down 50 minutes after starting up
at now + 50 minutes < /root/atshutdown
}
stop()
{
# Remove all jobs from the at queue because I'm not using at for anything else
for job in $(atq | awk '{print $1}')
do
atrm $job
done
}
case "$1" in
start)
start && success || failure
echo
;;
stop)
stop && success || failure
echo
;;
restart)
stop && start && success || failure
echo
;;
status)
echo $"`atq`"
;;
*)
echo $"Usage: $0 {start | stop | restart}"
RETVAL=1
esac
exit $RETVAL
Вы можете подумать о том, чтобы сделать что-то подобное, чтобы удовлетворить ваши потребности. Если вы сделаете это, будьте особенно внимательны, чтобы остановить службу до изменения образа, чтобы экземпляр не закрывался до того, как вы получите возможность переупаковать.
Если вы хотите, вы можете выключить экземпляры в определенное время (после того, как все уйдут с работы?) Или вы можете передать длительность поддержки / время отключения через параметры -d
или -f
в ec2-run-instances
и разобрать его в сценарии.