对象存储BOS

    CopyObject

    接口描述

    此接口用于把一个已经存在的Object拷贝为另外一个Object,支持Object文件的长度范围是0Byte-5GB。该接口也可以用来实现Meta更新(使用replace模式且源和目标指向同一个文件)。此接口需要请求者在header中指定拷贝源。

    CopyObject接口支持跨区域文件复制,即复制文件所在的源Bucket和目标Bucket可以不在同一region(目前只支持从其它Region向本Region复制数据)。当进行跨区域文件复制时,复制产生的流量会收取跨区域流量费。跨区域收费标准参见产品定价

    请求(Request)

    • 请求语法

      PUT /<ObjectKey> HTTP/1.1
      Host: <BucketName>.bj.bcebos.com
      Date: <Date>
      Authorization: <AuthorizationString>
      Content-Length: <ContentLength>
      Content-Type:text/plain
      x-bce-copy-source: /SourceBucket/SourceObject
      x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
      x-bce-metadata-directive: <DirectiveString>
      x-bce-storage-class: <StorageClass>
    • 请求参数

    • 请求头域

      名称类型描述是否必需
      x-bce-copy-sourceString源Object地址
      x-bce-copy-source-if-matchString如果源Object的ETag值和用户提供的ETag相等,则执行拷贝操作,否则拷贝失败。
      x-bce-metadata-directiveString目的Object的Meta信息是从源Object拷贝,还是用请求传入的meta。有效值为copyreplace,缺省值为copy。如果设置为copy,则直接用源Object的meta;如果设置为replace,则用请求传入的meta。
      x-bce-copy-source-if-none-matchString如果源Object的ETag和用户提供的ETag不相等,则执行拷贝操作,否则拷贝失败。
      x-bce-copy-source-if-unmodified-sinceString 如果源object在x-bce-copy-source-if-unmodified-since之后没被修改,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。
      x-bce-copy-source-if-modified-sinceString如果源object在x-bce-copy-source-if-modified-since之后被修改了,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。
      x-bce-storage-classString指定Object的存储类型,STANDARD_IA代表低频存储,COLD代表冷存储,ARCHIVE代表归档存储,不指定时默认是标准存储类型。
      x-bce-acl String CannedACL支持的header,用户设置Object的权限,取值为private和public-read。
      x-bce-grant-read String CannedACL支持的header,用户设置Object的读权限。支持多个id,以逗号分隔
      x-bce-grant-full-control String CannedACL支持的header,用户设置Object的FULL_CONTROL权限。支持多个id,以逗号分隔
      x-bce-server-side-encryption String 服务端加密算法,当前仅支持AES256。

    响应(Response)

    • 响应头域

      无特殊头域

    • 响应参数

      名称 类型 描述
      ETag String 目的Object的ETag
      lastModified DATE 目的Object的最后一次修改时间

      注意事项

      1. 请求者必须对源Object有读操作权限。
      2. 在计算签名之前,用户需要针对x-bce-copy-source字段中为非标准ASCII字符(例如:中文)的内容做一次url-encode。
      3. 为了保持复制过程中的http连接,CopyObject接口的http结果可能使用Transfer-Encoded: Chunked编码方式。
      4. CopyObject过程中,如果发生服务器端错误,http status code可能返回2XX但是复制失败,复制结果请根据http body中的json判定。
      5. CopyObject如果源object是归档类型,需要先取回归档类型才能调用CopyObject接口。
      6. 归档类型Object不支持通过CopyObject实现Meta更新(使用replace模式且源和目标指向同一个文件)。
      7. 如果复制软链接文件,并不会复制数据,只会复制软链接本身。如果使用软链接访问该接口,且软链接的目标文件删除了,会返回Http 404,SymlinkTargetNotExist。

    示例

    • 标准存储的请求示例

      PUT /ObjectName HTTP/1.1
      Host: BucketName.bj.bcebos.com
      Date: Wed, 06 Apr 2016 06:34:40 GMT
      Authorization: AuthorizationString
      Content-Length: 0
      Content-Type:text/plain
      x-bce-copy-source: /SourceBucket/SourceObject
      x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
      x-bce-metadata-directive: replace
    • 低频/冷存储的请求示例

      PUT /object HTTP/1.1
      Host: BucketName.bj.bcebos.com
      Date: Wed, 06 Apr 2016 06:34:40 GMT
      Authorization: AuthorizationString
      Content-Length: 0
      Content-Type:text/plain
      x-bce-copy-source: /SourceBucket/SourceObject
      x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
      x-bce-storage-class: STANDARD_IA
    • 响应示例

      Copy成功

      HTTP/1.1 200 OK
      x-bce-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
      Date: Wed, 06 Apr 2016 06:34:40 GMT
      Connection: close
      Server: BceBos
      
      {
          "lastModified":"2009-10-28T22:32:00Z",
          "ETag":"9b2cf535f27731c974343645a3985328"
      }

      服务端异常, 需要根据返回json判断

      HTTP/1.1 200 OK
      Date: Thu, 12 May 2016 09:14:32 GMT
      Content-Type: application/json; charset=utf-8
      Connection: keep-alive
      Server: BceBos
      x-bce-request-id: bb90cc9c-2b80-462c-87a4-095e610c9a2f
      Transfer-Encoding: chunked
      {
          "code":"InternalError",
          "message":"We encountered an internal error. Please try again.",
          "requestId":"52454655-5345-4420-4259-204e47494e58"
      }
    上一篇
    PostObject
    下一篇
    RestoreObject