Какой вызов Python или CLI можно использовать для завершения спотового экземпляра AWS и запроса из самого спотового экземпляра?
У меня есть длительная работа с aws, и я использую спотовые экземпляры (по одному экземпляру на задание), чтобы сэкономить деньги. Код python может обрабатывать остановку и перезапуск, но когда я подхожу к концу работы по анализу, я хочу завершить работу спотового экземпляра и больше не запускать (для этого пакета), чтобы мне не приходилось нянчиться с вещами вручную (Я использую дорогие экземпляры GPU, поэтому хочу остановиться как можно скорее). Весь мой код написан на python - есть ли вызов aws python sdk или cli, который завершит работу этого спотового экземпляра и больше не запускает его, и все это из самого спотового экземпляра? В результате я не хочу платить за время работы графического процессора после завершения моей работы.
Связанный с этим вопрос, от нескольких лет назад, здесь, но не в полной мере ответить на мой вопрос.
благодарю вас!
2 ответа
Выполните следующие действия на последнем спотовом экземпляре:
- Получить идентификатор экземпляра:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
- Измените поведение shutown экземпляра:
aws ec2 modify-instance-attribute --instance-initiated-shutdown-behavior terminate
- Затем, когда вы захотите прекратить его:
sudo shutdown -h now
. Завершение работы также можно запланировать:echo "sudo halt" | at now + 5 minutes
.
Если вы ищете более питонический способ сделать это. Вы можете использовать boto3. Это SDK для управления экземплярами AWS и многими сервисами в рамках AWS. Вы можете использовать метод Удхава, чтобы получить идентификатор экземпляра изhttp://169.254.169.254/latest/meta-data/instance-id
и передайте этот идентификатор экземпляра в boto3
функция, чтобы завершить его.
Убедитесь, что при использовании sdk или cli вам нужно будет создать роль IAM с secret_access_key и secret_access_id для аутентификации этого запроса. Текст ниже взят из официальной документации AWS.
Программный доступ
Вы должны предоставить свои ключи доступа к AWS, чтобы выполнять программные вызовы AWS или использовать интерфейс командной строки AWS или инструменты AWS для PowerShell.
При создании ключей доступа вы создаете идентификатор ключа доступа (например, AKIAIOSFODNN7EXAMPLE) и секретный ключ доступа (например, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY) в виде набора. Секретный ключ доступа доступен для загрузки только при его создании. Если вы не загрузили свой секретный ключ доступа или если вы его потеряете, вы должны создать новый.