对象存储API

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

访问控制

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

Authorization: AWS AccessKey:Signature

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

签名生成方法

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

Authorization = "AWS" + " " + ACCESS KEY + ":" + Signature;
Signature = Base64( HMAC-SHA1( ACCESS SECRET, UTF-8-Encoding-Of( 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 /photos/?acl HTTP/1.1
Host: mtmss.com
Date: Tue, 27 Mar 2007 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

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

HTTP请求参数

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

GET /photos/?acl HTTP/1.1
Host: mtmss.com
Date: Tue, 27 Mar 2007 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

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

时间戳要求(Date)

有效的时间戳对于经身份验证的请求是必须的(使用 HTTP Date 标头或 x-amz-date 替代项)。此外,经身份验证的请求随附的客户端时间戳必须处于收到请求时的 MSS 系统时间的 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 /photos/puppy.jpg HTTP/1.1
Host: mtmss.com
Date: Tue, 27 Mar 2007 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=

StringToSign

GET\n
\n
\n
Tue, 27 Mar 2007 19:36:42 +0000\n
/photos/puppy.jpg

预签名授权访问

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

预签名生成方法

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

http://mtmss.com/photos/puppy.jpg?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( HMAC-SHA1( ACCESS SECRET, UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
    Content-MD5 + "\n" +
    Content-Type + "\n" +
    Expires + "\n" +
    CanonicalizedAmzHeaders +
    CanonicalizedResource;

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

预签名生成示例

请求

GET /photos/puppy.jpg?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=NpgCjnDzrM%2BWFzoENXmpNDUsSn8%3D&Expires=1175139620 HTTP/1.1
Host: mtmss.com

StringToSign

GET\n
\n
\n
1175139620\n

/photos/puppy.jpg

公共请求头

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

名称 描述
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值,这里固定为mtmss.com。
x-amz-date 发送请求的当前时间,在携带Authorization头部时,需要设定x-amz-date 或者Date头部, 如果二个都设置了,则选择x-amz-date。

公共响应头

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

名称 描述
  • 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是由mss创建,并唯一标识这个response的UUID。如果在使用mss服务时遇到问题,可以凭借该字段联系mss工作人员,快速定位问题。

service相关操作

GetService(ListBucket)

列出当前用户的所有buckets列表。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

响应元素(Response Elements):

名称 描述
  • Bucket
  • 保存bucket信息的容器。
  • 类型:容器
  • 子节点:Name, CreationDate, Location
  • 父节点:ListAllMyBucketsResult.Buckets
  • Buckets
  • 保存多个Bucket信息的容器。
  • 类型:容器
  • 子节点:Bucket
  • 父节点:ListAllMyBucketsResult
  • CreationDate
  • Bucket创建时间
  • 类型:时间 (格式:yyyy-mm-ddThh:mm:ss.timezone, e.g.,2011-12-01T12:27:13.000Z)
  • 父节点:ListAllMyBucketsResult.Buckets.Bucket
  • DisplayName
  • Bucket拥有者的名称 (目前和ID一致)。
  • 类型:字符串
  • 父节点:ListAllMyBucketsResult.Owner
  • ID
  • Bucket拥有者的用户ID。
  • 类型:字符串
  • 父节点:ListAllMyBucketsResult.Owner
  • ListAllMyBucketsResult
  • 保存Get Service请求结果的容器。
  • 类型:容器
  • 子节点: Owner, Buckets
  • 父节点:None
  • Name
  • Bucket名称。
  • 类型:字符串
  • 父节点:ListAllMyBucketsResult.Buckets.Bucket
  • Owner
  • 用于存放Bucket拥有者信息的容器。
  • 类型:容器
  • 父节点:ListAllMyBucketsResult

示例:

请求

GET / HTTP/1.1
Host: mtmss.com
Date: Wed, 01 Mar 2014 12:00:00 GMT
Authorization: authorization string

返回

<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01"
    <Owner>
        <ID>bcaf1ffd86f461ca5fb16fd081034f</ID>
        <DisplayName>webfile</DisplayName>
    </Owner>
    <Buckets>
        <Bucket>
            <Name>quotes</Name>
            <CreationDate>2006-02-03T16:45:09.000Z</CreationDate>
        </Bucket>
        <Bucket>
            <Name>samples</Name>
            <CreationDate>2006-02-03T16:41:58.000Z</CreationDate>
        </Bucket>
    </Buckets>
</ListAllMyBucketsResult>

Bucket相关操作

DELETE Bucket

删除URI中指定的Bucket。删除前必须确保Bucket内的Object都已删除,否则返回BucketNotEmpty的错误。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

DELETE /quotes/ HTTP/1.1
Host: mtmss.com
Date: Wed, 01 Mar  2014 12:00:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 204 No Content
Content-Type: text/html; charset=UTF-8
Content-Length: 0
X-Trans-Id: txd2db4071ad574fcb9bc39-00556d50f0
Date: Tue, 02 Jun 2014 06:45:04 GMT

GETBucket(ListObjects)

获取某个Bucket的Objects信息。可以通过相关的请求参数Bucket下的某个Object子集。

请求参数(Request Parameters):

设置下面的请求参数:

名称 描述 Required
  • delimiter
  • A delimiter 是一个用于对bucket内具有共同前缀的objects进行聚合的分隔符。(“/”为常用的delimiter,用于表示伪目录)
  • 类型: String
  • 默认值: None
No
  • marker
  • 设定返回的objects中的起始object。sever端会对objects进行字典序排列。
  • 类型: String
  • 默认值: None
No
  • max-keys
  • 设定此次请求的最大objects数量。如果用户设定了max-keys且符合条件的objects数量大于该值,则server端将只返回max-keys个objects,同时包含true。
  • 类型: String
  • 默认值: 1000
No
  • prefix
  • 设定bucket中objects的前缀名,只有包含该前缀的objects才会返回。
  • 类型: String
  • 默认值: None
No

请求头部(Request Headers):

包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

返回常见返回头。

响应元素(Response Elements):

名称 描述
  • Contents
  • Metadata about each object returned。
  • 类型: XML metadata
  • 父节点: ListBucketResult
  • CommonPrefixes
  • 当request中包含delimiter时,response中会包含CommonPrefixes。CommonPrefixes为objects name(以第一个delimiter结尾的)共同前缀集合。
  • 类型: String
  • 父节点: ListBucketResult
  • Delimiter
  • A delimiter 是一个用于对bucket内具有共同前缀的objects进行聚合的分隔符。
  • 类型: String
  • 父节点: ListBucketResult
  • DisplayName
  • object对应的所有者信息。
  • 类型: String
  • 父节点: ListBucketResult.Contents.Owner
  • ETag
  • Object 内容的MD5 hash值。
  • 类型: String
  • 父节点: ListBucketResult.Contents
  • ID
  • object对应的所有者ID。
  • 类型: String
  • 父节点: ListBucketResult.Contents.Owner
  • IsTruncated
  • 指明是否所有的结果都返回。true表示还有结果未返回,false表示所有结果都已返回。当results的数量超过MaxKeys设定值时,IsTruncated会设置为true。
  • 类型: Boolean
  • 父节点: ListBucketResult
  • Key
  • The object名。
  • 类型: String
  • 父节点: ListBucketResult.Contents
  • LastModified
  • object最后修改时间。
  • 类型: Date
  • 父节点: ListBucketResult.Contents
  • Marker
  • 返回的objects中的起始object。当request中设定Marker时,response会带该字段。
  • 类型: String
  • 父节点: ListBucketResult
  • MaxKeys
  • 此次返回objects的最大数量。
  • 类型: String
  • 父节点: ListBucketResult
  • Name
  • bucket名。
  • 类型: String
  • 父节点: ListBucketResult
  • NextMarker
  • 当response 的IsTruncated为true时,下一次(ListBucket)可以以此为marker,将未返回的结果返回。
  • 类型: String
  • 父节点: ListBucketResult
  • Owner
  • Bucket owner。
  • 类型: String
  • 子节点: DisplayName, ID
  • 父节点: ListBucketResult.Contents | CommonPrefixes
  • Prefix
  • bucket中objects的共同前缀名。
  • 类型: String
  • 父节点: ListBucketResult
  • Size
  • object的大小。
  • 类型: String
  • 父节点: ListBucketResult.Contents
  • StorageClass
  • STANDARD
  • 类型: String
  • 父节点: ListBucketResult.Contents

示例:

请求URL

GET /BucketName/ HTTP/1.1
Host: mtmss.com
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: authorization string

xml响应

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>bucket</Name>
    <Prefix/> <Marker/>
    <MaxKeys>1000</MaxKeys>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>my-image.jpg</Key>
        <LastModified>2009-10-12T17:50:30.000Z</LastModified>
        <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag>
        <Size>434234</Size>
        <StorageClass>STANDARD</StorageClass>
        <Owner>
            <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
            <DisplayName>mtd@amazon.com</DisplayName>
        </Owner>
    </Contents>
    <Contents>
        <Key>my-third-image.jpg</Key>
        <LastModified>2009-10-12T17:50:30.000Z</LastModified>
        <ETag>&quot;1b2cf535f27731c974343645a3985328&quot;</ETag>
        <Size>64994</Size>
        <StorageClass>STANDARD</StorageClass>
        <Owner>
            <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
            <DisplayName>mtd@amazon.com</DisplayName>
        </Owner>
    </Contents>
</ListBucketResult>

请求URL

GET /my-ruby-s3bucket_segments/?delimiter=/ HTTP/1.1
Host: mtmss.com
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: authorization string

xml响应

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01">
    <Prefix></Prefix>
    <Marker></Marker>
    <Delimiter>/</Delimiter>
    <IsTruncated>false</IsTruncated>
    <MaxKeys>1000</MaxKeys>
    <Name>my-ruby-s3bucket_segments</Name>
    <CommonPrefixes>
        <Prefix>nsq_obj/</Prefix>
    </CommonPrefixes>
    <CommonPrefixes>
        <Prefix>nsq_upload/</Prefix>
    </CommonPrefixes>
</ListBucketResult>

GET Bucket acl

获取Bucket的访问权限控制信息。只有Bucket的拥有者才能使用Get Bucket ACL这个接口。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • AccessControlList
  • 存储ACL信息的容器。
  • 类型: Container
  • 父节点: AccessControlPolicy
  • AccessControlPolicy
  • 保存Get Bucket ACL结果的容器。
  • 类型: Container
  • 父节点: None
  • DisplayName
  • Bucket拥有者的名称。(目前和ID一致)。
  • 类型: String
  • 父节点: AccessControlPolicy.Owner
  • Grant
  • Grantee and Permission的容器。
  • 类型: Container
  • 父节点: AccessControlPolicy.AccessControlList
  • Grantee
  • 包含具有权限的user的DisplayName和ID信息的容器.当前只支持bucket所有者和ALLUsers二种user
  • 类型: Container
  • 父节点: AccessControlPolicy.AccessControlList.Grant
  • ID
  • bucket所有者ID。
  • 类型: String
  • 父节点: AccessControlPolicy.Owner
  • Owner
  • 包含bucket所有者DisplayName和ID信息的容器。
  • 类型: Container
  • 父节点: AccessControlPolicy
  • Permission
  • 赋予user的Bucket的ACL权限。
  • 类型: String
  • Valid Values: FULL_CONTROL | READ
  • 父节点: AccessControlPolicy.AccessControlList.Grant

示例:

请求URL

GET /my-bucket/?acl HTTP/1.1
Host: mtmss.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: txd2db4071ad574fcb9bc39-00556d55f8
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
Content-Length: 124
Content-Type: text/plain
Connection: close
<AccessControlPolicy>
    <Owner>
        <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
        <DisplayName>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>
            <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
                <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
                <DisplayName>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</DisplayName>
            </Grantee>
            <Permission>FULL_CONTROL</Permission>
        </Grant>
    </AccessControlList>
</AccessControlPolicy>

HEAD Bucket

获取Bucket相关元信息。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

HEAD /mss-test-bucket/ HTTP/1.1
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: authorization string
Host: mtmss.com
Connection: Keep-Alive

xml响应

HTTP/1.1 200 OK
x-trans-id: txff60afa135614b6e9f059-00556d48b7
Date: Fri, 10 2012 21:34:56 GMT

PUT Bucket

创建Bucket。默认情况下创建的Bucket是private的,只有Bucket的创建者可以访问。 可以Put请求中的“x-amz-acl”头来设置Bucket 访问权限。目前Bucket有二种访问权限:public-read和private。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • x-amz-acl
  • canned ACL权限类型。
  • 类型: String
  • Valid Values: private 或public-read
No

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例1:

请求URL

PUT /mss-test-bucket/ HTTP/1.1
Host: mtmss.com
Content-Length: 0
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
x-trans-id: txff60afa135614b6e98059-00556d48b7
Date: Fri, 10 2012 21:34:56 GMT
Location: mss-test-bucket
Content-Length: 0
Connection: keep-alive

示例2:

请求URL

PUT /mss-test-bucket/ HTTP/1.1
Host: mtmss.com
Content-Length: 0
x-amz-acl:public-read
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
x-trans-id: txff60afa135614b6e98059-00556d48b0
Date: Fri, 10 2012 21:34:56 GMT
Location: mss-test-bucket
Content-Length: 0
Connection: keep-alive

PUT Bucket acl

用于修改Bucket访问权限.目前Bucket有二种访问权限:public-read和private。只有Bucket的创建者才能调用该接口。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • x-amz-acl
  • canned ACL权限类型。
  • 类型: String
  • Valid Values: private 或public-read
No

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

PUT /mss-test-bucket/?acl HTTP/1.1
Host: mtmss.com
Content-Length: 0
x-amz-acl:public-read
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
x-trans-id: txff60afa135614b6e98058-20556d48b8
Date: Fri, 10 2012 21:34:56 GMT
Location: mss-test-bucket
Content-Length: 0
Connection: keep-alive

Object相关操作

DELETE Object

删除某个object。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

DELETE /mss-test-bucket/object1? HTTP/1.1
Host: mtmss.com
Content-Length: 0
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: authorization string

xml响应

HTTP/1.1 204 NoContent
Content-Length: 0
x-trans-id: txff70ffa135614b6e98059-10556d4888
Date: Fri, 10 2012 21:34:56 GMT

DeleteMultipleObjects

一次删除同一个bucket中的多个Object。 返回的消息体中只包含删除过程中出错的Object结果;如果所有删除都成功的话,则没有消息体。

请求参数(Request Parameters):

包含“delete”参数,用于区分其他的POST操作。

请求头部(Request Headers):

名称 描述 Required
  • Content-MD5
  • 该值为传输的data基于base64编码的 128bit MD5值。
  • 类型: String
  • 默认值: None
Yes
  • Content-Length
  • body的长度。
  • 类型: String
  • 默认值: None
Yes

请求元素(Request Elements):

名称 描述 Required
  • Delete
  • bucket中待删除的objects的容器。
  • 父节点: None
  • 类型: Container
  • 子节点: 一个或者多个Object 和 Quiet 元素。
Yes
  • Quiet
  • 当前只支持设置为True。
  • 父节点: Delete
  • 类型: Boolean
  • 默认值: false
Yes
  • Object
  • 用于描述一个待删除的object的容器。
  • 父节点: Delete
  • 类型: Container
  • 子节点: Key element 和VersionId element。
Yes
  • Key
  • 待删除的object名。
  • 父节点: Object
  • 类型: String
Yes
  • VersionId
  • 带删除的object对应的VersionId信息。
  • 父节点: Object
  • 类型: String
No

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • Deleteresult
  • 保存Delete Multiple Object请求结果的容器。
  • 子节点: Deleted, Error
  • 类型: Container
  • 父节点: None
  • Error
  • 保存未被成功删除的Object的容器。
  • 子节点: Key, VersionId, Code, Message。
  • 类型: String
  • 父节点: DeleteResult
  • Key
  • 未被删除的object名。
  • 类型: String
  • 父节点: Error
  • VersionId
  • 未被删除的object的VersionId。
  • 类型: String
  • 父节点: Deleted, Error
  • Code
  • object删除失败的错误代码。
  • 类型: String
  • 值: AccessDenied, InternalError
  • 父节点: Error
  • Message
  • Error 描述。
  • 类型: String
  • 父节点: Error

示例:

请求URL

POST  /mss-test-bucket?delete= HTTP/1.1
Host: mtmss.com
Accept: */*
Date: Wed, 30 Nov 2011 03:39:05 GMT
Content-MD5: p5/WA/oEr30qrEEl21PAqw==
Authorization: AWS AKIAIOSFODNN7EXAMPLE:W0qPYCLe6JwkZAD1ei6hp9XZIee=
Content-Length: 125
Connection: Keep-Alive
<Delete>
    <Object>
        <Key>sample1.txt</Key>
    </Object>
   <Object>
        <Key>sample2.txt</Key>
   </Object>
</Delete>

xml响应

HTTP/1.1 200 OK
Date: Fri, 02 Dec 2011 01:53:42 GMT
Content-Type: application/xml
Content-Length: 251
x-trans-id: txff60afa135614b6e98059-10556d48b7
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Error>
        <Key>sample2.txt</Key>
        <Code>AccessDenied</Code>
        <Message>Access Denied</Message>
    </Error>
</DeleteResult>

GET Object

获取某个Object,此操作要求用户对该Object有读权限。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • Range
  • 指定文件传输的范围。如,设定 bytes=0-99,表示传送第0到第99这100个字符。
  • 类型: String
  • 默认值: None
No
  • If-Modified-Since
  • 如果指定的时间早于实际修改时间,则正常传送文件,并返回200 OK;否则返回304 not modified。
  • 类型: String
  • 默认值: None
No
  • If-Unmodified-Since
  • 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
  • 类型: String
  • 默认值: None
No
  • If-Match
  • 如果传入期望的ETag和object的 ETag匹配,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
  • 类型: String
  • 默认值: None
No
  • If-None-Match
  • 如果传入的ETag值和Object的ETag不匹配,则正常传输文件,并返回200 OK;否则返回304 Not Modified。
  • 类型: String
  • 默认值: None
No

请求元素(Request Elements):

响应头部(Response Headers):

名称 描述
  • x-amz-meta-*
  • 用户自定义变量,其中一个用处是:用户客户端加密时,秘钥对相关信息基于该字段返回。
  • 类型: String

响应元素(Response Elements):

示例:

请求URL

GET /mss-test-bucket/my-image.jpg HTTP/1.1
Host: mtmss.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e4d09bfafc-00556e666c
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain
Connection: close

HEAD Object

获取某个Object的meta信息,不返回文件内容。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • Range
  • 指定文件传输的范围。如,设定 bytes=0-99,表示传送第0到第99这100个字符。
  • 类型: String
  • 默认值: None
No
  • If-Modified-Since
  • 如果指定的时间早于实际修改时间,则正常传送文件,并返回200 OK;否则返回304 not modified。
  • 类型: String
  • 默认值: None
No
  • If-Unmodified-Since
  • 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
  • 类型: String
  • 默认值: None
No
  • If-Match
  • 如果传入期望的ETag和object的 ETag匹配,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。
  • 类型: String
  • 默认值: None
No
  • If-None-Match
  • 如果传入的ETag值和Object的ETag不匹配,则正常传输文件,并返回200 OK;否则返回304 Not Modified。
  • 类型: String
  • 默认值: None
No

请求元素(Request Elements):

响应头部(Response Headers):

名称 描述
  • x-amz-meta-*
  • 用户自定义变量,其中一个用处是:用户客户端加密时,秘钥对相关信息基于该字段返回。
  • 类型: String

响应元素(Response Elements):

示例:

请求URL

HEAD /mss-test-bucket/my-image.jpg HTTP/1.1
Host: mtmss.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e4d09bfafc-00556e666c
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain

PUT Object

上传文件。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • Cache-Control
  • 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • Content-Disposition
  • 指定该Object被下载时的名称;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • Content-Encoding
  • 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • Content-MD5
  • 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。
  • 类型: String
  • 默认值: None
No
  • x-amz-acl
  • canned ACL权限类型。
  • 类型: String
  • Valid Values: private 或 public-read
No
  • Expires
  • 过期时间(milliseconds);更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • x-amz-meta-
  • 用户自定义变量,其中一个用处是:用户客户端加密时,设置秘钥对相关信息。
  • 类型: String
  • 默认值: None
No

响应头部(Response Headers):

只返回常见返回头

响应元素(Response Elements):

示例:

请求URL

PUT /mss-test-bucket/my-image.jpg HTTP/1.1
Host: mtmss.com
Content-Type: text/plain
Content-Length: 11434
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e4d09bfafc-00556e668c
Date: Wed, 28 Oct 2009 22:32:00 GMT
ETag: "fba9dede5f27731c9771645a39863338"
Content-Length: 434234
Content-Type: text/plain

PUT Object - Copy

拷贝一个在MSS上已经存在的Object成另外一个Object,可以发送一个PUT请求给MSS,并在PUT请求头中添加元素“x-amz-copy-source”来指定拷贝源。 MSS会自动判断出这是一个Copy操作,并直接在服务器端执行该操作。如果拷贝成功,则返回新的Object信息给用户。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • x-amz-copy-source
  • 复制源地址。(必须有可读权限)
  • 类型: String
  • 默认值: None
Yes

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • CopyObjectResult
  • 响应元素的容器。
  • 类型: Container
  • 父节点: None
  • ETag
  • object的ETag信息。
  • 类型: String
  • 父节点: CopyObjectResult

示例:

请求URL

PUT /mss-test-bucket/my-image-copy.jpg HTTP/1.1
Host: mtmss.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
x-amz-copy-source: /mss-test-bucket/my-image.jpg
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e4d09bfafc-00556e6698
Date: Wed, 28 Oct 2009 22:32:00 GMT
Content-Length: 434234
Content-Type: text/plain
<CopyObjectResult>
    <ETag>"c99a74c555371a433d121f551d6c6398"</ETag>
</CopyObjectResult>

Initiate Multipart Upload

使用Multipart Upload传输数据前,必须先调用该接口来通知MSS初始化一个Multipart Upload事件。该接口会返回一个MSS服务器创建的全局唯一的UploadID,用于标识本次Multipart Upload事件。 用户可以根据这个ID来发起相关的操作,如中止Multipart Upload、查询Multipart Upload等。

请求参数(Request Parameters):

请求头部(Request Headers):

名称 描述 Required
  • Cache-Control
  • 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • Content-Disposition
  • 指定该Object被下载时的名称;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • Content-Encoding
  • 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • x-amz-acl
  • canned ACL权限类型。
  • 类型: String
  • Valid Values: private,public-read
No
  • Expires
  • 过期时间(milliseconds);更详细描述请参照RFC2616。
  • 类型: String
  • 默认值: None
No
  • x-amz-meta-
  • 用户自定义变量,其中一个用处是:用户客户端加密时,设置秘钥对相关信息。
  • 类型: String
  • 默认值: None
No

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • InitiateMultipartUploadResult
  • 保存Initiate Multipart Upload请求结果的容器。
  • 类型: Container
  • 子节点: Bucket, Key, UploadId
  • 父节点: None
  • Bucket
  • 初始化Multipart Upload事件所在的Bucket名称。
  • 类型: string
  • 父节点: InitiateMultipartUploadResult
  • Key
  • 初始化一个Multipart Upload事件的Object名称。
  • 类型: String
  • 父节点: InitiateMultipartUploadResult
  • UploadId
  • 唯一标示此次Multipart Upload事件的ID。
  • 类型: String
  • 父节点: InitiateMultipartUploadResult

示例:

请求URL

POST /example-bucket/example-object?uploads HTTP/1.1
Host: mtmss.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx14a81462f61b4647bb798-00556d48b7
Date: Mon, 1 Nov 2010 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>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
</InitiateMultipartUploadResult>

Upload Part

初始化一个Multipart Upload之后,可以根据指定的Object名和Upload ID来分块(Part)上传数据。每一个上传的Part都有一个标识它的号码(part number,范围是1~10,000)。 对于同一个Upload ID,该号码不但唯一标识这一块数据,也标识了这块数据在整个文件内的相对位置。如果你用同一个Part号码,上传了新的数据,那么MSS上已有的这个号码的Part数据将被覆盖。 除了最后一块Part以外,其他的Part最小为1MB;最后一块Part没有大小限制。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

PUT /mss-move-bucket/my-image.avi?
partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR
HTTP/1.1
Host: mtmss.com
Content-Type: text/plain
Content-Length: 10485760
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e5d09bfafc-00556e668c
Date: Wed, 28 Oct 2009 22:32:00 GMT
ETag: "fba9dede5f27731c9771645a39863338"
Content-Length: 0
Content-Type: text/plain

List Parts

List Parts命令可以列出指定Upload ID所属的所有已经上传成功Part。

请求参数(Request Parameters):

名称 描述 Required
  • uploadId
  • Multipart Upload事件的ID。
  • 类型: String
  • 默认值: None
Yes
  • max-parts
  • 规定在mss响应的最大Part数目。
  • 类型: String
  • 默认值: 1,000
No

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • ListPartsResult
  • 保存List Part请求结果的容器。
  • 子节点: Bucket, Key, UploadId, Initiator, Owner, StorageClass, PartNumberMarker, NextPartNumberMarker, MaxParts, IsTruncated, Part
  • 类型: Container
  • Bucket
  • Bucket名称。
  • 类型: String
  • 父节点: ListPartsResult
  • Key
  • Object名称。
  • 类型: String
  • 父节点: ListPartsResult
  • UploadId
  • Upload ID。
  • 类型: String
  • 父节点: ListPartsResult
  • Initiator
  • 发起分片上传的account信息容器。
  • 子节点: ID, DisplayName
  • 类型: Container
  • 父节点: ListPartsResult
  • ID
  • 发起分片上传的account ID 信息。
  • 类型: String
  • 父节点: Initiator
  • DisplayName
  • 发起分片上传的account name 信息与ID相同。
  • 类型: String
  • 父节点: Initiator
  • Owner
  • 与Initiator含义相同,内容也相同。
  • 子节点: ID, DisplayName
  • 类型: Container
  • 父节点: ListPartsResult
  • StorageClass
  • 存储object的类型,固定值 STANDARD
  • 类型: String
  • 父节点: ListPartsResult
  • PartNumberMarker
  • 本次List结果的Part Number起始位置。
  • 类型: Integer
  • 父节点: ListPartsResult
  • NextPartNumberMarker
  • 如果本次没有返回全部结果,响应请求中将包含NextPartNumberMarker元素,用于标明接下来请求的PartNumberMarker值。
  • 类型: Integer
  • 父节点: ListPartsResult
  • MaxParts
  • 返回请求中最大的Part数目。
  • 类型: Integer
  • 父节点: ListPartsResult
  • IsTruncated
  • 标明是否本次返回的List Part结果列表被截断。“true”表示本次没有返回全部结果;“false”表示本次已经返回了全部结果。
  • 类型: Boolean
  • 父节点: ListPartsResult
  • Part
  • 保存Part信息的容器。
  • 子节点: PartNumber, LastModified, ETag, Size
  • 类型: String
  • 父节点: ListPartsResult
  • PartNumber
  • 标示Part的数字。
  • 类型: Integer
  • 父节点: Part
  • LastModified
  • Part上传的时间。
  • 类型: Date
  • 父节点: Part
  • ETag
  • 已上传Part内容的ETag。
  • 类型: String
  • 父节点: Part
  • Size
  • 已上传Part大小。
  • 类型: Integer
  • 父节点: Part

示例:

请求URL

GET /mss-test-bucket-16-covertest/mss-test-object-1433314915942?uploadId=mss-test-bucket-16-covertest%2F.slo%2Fmss-test-object-1433314915942 HTTP/1.1
Host: mtmss.com
Content-Type: text/plain
Content-Length: 10485760
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 200 OK
X-Trans-Id: tx20af64a5df6e5d09bfafc-00556e668c
Date: Wed, 28 Oct 2009 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>mss-test-bucket-16-covertest</Bucket>
    <Key>mss-test-object-1433314915942</Key>
    <UploadId>mss-test-bucket-16-covertest/.slo/mss-test-object-1433314915942</UploadId>
    <Initiator>
        <ID>mss_ff28de36811340e3a613f2f378d1753b</ID>
        <DisplayName>mss_ff28de36811340e3a613f2f378d1753b</DisplayName>
    </Initiator>
    <Owner>
        <ID>mss_ff28de36811340e3a613f2f378d1753b</ID>
        <DisplayName>mss_ff28de36811340e3a613f2f378d1753b</DisplayName>
    </Owner>
    <StorageClass>STANDARD</StorageClass>
    <IsTruncated>false</IsTruncated>
    <MaxParts>1000</MaxParts>
    <PartNumberMarker>1</PartNumberMarker>
    <Part>
        <PartNumber>1</PartNumber>
        <ETag>78c347078c10335b32ec5b417b2c52e4</ETag>
        <LastModified>2015-06-03T07:01:53.148980+00:00</LastModified>
        <Size>10485760</Size>
    </Part>
    <Part>
        <PartNumber>2</PartNumber>
        <ETag>e9eb772c226db5629a5b927ef6d3c3c6</ETag>
        <LastModified>2015-06-03T07:01:56.315310+00:00</LastModified>
        <Size>10485760</Size>
    </Part>
    <Part>
        <PartNumber>3</PartNumber>
        <ETag>2ed3f71937bdec5d528dd8eeb68b447b</ETag>
        <LastModified>2015-06-03T07:01:59.684700+00:00</LastModified>
        <Size>2668250</Size>
    </Part>
</ListPartsResult>

CompleteMultipartUpload

在所有数据Part都上传完成后,必须调用Complete Multipart Upload API来完成整个文件的Multipart Upload。在执行该操作时,用户必须提供所有有效的数据Part的列表(包括part号码和ETAG); MSS收到用户提交的Part列表后,会逐一验证每个数据Part的有效性。当所有的数据Part验证通过后,MSS将把这些数据part组合成一个完整的Object。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

名称 描述 Required
  • CompleteMultipartUpload
  • 保存Complete Multipart Upload请求内容的容器。
  • 父节点: None
  • 类型: Container
  • 子节点: One or more Part elements
Yes
  • Part
  • 保存已经上传Part信息的容器。
  • 父节点: CompleteMultipartUpload
  • 类型: Container
  • 子节点: PartNumber, ETag
Yes
  • PartNumber
  • Part数目。
  • 父节点: Part
  • 类型: Integer
Yes
  • ETag
  • Part成功上传后,OSS返回的ETag值。
  • 父节点: Part
  • 类型: String
Yes

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

名称 描述
  • CompleteMultipartUploadResult
  • 保存Complete Multipart Upload请求结果的容器。
  • 类型: Container
  • 子节点: Location, Bucket, Key, ETag
  • 父节点: None
  • Location
  • 新创建Object的URL。
  • 类型: URI
  • 父节点: CompleteMultipartUploadResult
  • Bucket
  • Bucket名称。
  • 类型: String
  • 父节点: CompleteMultipartUploadResult
  • Key
  • 新创建Object的名字。
  • 类型: String
  • 父节点: CompleteMultipartUploadResult
  • ETag
  • ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。Complete Multipart Upload请求创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。
  • 类型: String
  • 父节点: CompleteMultipartUploadResult

示例:

请求URL

POST /mss-test-bucket-16-covertest/mss-test-object-1433317402027?uploadId=mss-test-bucket-16-covertest%2F.slo%2Fmss-test-object-1433317402027 HTTP/1.1
Host: mtmss.com
Content-Type: text/plain
Content-Length:  303
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: authorization string
<CompleteMultipartUpload>
    <Part>
        <PartNumber>1</PartNumber>
        <ETag>78c347078c10335b32ec5b417b2c52e4</ETag>
    </Part>
    <Part>
        <PartNumber>2</PartNumber>
        <ETag>e9eb772c226db5629a5b927ef6d3c3c6</ETag>
    </Part>
    <Part>
        <PartNumber>3</PartNumber>
        <ETag>2ed3f71937bdec5d528dd8eeb68b447b</ETag>
    </Part>
</CompleteMultipartUpload>

xml响应

HTTP/1.1 200 OK
Content-Length: 360
Content-Type: application/xml
X-Trans-Id: tx2e307c56b72f44a98b420-00556eb01e
Date: Wed, 03 Jun 2015 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>mss-test-bucket-16-covertest/mss-test-object-1433317402027</Location>
    <Bucket>mss-test-bucket-16-covertest</Bucket>
    <Key>mss-test-object-1433317402027</Key>
    <ETag>"e9bce03b05f69743c270c1baef4f780e"</ETag>
</CompleteMultipartUploadResult>

AbortMultipartUpload

该接口可以根据用户提供的Upload ID中止其对应的Multipart Upload事件。当一个Multipart Upload事件被中止后,就不能再使用这个Upload ID做任何操作,已经上传的Part数据也会被删除。

请求参数(Request Parameters):

请求头部(Request Headers):

只需包含常用请求头。

请求元素(Request Elements):

响应头部(Response Headers):

只返回常见返回头。

响应元素(Response Elements):

示例:

请求URL

DELETE /mss-test-bucket-16-covertest/mss-test-object-1433318500003?uploadId=mss-test-bucket-16-covertest%2F.slo%2Fmss-test-object-1433318500003 HTTP/1.1
Host: mtmss.com
Date: Wed, 28 Oct 2014 22:32:00 GMT
Authorization: authorization string

xml响应

HTTP/1.1 204 No Content
X-Trans-Id: txc6a47dcd1c7f4d4d9111c-00556eb466
Date:  Mon, 1 Nov 2014 20:34:56 GMT
Content-Length: 0
Connection: keep-alive

Bucket域名绑定

Bucket源站域名

MSS会给每个创建的Bucket生成一个默认域名,用户可以通过BucketDomainName/ObjectName的方式拼接生成待访问的Object的URL。 例如对于用户A,创建了一个photos的Bucket,在控制台获取其默认域名photos.mss_mt_tenant_29006336.mtmss.com,同时在该Bucket下创建一个名为puppy.jpg的Object。 则该Object对应的URL为:

http://photos.mss_mt_tenant_29006336.mtmss.com/puppy.jpg

CDN加速域名

MSS会给每个创建的Bucket生成一个默认CDN加速域名,它与Bucket的默认源站域名的差别在于根域名不一样,需要将原有的mtmss.com根域名替换为mtmssdn.com。 例如对于上例中的puppy.jpg Object 其对应的Object CDN加速URL为:

http://photos.mss_mt_tenant_29006336.mtmssdn.com/puppy.jpg

自定义CDN加速域名

用户除了可以使用Bucket默认CND加速域名外,也可以使用自定义域名。自定义域名必须先经过MSS这边审核,审核通过后才能使用。 如果用户的Bucket采用自定义域名,则用户可以通过SelfDefineDomainName/ObjectName的方式拼接生成待访问的Object的URL。 例如对于用户B,创建一个movies的Bucket,其绑定的自定义域名为moviesite.com, 里面包含一个time.avi的Object。 则该Object对应的URL为:

http://moviesite.com/time.avi

预签名URL访问加速

MSS客户端生成的预签名Object URL的根域名为mtmss.com,例如对上例中puppy.jpg,其预签名URL格式如下:

http://mtmss.com/movies/puppy.jpg?AWSAccessKeyId=a245d11009644262b9b3a74e1d4e8500&Expires=1435222561&Signature=v5zekrYCTyhaSkLQNz2JGhaP4S8%3D

如果用户希望对该Object 进行CDN加速,可以将根域名mtmss.com替换为mtmssdn.com,其预签名URL格式如下:

http://mtmssdn.com/movies/puppy.jpg?AWSAccessKeyId=a245d11009644262b9b3a74e1d4e8500&Expires=1435222561&Signature=v5zekrYCTyhaSkLQNz2JGhaP4S8%3D