Как автоматически запустить, выполнить и остановить EC2? - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу проверять свою библиотеку Python на компьютере с графическим процессором один раз в день. Я решил использовать AWS EC2 для тестирования. Однако плата за gpu machine очень высока, поэтому я хочу остановить экземпляр после окончания теста.

Таким образом, я хочу выполнять следующие действия один раз в день автоматически

  1. Запустить экземпляр EC2 (который настраивается вручную)
  2. Выполнить команду (тест -> pu sh протоколирует S3)
  3. Остановить EC2 (не удалять)

Как это сделать?

Ответы [ 4 ]

2 голосов
/ 06 февраля 2020

Это очень просто ...

Запуск сценария при запуске

Автоматический запуск сценария при запуске экземпляра ( каждый раз он запускается, а не только в первый раз), поместите свой скрипт в этот каталог:

/var/lib/cloud/scripts/per-boot/

Остановите экземпляр после завершения теста

Просто введите команду выключения для операционная система в конце вашего скрипта:

sudo shutdown now -h
0 голосов
/ 06 апреля 2020

Я создал сценарий оболочки для запуска экземпляра EC2 - если он еще не запущен, - подключитесь через S SH и, если хотите, выполните команду.

https://gist.github.com/jotaelesalinas/396812f821785f76e5e36cf928777a12

Вы можете использовать его тремя различными способами:

./ec2-start-and-ssh.sh -i <instance id> -s

покажет информацию о состоянии вашего экземпляра: состояние выполнения и частные и публичные c IP-адреса .

./ec2-start-and-ssh.sh -i <instance id>

подключится и оставит вас внутри оболочки по умолчанию.

./ec2-start-and-ssh.sh -i <instance id> <command>

выполнит любую указанную вами команду, например:

./ec2-start-and-ssh.sh -i <instance id> ./run.sh

./ec2-start-and-ssh.sh -i <instance id> sudo poweroff

Я использую последние две команды для запуска периодических c заданий, минимизирующих расходы на выставление счетов.

Я надеюсь, что это помогает!

0 голосов
/ 05 февраля 2020

Вы можете добавить sh журналы сценариев в пользовательские пространства имен coudwatch. Например, когда процесс заканчивается, публикует sh состояние в облачном хранилище. В cloudwatch создайте аварийные сигналы, основанные на состоянии процесса, поэтому, если он имеет завершенное состояние, активируйте лямбда-функцию AWS, которая остановит экземпляр после завершения вашей работы.

Также, если вы хотите запустить и остановить на укажите c время, когда вы можете использовать планировщик экземпляров ec2 для запуска / остановки экземпляров. Это просто работает как работа cron с указанными c интервалами.

0 голосов
/ 05 февраля 2020

Вы можете использовать aws cli

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

aws ec2 start-instances --instance-ids i-1234567890abcdef0

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

aws ec2 stop-instances --instance-ids i-1234567890abcdef0

Чтобы выполнить команды внутри машины, вам нужно s sh и запустить нужные вам команды, затем вы можете использовать aws cli для загрузки файлов в s3

aws s3 cp test.txt s3://mybucket/test2.txt

Предлагаю прочитать документацию aws cli, вы найдете большинство, если не все, что нужно для автоматизации aws команд там .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...