阿里云API调用附录包括哪些

  错误代码表

  客户端错误

  详见各个接口的错误码

  服务器端错误

错误代码 描述 Http 状态码 语义
ServiceUnavailable The request has failed due to a temporary failure of the server. 503 服务不可用
InternalError The request processing has failed due to some unknown error, exception or failure. 500 内部错误

  实例状态表

状态名 状态说明
Pending 准备中
Stopped 已停止
Starting 启动中
Running 运行中
Stopping 停止中
Deleted 已释放

  实例状态图

  普通云盘状态表

错误代码 描述
In_use 使用中
Available 待挂载
Attaching 挂载中
Detaching 卸载中
Creating 创建中
Deleting 删除中
Deleted 已删除
ReIniting 初始化中

  其中Deleting和Deleted状态的磁盘不能通过DescribeDisks查询到,为内部状态。

  普通云盘状态图

  磁盘种类表

磁盘种类 Category 单块最大容量 每个实例添加数据盘数 单实例下同类型最大容量
普通云盘 cloud 2000GB 4 8000GB(4×2000)
本地 SSD 盘 ephemeral_ssd 800GB 4 1024GB(不含系统盘)

  如何调用接口

  对ECS服务接口的调用是通过向ECS服务端发送HTTP请求(可以通过HTTP或HTTPS协议发送),并获取ECS服务对该请求响应结果的过程。ECS服务端在接收到用户请求后,对请求做必要的身份验证和参数验证,在所有验证成功后根据请求的指定参数提交并完成相应操作,并把处理的结果以 HTTP响应的形式返回给调用者。

  请求组成

  请求由以下几个部分组成:

  HTTP方法——目前ECS服务的所有接口只支持GET方法的调用。

  请求URL——请求的服务地址、要执行的操作名称、操作参数和公共请求参数都包含在请求的URL中。

  服务端地址:ECS服务的域名是http://ecs.aliyuncs.com/和https://ecs.aliyuncs.com/。为了保证请求的安全性,强烈推荐您使用HTTPS通道。 (HTTPS加入了SSL层对通信进行了加密,可以防止通信被截获而导致敏感信息泄露。)

  操作名称:每个接口都需要指定要执行的操作名称,即Action参数。

  操作参数:根据要执行的操作不同,需要传入不同的操作参数,详见每个接口的说明。

  公共请求参数:包含时间戳、签名信息等每个请求都要包含的参数。

  为了使服务端能够正确地验证用户的身份并授权请求执行,请求在提交前要进行签名处理。签名的规则参见签名机制一节。

  在服务端对请求处理完成后,会返回响应结果。响应结果分为成功结果和错误消息,格式描述参见返回结果一节。客户端可以解析响应的消息体,得到执行结果。

  调用示例

  以DescribeRegions接口为例:

  对应的Action是DescribeRegions,该接口用于查询可用地域列表, 因为该接口没有自定义的参数,所以只需要添加公共请求参数(除了Signature, 该参数需要后面通过签名算法计算出来)。添加了参数之后,请求的URL是(为了便于阅读,这里展示的是进行URL编码前的URL):

  http://ecs.aliyuncs.com/?TimeStamp=2016-02-23T12:46:24Z&Format=XML&AccessKeyId=testid&Action=DescribeRegions&SignatureMethod=HMAC-SHA1&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&Version=2014-05-26&SignatureVersion=1.0

  按照签名计算规则,先构造出规范化请求字符串(Canonicalized Query String),如下:

  AccessKeyId=testid&Action=DescribeRegions&Format=XML&SignatureMethod=HMAC-SHA1&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&SignatureVersion=1.0&TimeStamp=2016-02-23T12%3A46%3A24Z&Version=2014-05-26

  再构造出用于签名的字符串StringToSign值为:

  GET&%2F&AccessKeyId%3Dtestid%26Action%3DDescribeRegions%26Format%3DXML%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf%26SignatureVersion%3D1.0%26TimeStamp%3D2016-02-23T12%253A46%253A24Z%26Version%3D2014-05-26

  以下Java示例代码演示了如何添加公共请求参数、如何构造用请求参数构造规范化请求字符串,以及如何构造StringToSign字符串。示例假定所有请求参数放在一个Map对象里,使用的Access Key ID是“testid”。

  final String HTTP_METHOD = "GET";

  Map parameters = new HashMap();

  // 加入请求参数

  parameters.put("Action", "DescribeRegions");

  parameters.put("Version", "2014-05-26");

  parameters.put("AccessKeyId", "testid");

  parameters.put("TimeStamp", formatIso8601Date(new Date()));

  parameters.put("SignatureMethod", "HMAC-SHA1");

  parameters.put("SignatureVersion", "1.0");

  parameters.put("SignatureNonce", UUID.randomUUID().toString());

  parameters.put("Format", "XML");

  // 对参数进行排序

  String[] sortedKeys = parameters.keySet().toArray(new String[]{});

  Arrays.sort(sortedKeys);

  final String SEPARATOR = "&";

  // 生成stringToSign字符串

  StringBuilder stringToSign = new StringBuilder();

  stringToSign.append(HTTP_METHOD).append(SEPARATOR);

  stringToSign.append(percentEncode("/")).append(SEPARATOR);

  StringBuilder canonicalizedQueryString = new StringBuilder();

  for(String key : sortedKeys) {

  // 这里注意对key和value进行编码

  canonicalizedQueryString.append("&")

  .append(percentEncode(key)).append("=")

  .append(percentEncode(parameters.get(key)));

  }

  // 这里注意对canonicalizedQueryString进行编码

  stringToSign.append(percentEncode(

  canonicalizedQueryString.toString().substring(1)));

  其中需要注意的是,TimeStamp参数要求符合ISO8601规范,并注意使用UTC时间,否则会遇到错误。下面的示例代码演示了如何生成符合规范的TimeStamp字符串:

  private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";

  private static String formatIso8601Date(Date date) {

  SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT);

  df.setTimeZone(new SimpleTimeZone(0, "GMT"));

  return df.format(date);

  }

  生成规范化请求字符串(示例中的canonicalizedQueryString变量),以及SringToSign时,都需要进行必要的编码。编码的规则在签名机制一节中有详细描述。下面的示例代码演示了编码的算法:

  private static final String ENCODING = "UTF-8";

  private static String percentEncode(String value) throws UnsupportedEncodingException {

  return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null;

  }

  假设使用的Access Key Id是“testid”, Access Key Secret是“testsecret”,用于计算HMAC的Key就是“testsecret&”,最终计算得到的签名值为:

  CT9X0VtwR86fNWSnsc6v8YGOjuE=

  计算签名的示例代码(Java):

  // 以下是一段计算签名的示例代码

  final String ALGORITHM = "HmacSHA1";

  final String ENCODING = "UTF-8";

  key = "testsecret&";

  Mac mac = Mac.getInstance(ALGORITHM);

  mac.init(new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM));

  byte[] signData = mac.doFinal(stringToSign.getBytes(ENCODING));

  String signature = new String(Base64.encodeBase64(signData));

  增加签名参数后,请按照RFC3986规则进行URL编码后得到的

  http://ecs.aliyuncs.com/?SignatureVersion=1.0&Action=DescribeRegions&Format=XML&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&Version=2014-05-26&AccessKeyId=testid&Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D&SignatureMethod=HMAC-SHA1&TimeStamp=2016-02-23T12%3A46%3A24Z

  接下来,通过HTTP请求的方式向上面的URL地址发送HTTP请求,并得到ECS服务端的响应结果(示例):

 

 

  通过解析这个XML结果即可以得到所有可用的地域Id和LocalName的列表。如果在提交请求时,指定Format参数为JSON,那么返回结果的格式为JSON格式。

