Остановка экземпляра AWS EC2 с помощью скрипта HTML/Python/Bash

Есть ли способ отправить кнопку/гиперссылку в электронном письме через HTML, который вызовет сценарий Python/Bash, который остановит работающий экземпляр EC2?

В основном я просматриваю все запущенные экземпляры, проверяя их время безотказной работы через Fabric -> SSH, а затем отправляю письмо, когда время безотказной работы превысило указанный предел.

Если это невозможно с помощью скрипта, существует ли конкретная гиперссылка для каждого экземпляра, которая вызывает его остановку?

PS: я знаю об Amazon CloudWatch, но ищу альтернативу, так как мне пришлось бы создавать сигнал тревоги для каждого экземпляра вручную через cloudwatch.

PS-2: мне не нужен весь код. Любая помощь в этом направлении будет оценена по достоинству.
Пример : Какие фреймворки можно использовать ? и т. д.


person darthShadow    schedule 26.08.2015    source источник
comment
Используйте для этого boto: aws.amazon.com/sdk-for-python   -  person Reut Sharabani    schedule 26.08.2015
comment
Я знаю, как использовать boto для остановки экземпляров, но есть ли способ использовать boto для создания нескольких будильников для нескольких экземпляров?   -  person darthShadow    schedule 26.08.2015
comment
@DarthShadow Вам нужно останавливать экземпляры, которые работают меньше указанного интервала или больше указанного интервала? Порог интервала жестко запрограммирован или отличается в любой день?   -  person Sergei Rodionov    schedule 26.08.2015
comment
Интервал больше указанного, и можно предположить, что интервал жестко задан   -  person darthShadow    schedule 26.08.2015
comment
ознакомьтесь с этим руководством (aameer.github.io/cloud-computing-101)   -  person Aameer    schedule 01.04.2016


Ответы (1)


Для обработки экземпляров amazon вы, вероятно, захотите использовать boto, который обеспечивает большинство общих необходимых функций. Очень важно прочитать документацию, так как возможна потеря данных. Рекомендуем начать с здесь .

Чтобы выяснить, как долго работал экземпляр, вы можете использовать instance.launch_time.

Чтобы остановить экземпляр, вы можете использовать instance.stop:

Останавливает инстанс, поддерживаемый Amazon EBS. Каждый раз, когда вы переводите инстанс из остановленного в запущенный, Amazon EC2 взимает плату за полный час инстанса, даже если переходы происходят несколько раз в течение одного часа.

Вы не можете запускать или останавливать спотовые инстансы. (подробнее по ссылке...)

Чтобы завершить экземпляр, используйте instance.terminate. :

Закрывает один или несколько экземпляров. Эта операция идемпотентна; если вы завершаете экземпляр более одного раза, каждый вызов завершается успешно.

По умолчанию Amazon EC2 удаляет все тома EBS, которые были подключены при запуске инстанса. Тома, подключенные после запуска экземпляра, продолжают работать.

person Reut Sharabani    schedule 26.08.2015
comment
Я уже знаю, как использовать boto для запуска и остановки инстансов. Я хочу знать, есть ли способ остановить несколько экземпляров, когда они работают в течение определенного времени. - person darthShadow; 26.08.2015
comment
Вы можете использовать boto, чтобы узнать, как долго они работали: boto3.readthedocs.org/en/latest/reference/services/ - person Reut Sharabani; 26.08.2015
comment
Вы имеете в виду атрибут instance.launch_time? - person darthShadow; 26.08.2015
comment
Да. Обратите внимание, что это, вероятно, не время создания. - person Reut Sharabani; 26.08.2015
comment
Документация относительно того, какое именно время это дает, расплывчата. Это может быть первый раз, когда он был запущен, или время, когда он был создан, или, надеюсь, то, что мне нужно, то есть текущее время запуска. Это определенно один из возможных способов сделать это. Но нельзя ли закрыть экземпляр, ответив на электронное письмо? - person darthShadow; 26.08.2015