首页 > > > 阿里云rds的api调用
随着项目的增加,我们使用数据库的实例也是增多,在阿里云上不仅仅是rds还有polardb的使用,而且由于多个阿里云账号,在查询数据库的地址、所属实例等信息比较麻烦。所以我这里想了一个方法是就是汇总一下,不然在开发总会找你问,效率不高。
我是把这个汇总直接显示在平台上,并且加的一个页面级的缓存,毕竟增加实例的事情在这我里一年也不会增加几回。
在这里我先直接给出api调用的代码脚本,并不是在平台的模块里显示的。polardb的相对还比较简单点,可以自己着手写下。
#coding=utf-8
# pip install aliyun-python-sdk-rds
from conf.settings import *
from util.check_sth import *
from aliyunsdkrds.request.v20140815.DescribeDBInstancesRequest import DescribeDBInstancesRequest
from aliyunsdkrds.request.v20140815.DescribeDatabasesRequest import DescribeDatabasesRequest
from aliyunsdkrds.request.v20140815.DescribeDBInstanceNetInfoRequest import DescribeDBInstanceNetInfoRequest
from aliyunsdkrds.request.v20140815.DescribeDBInstanceAttributeRequest import DescribeDBInstanceAttributeRequest
class query_rds(object):
def __init__(self, account):
self.client = AcsClient(token[account + '_accesskey'], token[account + '_accesspasswd'], region['bj'])
self.request = DescribeDBInstancesRequest()
self.request.set_accept_format('json')
self.response = self.client.do_action_with_exception(self.request)
global true,false
false = "false"
true = "true"
def _get_rds_list(self):
return eval(str(self.response, encoding='utf-8'))["Items"]["DBInstance"]
def rds_instance_info(self):
for rds in self._get_rds_list():
if 'MasterInstanceId' in rds.keys():
print ("实例名"+rds["DBInstanceDescription"]+"-->是从库,ID为:"+rds['DBInstanceId'])
print ("它使用的主库ID为:"+rds['MasterInstanceId'])
for netinfo in self._get_rds_netinfo(rds['DBInstanceId'])["DBInstanceNetInfos"]["DBInstanceNetInfo"]:
print ('实例用网络地址为:'+netinfo['ConnectionString'])
print("")
else:
print (rds["DBInstanceDescription"]+"-->是主库,使用的ID为:"+rds['DBInstanceId'])
for dbname in self._get_rds_dbname(rds['DBInstanceId'])["Databases"]["Database"]:
print ("拥有数据-->"+dbname['DBName'])
for netinfo in self._get_rds_netinfo(rds['DBInstanceId'])["DBInstanceNetInfos"]["DBInstanceNetInfo"]:
print ('实例用网络地址为:'+netinfo['ConnectionString'])
print("")
def _get_rds_dbname(self, rDBInstanceId):
request = DescribeDatabasesRequest()
request.set_accept_format('json')
request.set_DBInstanceId(rDBInstanceId)
response = self.client.do_action_with_exception(request)
return eval(str(response, encoding='utf-8'))
def _get_rds_netinfo(self, rDBInstanceId):
request = DescribeDBInstanceNetInfoRequest()
request.set_accept_format('json')
request.set_DBInstanceId(rDBInstanceId)
response = self.client.do_action_with_exception(request)
return eval(str(response, encoding='utf-8'))
def _get_instance_attribute(self, rDBInstanceId):
request = DescribeDBInstanceAttributeRequest()
request.set_accept_format('json')
request.set_DBInstanceId(rDBInstanceId)
response = self.client.do_action_with_exception(request)
return eval(str(response, encoding='utf-8'))
if __name__ == '__main__':
account = sys.argv[1] if check_input_lens() else 'xd'
query_rds(account).rds_instance_info()
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10915175/viewspace-3125615/ ,如需转载,请注明出处,否则将追究法律责任。