开发者在发送请求给 OSS 时,既可以使用 带签名认证的请求,也可以使用匿名访问。OSS提供的相关API接口如下:
关于Service操作
API | 描述 |
getService (listBuckets) | 返回请求者拥有的所有Bucket |
关于Bucket的操作
API | 描述 |
putBucket | 创建Bucket |
putBucketACL | 设置Bucket访问权限 |
putBucketLogging | 开启Bucket日志 |
putBucketWebsite | 设置Bucket为静态网站托管模式 |
putBucketReferer | 设置Bucket的防盗链规则 |
putBucketLifecycle | 设置Bucket中Object的生命周期规则 |
getBucket(ListObject) | 列出Bucket中所有Object的信息 |
getBucketAcl | 获得Bucket访问权限 |
getBucketLocation | 获得Bucket所属的数据中心位置信息 |
getBucketInfo | 获取Bucket信息 |
getBucketLogging | 查看Bucket的访问日志配置情况 |
getBucketWebsite | 查看Bucket的静态网站托管状态 |
getBucketReferer | 查看Bucket的防盗链规则 |
getBucketLifecycle | 查看Bucket中Object的生命周期规则 |
deleteBucket | 删除Bucket |
deleteBucketLogging | 关闭Bucket访问日志记录功能 |
deleteBucketWebsite | 关闭Bucket的静态网站托管模式 |
deleteBucketLifecycle | 删除Bucket中Object的生命周期规则 |
putBucketEncryption | 配置Bucket的加密规则 |
getBucketEncryption | 获取Bucket的加密规则 |
deleteBucketEncryption | 删除Bucket的加密规则 |
关于Object的操作
API | 描述 |
putObject | 上传Object |
copyObject | 拷贝一个Object成另外一个Object |
getObject | 获取Object |
appendObject | 在Object尾追加上传数据 |
deleteObject | 删除Object |
deleteMultipleObjects | 删除多个Object |
headObject | 只返回某个Object的meta信息,不返回文件内容 |
getObjectMeta | 返回Object的基本meta信息,包括该Object的ETag、Size(文件大小)、LastModified,不返回文件内容 |
postObject | 使用Post上传Object |
putObjectACL | 设置ObjectACL |
getObjectACL | 获取ObjectACL信息 |
callback | 上传回调 |
putSymlink | 创建软链接 |
getSymlink | 获取软链接 |
restoreObject | 解冻文件 |
selectObject | 用SQL语法查询Object内容 |
putObjectTagging | 设置或更新对象标签 |
getObjectTagging | 获取对象标签信息 |
deleteObjectTagging | 删除指定的对象标签 |
关于Multipart Upload的操作
API | 描述 |
InitiateMultipartUpload | 初始化MultipartUpload事件 |
uploadPart | 分块上传文件 |
uploadPartCopy | 分块复制上传文件 |
completeMultipartUpload | 完成整个文件的MultipartUpload上传 |
abortMultipartUpload | 取消MultipartUpload事件 |
listMultipartUploads | 罗列出所有执行中的MultipartUpload事件 |
listParts | 罗列出指定UploadID所属的所有已经上传成功Part |
跨域资源共享(CORS)
API | 描述 |
putBucketcors | 在指定Bucket设定一个CORS的规则 |
getBucketcors | 获取指定的Bucket目前的CORS规则 |
deleteBucketcors | 关闭指定Bucket对应的CORS功能并清空所有规则 |
options | 跨域访问preflight请求 |
关于Live Channel的操作
API | 描述 |
putLiveChannelStatus | 切换LiveChannel的状态 |
putLiveChannel | 创建LiveChannel |
getVodPlaylist | 获取播放列表 |
postVodPlaylist | 生成播放列表 |
getLiveChannelStat | 获取LiveChannel的推流状态信息 |
getLiveChannelInfo | 获取LiveChannel的配置信息 |
getLiveChannelHistory | 获取LiveChannel的推流记录 |
listLiveChannel | 列举LiveChannel |
deleteLiveChannel | 删除LiveChannel |
当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。
(1)OSS的错误响应格式
当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。
错误响应的消息体例子:
- "1.0" ?>
- <Error xmlns=”http://doc.oss.aliyuncs.com”>
- <Code>
- AccessDenied
- Code>
- <Message>
- Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters
- Message>
- <RequestId>
- 1D842BC5425544BB
- RequestId>
- <HostId>
- oss.aliyuncs.com
- HostId>
- Error>
所有错误的消息体中都包括以下几个元素:
(2)OSS的错误码
错误码 | 描述 | http状态码 |
AccessDenied | 拒绝访问 | 403 |
BucketAlreadyExists | Bucket已经存在 | 409 |
BucketNotEmpty | Bucket不为空 | 409 |
EntityTooLarge | 实体过大 | 400 |
EntityTooSmall | 实体过小 | 400 |
FileGroupTooLarge | 文件组过大 | 400 |
FilePartNotExist | 文件Part不存在 | 400 |
FilePartStale | 文件Part过时 | 400 |
InvalidArgument | 参数格式错误 | 400 |
InvalidAccessKeyId | Access Key ID不存在 | 403 |
InvalidBucketName | 无效的Bucket名字 | 400 |
InvalidDigest | 无效的摘要 | 400 |
InvalidObjectName | 无效的Object名字 | 400 |
InvalidPart | 无效的Part | 400 |
InvalidPartOrder | 无效的part顺序 | 400 |
InvalidTargetBucketForLogging | Logging操作中有无效的目标bucket | 400 |
InternalError | OSS内部发生错误 | 500 |
MalformedXML | XML格式非法 | 400 |
MethodNotAllowed | 不支持的方法 | 405 |
MissingArgument | 缺少参数 | 411 |
MissingContentLength | 缺少内容长度 | 411 |
NoSuchBucket | Bucket不存在 | 404 |
NoSuchKey | 文件不存在 | 404 |
NoSuchUpload | Multipart Upload ID不存在 | 404 |
NotImplemented | 无法处理的方法 | 501 |
PreconditionFailed | 预处理错误 | 412 |
RequestTimeTooSkewed | 发起请求的时间和服务器时间超出15分钟 | 403 |
RequestTimeout | 请求超时 | 400 |
SignatureDoesNotMatch | 签名错误 | 403 |
TooManyBuckets | 用户的Bucket数目超过限制 | 400 |
如果在OSS合法的操作中,添加了OSS不支持的请求头参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回501 Not Implemented错误
错误请求示例:
PUT /my-image.jpg HTTP/1.1
Host:oss-example. oss.aliyuncs.com
Date: Wed, 28 May 2011 22:32:00 GMT
If-Modified-Since: Wed, 06 Apr 2011 10:02:46 GMT
返回示例:
- 501 Not Implemented
- x-oss-request-id: 77E534EBF90372BE
- Content-Type: application/xml
- Transfer-Encoding: chunked
- Date: Thu, 28 Apr 2011 08:03:07 GMT
- Connection: close
- Server: AliyunOSS
-
-
- "1.0" ?>
- <Error xmlns=”http://doc.oss.aliyuncs.com”>
- <Code>
- NotImplemented
- Code>
- <Message>
- A header you provided implies functionality that is not implemented.
- Message>
- <Header>
- If-Modified-Since
- Header>
- <RequestId>
- 77E534EBF90372BE
- RequestId>
- <HostId>
- oss.aliyuncs.com
- HostId>
- Error>
其他错误类似,这里只是介绍了一个示例。我们要学会观看响应体,并寻找错误源头,定位错误。