VeryCloud对象存储服务 (VSS, VeryCloud Storage Service) 提供兼容S3的API访问接口,以方便用户使用对象存储。 为了访问VSS开放接口,VSS为每个用户分配访问的令牌和密码(ACCESS KEY和ACCESS SECRET),每个访问请求都需要携带ACCESS KEY 以及使用SECRET对请求数据的数字签名。用户可以在VSS管理界面的”私钥管理” 查询ACCESS KEY以及ACCESS SECRET。

访问控制

VSS RESTful API与Amazon S3兼容,使用标准的 HTTP Authorization 标头来传递身份验证信息。其格式如下:

Authorization: AWS AccessKey:Signature

Signature 是请求中选定元素拼接的字符串StringToSign 基于用户的SECRET的 RFC 2104HMAC-SHA1值。

签名生成方法

VSS RESTful API 签名生成方法如下:

Authorization = "AWS" + " " + ACCESS KEY + ":" + Signature;
Signature = base64_encode(hmacsha1(ACCESS SECRET, StringToSign));
StringToSign = HTTP-Verb + "\n" +
    Content-MD5 + "\n" +
    Content-Type + "\n" +
    Date + "\n" +
    CanonicalizedAmzHeaders +
    CanonicalizedResource;

CanonicalizedAmzHeaders

要构建 StringToSign 的 CanonicalizedAmzHeaders 部分,请选择所有以“x-amz-”开头的 HTTP 请求标头(使用不区分大小写的对比方式)并遵循以下步骤:

1. 将每个 HTTP 标头名称转换为小写。例如,“X-Amz-Date”改为“x-amz-date”。
2. 根据标头名称按字典顺序排列标头集。
3. 按照 RFC 2616 中第 4.2 节中的规定,将相同名称的标头字段合并为一个“header-name:comma-separated-value-list”对,各值之间不留空格。
    例如可以将元数据标头“x-amz-meta-username: fred”和“x-amz-meta-username: barney”合并为单个标头“x-amz-meta-username: fred,barney”。
4. 通过将折叠空格(包括换行符)替换为单个空格,“展开”跨多个行的长标头(按照 RFC 2616 中第 4.2 节允许的方式)。
    例如“x-amz-meta-username:        barney”替换为“x-amz-meta-username: barney”。
5. 删除标头中冒号周围的空格。例如,标头“x-amz-meta-username: fred,barney”改为“x-amz-meta-username:fred,barney”。
6. 最后,请向生成的列表中的每个标准化标头附加换行字符 (U+000A)。通过将此列表中所有的标头规范化为单个字符串,构建 CanonicalizedResource 元素。

CanonicalizedResource

由HTTP请求路径和HTTP请求参数二部分构成。

HTTP请求路径

HTTP请求的路径部分。GIT S例如下面的请求:

GET /images/?acl HTTP/1.1
Host: vss.verycloud.cn
Date: Tue, 27 Mar 2016 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

该请求中HTTP路径为“/images/”。

HTTP请求参数

必须包含的请求参数包括:?versioning、?acl、?logging、?versions、?uploads、?partNumber、?uploadId、?delete。 由参数名、参数值(如果有)和问号组成。如果有多个参数则按照参数名的字典顺序排序并使用“&”进行分隔(例如,?partNumber=值&uploadId=值)。 例如下面的请求:

GET /images/?acl HTTP/1.1
Host: vss.verycloud.cn
Date: Tue, 27 Mar 2016 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

该请求的参数部分为“?acl”

时间戳要求(Date)

