最近更新时间:2021-04-28 10:59:49
注意:下面的说明描述以JAVA SDK的使用为例 ,其它SDK可参考此文档。
错误码 | 描述 | 状态码 | 如何处理 |
---|---|---|---|
BucketAlreadyExists | 桶已存在 | 409 | 桶名有冲突,需要重新命名 |
BucketNotEmpty | 桶不为空 | 409 | 先删除桶内文件,再执行删除 |
ClientIllegalArgument | 桶名不合法 | ||
NoSuchBucket | Bucket不存在 | 404 | Bucket不存在,检查是否拼写错误、未创建Bucket |
NotFound | 文件不存在 | 404 | 检查文件名是否拼写错误、未上传、已删除 |
AccessDenied | 没有权限,拒绝访问 | 403 | 1、检查是否使用匿名的方式访问私密文件;2、如果用子账号或者其他账号访问资源,检查是否给子账号或者其他账号进行了正确的授权;3、检查是否使用自定义域名访问,但是在KS3未绑定域名 |
RequestTimeTooSkewed | 发起请求的时间和服务器时间超出15分钟 | 403 | 检查机器时钟 |
InvalidAccessKeyId | AK非法 | 403 | 检查AK是否拼写错误 |
SignatureDoesNotMatch | 签名不匹配 | 403 | 1、检查SK是否正确;2、检查签名算法 |
InvalidKey | 文件名不合法 | 400 | 检查文件名是否不合法 |
InvalidDigest | md5错误 | 400 | 检查上传的md5值是否错误 |
InvalidPartNum | 上传分块,块号错误 | 400 | 块号范围[1,10000] |
InvalidPartOrder | 分块上传完成,块号顺序错误 | 400 | 块号不连续,有缺失块 |
EntityTooLarge | 单次上传太大,超过5G | 400 | 单次上传太大,超过5G |
UnknownHost | 域名未解析 | 1、检查域名是否拼写有误;2、检查公网网络是否异常 | |
CallRemoteFail | 网络异常 | 使用重试机制,见下面的说明 |
注意:对网络异常可以进行有限次数的重试,对业务异常(KS3返回的)不建议进行重试,需要客户按照返回的异常错误码,查找原因。
以JAVA SDK的putObject为例:
String bucketName = "test-bucket";
String objectKey = "test-key";
File file = new File("d:\\test");
try{
client.putObject(bucketName, objectKey, file);
}catch(CallRemoteFailException e){
if(e.getMessage().indexOf("ConnectTimeoutException")>-1||e.getMessage().indexOf("SocketTimeoutException")>-1){
System.out.println("newwork error,need retry:"+bucketName+" objectKey:"+objectKey);
//进行重试,对于网络异常,建议进行有限次数的重试
//client.putObject(bucketName, objectKey, file);
}
}catch(Ks3ServiceException e){
System.out.println(e.getStatueCode());//http status
System.out.println(e.getErrorCode());//error code
System.out.println(e.getErrorMessage());//error message
System.out.println(e.getRequestId());//requestid,请求唯一标识,可以将此标识提供后售后人员,协助排查
}finally{
//release resource
}
纯净模式