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. NeuChar 平台使用及开发教程(四):使用 NeuChar 的素材服务

    各类公众号的功能之一就是为用户提供各类图文和多媒体的信息,因此素材是必不可少的. 进入 Neural Cell 设置界面,点击右侧[素材管理]按钮,进入素材管理界面. 目前系统提供了文本.多图文.图片 ...

  2. 史上最全java面试题

    基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie ...

  3. [Swift]LeetCode311. 稀疏矩阵相乘 $ Sparse Matrix Multiplication

    Given two sparse matrices A and B, return the result of AB. You may assume that A's column number is ...

  4. [Swift]LeetCode746. 使用最小花费爬楼梯 | Min Cost Climbing Stairs

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  5. 优化之Sequence Generator组件

    优化Sequence Generator组件,需创建一个可重用的序列生成器,并同时在多个Mappings中使用它 关于Number of Cached Values Sequence Generato ...

  6. Java语言的简单基础

    1.Java 是一种高级程序设计语言. 2.Java 是大小敏感的程序语言. 3.Java 中的 public 修饰的类名一般要与文件名相同,但也有特列:内部类. 4.Java 程序能在任何操作系统中 ...

  7. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  8. 【从零开始自制CPU之学习篇07】最简单的ALU—全加器

    ALU是算术逻辑单元,是CPU中重要的一部分,因为CPU本质上就是不断重复最简单的计算.而我们这一版CPU的ALU部分更为简单,是一个只能做加法的ALU. 理论部分 我们需要一个能帮我们进行数学计算的 ...

  9. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  10. JDK1.8源码(一)——java.util.ArrayList

      ArrayList 定义 ArrayList 是一个用数组实现的集合,支持随机访问,元素有序且可以重复. public class ArrayList<E> extends Abstr ...