有效的时间戳对于经身份验证的请求是必须的(使用 HTTP Date 标头或 x-amz-date 替代项)。此外,经身份验证的请求随附的客户端时间戳必须处于收到请求时的 VSS 系统时间的 15 分钟之内。否则,请求将失败并出现 RequestTimeTooSkewed 错误代码。施加这些限制的目的是为了防止对方重新使用已拦截的请求。 要更好地防范窃听,请对经身份验证的请求使用 HTTPS 传输。某些 HTTP 客户端库不提供为请求设置 Date 标头的功能。如果您在标准化标头中包含“Date”标头的值 时遇到困难,您可以改用“x-amz-date”标头为请求设置时间戳。x-amz-date 标头的值必须采用 RFC 2616 格式 (http://www.ietf.org/rfc/rfc2616.txt) 中的 任意格式。x-amz-date 标头位于请求中时,系统将在计算请求签名时忽略任何 Date 标头。因此,如果包含了 x-amz-date 标头,请在构建 StringToSign 时使用 Date 的空字符串。

身份认证示例

请求

GET /images/test.png HTTP/1.1
Host: vss.verycloud.cn
Date: Tue, 27 Mar 2016 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

StringToSign

GET\n
\n
\n
Tue, 27 Mar 2016 19:36:42 +0000\n
/images/test.png

预签名授权访问

默认情况下,VeryCloud的Bucket和Object是私有的,预签名授权访问通过在URL中加入签名信息,实现第三方用户的授权访问。预签名 URL 仅在指定的持续时间内有效。

预签名生成方法

预签名 URL 中至少包含Signature,Expires,AWSAccessKeyId三个参数。 其请求示例如下:

http://vss.verycloud.cn/images/test.png?AWSAccessKeyId=a245d11009644262b9b3a74e1d4e8500&Expires=1435222561&Signature=v5zekrYCTyhaSkLQNz2JGhaP4S8%3D

各参数的定义如下:

名称 示例值 描述
AWSAccessKeyId AKIAIOSFODNN7EXAMPLE 用户的ACCESS KEY。
Expires 1435222561 将签名过期时间指定为自 Epoch(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数。将拒绝在此时间(根据服务器)之后收到的请求。
Signature vjbyPxybdZaNmGa%2ByT272YEAiv4%3D 采用 StringToSign 的 HMAC-SHA1 Base64 编码的 URL 编码。

其签名与前面普通的签名稍有差异,不同之处仅在于 StringToSign 元素的格式。其中Signature签名生成方法如下:

Signature = base64_encode( hmacsha1( ACCESS SECRET, StringToSign ) );
StringToSign = HTTP-Verb + "\n" +
    Content-MD5 + "\n" +
    Content-Type + "\n" +
    Expires + "\n" +
    CanonicalizedAmzHeaders +
    CanonicalizedResource;

请注意,在 StringToSign 中,HTTP Date 位置元素已替换为 Expires。CanonicalizedAmzHeaders 和 CanonicalizedResource 是相同的。

预签名生成示例

请求

GET /images/test.png?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=NpgCjnDzrM%2BWFzoENXmpNDUsSn8%3D&Expires=1175139620 HTTP/1.1
Host: vss.verycloud.cn

StringToSign

GET\n
\n
\n
1461224331\n

/images/test.png

公共请求头

VeryCloud的RESTful接口中使用了一些公共请求头。这些请求头可以被所有的VeryCloud请求所使用,其详细定义如下:

名称 描述
Authorization 用于验证请求合法性的认证信息。 使用场景:非匿名请求。
Content-Length RFC2616中定义的HTTP请求内容长度。 在使用PUT 请求时需要。
Content-Type RFC2616中定义的HTTP请求内容类型。 例如: text/plain。
Content-MD5 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字, 对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息 合法性的检查(消息内容是否与发送时一致)。
Date HTTP 1.1协议中规定的GMT时间,例如:Wed, 05 Sep. 2012 23:00:00 GMT, 在携带Authorization头部时,需要设定x-amz-date 或者Date头部。
Expect 100-Continue握手的目的,是为了允许客户端在发送请求内容之前,判断 源服务器是否愿意接受 请求(基于请求头部)在发送body的时候才能使用该头部。 有效值:100-continue。
Host 访问Host值,这里固定为vss.verycloud.cn。
x-amz-date 发送请求的当前时间,在携带Authorization头部时,需要设定x-amz-date 或者Date头部, 如果二个都设置了,则选择x-amz-date。

公共响应头

VeryCloud的RESTful接口中使用了一些公共响应头。这些响应头可以被所有的VeryCloud请求所使用,其详细定义如下:

名称 描述
  • Content-Length
  • RFC2616中定义的HTTP请求内容长度。
  • 类型: String
  • 默认值: None
  • Content-Type
  • 内容的MIME类型。例如, Content-Type: text/html; charset=utf-8
  • 类型: String
  • 默认值: None
  • Connection
  • 标明客户端和OSS服务器之间的链接状态。
  • 类型: Enum
  • Valid Values: open | close
  • 默认值: None
  • Date
  • HTTP 1.1协议中规定的GMT时间,例如:Wed, 05 Sep. 2014 23:00:00 GMT
  • 类型: String
  • 默认值: None
  • ETag
  • ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。对于Put Object请求创建的Object,ETag值是其内容的MD5值;对于Multipart Upload创建的Object,ETag值不是其内容的etag值。ETag值可以用于检查Object内容是否发生变化。
  • 类型: String
  • X-Trans-Id
  • X-Trans-Id是由VeryCloud创建,并唯一标识这个response的UUID。如果在使用VeryCloud服务时遇到问题,可以凭借该字段联系VeryCloud工作人员,快速定位问题。

GET Bucket (List Objects)

接口地址
/mybucket/object_key
HTTP请求方式
GET
请求参数
名称 类型 必须 说明
delimiter string delimiter 是一个用于对bucket内具有共同前缀的objects进行聚合的分隔符。(“/”为常用的delimiter,用于表示伪目录)
marker string 设定返回的objects中的起始object。sever端会对objects进行字典序排列。
max-keys string 设定此次请求的最大objects数量。如果用户设定了max-keys且符合条件的objects数量大于该值,则server端将只返回max-keys个objects,同时包含true。
prefix string 设定bucket中objects的前缀名,只有包含该前缀的objects才会返回。
响应元素
名称 类型 说明
Contents XML metadata Metadata about each object returned。
CommonPrefixes String 当request中包含delimiter时,response中会包含CommonPrefixes。CommonPrefixes为objects name(以第一个delimiter结尾的)共同前缀集合。
Delimiter String delimiter 是一个用于对bucket内具有共同前缀的objects进行聚合的分隔符。
DisplayName String object对应的所有者信息。
ETag String Object 内容的MD5 hash值。
ID String object对应的所有者ID。
IsTruncated Boolean 指明是否所有的结果都返回。true表示还有结果未返回,false表示所有结果都已返回。当results的数量超过MaxKeys设定值时,IsTruncated会设置为true。
Key String object名称。
LastModified Date object最后修改时间。
Marker String 返回的objects中的起始object。当request中设定Marker时,response会带该字段。
MaxKeys String 此次返回objects的最大数量。
Name String bucket名称。
NextMarker String 当response 的IsTruncated为true时,下一次(ListBucket)可以以此为marker,将未返回的结果返回。
Owner String Bucket owner。
Prefix String bucket中objects的共同前缀名。
Size String object的大小。
StorageClass String STANDARD。
请求示例
curl -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/mybucket/object_key"
响应示例
 <?xml version=1.0 encoding=utf-8?>
 <ListBucketResult xmlns=http://s3.amazonaws.com/doc/2006-03-01/>
 <Name>ning</Name>
 <Prefix/>
 <Marker/>
 <MaxKeys>1000</MaxKeys>
 <IsTruncated>false</IsTruncated>
 <Contents>
 <Key>object_key</Key>
 <LastModified>2016-4-08T06:13:14.000Z</LastModified>
 <ETag>M2V8Y17A2SZ2CZRORVJX-2</ETag>
 <Size>456</Size>
 <StorageClass>STANDARD</StorageClass>
 <Owner>
 <ID>user1</ID>
 <DisplayName>testuser</DisplayName>
 </Owner>
 </Contents>
 </ListBucketResult>

PUT Bucket

接口地址
/mybucket
HTTP请求方式
PUT
请求头
名称 类型 必须 说明
x-amz-acl string ACL权限类型。
取值: "private", "public-read", "public-read-write", "authenticated-read"
private:自己拥有全部权限,其他人没有任何权限
public-read:自己拥有全部权限,其他人拥有读权限
public-read-write:自己拥有全部权限,其他人拥有读写权限
authenticated-read:自己拥有全部权限,被授权的用户拥有读权限
请求示例
curl -X PUT -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/mybucket"
响应示例
 HTTP/1.1 200 OK
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Server: nginx
 Content-Type: application/xml
 Connection

DELETE Bucket

接口地址
/mybucket
HTTP请求方式
DELETE
请求示例
curl -X DELETE -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/mybucket"
响应示例
 HTTP/1.1 204 No Content
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Content-Type: text/html; charset=UTF-8
 Content-Length: 0

PUT Bucket ACL

接口地址
/mybucket?acl
HTTP请求方式
PUT
请求头
名称 类型 必须 说明
x-amz-acl string ACL权限类型。
取值: "private", "public-read", "public-read-write", "authenticated-read"
private:自己拥有全部权限,其他人没有任何权限
public-read:自己拥有全部权限,其他人拥有读权限
public-read-write:自己拥有全部权限,其他人拥有读写权限
authenticated-read:自己拥有全部权限,被授权的用户拥有读权限
请求示例
curl -X PUT -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/mybucket?acl"
响应示例
 HTTP/1.1 200 OK
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Content-Type: text/html; charset=UTF-8
 Content-Length: 0

GET Bucket ACL

接口地址
/mybucket?acl
HTTP请求方式
GET
响应元素
名称 类型 说明
AccessControlList Container 存储ACL信息的容器。
父节点: AccessControlPolicy
AccessControlPolicy Container 保存Get Bucket ACL结果的容器。
父节点: None
DisplayName String Bucket拥有者的名称。(目前和ID一致)。
父节点: AccessControlPolicy.Owner
Grant Container Grantee and Permission的容器。
父节点: AccessControlPolicy.AccessControlList
Grantee Container 包含具有权限的user的DisplayName和ID信息的容器。
父节点: AccessControlPolicy.AccessControlList.Grant
ID String bucket所有者ID。
父节点: AccessControlPolicy.Owner
Owner Container 包含bucket所有者DisplayName和ID信息的容器。
父节点: AccessControlPolicy
Permission String 赋予user的Bucket的ACL权限。
父节点: AccessControlPolicy.AccessControlList.Grant
请求示例
curl -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/mybucket?acl"
响应示例
 HTTP/1.1 200 OK
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Last-Modified: Fri, 31 Aug 2015 01:05:00 GMT
 Content-Length: 124
 Content-Type: text/plain
 Connection: close
 <AccessControlPolicy xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>
 <Owner>
 <ID>user1</ID>
 <DisplayName>testuser</DisplayName>
 </Owner>
 <AccessControlList>
 <Grant>
 <Grantee xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:type='Group'>
 <ID>user1</ID>
 <DisplayName>testuser</DisplayName>
 </Grantee>
 <Permission>FULL_CONTROL</Permission>
 </Grant>
 </AccessControlList>
 </AccessControlPolicy>

GET Object

接口地址
/
HTTP请求方式
GET
请求头
名称 类型 必须 说明
Range string 指定文件传输的范围。如,设定 bytes=0-99,表示传送第0到第99这100个字符。
If-Modified-Since string 如果指定的时间早于实际修改时间,则正常传送文件,并返回200 OK;否则返回304 not modified。
If-Unmodified-Since string 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
If-Match string 如果传入期望的ETag和object的 ETag匹配,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
If-None-Match string 如果传入的ETag值和Object的ETag不匹配,则正常传输文件,并返回200 OK;否则返回304 Not Modified。
响应头部
名称 类型 说明
x-amz-meta-* string 用户自定义变量,其中一个用处是:用户客户端加密时,秘钥对相关信息基于该字段返回。
请求示例
curl -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/"
响应示例
 HTTP/1.1 200 OK
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Content-Type: text/html; charset=UTF-8
 Content-Length: 0

PUT Object

接口地址
/
HTTP请求方式
PUT
请求头
名称 类型 必须 说明
Cache-Control string 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
Content-Disposition string 指定该Object被下载时的名称;更详细描述请参照RFC2616。
Content-Encoding string 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
Content-MD5 string 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。
x-amz-acl string canned ACL权限类型。
Expires string 过期时间(milliseconds);更详细描述请参照RFC2616。
x-amz-meta- string 用户自定义变量,其中一个用处是:用户客户端加密时,设置秘钥对相关信息。
请求示例
curl -X PUT -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/"
响应示例
 HTTP/1.1 200 OK
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Content-Type: text/html; charset=UTF-8
 Content-Length: 0

DELETE Object

接口地址
/
HTTP请求方式
DELETE
请求示例
curl -X DELETE -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/"
响应示例
 HTTP/1.1 204 NoContent
 Date: Fri, 31 Aug 2015 01:10:00 GMT
 Content-Type: text/html; charset=UTF-8
 Content-Length: 0

Initiate Multipart Upload

接口地址
/?uploads
HTTP请求方式
POST
请求头
名称 类型 必须 说明
Cache-Control string 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
Content-Disposition string 指定该Object被下载时的名称;更详细描述请参照RFC2616。
Content-Encoding string 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
Content-MD5 string 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。
x-amz-acl string canned ACL权限类型。
Expires string 过期时间(milliseconds);更详细描述请参照RFC2616。
x-amz-meta- string 用户自定义变量,其中一个用处是:用户客户端加密时,设置秘钥对相关信息。
响应元素
名称 类型 说明
InitiateMultipartUploadResult Container 保存Initiate Multipart Upload请求结果的容器。
Bucket String 初始化Multipart Upload事件所在的Bucket名称。
Key String 初始化一个Multipart Upload事件的Object名称。
UploadId String 唯一标示此次Multipart Upload事件的ID。
请求示例
curl -X POST -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/?uploads"
响应示例
 HTTP/1.1 200 OK
 Date: Mon, 1 Nov 2016 20:34:56 GMT
 Content-Length: 197
 Connection: keep-alive
 <?xml version=1.0 encoding=UTF-8?>
 <InitiateMultipartUploadResult xmlns=http://s3.amazonaws.com/doc/2006-03-01/>
 <Bucket>example-bucket</Bucket>
 <Key>example-object</Key>
 <UploadId>V2Wpbmcn3ZpaWWpbmcn3ZpZwbG9hWpbmcn3ZpZA</UploadId>
 </InitiateMultipartUploadResult>

Complete Multipart Upload

接口地址
/?upload_id=123456789
HTTP请求方式
POST
响应元素
名称 类型 说明
CompleteMultipartUploadResult Container 保存Complete Multipart Upload请求结果的容器。
Location String 新创建Object的URL。
Key String 新创建Object的名字。
ETag String ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。Complete Multipart Upload请求创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。
请求示例
curl -X POST -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/?upload_id=123456789"
响应示例
 HTTP/1.1 200 OK
 Content-Length: 360
 Content-Type: application/xml
 Date: Wed, 03 Jun 2016 07:43:26 GMT
 Connection: keep-alive
 <?xml version=1.0 encoding=UTF-8?>
 <CompleteMultipartUploadResult xmlns=http://s3.amazonaws.com/doc/2006-03-01/>
 <Location>mybucket/test-object</Location>
 <Bucket>mybucket</Bucket>
 <Key>test-object</Key>
 <ETag>123456789</ETag>
 </CompleteMultipartUploadResult>

Upload Multipart

接口地址
/?upload_id=&part_number=
HTTP请求方式
PUT
请求示例
curl -X PUT -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/?upload_id=&part_number="
响应示例
 HTTP/1.1 200 OK
 Content-Length: 360
 Content-Type: application/xml
 Date: Wed, 03 Jun 2016 07:43:26 GMT
 Connection: keep-alive

List Multipart

接口地址
/?upload_id=
HTTP请求方式
GET
请求参数
名称 类型 必须 说明
uploadId String Multipart Upload事件的ID。
max-parts Container 规定在vss响应的最大Part数目。
响应元素
名称 类型 说明
ListPartsResult Container 保存List Part请求结果的容器。
Bucket String Bucket名称。
Key String Object名称。
UploadId String Upload ID。
Initiator Container 发起分片上传的account信息容器。
ID String 发起分片上传的account ID 信息。
DisplayName String 发起分片上传的account name 信息与ID相同。
Owner Container 与Initiator含义相同,内容也相同。
StorageClass String 存储object的类型,固定值 STANDARD。
PartNumberMarker String 本次List结果的Part Number起始位置。
NextPartNumberMarker String 如果本次没有返回全部结果,响应请求中将包含NextPartNumberMarker元素,用于标明接下来请求的PartNumberMarker值。。
MaxParts String 返回请求中最大的Part数目。
IsTruncated Boolean 标明是否本次返回的List Part结果列表被截断。“true”表示本次没有返回全部结果;“false”表示本次已经返回了全部结果。
Part String 保存Part信息的容器。
PartNumber Int 标示Part的数字。
LastModified Date Part上传的时间。
ETag String 已上传Part内容的ETag。
Size String 已上传Part大小。
请求示例
curl -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/?upload_id="
响应示例
 HTTP/1.1 200 OK
 X-Trans-Id: tx20af64a5df6e5d09bfafc-00556e668c
 Date: Wed, 28 Oct 2016 22:32:00 GMT
 ETag: fba9dede5f27731c9771645a39863338
 Content-Length: 985
 Content-Type: text/plain
 Connection: keep-alive
 <?xml version=1.0 encoding=UTF-8?>
 <ListPartsResult xmlns=http://s3.amazonaws.com/doc/2006-03-01/>
 <Bucket>mybucket</Bucket>
 <Key>test-object</Key>
 <UploadId>mybucket/test-object</UploadId>
 <Initiator>
 <ID>testuser</ID>
 <DisplayName>testuser</DisplayName>
 </Initiator>
 <Owner>
 <ID>testuser</ID>
 <DisplayName>testuser</DisplayName>
 </Owner>
 <StorageClass>STANDARD</StorageClass>
 <IsTruncated>false</IsTruncated>
 <MaxParts>1000</MaxParts>
 <PartNumberMarker>1</PartNumberMarker>
 <Part>
 <PartNumber>1</PartNumber>
 <ETag>78c347078c10335b32ec5b417b2c52e4</ETag>
 <LastModified>2016-04-03T07:01:53.148980+00:00</LastModified>
 <Size>10485760</Size>
 </Part>
 <Part>
 <PartNumber>2</PartNumber>
 <ETag>e9eb772c226db5629a5b927ef6d3c3c6</ETag>
 <LastModified>2016-04-03T07:01:56.315310+00:00</LastModified>
 <Size>10485760</Size>
 </Part>
 <Part>
 <PartNumber>3</PartNumber>
 <ETag>2ed3f71937bdec5d528dd8eeb68b447b</ETag>
 <LastModified>2016-04-03T07:01:59.684700+00:00</LastModified>
 <Size>2668250</Size>
 </Part>
 </ListPartsResult>

Abort Multipart Upload

接口地址
/?upload_id=
HTTP请求方式
DELETE
请求示例
curl -X DELETE -v
-H "Host: vss.verycloud.cn"
-H "Date: Fri, 31 Aug 2015 01:10:00 GMT"
-H "Authorization: AWS XNB5GEMGT47UBS7Z6JCF:oHgKhmAOb5kSZsqAdptwGGQH5c0zWrHalCi0cobt="
"https://vss.verycloud.cn/?upload_id="
响应示例
 HTTP/1.1 204 NoContent
 Content-Length: 360
 Content-Type: application/xml
 Date: Wed, 03 Jun 2016 07:43:26 GMT
 Connection: keep-alive