时间: 2024-11-05 10:01:27

阿里云API调用附录包括哪些的相关文章

阿里云API调用方式有哪些

阿里云API调用方式 对 ECS API 接口调用是通过向 ECS API 的服务端地址发送 HTTP GET 请求,并按照接口说明在请求中加入相应请求参数来完成的;根据请求的处理情况,系统会返回处理结果. 请求结构 公共参数 返回结果 签名机制

阿里云API调用公共参数有哪些

公共参数 公共请求参数 公共请求参数是指每个接口都需要使用到的请求参数. 名称类型是否必须描述 FormatString否返回值的类型,支持 JSON 与 XML.默认为 XML. VersionString是API 版本号,为日期形式:YYYY-MM-DD,本版本对应为 2014-05-26. AccessKeyIdString是阿里云颁发给用户的访问服务所用的密钥 ID. SignatureString是签名结果串,关于签名的计算方法,请参见<签名机制>. SignatureMethodS

拥抱API经济:教你三步使用SDK玩转阿里云API

众所周知,阿里云提供了全方位.多层次的云计算产品体系.阿里巴巴技术委员会主席王坚博士说过,要让云计算像水电一样方便获得.为了开发者无缝衔接阿里云的众多服务,将它们集成到自己的应用系统,阿里云开放了API和用来访问API的工具SDK. 什么是阿里云SDK? 阿里云Java SDK让您不用复杂编程即可访问云服务器.CDN(内容分发网络).OSS(对象存储)等丰富又强大的云计算基础设施.它是面向开发者的编程库,能够直接应用在开发者的应用程序里,被应用逻辑调用.打个简单的比方,应用程序是家用电器,阿里云

