文档中心

PUT Object - Copy


描述

此PUT接口可以拷贝一个在KS3中已经存在 object 到某个 bucket。用户通过在请求中配置请求头部 x-kss-copy-source 来指定要拷贝的数据源。

使用此接口,用户需要具有拷贝对象的读权限,以及目标空间的写权限。并且所有的拷贝请求均需要用户进行身份验证且不包含信息体。

请求

语法

PUT /destinationObject HTTP/1.1
Host: destinationBucket.kss.ksyun.com
x-kss-copy-source: /source_bucket/sourceObject
Authorization: authorization string
Date: date

请求参数

该请求不使用请求参数。

请求头部

该接口可以使用所有常用请求头部,此外,也可以使用下表所列请求头部。获取更多信息,请点击常用请求头部

名称 描述 必需
x-kss-copy-source 空间名称与对象的object key名称的组合,通过斜杠分隔('/')。
类型: String
默认值: None
约束条件:其值必须使用URL编码。另外,空间名称必须有效,同时用户需要拥有对拷贝对象的读权限。
服务端加密请求则需要以下头部

如果用户需要服务器使用默认加密,需要以下头部

名称 描述 必需
x-kss-server-side-encryption 如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。
类型:String

如果用户需要服务器按照用户提供的秘钥加密,需要以下头部

名称 描述 必需
x-kss-server-side-encryption-customer-key 由用户指定KS3加密时使用的 base64-encoded 加密秘钥。
类型:String
约束:需要和有效的 x-kss-server-side-encryption-customer-algorithm,x-kss-server-side-encryption-customer-key-MD5 同时使用
x-kss-server-side-encryption-customer-algorithm 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。
类型:String
有效值:AES256
约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-key-MD5 同时使用
x-kss-server-side-encryption-customer-key-MD5 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。
类型:String
约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-algorithm 同时使用

如果作为数据源的对象使用用户秘钥进行服务端加密,用户需要使用下列头部使KS3能够对对象解密。

名称 描述 必需
x-kss-copy-source-server-side-encryption-customer-key 由用户指定KS3解密时使用的 base64-encoded 加密秘钥,其值必须数据源对象创建时使用的秘钥一致。
类型:String
约束:需要和有效的 x-kss-server-side-encryption-customer-algorithm,x-kss-server-side-encryption-customer-key-MD5 同时使用
x-kss-copy-source-server-side-encryption-customer-algorithm 指定数据源对象解密使用的解密算法。
类型:String
有效值:AES256
约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-key-MD5 同时使用
x-kss-copy-source-server-side-encryption-customer-key-MD5 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。
类型:String
约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-algorithm 同时使用

请求内容

该接口不使用请求内容。

响应

响应头部

该接口可以使用所有常用响应头部。获取更多信息,请点击常用响应头部

名称 描述
x-kss-server-side-encryption 如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。
类型:String
x-kss-server-side-encryption-customer-algorithm 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。
类型:String
有效值:AES256
x-kss-server-side-encryption-customer-key-MD5 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。
类型:String

响应内容

名称 描述
CopyObjectResult 响应内容的容器。
类型: Container
父节点: 无
ETag 返回一个新对象的实体标签。影响因素为对象的内容与,对象名称或元数据无关。
类型: String
父节点: CopyObjectResult
LastModified 返回最后被修改的时间日期。
类型: String
父节点: CopyObjectResult

特殊错误

该请求不返回任何特殊错误。

示例

请求示例

PUT /{DestinationObjectKey} HTTP/1.1
Host: {DestinationBucketName}.kss.ksyun.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
x-kss-copy-source: /{SourceBucketName}/{SourceObjectKey}
Authorization: authorization string

响应示例

HTTP/1.1 200 OK
Date: Wed, 28 Oct 2009 22:32:00 GMT
Connection: close
Server: Tengine

<CopyObjectResult>
   <LastModified>2009-10-28T22:32:00</LastModified>
   <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
 </CopyObjectResult>

接口细节分析

  • 用户必须对源bucket的Object具有读权限,对目标Bucket具有写权限
  • 如果目标key已经存在,则KS3会返回403。