使用python创建一个rds实例:状态always =创建

时间:2015-04-01 15:42:33

标签: python amazon-rds

我正在尝试使用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"

你知道为什么会发生这种情况吗?

2 个答案:

答案 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)