大中华地区(含港澳台)空气质量接口参加阿里云API as a Service 大赛​

近日,上海青悦的大中华地区(含港澳台)空气质量接口参加阿里云API as a Service 大赛. 现在,比赛正在进行第一阶段--API Hackathon展示阶段. 大中华地区空气质量接口 大中华地区(含港澳台)空气质量接口--含大陆国控,省控,地市控,港澳台等2700多个空气质量监测站点,用于空气质量的实时监测,具有以下优势: 1.数据权威,均为官方环保局发布数据.2.覆盖范围广,整个大中华地区都覆盖.3.站点密度高,除了国控外,还包括各个省市自建空气质量监测站点.4.对各级监测站的级别(

阿里云API创新大赛百万大奖花落谁家?

历时120天.120个参赛战队.100+参赛作品.100+理工类高校.1000+开发者报名参与,共同完成了云计算领域在中国区域的首个API as a Service Solution大赛. 阿里云API创新大赛于2017.02月正式启动,以API 经济的商业模式为模型,邀请广大参赛者共同探索中国的 API 经济.  6月11日下午13:30分,API as a Service Solution在上海云栖大会现场开启了终极PK,10个参赛战队在不同纬度展示了API经济强势回归带来的新型商业模式. 

基于Python的阿里云API签名算法及邮件推送服务

基于Python的阿里云API签名算法及邮件推送服务

开发必看-阿里云API精选手册来了(100+ 阿里云自有产品与云生态API精选)

产品亮点 API精选手册,精选了100+ 个 API,内容出自阿里云自有产品与云生态精选API,汇聚了从数据智能.安全风控.云通信.视频服务.应用服务.生活服务.金融征信.气象水利.到企业服务等十几个应用场景. 产品说明 为什么做这本手册?  1. 想要快速实现一个功能,却不知道哪里可以查询是否有现成的API?  2. 参加大赛想要进行应用创新,却不知道有哪些现成的API可以使用?  3. 公司面临转型,如何快速获得他人的技术能力(API),来完成商业模式的创新?   如果您也遇到上述类似的问题

阿里云API精选手册,业界第一本

阿里云API精选手册(免费下载https://yq.aliyun.com/download/2350),为拓展API经济而生,内容出自阿里云自有产品与云生态精选产品场景化 APIs精选功能汇集.场景介绍.使用指导等等.100+ API,汇聚了数据智能.安全风控.云通信.视频服务.应用服务.生活服务.金融征信.气象水利.企业服务等十多应用场景. 有人说 API 带动了 IOT 的增长,也有人说一个发展的 IOT 生态系统推动了强大的 API 及 API 经济的需求.实质上两者有着循环和共生的关系.

阿里云API创新应用大赛启动:智慧开放,互链解决

2017年6月11日,阿里云第一届API大赛在上海国际采购会展中心完美落幕,然而时隔6个月,第二届API创新应用大赛于12月12日应约而归. 有人说 API 带动了 IOT 的增长,也有人说一个发展的 IOT 生态系统推动了强大的 API 及 API 经济的需求.API帮助企业领导人实现公司转型.围绕现有产品打造新的生态系统,也变现核心资本.服务和产品. 互联网云计算时代,如何打破封闭的系统,让企业内外充分连接和互动?成了各企业管理者们面临的紧要问题.而API简单便捷的调用方式,提高了开发效率,