1、结论:阿里云的SDK开发,其实就是远程调用API,python的代码就是一个外壳,核心是封装成一个http报文,利用json格式,进行RPC调用。
2、SDK调用API的套路如下:
1 #-*- coding: utf8 -*-
2 from aliyunsdkcore.client importAcsClient3 from aliyunsdkcore.acs_exception.exceptions importClientException4 from aliyunsdkcore.acs_exception.exceptions importServerException5 from aliyunsdkecs.request.v0526 importDescribeInstancesRequest6 from aliyunsdkecs.request.v0526 importStopInstanceRequest7 #创建AcsClient实例
8 client =AcsClient(9 "",10 "",11 ""
12 );13 #创建request,并设置参数
14 request =DescribeInstancesRequest.DescribeInstancesRequest()15 request.set_PageSize(10)16 #发起API请求并显示返回值
17 response =client.do_action_with_exception(request)18 print response
解释一下,
(1)前面几行就是,引入开发包,然后就是定义一个client实例,这个实例中必须输入请求者的身份信息,也就是AK/SK,其实就是请求key和对应的密码key,这个是从管理控制台中可以获取到。
另外,地域码,就是每个地域有一个编码:/document_detail/40654.html?spm=a2c4g.11186623.2.5.Mcaxmp
(2)根据请求的目的,构建一个请求参数,例如第14行、15行的意思就是创建一个ECS实例,并且设置返回信息最长为10页。
这个请求的名称是关键,第15行的参数设置也很关键,他们共同组成请求的内容。为后面的请求提交做准备。
(3)发起请求。
前面把请求参数构造完成后,这里就是发生请求,并且等待结果。
3、实例展示:
1 #-*- coding: utf8 -*-
2 from aliyunsdkcore.client importAcsClient3 from aliyunsdkvpc.request.v0428 importDescribeVpcsRequest4
5 #创建AcsClient实例
6 client =AcsClient(7 "xxxxxx",8 "xxxxxx",9 "cn-beijing"
10 );11 #创建request,并设置参数
12 request =DescribeVpcsRequest.DescribeVpcsRequest()13
14 #发起API请求并显示返回值
15 response =client.do_action_with_exception(request)16 print response
这个例子是,显示区域cn-beijing中所有的VPC,执行结果如下:
再举一个例子,创建VPC,指定名称为 ecs-001
1 #-*- coding: utf8 -*-
2 from aliyunsdkcore.client importAcsClient3 from aliyunsdkvpc.request.v0428 importCreateVpcRequest4 #创建AcsClient实例
5 client =AcsClient(6 "xxxxxx",7 "xxxxxx",8 "cn-beijing"
9 );10 #创建request,并设置参数
11 request =CreateVpcRequest.CreateVpcRequest()12 request.set_VpcName("ecs-001")13 #发起API请求并显示返回值
14 response =client.do_action_with_exception(request)15 print response
执行结果:
4、经验总结:
(1)要使用python进行API调用,就需要知道API中参数有哪些,这个可以通过打开对应API的python代码文件查看到。如下:
(2)通过查看源码文件,可知传入的格式就是JSON的,所以,返回值也是JSON格式的,所以,不需要专门再加JSON解析器。
(3)账号的访问码是和用户console界面是等同的效应,所以,访问码要安全保管,最好是使用后就删除。
下面就是上面通过SDK创建的VPC,在console上的显示内容(实际测试时,调用了两次创建vpc的文件)
参考文档:
/document_detail/53090.html?spm=5176.164075.850376.30.4eadf93fvlAg4r
2、