• OSS存储开放接口规范 和 错误响应


    1、开放接口规范

            开发者在发送请求给 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

    2、OSS云存储错误响应

            当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。

    (1)OSS的错误响应格式

            当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。

    错误响应的消息体例子:

    1. "1.0" ?>
    2. <Error xmlns=”http://doc.oss.aliyuncs.com”>
    3. <Code>
    4. AccessDenied
    5. Code>
    6. <Message>
    7. Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters
    8. Message>
    9. <RequestId>
    10. 1D842BC5425544BB
    11. RequestId>
    12. <HostId>
    13. oss.aliyuncs.com
    14. HostId>
    15. Error>

    所有错误的消息体中都包括以下几个元素:

    • Code:OSS返回给用户的错误码。
    • Message:OSS给出的详细错误信息。
    • RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。
    • HostId:用于标识访问的OSS集群(目前统一为oss.aliyuncs.com)

    (2)OSS的错误码

    错误码描述http状态码
    AccessDenied拒绝访问403
    BucketAlreadyExistsBucket已经存在409
    BucketNotEmptyBucket不为空409
    EntityTooLarge实体过大400
    EntityTooSmall实体过小400
    FileGroupTooLarge文件组过大400
    FilePartNotExist文件Part不存在400
    FilePartStale文件Part过时400
    InvalidArgument参数格式错误400
    InvalidAccessKeyIdAccess Key ID不存在403
    InvalidBucketName无效的Bucket名字400
    InvalidDigest无效的摘要400
    InvalidObjectName无效的Object名字400
    InvalidPart无效的Part400
    InvalidPartOrder无效的part顺序400
    InvalidTargetBucketForLoggingLogging操作中有无效的目标bucket400
    InternalErrorOSS内部发生错误500
    MalformedXMLXML格式非法400
    MethodNotAllowed不支持的方法405
    MissingArgument缺少参数411
    MissingContentLength缺少内容长度411
    NoSuchBucketBucket不存在404
    NoSuchKey文件不存在404
    NoSuchUploadMultipart Upload ID不存在404
    NotImplemented无法处理的方法501
    PreconditionFailed预处理错误412
    RequestTimeTooSkewed发起请求的时间和服务器时间超出15分钟403
    RequestTimeout请求超时400
    SignatureDoesNotMatch签名错误403
    TooManyBuckets用户的Bucket数目超过限制400

    3、OSS参数不支持的操作

            如果在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

    返回示例: 

    1. 501 Not Implemented
    2. x-oss-request-id: 77E534EBF90372BE
    3. Content-Type: application/xml
    4. Transfer-Encoding: chunked
    5. Date: Thu, 28 Apr 2011 08:03:07 GMT
    6. Connection: close
    7. Server: AliyunOSS
    8. "1.0" ?>
    9. <Error xmlns=”http://doc.oss.aliyuncs.com”>
    10. <Code>
    11. NotImplemented
    12. Code>
    13. <Message>
    14. A header you provided implies functionality that is not implemented.
    15. Message>
    16. <Header>
    17. If-Modified-Since
    18. Header>
    19. <RequestId>
    20. 77E534EBF90372BE
    21. RequestId>
    22. <HostId>
    23. oss.aliyuncs.com
    24. HostId>
    25. Error>

    其他错误类似,这里只是介绍了一个示例。我们要学会观看响应体,并寻找错误源头,定位错误。

  • 相关阅读:
    【数论】博弈论 —— nim游戏
    Python + adb 实现打电话功能
    Oracle EBS form开发 提示 FRM-15500:Valid and unique object name must be entered
    Javascript——数组常用的方法
    循环神经网络--01 序列模型
    Uni-app 命令行创建项目 多端运行
    代码随想录算法训练营第四十三天 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
    Linux文本三剑客之sed流编辑器
    安装k8s
    数据库的分库分表
  • 原文地址:https://blog.csdn.net/weixin_52851967/article/details/126931215