1、结论:阿里云的SDK开发,其实就是远程调用API,python的代码就是一个外壳,核心是封装成一个http报文,利用json格式,进行RPC调用。

2、SDK调用API的套路如下:

 # -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526 import StopInstanceRequest
# 创建AcsClient实例
client = AcsClient(
"<your-access-key-id>",
"<your-access-key-secret>",
"<your-region-id>"
);
# 创建request,并设置参数
request = DescribeInstancesRequest.DescribeInstancesRequest()
request.set_PageSize(10)
# 发起API请求并显示返回值
response = client.do_action_with_exception(request)
print response

解释一下,

(1)前面几行就是,引入开发包,然后就是定义一个client实例,这个实例中必须输入请求者的身份信息,也就是AK/SK,其实就是请求key和对应的密码key,这个是从管理控制台中可以获取到。

另外,地域码,就是每个地域有一个编码:https://help.aliyun.com/document_detail/40654.html?spm=a2c4g.11186623.2.5.Mcaxmp

(2)根据请求的目的,构建一个请求参数,例如第14行、15行的意思就是创建一个ECS实例,并且设置返回信息最长为10页。

这个请求的名称是关键,第15行的参数设置也很关键,他们共同组成请求的内容。为后面的请求提交做准备。

(3)发起请求。

前面把请求参数构造完成后,这里就是发生请求,并且等待结果。

3、实例展示:

 # -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkvpc.request.v20160428 import DescribeVpcsRequest # 创建AcsClient实例
client = AcsClient(
"xxxxxx",
"xxxxxx",
"cn-beijing"
);
# 创建request,并设置参数
request = DescribeVpcsRequest.DescribeVpcsRequest() # 发起API请求并显示返回值
response = client.do_action_with_exception(request)
print response

这个例子是,显示区域cn-beijing中所有的VPC,执行结果如下:

再举一个例子,创建VPC,指定名称为 ecs-001

 # -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkvpc.request.v20160428 import CreateVpcRequest
# 创建AcsClient实例
client = AcsClient(
"xxxxxx",
"xxxxxx",
"cn-beijing"
);
# 创建request,并设置参数
request = CreateVpcRequest.CreateVpcRequest()
request.set_VpcName("ecs-001")
# 发起API请求并显示返回值
response = client.do_action_with_exception(request)
print response

执行结果:

4、经验总结:

(1)要使用python进行API调用,就需要知道API中参数有哪些,这个可以通过打开对应API的python代码文件查看到。如下:

(2)通过查看源码文件,可知传入的格式就是JSON的,所以,返回值也是JSON格式的,所以,不需要专门再加JSON解析器。

(3)账号的访问码是和用户console界面是等同的效应,所以,访问码要安全保管,最好是使用后就删除。

下面就是上面通过SDK创建的VPC,在console上的显示内容(实际测试时,调用了两次创建vpc的文件)

参考文档:

1、阿里云SDK开发指南

https://help.aliyun.com/document_detail/53090.html?spm=5176.164075.850376.30.4eadf93fvlAg4r

2、

阿里云 API调用实践(python语言)的更多相关文章

  1. 【阿里云API】 阿里云API调用的若干说明

    阿里云API 为了监控我们使用的一些阿里云产品,需要些一些脚本,定时调用这些脚本来获得相关阿里云产品的信息. ■ 概述 调用阿里云API大约分成两类方法,一个是直接从HTTP协议开始,自己根据阿里云的 ...

  2. 阿里云api调用做简单的cmdb

    阿里云api调用做简单的cmdb 1 步骤 事实上就是调用阿里api.获取可用区,比方cn-hangzhou啊等等.然后在每一个区调用api 取ecs的状态信息,最好写到一个excel里面去.方便排序 ...

  3. Python 调用阿里云 API 收集 ECS 数据

    #!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...

  4. 阿里云 API 签名机制的 Python 实现

    在调用阿里云 API 的时候,最让人头疼的就是 API 的签名(Signature)机制,阿里云在通用文档中也有专项说明,但是仅仅有基于 Java 的实现代码示例.所以这里基于 Python 来分析下 ...

  5. 浅析阿里云API网关的产品架构和常见应用场景

    自上世纪60年代计算机网络发展开始,API(Application Programming Interface )随之诞生,API即应用程序接口,是实现系统间衔接的桥梁.时至今日,API市场已经形成了 ...

  6. 阿里云API网关(9)常见问题

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  7. 阿里云API网关!

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等阿里云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需 ...

  8. 利用用阿里云API实现DDNS

    前言 之前动态域名解析是用的是腾达路由器上集成的第三方动态解析服务花生壳,解析费用一年40元.后来觉得域名前缀不好,想换掉,花生壳需要重新购买新的域名解析费用,增加1条或者2条动态解析无所谓,万一以后 ...

  9. 阿里云API网关(11)外网访问 阿里云API网关内定义的API步骤:

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

随机推荐

  1. easyui自定义皮肤及缺陷修改

    引言: 一个商业项目的需要,又因为时间紧迫的关系,准备购买一套简洁,易用,可定制化强的UI,经过对国内外多家UI产品进行了对比, 包括:FineUI, EasyUI, EXT.NET, EXTJS, ...

  2. 1.6 Why only in China?

    Android plug-in is in full swing in China, why is it silent in foreign countries? The applications o ...

  3. [Swift]LeetCode343. 整数拆分 | Integer Break

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...

  4. [Swift]LeetCode777. 在LR字符串中交换相邻字符 | Swap Adjacent in LR String

    In a string composed of 'L', 'R', and 'X'characters, like "RXXLRXRXL", a move consists of ...

  5. [Swift]LeetCode798. 得分最高的最小轮调 | Smallest Rotation with Highest Score

    Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], A[K+1 ...

  6. [C#]批量修改文件后缀名

    代码: /// <summary> /// 修改文件后缀 /// </summary> /// <param name="extension"> ...

  7. ThinkPHP 数据库操作(五) : 存储过程、数据集、分布式数据库

    存储过程 5.0支持存储过程,如果我们定义了一个数据库存储过程 sp_query ,可以使用下面的方式调用: $result = Db::query('call sp_query(8)'); 返回的是 ...

  8. Java面向对象--类的对象之间的几种关系详解

    转载: https://www.cnblogs.com/supren/p/7853377.html

  9. Import Excel void (NPOI)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. qt 窗口鼠标穿透

    Qt 不规则窗体 – 鼠标点击穿透 qt实现鼠标穿透,如果要被穿透窗口只有一层,也即没有嵌套窗口,直接只用对子窗口使用setAttribute (Qt::WA_TransparentForMouseE ...