阿里云
云栖社区2017年度内容特辑
发表主题 回复主题
  • 280阅读
  • 0回复

[教程]API 手册-附录

级别: 论坛粉丝
发帖
642
云币
1292
ZGWZ2>k  
,G(bwE9~  
错误代码表 c"@,|wCUi  
>!2d77I  
|/p2DU2  
e;)&Hc:Z  
客户端错误 sr,8Qd 0M  
fxk6q$'  
[tr=rgb(255, 255, 255)]ErrorCode 错误代码Message 错误信息HTTP 状态码[tr=rgb(255, 255, 255)]OperationDeniedYour account does not open CDN service yet.403[tr=rgb(255, 255, 255)]InsufficientBalanceYour account does not have enough balance.400[tr=rgb(255, 255, 255)]Forbidden.NotVerifiedYour account is not verified yet.403[tr=rgb(255, 255, 255)]UnsupportedOperationThe specified action is not supported.400[tr=rgb(255, 255, 255)]NoSuchVersionThe specified version does not exist.400[tr=rgb(255, 255, 255)]UnsupportedParameterThe parameter <parameter name> is not supported.400[tr=rgb(255, 255, 255)]MissingParameterThe input parameter <parameter name> that is mandatory for processing this request is not supplied.400[tr=rgb(255, 255, 255)]InvalidParameterThe specified parameter <parameter name> is not valid.Or The specified image does not support the specified instance type.400[tr=rgb(255, 255, 255)]ThrottlingRequest was denied due to request throttling.400[tr=rgb(255, 255, 255)]InvalidAccessKeyId.NotFoundThe Access Key ID provided does not exist in our records.404[tr=rgb(255, 255, 255)]ForbiddenUser not authorized to operate on the specified resource.403[tr=rgb(255, 255, 255)]Forbidden.RiskControlThis operation is forbidden by Aliyun Risk Control system.403[tr=rgb(255, 255, 255)]Forbidden.AccessTooManyOthersResourceThis operator is forbidden because too many other one’s resource to be accessed.403[tr=rgb(255, 255, 255)]SignatureDoesNotMatchThe signature we calculated does not match the one you provided. Please refer to the API reference about authentication for details.403[tr=rgb(255, 255, 255)]SignatureNonceUsedThe request signature nonce has been used.400[tr=rgb(255, 255, 255)]IdempotentParameterMismatchRequest uses a client token in a previous request but is not identical to that request.400[tr=rgb(255, 255, 255)]ChargeTypeViolationOperations on this kind of resources are not permitted.403[tr=rgb(255, 255, 255)]InsufficientBalanceYour account does not have enough balance.400[tr=rgb(255, 255, 255)]QuotaExceededLiving instances quota exceeded.400[tr=rgb(255, 255, 255)]OperationDeniedSpecified operation is denied as your resource is locked for security reasons.403[tr=rgb(255, 255, 255)]RiskControl.Refus edYour action was.refus ed by RiskControl.400[tr=rgb(255, 255, 255)]QuotaExceeded.SnapshotSnapshot quota exceeded.400[tr=rgb(255, 255, 255)]QuotaExceeded.ImageImage quota exceeded.400 +aIy':P  
!_UBw7Zm  
服务端错误 0Fm,F&12  
*+'l|VaVq\  
[tr=rgb(255, 255, 255)]错误代码错误信息HTTP 状态码[tr=rgb(255, 255, 255)]InternalErrorThe request processing has failed due to some unknown error, exception or failure.500[tr=rgb(255, 255, 255)]ServiceUnAvailableThe request has failed due to a temporary failure of the server.503 -7l)mk  
mq~L1< f  
如何调用接口 j*)K> \  
'gwh:8Xc  
% 2lcc"'  
对CDN服务接口的调用是通过向CDN服务端发送HTTP请求(可以通过HTTP或HTTPS通道发送),并获取CDN服务对该请求响应结果的过程。CDN服务端在接收到用户请求后,对请求做必要的身份验证和参数验证,在所有验证成功后根据请求的指定参数提交或完成相应操作,并把处理的结果以HTTP响应地形式返回给调用者。 k%?A=h  
T8rf+B/.L  
请求组成 6*H F`@(  
Arb-,[kwN  
5hbQUF ,Q  
请求由以下几个部分组成:
  • HTTP方法——目前cdn服务的所有接口只支持GET方法的调用。
  • 请求URL——请求的服务地址、要执行的操作名称、操作参数和公共请求参数都包含在请求的URL中。
  • 服务端地址:cdn服务的域名http://cdn.aliyuncs.com/https://cdn.aliyuncs.com/。为了保证请求的安全性,强烈推荐您使用HTTPS通道。 (HTTPS加入了SSL层对通信进行了加密,可以防止通信被截获而导致敏感信息泄露。)
  • 操作名称:每个接口都需要指定要执行的操作名称,即Action参数。
  • 操作参数:根据要执行的操作不同,需要传入不同的操作参数,详见每个接口的说明。
  • 公共请求参数:包含时间戳、签名信息等每个请求都要包含的参数。
zmMz6\ $  
为了使服务端能够正确地验证用户的身份并授权请求执行,请求在提交前要进行签名处理。签名的规则参见签名机制一节。  =:-x;  
在服务端对请求处理完成后,会返回响应结果。响应结果分为成功结果和错误消息,格式描述参见JSON返回示例:
  1. {
  2.     "RequestId": "4C467B38-3910-447D-87BC-AC049166F216",
  3.     /* 返回结果数据 */
  4. }
pI|H9  
~'l.g^p bv  
返回结果一节。客户端可以解析响应的消息体,得到执行结果。 Hh1OD?N)  
0Bpix|mq  
调用示例 O.8{c;  
C7[CfcPA  
5#U*vGVT  
以DescribeCdnService接口为例: c}>p"  
对应的Action是DescribeCdnService。在添加了所有公共请求参数(除Signature)后,请求的URL是(为了便于阅读,这里是进行URL编码前的URL):
  1. http://cdn.aliyuncs.com/?TimeStamp=2012-12-26T10:33:56Z&Format=XML&AccessKeyId=testid&Action= DescribeCdnService &SignatureMethod=HMAC-SHA1&SignatureNonce=NwDAxvLU6tFE0DVb&Version=2013-01-10&SignatureVersion=1.0
lx&ME#~  
"ujt:4 p@  
按照签名计算规则,先构造出规范化请求字符串(Canonicalized Query String),如下:
  1. http://cdn.aliyuncs.com/?TimeStamp=2012-12-26T10:33:56Z&Format=XML&AccessKeyId=testid&Action= DescribeCdnService &SignatureMethod=HMAC-SHA1&SignatureNonce=NwDAxvLU6tFE0DVb&Version=2013-01-10&SignatureVersion=1.0
:2fz4n0{/  
isP4*g&%x  
再构造出用于签名的字符串StringToSign值为:
  1. GET&%2F&AccessKeyId%3Dtestid%26Action% DescribeCdnService %26Format%3DXML%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3DNwDAxvLU6tFE0DVb%26SignatureVersion%3D1.0%26TimeStamp%3D2012-12-26T10%253A33%253A56Z%26Version%3D2013-01-10
j.@TPf*  
M6J/S  
以下Java示例代码演示了如何添加公共请求参数、如何构造用请求参数构造规范化请求字符串,以及如何构造StringToSign字符串。示例假定所有请求参数放在一个Map <String, String>对象里,使用的Access Key ID是“testid”。
  1. final String HTTP_METHOD = "GET";
  2. ……………………………………
pPdOw K#  
Lc<C1I 5=  
其中需要注意的是,TimeStamp参数要求符合ISO8601规范,并注意使用UTC时间,否则会遇到错误。下面的示例代码演示了如何生成符合规范的TimeStamp字符串:
  1. private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
  2.     private static String formatIso8601Date(Date date) {
  3.         SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT);
  4.         df.setTimeZone(new SimpleTimeZone(0, "GMT"));
  5.         return df.format(date);
  6.     }
L@{5:#-  
.{1MM8 Q  
生成规范化请求字符串(示例中的canonicalizedQueryString变量),以及stringToSign时,都需要进行必要的编码。编码的规则在签名机制一节中有详细描述。下面的示例代码演示了如何用java.net.URLEncoder类完成编码:
  1. private static final String ENCODING = "UTF-8";
  2.         private static String percentEncode(String value)
  3.             throws UnsupportedEncodingException{
  4.         return value != null ?
  5.                 URLEncoder.encode(value, ENCODING).replace("+", "%20")
  6.                 .replace("*", "%2A").replace("%7E", "~")
  7.                 : null;
  8.     }
f`j RLo*L  
u&>o1!c*P  
假定使用的Access Key Id是“testid”,Access Key Secret是“testsecret”,用于计算HMAC的Key就是“testsecret&”,最终计算得到的签名值为:
  1. SDFQNvyH5rtkc9T5Fwo8DOjw5hc=
