Я использую AWS, Python и Boto library.Опрос остановки или запуска экземпляра EC2 с Boto
Я бы хотел вызвать .start()
или .stop()
на экземпляр Boto EC2, а затем «опросить» его до его завершения.
import boto.ec2
credentials = {
'aws_access_key_id': 'yadayada',
'aws_secret_access_key': 'rigamarole',
}
def toggle_instance_state():
conn = boto.ec2.connect_to_region("us-east-1", **credentials)
reservations = conn.get_all_reservations()
instance = reservations[0].instances[0]
state = instance.state
if state == 'stopped':
instance.start()
elif state == 'running':
instance.stop()
state = instance.state
while state not in ('running', 'stopped'):
sleep(5)
state = instance.state
print " state:", state
Однако, в конечном while
цикла, состояние, кажется, «застревают» на обоих «до» или «остановки». Акцент на «кажется», как и на моей консоли AWS, я вижу, что экземпляр действительно делает его «запущенным» или «остановленным».
Единственный способ, которым я мог бы исправить это вспомнить .get_all_reservations()
в цикле while
, как это:
while state not in ('running', 'stopped'):
sleep(5)
# added this line:
instance = conn.get_all_reservations()[0].instances[0]
state = instance.state
print " state:", state
Есть ли способ, чтобы назвать так instance
сообщит фактическое состояние?
Совершенный - это сработало только право. Не зря, но я хотел заявить: я прочитал документы, и я просто дважды проверил ... этот метод НЕ находится в документах на момент написания этой статьи! Еще раз спасибо. –
@garnaat, пожалуйста, отредактируйте свой ответ и добавьте инструкции для boto3, в boto3 вместо 'update()' вам нужно использовать 'load()' - для будущих пользователей, чтобы увидеть – bluesummers