使用 python 创建一个 rds 实例:始终保持状态 = 正在创建

Create a rds instance using python: having status always = creating

我正在尝试使用 python 创建一个 rds 实例。

我有下面的代码来创建一个实例,然后我想在实例状态可用时显示我的打印 "Instance is now running"。

问题是,当在 aws 管理控制台中出现可用状态时,在我的控制台应用程序中仍然总是出现状态 = 正在创建并且代码没有退出 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"

你知道为什么会这样吗?

boto docs 并不总是清楚什么时候像 DBInstance.status 这样的结果是通过 API 按需获取的,还是从早期的缓存查找中返回的。我敢打赌,您使用的 instance.status 调用每次都返回相同的(缓存的)结果。

尝试

status = conn.get_all_dbinstances(instance_id=instance.id)[0].status

而不是

status = instance.status

在你的 while 循环中。

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)