rxysg

一.简介

阿里云的RDS自带的监控系统获取数据不怎么直观,想要通过API获取数据通过zabbix显示,因为网上资料缺乏和其他一些原因,获取API签名很困难,但使用阿里云的SDK可以完美避开获取签名的步骤。

阿里云SDK是什么?
SDK是阿里云为用户提供的开发工具,支持JAVA、PHP、C#等几种不同的语言,这里是用Python写的。在Python SDK里提供了一些模块,我们通过调用这些模块、传入一些必要的参数可以简单的实现数据的获取。

阿里云的sdk就是很多的库文件,这里我们只需要两个库文件,一个核心库sdk-core和rds库sdk-rds。

下载地址:https://github.com/aliyun/aliyun-openapi-python-sdk

二.具体操作

1.进入sdk-rds所在的目录运行安装命令:python setup.py install
若出现这个,是setuptools工具没安装,下载安装就可以
import setuptools
ImportError: No module named setuptools
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar -xvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install
ls -l /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg

2.再次进入aliyun-python-sdk-rds目录,执行python setup.py install,同样进入aliyun-python-sdk-core,执行python setup.py install安装。

这时我们已经装好了阿里云sdk库环境

3.在aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815路径下有大量的sdk-rds api库文件,我们调用这里的库文件来查找其需要的参数的设置方法和发送请求。

调用阿里云的sdk分为三个步骤:

创建 AcsClient 实例并初始化;AcsClient即请求rds的实例,包括accesskeyid、accesskeysecret和regionid。
创建 API 请求并设置参数;这里的参数是除了公共参数之外所需要的所有参数,在阿里云文档上查看:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
发起请求并打印返回。

4.举个例子:
我想查看rds实例的资源使用情况。查看阿里云文档得知,其请求参数有两个:Action :DescribeResourceUsage和DBInstanceId:实例名。

我们进入aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815下的DescribeResourceUsageRequest.py库查看DBInstanceId的设置方法为set_DBInstanceId。
file

于是我们创建请求并设置参数set_DBInstanceId:

request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
request.set_DBInstanceId(\'rm-bpXXXXXXXX\')

然后创建rds实例的AcsClient对象。

client = AcsClient(
AcesskeyID,
AcesskeySecret,
regionid)

最后在通过do_action_with_exception发送请求

client.do_action_with_exception(request)

完整代码如下:

#!/usr/bin/python
#encoding=utf-8
 
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkrds.request.v20140815 import DescribeResourceUsageRequest
 
AcesskeyID = \'XXXXXXXXXXXXX\'
AcesskeySecret = \'XXXXXXXXXXXXXXXXXX\'
regionid = ‘XXXXXXXXXXX’
client = AcsClient(        
    AcesskeySecret,
    regionid)
request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
 
request.set_DBInstanceId(\'rm-bp1XXXXXXXXXXXXX\')  
response = client.do_action_with_exception(request)
 
print response

分类:

技术点:

相关文章: