我正在尝试使用python创建一个rds实例。
我在下面有这个代码来创建一个实例,然后我想显示我的打印"实例正在运行"当实例具有可用状态时。
问题是,当在aws管理控制台中出现可用状态时,在我的控制台应用程序中仍然会出现status = creating并且代码不会退出while循环:
结果我有:
....
creating
233
creating
234
...
代码:
instance = conn.create_dbinstance(...)
print "Waiting for instance to be up and running"
status = instance.status
inc = 0
while status != 'available':
sleep(5)
status = instance.status
print status
inc=inc +1
print inc
if status == 'available':
print "Instance is now running"
你知道为什么会发生这种情况吗?
答案 0 :(得分:1)
boto docs并不总是清楚何时通过API按需提取DBInstance.status等结果,而不是从之前的缓存查找返回。我在这里打赌,你正在使用的instance.status调用只是每次返回相同(缓存)的结果。
尝试
status = conn.get_all_dbinstances(instance_id=instance.id)[0].status
而不是
status = instance.status
在你的while循环中。
答案 1 :(得分:0)
Python程序可打印所有RDS实例并显示状态。
import boto.rds
#Connection url : Required region, access_key, secret_access_key
conn = boto.rds.connect_to_region('ap-south-1', aws_access_key_id='<aws access key>', aws_secret_access_key='<aws secret key>')
#dbinstances will have all database instances name
dbinstances = conn.get_all_dbinstances()
#We can iterate and print one by one db instance name and status.
for rds_db in dbinstances:
print(rds_db,' = ', rds_db.status)