Какой вызов Python или CLI можно использовать для завершения спотового экземпляра AWS и запроса из самого спотового экземпляра?

У меня есть длительная работа с aws, и я использую спотовые экземпляры (по одному экземпляру на задание), чтобы сэкономить деньги. Код python может обрабатывать остановку и перезапуск, но когда я подхожу к концу работы по анализу, я хочу завершить работу спотового экземпляра и больше не запускать (для этого пакета), чтобы мне не приходилось нянчиться с вещами вручную (Я использую дорогие экземпляры GPU, поэтому хочу остановиться как можно скорее). Весь мой код написан на python - есть ли вызов aws python sdk или cli, который завершит работу этого спотового экземпляра и больше не запускает его, и все это из самого спотового экземпляра? В результате я не хочу платить за время работы графического процессора после завершения моей работы.

Связанный с этим вопрос, от нескольких лет назад, здесь, но не в полной мере ответить на мой вопрос.

благодарю вас!

2 ответа

Выполните следующие действия на последнем спотовом экземпляре:

  1. Получить идентификатор экземпляра: wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
  2. Измените поведение shutown экземпляра:aws ec2 modify-instance-attribute --instance-initiated-shutdown-behavior terminate
  3. Затем, когда вы захотите прекратить его: 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) в виде набора. Секретный ключ доступа доступен для загрузки только при его создании. Если вы не загрузили свой секретный ключ доступа или если вы его потеряете, вы должны создать новый.

Другие вопросы по тегам