2015-04-22 31 views
1

我正在写一个概念证明有关使用boto创建,连接,分离和破坏EC2 EBS卷:宝途EC2创建磁盘需要要创建一个很长一段时间 - Python的

import time 
import ec2.boto 

conn = boto.ec2.connect_to_region("us-west-2", 
      aws_access_key_id=AWS_ACCESS_KEY, 
      aws_secret_access_key=AWS_SECRET_KEY) 

reservation = conn.run_instances(
       'ami-1fa78f2f', 
       instance_type='m3.medium') 

instance = reservation.instances[0] 
instance.add_tag('Name', 'volume_test') 


while instance.state != 'running': 
     time.sleep(10) 
     instance.update() # Updates Instance metadata 
     print 'Instance state: ', instance.state 

print "attempting to attach volume" 
vol = conn.create_volume(10, instance.placement) 
while vol.status != 'available': 
     print 'Vol state: ', vol.status 
     time.sleep(20) 

vol.attach(instance.id, '/dev/sdh') 

这是一个10GBv量,但它永远不会出来的“创造”的状态:

# python test.py 
Instance state: pending 
Instance state: pending 
Instance state: running 
attempting to attach volume 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 
Vol state: creating 

我做得不对,或者是EC2太慢创建卷?

回答

2

您没有更新循环内的体积。尝试这个。

print "attempting to attach volume" 
vol = conn.create_volume(10, instance.placement) 
while vol.status != 'available': 
    print 'Vol state: ', vol.status 
    time.sleep(20) 
    vol.update() 
+0

tumb me!谢谢先生! – cybertextron

+0

对于来自Google的用户:'vol.status'现在是'vol.state','vol.update'现在是'vol.reload'。 – joe