ile sorgulama AWS, Python ve Boto library kullanıyorum.Bir durdurma veya EC2 örneğini Boto
Bir Boto EC2 örneğinde .start()
veya .stop()
numaralı telefonu çağırmak ve sonra da tamamlayana kadar "sorgulamak" istiyorum.
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
Ancak nihai while
döngü içinde, devlet ya "beklemede" veya "durdurma" at "sıkışmış" olsun gibi görünüyor. AWS konsoluyla ilgili olarak, "görünüyor" konusuna vurgu yaparak, örneğini aslında "başlatılmış" veya "durduruldu" durumuna getirdiğini görebiliyorum. Bunu düzeltmek
tek yolu böyle while
döngü içinde .get_all_reservations()
, hatırlamak oldu:
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
yüzden instance
GERÇEK devlet rapor verecek aranacak bir yöntem var mı?
Kusursuz - bu doğru çalıştı. Hiçbir şey için değil, ama şunu belirtmek istedim: Dokümanları okudum ve sadece iki kez kontrol ettim ... bu yöntem, bu yazının dokümanlarında DEĞİLDİR! Tekrar teşekkürler. –
@garnaat Lütfen cevabınızı düzenleyin ve boto3 için talimatlar ekleyin, boto3 yerine 'update()' 'load()' i kullanmanız gerekir - gelecekteki kullanıcılar için – bluesummers