Я использую облачные сервисы (например, AWS EC2) для своих серверов разработки. Обычно это большие серверы, и я плачу за них. После того, как я их использую, иногда я забываю, что они работают на несколько дней, поэтому в конечном итоге я плачу больше.
Как я могу запустить свой экземпляр, когда http-запрос сделан на его конечную точку http? "then" Как я могу остановить свой экземпляр, если за последний час не было получено ни одного запроса?
Пожалуйста, не стесняйтесь делиться любым приложением, сервисом, кодом или дизайном.
Большое спасибо
Еще несколько деталей, чтобы лучше объяснить проблему:
В основном две проблемы:
Начиная
Сначала вам нужно будет установить ec2 cli tools
, https://aws.amazon.com/cli/
Для начала вы можете создать свой собственный сервер в качестве прокси (localhost). Создайте страницу php, python и т. Д., Которую вы можете вызвать. Эти страницы связываются, чтобы открыть тестовую страницу, если это время ожидания (x секунд), вы вызываете cli ec2 для запуска конкретного экземпляра.
В качестве альтернативы вы можете вызвать сценарий ec2 для запуска вашего VPS после запуска вашего сервера разработки (то есть я использую Ruby on Rails, и было бы очень легко просто вызвать сценарий, который запустит сервер, как только я начну свою разработку код)
https://boto3.readthedocs.io/en/latest/guide/ec2-example-managing-instances.html
Выключение
Для завершения работы я бы создал cron, работающий на каждом из ваших серверов разработки каждые x минут (ежечасно?). Там вы в основном отслеживаете результат журнала разработки и создаете MD5
, пока MD5 изменяется, вы знаете, что сервер используется. Так что, чтобы это сработало, мне бы потребовалось много времени на проверку (т.е. не каждую минуту). Добавлено электронное письмо, по которому вы будете получать уведомления, когда начнется выключение.
Предполагая в вашем журнале разработки есть отметка времени, вы должны быть в порядке.
Пример сценария выключения
#!/bin/sh
# /etc/cron.hour/autoshutdown
# Example EC2 auto shutdown script
# Place in your /etc/cron.hourly
LOG_FILE=/path/to/my/development.log
MD5_FILE=/tmp/my.log.md5
NOTIFY=me@somedomain.com
echo "Create MD5..."
cur_md5=`tail $LOG_FILE | md5`
echo "Read latest MD5..."
if [ -f $MD5_FILE ]; then
last_md5=`cat $MD5_FILE`
else
echo "No MD5 found, 1st time use..."
last_md5='no sig. found'
fi
if [ "$cur_md5" = "$last_md5" ]; then
echo "MD5 signatures are identical, nothing changed we can stop the server..."
echo "Server is been shutdown" | mail -s "Server $(hostname) has been shutdown..." $NOTIFY
# shutdown -h now
else
echo "Current MD5 [$cur_md5]"
echo "Last MD5 [$last_md5]"
echo "MD5 changed, we are still using the sever..."
echo "Updating signature..."
echo $cur_md5 > $MD5_FILE
fi
Конечно, никаких гарантий, только мои мысли ;-)