sc! e$@U  
04wmN  
计算签名的示例代码(Java):
  1. // 以下是一段计算签名的示例代码
  2.         final String ALGORITHM = "HmacSHA1";
  3.         final String ENCODING = "UTF-8";
  4.         key = "testsecret&";
  5.         Mac mac = Mac.getInstance(ALGORITHM);
  6.         mac.init(new SecretKeySpec(
  7.                  key.getBytes(ENCODING), ALGORITHM));
  8.         byte[] signData = mac.doFinal(
  9.                   stringToSign.getBytes(ENCODING));
  10.         String signature =
  11.                   new String(Base64.encodeBase64(signData));
IYy2EK[s  
|'2E'?\/x  
增加签名参数后,请按照RFC3986规则进行URL编码后得到的
  1. http://cdn.aliyuncs.com/?TimeStamp=2012-12-26T10%3A33%3A56Z&Format=XML&AccessKeyId=testid&Action= DescribeCdnService &SignatureMethod=HMAC-SHA1&RegionId=region1&SignatureNonce=NwDAxvLU6tFE0DVb&Version=2012-09-13&SignatureVersion=1.0&Signature=SDFQNvyH5rtkc9T5Fwo8DOjw5hc%3d
m"!!)  
dB`YvKr#  
接下来,通过HTTP请求的方式向上面的URL地址发送HTTP请求,并得到CDN服务端的响应结果(示例): N(]>(S o  
none 4V7{5:oa  
通过解析这个XML结果即可以得到所有可用的地域Id和LocalName的列表。如果在提交请求时,指定Format参数为JSON,那么返回结果的格式为JSON格式 oh5fNx  
$e! i4pM  
如何保证幂等性 yp=2nU"o  
j!;?=s  
TCSm#?[B  
当通过调用创建实例接口在CDN中创建云服务时,如果遇到了请求超时或服务器内部错误时,客户端可能会尝试重发请求,这时客户端可以通过提供可选参数ClientToken避免服务器创建出比预期要多的实例,也就是通过提供ClientToken参数保证请求的幂等性。ClientToken是一个由客户端生成的唯一的、大小写敏感、不超过64个ASCII字符的字符串。 or u.a   
如果用户使用同一个ClientToken值调用创建实例接口,则服务端会返回相同的请求结果,包含相同的InstanceId。因此用户在遇到错误进行重试的时候,可以通过提供相同的ClientToken值,来确保CDN只创建一个实例,并得到这个实例的InstanceId。 m.MOn3n]  
如果用户提供了一个已经使用过的ClientToken,但其他请求参数不同,则CDN会返回 IdempotentParameterMismatch 的错误代码。但需要注意的是,SignatureNonce、Timestamp和Signature参数在重试时是需要变化的,因为cdn使用SignatureNonce来防止重放攻击,使用Timestamp来标记每次请求时间,所以再次请求必须提供不同的SignatureNonce和Timestamp参数值,这同时也会导致Signature值的变化。 C`D5``4  
通常,客户端只需要在500(InternetError)或503(ServiceUnAvailable)错误、或者无法得到响应结果的情况下进行重试操作。返回结果是200时,重试可以得到上次相同的结果,但不会对服务端状态带来任何影响。而对4xx的返回错误,除非提示信息里明确出现“try it later”,通常重试也是不能成功的。 ] y, 6  
<8Qa"<4f;  
欠费状态下的API行为 .! LOhZ  
+[JGi"ca  
1X/ q7lR  
下列表中,“-” 表示无关,“正常逻辑逻辑”表示按照接口的正常逻辑逻辑执行并返回结果。 AO9F.A<T5  
w$7*za2  
账户欠费时 @fp(uu  
}Y5Sf"~M  
[tr=rgb(255, 255, 255)]接口行为描述[tr=rgb(255, 255, 255)]OpenCdnService正常[tr=rgb(255, 255, 255)]DescribeCdnService正常OperationLocks会出现Financial的锁[tr=rgb(239, 251, 255)]ModifyCdnService异常出现InsufficientBalance错误码[tr=rgb(255, 255, 255)]RefreshObjectCaches异常出现InsufficientBalance错误码[tr=rgb(255, 255, 255)]DescribeRefreshTask正常[tr=rgb(255, 255, 255)]DescribeCdnMonitorData正常
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个