对象存储API文档
概述
本文主要为对象存储的API,包括操作,请求和响应的数据结构,错误码等信息进行了详细的描述和解释。 S3协议是采用REST(Representational State Transfer)接口,REST接口是承载在HTTP协议上的接口,针对互联网的应用而设计开发,风格更加简洁。
调用说明
提供了REST(Representational State Transfer)风格API,支持您通过HTTP/ HTTPS请求调用。调用方法请参见调用API。
调用API
1.1.1 请求URI
根据桶和对象及带的资源参数来确定具体的URI,当需要进行资源操作时,可以使 用这个URI地址。 URI的一般格式为: protocol:// endpoint[:port] [/bucket.] [/object][?param]
参数 | 描述 | 是否可选 |
---|---|---|
protocol | 请求使用的协议类型,如HTTP、HTTPs。HTTPs表示通过安全的HTTPs访问该资源,对象存储服务支持HTTP,HTTPs两种传输协议。 | 必选 |
Endpoint | 存放资源的服务器的对象网关地址 | 必选 |
Bucket | 请求使用的桶资源路径,在整个系统中唯一标识一个桶。 | 可选 |
port | 请求使用的协议类型,如HTTP、HTTPs。HTTPs表示通过安全的HTTPs访问该资源,对象存储服务支持HTTP,HTTPs两种传输协议。 | 必选 |
object | 请求使用的对象。 | 可选 |
param | 请求使用的桶和对象的具体资源。 | 可选 |
1.1.2 请求方法
HTTP方法
方法 | 说明 |
---|---|
GET | GET 请求服务器返回指定资源,如获取桶列表、下载对象等。 |
PUT | PUT 请求服务器更新指定资源,如创建桶、上传对象等。 |
POST | POST 请求服务器新增资源或执行特殊操作,如初始化上传段任务、合并段 |
DELETE | DELETE 请求服务器删除指定资源,如删除对象等。 |
HEAD | HEAD 请求服务器返回指定资源的概要,如获取对象元数据等。 |
OPTIONS | OPTIONS 请求服务器检查是否具有某个资源的操作权限。 |
1.1.3 消息体(可选)
请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-type 对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必 须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消 息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根 据具体接口而定。
1.1.4 发起请求
共有两种方式可以基于已构建好的请求消息发起请求,分别为:
- CURL CURL是一个命令行工具,用来执行各种URL操作和信息传输。CURL充当的是 HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。CURL适用于接口 调试。
- 编码 通过编码调用接口,组装请求消息,并发送处理请求消息。可以使用SDK或自行 编码实现。
关于Service操作
1.2 关于Bucket的操作
API | 描述 |
---|---|
Create Bucket | 创建桶 |
Head Bucket | 获取桶的元数据信息 |
Delete Bucket | 删除桶 |
ListMultiPartUploads | 列举桶下所有分片上传任务 |
List Objects | 获得Bucket中所有Object的信息 |
List Objects V2 | 获得Bucket中所有Object的信息(list-type=2) |
1.3 关于Object的操作
API | 描述 |
---|---|
Put Object | 上传object |
Get Object | 下载Object |
Head Object | 获取对象的元数据信息 |
Delete Object | 删除Object |
Delete Objects | 批量删除Object |
Initiate Multipart Upload | 初始化多段上传任务 |
Upload Part | 上传对象的多段数据 |
List Parts | 列举对象的多段分片 |
Complete Multipart Uploads | 完成多段任务和组装原来上传的分片 |
Delete Objects | 删除同一个存储空间中的多个文件 |
Upload Part-Copy | 一个已存在的Object中拷贝数据来上传一个Part |
Abort Multipart Upload | 取消对象的多段上传任务 |
1.4 用户签名验证(Authentication)
对象存储通过使用AccessKeyId/AccessKeySecret进行HMAC算法来验证某个请求的发送者身份。AccessKeyId是用户ID,AccessKeySecret是用户的密码,同时也用于加密签名字符串和用来验证签名字符串,其中AccessKeySecret需要保密,只有用户和对象存储系统知道。 当用户想以个人身份向对象存储发送请求时,需要首先将发送的请求按照对象存储指定的格式生成签名字符串;然后使用AccessKeySecret对签名字符串进行加密产生验证码。对象存储网关收到请求以后,会通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码,如果计算出来的验证码和提供的一样即认为该请求是有效的;否则,对象存储服务将拒绝处理这次请求,并返回HTTP 403错误。
1.5 在Header中包含签名
用户可以在HTTP请求中增加Authorization(授权)的Header来包含签名(Signature)信息,表明这个消息已被授权。 以下为鉴权请求头示例:
Authorization: AWS4-HMAC-SHA256
Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,
SignedHeaders=host;range;x-amz-date,
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
名称 | 描述 |
---|---|
AWS4-HMAC-SHA256 | 用来计算签名的算法,对于AWS 鉴权 V4需要提供的有效值 |
Credential | Access key ID和其他信息,包括时间,域,服务器,用来计算签名 格式:your-access-key-id/date/aws-region/aws-service/aws4_request date值必须为YYYYMMDD格式 aws-service值为s3 endpoint |
SignedHeaders | 表示为64位小写十六进制的256位签名字符。例如:fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024 |
任务1:创建规范请求 以下概述了创建规范请求的过程。 以下是Amazon S3用于计算签名的规范请求格式。为了使签名匹配,必须使用以下格式创建规范请求:
<HTTPMethod>\n
<CanonicalURI>\n
<CanonicalQueryString>\n
<CanonicalHeaders>\n
<SignedHeaders>\n
<HashedPayload>
•HTTPMethod是HTTP方法之一,例如GET,PUT,HEAD和DELETE。 •CanonicalURI是URI的绝对路径部分,编码版本以“ /”开头,后跟域名,以字符串为末尾,或者问号字符('?')结尾。 (以下示例中的URI / examplebucket / myphoto.jpg是绝对路径,并且没有在绝对路径中对“ /”进行编码):
http://radosgw.h3c.com /examplebucket/myphoto.jpg
• CanonicalQueryString指定URI编码的查询字符串参数。您分别用URI编码名称和值。您还必须按关键字名称按字母顺序对规范查询字符串中的参数进行排序。排序在编码后发生。以下URI示例中的查询字符串为prefix = somePrefix&marker = someMarker&max-keys = 20:
http://s3.amazonaws.com/examplebucket?prefix=somePrefix&marker=someMarker&max-keys=20
规范查询字符串如下
UriEncode("marker")+"="+UriEncode("someMarker")+"&"+
UriEncode("max-keys")+"="+UriEncode("20") + "&" +
UriEncode("prefix")+"="+UriEncode("somePrefix")
当请求以子资源为目标时,相应的查询参数值将为空字符串(“”)。例如,以下URI标识examplebucket存储桶上的ACL子资源:
http://s3.amazonaws.com/examplebucket?acl
在这种情况下,CanonicalQueryString如下:
UriEncode("acl") + "=" + ""
如果URI不包含“?”,则请求中没有查询字符串,并且您将规范查询字符串设置为空字符串(“”)。您仍然需要包括“ \ n”。 • CanonicalHeaders是请求标头及其值的列表。各个标题名称和值对之间用换行符(“ \ n”)分隔。标头名称必须为小写。您必须按字母顺序对标题名称进行排序以构造字符串,如以下示例所示:
Lowercase(<HeaderName1>)+":"+Trim(<value>)+"\n"
Lowercase(<HeaderName2>)+":"+Trim(<value>)+"\n" ...
Lowercase(<HeaderNameN>)+":"+Trim(<value>)+"\n"
CanonicalHeaders列表必须包含以下内容: •HTTP主机头。 •如果请求中存在Content-Type标头,则必须将其添加到CanonicalHeaders列表中。 •您还必须添加包含在请求中的所有x-amz- *标头。例如,如果您使用临时安全凭证,则需要在请求中包括x-amz-security-token。您必须将此标题添加到CanonicalHeaders列表中。
注意:所有AWS Signature版本4请求都需要x-amz-content-sha256标头。它提供了请求有效负载的哈希值。如果没有有效负载,则必须提供一个空字符串的哈希值。 以下是CanonicalHeaders字符串示例。标头名称以小写字母排序
host:s3.amazonaws.com
x-amz-contentsha256:e3b0c44298fc1c149afbf4c8996fb92427785
2b855 x-amz-date:20130708T220855Z
•SignedHeaders是按字母顺序排序的,以分号分隔的小写请求标头名称列表。列表中的请求标头与您在CanonicalHeaders字符串中包含的标头相同。例如,对于前面的示例,SignedHeaders的值如下
host;x-amz-content-sha256;x-amz-date
•HashedPayload是请求有效负载的SHA256哈希值的十六进制值。
Hex(SHA256Hash(<payload>)
如果请求中没有有效负载,则按以下方式计算空字符串的哈希值:
Hex(SHA256Hash(""))
哈希返回以下值:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
任务2:创建要签名的字符串 要签名的字符串是以下字符串的串联:
"AWS4-HMAC-SHA256" + "\n" +
timeStampISO8601Format + "\n" + <Scope> + "\n" +
Hex(SHA256Hash(<CanonicalRequest>))
常量字符串AWS4-HMAC-SHA256指定您正在使用的哈希算法HMAC-SHA256。 timeStamp是ISO 8601格式的当前UTC时间(例如20130524T000000Z)。 Scope将结果签名绑定到特定日期,AWS区域和服务。因此,您生成的签名将仅在特定区域和特定服务中起作用。签名在指定日期之后的七天内有效。
date.Format(<YYYYMMDD>) + "/" + <region> + "/" + <service> + "/aws4_request"
对于Amazon S3,服务字符串为s3。有关区域字符串的列表,请参阅AWS General Reference中的“区域和端点”。该表中的region列提供了有效区域字符串的列表。 以下范围将结果签名限制为us-east-1地区和Amazon S3。
20130606/us-east-1/s3/aws4_request
注意: 范围必须使用与计算签名密钥相同的日期,如以下部分所述。 任务3:计算签名 在AWS Signature版本4中,首先使用范围仅限于特定区域和服务的签名密钥,而不是使用您的AWS访问密钥对请求进行签名
DateKey = HMAC-SHA256("AWS4"+"<SecretAccessKey>", "<YYYYMMDD>")
DateRegionKey = HMAC-SHA256(<DateKey>, "<aws-region>")
DateRegionServiceKey = HMAC-SHA256(<DateRegionKey>, "<aws-service>")
SigningKey = HMAC-SHA256(<DateRegionServiceKey>, "aws4_request")
最终的签名是要签名的字符串的HMAC-SHA256哈希,使用签名密钥作为密钥。
HMAC-SHA256(SigningKey, StringToSign)
1.5.1 在 url加入签名
用户还可以在URL中加入签名信息,这样用户就可以把该URL转给第三方,实现授权访问。 示例
http://radosgw.h3c.com/bucketName/objectName? AWSAccessKeyId=accessKeyId&Expires=expireTime&Signature=signature
在URL中实现签名,必须至少包含Signature,Expires,AccessKeyId三个参数:
- Expires:这个参数的值是一个UNIX时间(自UTC时间1970年1月1号开始的秒数),用于标识该URL的超时时间。如果ONEStor对象存储接收到这个URL请求的时候晚于签名中包含的Expires参数时,则返回请求超时的错误码。例如:当前时间是1485315392,希望创建一个60秒后自动失效的URL,则可以设置Expires时间为1485315452。
- AccesskeyId:是用户名,具有唯一性。
- Signature:表示签名信息,signature是通过HMAC-SHA1 hash函数计算。
1.5.2 Signature的计算方法
所有ONEStor对象存储支持的请求和各种Header参数。在URL中进行签名的算法和在Header中包含签名的算法基本一样。算法如下(Python代码示例):
Signature = base64(hmac-sha1(AccessKeySecret,
Method + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ EXPIRES + "\n"
+ CanonicalizedHeaders
+ CanonicalizedResource))
区别如下:
- 只需将date改为expires。
- Method表示请求方法目前为get。
- 请求先验证请求时间是否晚于Expires时间,然后再验证签名。 python示例代码 URL中添加签名的python示例代码:
import base64
import hmac
import sha
import urllib
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"GET\n\n\n1141889120\n/ONEStor-example/ONEStor-api.pdf",
sha)
urllib.quote_plus (base64.encodestring(h.digest()).strip())
1.6 错误返回码
下面表格包括了所有常见的接口错误状态码及错误码:
错误码 | 描述 | HTTP状态码 |
---|---|---|
AccessDenied | 拒绝访问 | 403 |
BucketAlreadyExists | Bucket已经存在 | 409 |
BucketNotEmpty | Bucket不为空 | 409 |
EntityTooLarge | 实体过大 | 400 |
EntityTooSmall | 实体过小 | 400 |
FileGroupTooLarge | 文件组过大 | 400 |
InvalidLinkName | Object Link与指向的Object同名 | 400 |
LinkPartNotExist | Object Link中Object个数过多 | 400 |
FilePartInterity | 文件Part已改变 | 400 |
FilePartNotExist | 文件Part不存在 | 400 |
FilePartStale | 文件Part过时 | 400 |
InvalidArgument | 参数格式错误 | 400 |
InvalidAccessKeyId | AccessKeyId不存在 | 403 |
InvalidBucketName | 无效的Bucket名字 | 400 |
InvalidDigest | 无效的摘要 | 400 |
InvalidObjectName | 无效的Object名字 | 400 |
InvalidPart | 无效的Part | 400 |
InvalidPartOrder | 无效的Part顺序 | 400 |
InvalidPolicyDocument | 无效的Policy文档 | 400 |
InternalError | 对象存储服务内部发生错误 | 500 |
MalformedXML | XML格式非法 | 400 |
MalformedPOSTRequest | Post请求的body格式非法 | 400 |
MaxPOSTPreDataLengthExceededError | Post请求上传文件内容之外的body过大 | 400 |
MethodNotAllowed | 不支持的方法 | 405 |
MissingArgument | 缺少参数 | 411 |
MissingContentLength | 缺少内容长度 | 411 |
NoSuchBucket | Bucket不存在 | 404 |
NoSuchKey | 文件不存在 | 404 |
NoSuchUpload | Multipart Upload ID不存在 | 404 |
NotImplemented | 无法处理的方法 | 400 |
PreconditionFailed | 预处理错误 | 412 |
RequestTimeout | 请求超时 | 400 |
RequestIsNotMultiPartContent | Post请求content-type非法 | 400 |
SignatureNotMatch | 签名错误 | 403 |
API请求详细说明
1.createbucket
【请求URL】
PUT /BucketName HTTP/1.1
> Host: oss.bobcloud.com
> x-amz-acl:Permission
> Date:GMT Date
> Authorization: SignatureValue
【请求元素】
- 该操作无输入参数。 【请求示例】
PUT /BucketName HTTP/1.1
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 01:36:44 +0000
> Authorization: authorization string
【输出参数】
- 该操作无输出参数返回。 状态返回码
- 创建成功返回200 OK,创建失败报409错误。 【返回示例】
HTTP/1.1 200 OK
< x-amz-request-id: tx0000000000000000001b9-0056a03a76-1f223-default
< Content-Length: 0
< Date: Thu, 21 Jan 2016 01:55:02 GMT
2.Delete Bucket
【接口描述】 该接口用于删除指定的桶,但是在删除桶前必须删除所有桶内的对象,包括对象的多版本和删除Marker数据后才能执行此操作. 【请求URL】
DELETE /test2 HTTP/1.1
> Host:oss.bobcloud.com
> Date::GMT Date
> Authorization:SignatureValue
【请求头域】
- 参考公共响应头。 【请求元素】
- 该操作无请求元素。 【请求示例】
DELETE /BucketName HTTP/1.1
> Host:oss.bobcloud.com
> Date:Thu, 21 Jan 2016 03:40:59 +0000
> Authorization:AWS abc:ksZpUCyGHYBTjD8aIuYDOLAJEdQ=
【响应头域】
- 参考公共响应头。 【输出参数】
- 该操作无输出参数。 状态返回码
- 参考3.3错误返回码章节。如果Bucket不存在,返回404 Not Found错误,错误码:NoSuchBucket。 只有Bucket的拥有者才能删除这个Bucket。如果试图删除一个没有对应权限的Bucket,返回403Forbidden错误,错误码:AccessDenied。 【返回示例】
HTTP/1.1 204 No Content
< x-amz-request-id:tx00000000000000000024b-0056a0534b-1f223-default
< Content-Length:0
< Date:Thu, 21 Jan 2016 03:40:59 GMT
3.List Multipart Uploads
【接口描述】 该接口List处理中的多段上传任务,包括已经通过初始化请求申请上传,正在进行中和未取消的任务,该接口每次最多返回1000个多段上传的分片,该值是默认值,可以通过max-Uploads参数修改,如果1000片之外还有其他分片,返回的输出参数IsTruncated值为true,详细参数下面的输出参数会有详细说明。 【请求URL】
GET /BucketName?uploads HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Authorization: authorization string
【请求头域】
- 参考公共响应头。
名称 | 类型 | 描述 | 是否必选 |
---|---|---|---|
delimiter | 字符串 | 含义:分隔符,与prefix配合使用,请求会返回以prefix开头,delimiter结束的所有数据 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
【请求元素】
名称 | 类型 | 描述 | 是否必选 |
---|---|---|---|
delimiter | 字符串 | 分隔符,与prefix配合使用,请求会返回以prefix开头,delimiter结束的所有数据 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
encoding-type | 字符串 | 含义:S3请求指定的编码格式,缺省:None 合法值:URL 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
max-uploads | 整数 | 含义:一次响应返回的多段上传分片数 默认值:1000 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
key-marker | 字符串 | 含义:与upload-id-marker配合使用,该参数指定list开始的key值 默认值:无 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
Prefix | 字符串 | 含义:列举进行中的多段上传分片,可以指定prefix来区分不同的分组。父节点:ListBucketResult 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
upload-id-marker | 字符串 | 含义:和Key-marker配合使用,该参数指定list开始的key值 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
【请求示例】
GET /BucketName?uploads&max-uploads=3 HTTP/1.1
Host: oss.bobcloud.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Authorization: authorization string
【响应头域】
- 参考公共响应头。 【输出参数】
名称 | 类型 | 描述 |
---|---|---|
ListMultipartUploadsResult | 容器 | 含义:响应的容器 子节点:所有容器内的节点 父节点:无 有效值:Null 长度:Null 范围:Null 限制:Null |
Bucket | 字符串 | 含义:初始化多段上传的桶 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
Keymarker | 字符串 | 含义:List开始的Key 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
UploadIdMaker | 字符串 | 含义:List开始的Upload ID 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
NextKeyMarker | 字符串 | 含义:Truncated List操作时,该值赋值给key-marker进行下一次操作 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
nextUploadIdMaker | 字符串 | 含义:Truncated List操作时,该值赋值给upload-id-marker进行下一次操作 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
encoding-type | 字符串 | 含义:指定对象存储响应的编码格式 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
MaxUpload | 正整数 | 含义:能在响应中包含的最大分片数 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
Upload | 容器 | 含义:指定多段任务的容器,包含了0到多个Upload元素 子节点:Key,UploadId,InitiatorOwner,Initiated 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
Key | 字符串 | 含义:初始化多段上传的对象名 父节点:Upload 有效值:Null 长度:Null 范围:Null 限制:Null |
uploadId | 字符串 | 多段上传的ID 父节点:Upload 有效值:Null 长度:Null 范围:Null 限制:Null |
Initiator | 容器 | 含义:初始化多段任务用户ID和displayName的容器 子节点:ID,displayName 父节点:Upload 有效值:Null 长度:Null 范围:Null 限制:Null |
ID | 字符串 | 含义:初始化多段任务的User ID 父节点:Initiator,Owner 有效值:Null 长度:Null 范围:Null 限制:Null |
Displayname | 字符串 | 含义:初始化多段任务的DisplayName 父节点:Initiator,Owner 有效值:Null 长度:Null 范围:Null 限制:Null |
Owner | 容器 | 含义:对象Owner的容器 子节点:ID,displayName 父节点:ListPartsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
Initiated | 时间 | 含义:Upload被初始化的日期和时间 父节点:Upload 有效值:Null 长度:Null 范围:Null 限制:Null |
ListMultipartUploadsResult.Prefix | 字符串 | 请求中指定prefix,容器结果中只包含prefix开头的key 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
Delimiter | 字符串 | 含义:指定delimiter的请求的容器,如果请求中没有指定delimiter,输出参数中也不会体现 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
CommonPrefixes | 容器 | 含义:如果在请求中指定delimiter,返回的结果中不同key prefix包含了delimiter在CommonPrefixes元素中,这不同耳朵key prefix返回在Prefix子节点中 父节点:ListMultipartUploadsResult 有效值:Null 长度:Null 范围:Null 限制:Null |
CommonPrefixes.Prefix | 字符串 | 含义:如果请求不包含Prefix参数,响应中不会返回Key的子字符串。如果请求中包括Prefix参数,响应中会返回Key的字符串,这些子字符串是从prefix到delimiter结束。父节点:CommonPrefixes 有效值:Null 长度:Null 范围:Null 限制:Null |
状态返回码
- 参考错误返回码。 【返回示例】
HTTP/1.1 200 OK
x-amz-id-2: Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 1330
Connection: keep-alive
<?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult>
<Bucket>bucket</Bucket>
<KeyMarker></KeyMarker>
<UploadIdMarker></UploadIdMarker>
<NextKeyMarker>my-movie.m2ts</NextKeyMarker>
<NextUploadIdMarker>YW55IGlkZWEgd2h5IGVsdmluZydzIHVwbG9hZCBmYWlsZWQ</NextUploadIdMarker>
<MaxUploads>3</MaxUploads>
<IsTruncated>true</IsTruncated>
<Upload>
<Key>my-divisor</Key>
<UploadId>XMgbGlrZSBlbHZpbmcncyBub3QgaGF2aW5nIG11Y2ggbHVjaw</UploadId>
<Initiator>
<ID>arn:aws:iam::111122223333:user/user1-11111a31-17b5-4fb7-9df5-b111111f13de</ID>
<DisplayName>user1-11111a31-17b5-4fb7-9df5-b111111f13de</DisplayName>
</Initiator>
<Owner>
<ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
<DisplayName>OwnerDisplayName</DisplayName>
</Owner>
<Initiated>2010-11-10T20:48:33.000Z</Initiated>
</Upload>
<Upload>
<Key>my-movie.m2ts</Key>
<UploadId>VXBsb2FkIElEIGZvciBlbHZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
<Initiator>
<ID>b1d16700c70b0b05597d7acd6a3f92be</ID>
<DisplayName>InitiatorDisplayName</DisplayName>
</Initiator>
<Owner>
<ID>b1d16700c70b0b05597d7acd6a3f92be</ID>
<DisplayName>OwnerDisplayName</DisplayName>
</Owner>
<Initiated>2010-11-10T20:48:33.000Z</Initiated>
</Upload>
<Upload>
<Key>my-movie.m2ts</Key>
<UploadId>YW55IGlkZWEgd2h5IGVsdmluZydzIHVwbG9hZCBmYWlsZWQ</UploadId>
<Initiator>
<ID>arn:aws:iam::444455556666:user/user1-22222a31-17b5-4fb7-9df5-b222222f13de</ID>
<DisplayName>user1-22222a31-17b5-4fb7-9df5-b222222f13de</DisplayName>
</Initiator>
<Owner>
<ID>b1d16700c70b0b05597d7acd6a3f92be</ID>
<DisplayName>OwnerDisplayName</DisplayName>
</Owner>
<Initiated>2010-11-10T20:49:33.000Z</Initiated>
</Upload>
</ListMultipartUploadsResult>
4.Head bucket 【接口描述】 Head bucket只返回某个bucket的meta信息。不列出bucket下的对象信息。可以用来判断用户是否对该bucket有访问权限,如果没有权限将返回403 Forbidden 【请求URL 】
HEAD /bucketName HTTP/1.1
> Host:oss.bobcloud.com
> Date:GMT Date
> Authorization:V4SignatureValue
【请求头域】
- 参考公共响应头。 【请求元素】
- 该操作无请求元素。
【请求示例】
HEAD /BUCKET HTTP/1.1
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 02:50:00 +0000
> Authorization: AWS abc:ic7tMfvtHVHFtpcYm4pSP1RLGXE=
【响应头域】
- 参考公共响应头。 【输出参数】
- 该操作无输出参数。 状态返回码
- 参考3.3错误返回码章节。
【返回示例】
HTTP/1.1 200 OK
x-amz-request-id: tx000000000000000000238-0056a04758-1f223-default
Content-Length: 0
Date: Thu, 21 Jan 2016 02:50:00 GMT
5.Put Object
【接口描述】 该接口实现了向桶内添加对象,执行该操作必须拥有WRITE权限,对象不会只接收部分数据,如果应用层收到了响应,表明对象存储已经处理了对象的所有数据。 对象存储是分布式的存储系统,应用层同时收到多个写请求操作同一个对象,对象存储会同时处理所有的请求,后处理的请求会覆盖之前完成的数据,数据只保留最后完成的请求,对象存储不会提供对象锁来处理并发请求。 另外,为确保对象数据在网络传输中的完整性,请求header中可以增加Content-MD5,对象存储会检查上传的数据MD5值与Header中提供的Content-MD5是否一致,不一致则返回错误,同时应用端也可以计算上传数据的MD5值和对象存储返回Etag值,不一致则报错。 关于对象Key值 key值的大小有限制,使用utf-8字符格式,最大256个字节。 【请求URL】
PUT /bucketName/objName HTTP/1.1
> Host: oss.bobcloud.com
> Date: Tue, 19 Jan 2016 06:48:34
> Authorization: SignatureValue
> Content-Length: content-length
【请求头域】
- 请参考公共头域。
【请求元素】
名称 | 类型 | 描述 | 是否必填 |
---|---|---|---|
Content-Length | 字符串 | 含义:对象的大小,单位bytes。有效值:Null 长度:Null 范围:Null 限制:Null | 是 |
Content-MD5 | 字符串 | 含义:根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,建议用户使用该请求头进行端到端检查。 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
【请求示例】
PUT /BucketName/test.txt HTTP/1.1
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 06:35:56 +0000
> Authorization: V4SignatureValue
> Cache-Control: no-cache
> Content-Length: 1143
【响应头域】
- 参考公共响应头。
- 响应BODY内容是透传第三方服务器的响应内容 状态返回码 参考错误返回码
6.get object
【接口描述】 用于获取某个Object,此操作要求用户对该Object有读权限。 【请求URL】
GET /BucketName/ ObjectName HTTP/1.1
> Host: oss.bobcloud.com
> Date: GMT Date
> Authorization: SignatureValue
【请求头域】 【请求元素】
- 该操作无请求元素。 【请求示例】
GET /BucketName/test.txt HTTP/1.1
> User-Agent: CURL/7.35.0
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 07:13:03 +0000
> Authorization: V4SignatureValue
> Range: bytes=0-100
【输出参数】
- 该操作无输出参数。 状态返回码
- 参考错误返回码。 【返回示例】
HTTP/1.1 200 OK
< Content-Range: bytes 0-100/1143
< Content-Length: 101
< Accept-Ranges: bytes
< Last-Modified: Thu, 21 Jan 2016 07:08:42 GMT
< ETag: "2f1fabaa1a37488531ac2355e4cf75ae"
< x-amz-request-id: tx00000000000000000025b-0056a084ff-1f223-default
< Content-type: binary/octet-stream
< Date: Thu, 21 Jan 2016 07:13:03 GMT
7.Head Object
【接口描述】 Head Object只返回某个Object的meta信息,不返回对象内容,这个操作用于用户只想了解下对象的元数据,使用该接口需要有READ的访问权限。
【请求URL】
HEAD /bucketName/objName HTTP/1.1
> Host: oss.bobcloud.com
> Date: Tue, 19 Jan 2016 07:16:47 +0000
> Authorization: SignatureValue
【请求元素】
- 该操作无请求元素。
【请求示例1】
HEAD /BucketName/test.txt HTTP/1.1
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 08:46:51 +0000
> Authorization: AWS abc:1lWXG2tw0VhmKXxaIqOGJeUzdm4=
8.Initiate Multipart Upload
【接口描述】 该操作初始化多段上传和返回upload ID, upload ID用于整个上传任务,包括upload part,list parts,abort multipart upload和complete multipart upload所有接口的请求操作中。 【请求URL】
POST / BucketName/ObjectName?uploads HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Authorization: authorization string
【请求头域】
名称 | 类型 | 描述 | 是否必选 |
---|---|---|---|
Cache-Control | 字符串 | 含义:指定该Object被下载时的网页的缓存行为 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
Content-Disposition | 字符串 | 含义:指定该Object被下载时的名称 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
Content-Length | 字符串 | 含义:对象的大小,单位bytes。 有效值:Null 长度:Null 范围:Null 限制:Null | 是 |
Content-Encoding | 字符串 | 含义:指定该Object被下载时的内容编码格式 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
Content-MD5 | 字符串 | 含义:根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,建议用户使用该请求头进行端到端检查。有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
【请求示例】
POST /Bucketname/Object?uploads HTTP/1.1
Host: oss.bobcloud.com
Date: date
Authorization: authorization string
【响应头域】
- 参考公共响应头。
名称 | 描述 |
---|---|
InitiateMultipartUploadResult | 含义:响应的容器。类型:容器 长度:Null 范围: 子节点:Bucket, Key, UplaodId 限制:Null |
Bucket | 含义:初始化多段上传的桶名。 类型:字符串 长度:Null 范围:Null 父节点:InitiateMultipartUploadResult 限制:Null |
Key | 含义:初始化多段上传的对象名 类型:字符串 长度:Null 范围:Null 父节点:InitiateMultipartUploadResult 限制:Null |
UploadId | 含义:初始化多段上传的ID 类型:字符串 长度:Null 范围:Null 父节点:InitiateMultipartUploadResult 限制:Null |
状态返回码 参考错误返回码 【返回示例】
HTTP/1.1 200 OK
x-amz-id-2: Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 197
Connection: keep-alive
Server: AmazonS3
<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult>
<Bucket>example-bucket</Bucket>
<Key>example-object</Key>
<UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
</InitiateMultipartUploadResult>
9.Upload Part
【接口描述】 该接口上传多段上传的分片数据,上传分片数据之前必须进行多段上传的初始化操作,初始化操作中响应信息中会返回UploadID,该ID作为唯一标示要在每次上传分片时使用。 上传的分片要指定其在编号位置,该值从1到10000,每个分片有唯一位置,如果上传的分片用了同一个编号,则新上传的分片会覆盖老的分片。每个分片大小范围5MB-5GB。 【请求URL】
PUT /BucketName/ObjectName?partNumber=1&uploadId= UploadID HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Authorization: authorization string
【请求头域】
名称 | 类型 | 描述 | 是否必填 |
---|---|---|---|
Content-Length | 正整数 | 含义:上传分片的大小,单位bytes 有效值:Null 长度:Null 范围:Nul 限制:Null | 是 |
Content-MD5 | 字符串 | 含义:分片的MD5值,用于校验数据的完整性,有效值:Null 长度:Null 范围:Nul 限制:Null | 否 |
【请求元素】
- 该操作无请求元素。 【请求示例】
PUT /bucketname/object?
partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: oss.bobcloud.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 10485760
Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
Authorization: authorization string
***part data omitted***
【响应头域】
- 参考公共响应头。 【输出参数】
- 该操作无输出参数。 状态返回码 参考错误返回码
10.Complete Multipart Uploads
【接口描述】 该操作完成多段任务和组装原来上传的分片。 多段上传经过初始化,上传分片之后需要通过该接口实现最后的组装,完成该操作必须提供分片的List,其中包括分片的part Number和Etag值,处理Complete操作需要花一些时间,处理完会返回200 OK 【请求URL】
POST /BucketName/ObjectName?uploadId=UploadId HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Content-Length: Size
Authorization: authorization string
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>
【请求头域】
- 参考公共响应头。
名称 | 类型 | 描述 | 是否必填 |
---|---|---|---|
CompleteMultipartUpload | 容器 | 含义:请求的容器 有效值:Null 长度:Null 范围:Null 父节点:无 子节点:1个或对个Part元素 限制:Null | 是 |
Part | 容器 | 含义:分片信息的容器 有效值:Null 长度:Null 范围:Null 子节点:PartNumber, Etag 父节点:CompleteMultipartUpload 限制:Null | 是 |
PartNumber | 正整数 | 含义:分片编号 有效值:Null 长度:Null 范围:Null 父节点:Part 限制:Null | 是 |
Etag | 字符串 | 含义:分片的MD5值 有效值:Null 长度:Null 范围:Null 父节点:Part 限制:Null | 是 |
【请求示例】
POST /bucketname/example-object?
uploadId=AAAsb2FkIElEIGZvciBlbHZpbmcncyWeeS1tb3ZpZS5tMnRzIRRwbG9hZA HTTP/1.1
Host: oss.bobcloud.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 391
Authorization: authorization string
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"a54357aff0632cce46d942af68356b38"</ETag>
</Part>
<Part>
<PartNumber>2</PartNumber>
<ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
</Part>
<Part>
<PartNumber>3</PartNumber>
<ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
</Part>
</CompleteMultipartUpload>
【输出参数】
名称 | 描述 |
---|---|
CompleteMultipartUploadResult | 含义:响应的容器 类型:容器 长度:Null 范围: 父节点:无 子节点:Location, Bucket, Key, Etag 限制:Null |
Location | 含义:标记新创建对象的URL 类型:URL 长度:Null 范围: 父节点:CompleteMultipartUploadResult 限制:Null |
Bucket | 含义:新创建的对象所属桶 类型:字符串 长度:Null 范围: 父节点:CompleteMultipartUploadResult 限制:Null |
Key | 含义:新创建的对象名 类型:字符串 长度:Null 范围: 父节点:CompleteMultipartUploadResult 限制:Null |
Etag | 含义:分片的MD5值 类型:字符串 长度:Null 范围: 父节点:CompleteMultipartUploadResult 限制:Null |
状态返回码
- 参考错误返回码
【返回示例】 正常响应
HTTP/1.1 200 OK
x-amz-id-2: Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date: Mon, 1 Nov 2010 20:34:56 GMT
Connection: close
Server: S3 server
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult>
<Location>url</Location>
<Bucket>Example-Bucket</Bucket>
<Key>Example-Object</Key>
<ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>
</CompleteMultipartUploadResult>
11.Abort Multipart Uploads
【接口描述】 该操作用于取消MultipartUpload事件并删除对应的Part数据。 【请求URL】
DELETE /BucketName/ObjectName?uploadId=UploadId HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Authorization: authorization string
【请求头域】
- 参考公共响应头 【请求示例】
DELETE /BucketName/ObjectName?uploadId=uploadId=VXBsb2FkIElEIGZvciBlbHZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZ
HTTP/1.1
Host: oss.bobcloud.com
Date: Date
Authorization: authorization string
【响应头域】
- 参考公共响应头。 【输出参数】
- 该操作无输出参数。 状态返回码
- 参考错误返回码 【返回示例】
HTTP/1.1 204 OK
x-amz-id-2: Weag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 996c76696e6727732072657175657374
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 0
Connection: keep-alive
12.Delete Object
【接口描述】 删除对象操作。
【请求URL】
DELETE /BucketName/obj1 HTTP/1.1
> User-Agent: CURL/7.35.0
> Host: oss.bobcloud.com
> Date: Tue, 19 Jan 2016 07:10:16 +0000
> Authorization: SignatureValue
【请求头域】
- 参考公共响应头。 【请求元素】
- 该操作无请求元素。 【请求示例】
DELETE /BucketName/test.txt1 HTTP/1.1
> Host: radosgw.h3c.com
> Date: Thu, 21 Jan 2016 08:28:45 +0000
> Authorization: authorization string
【输出参数】
- 该操作无输出参数。 状态返回码
- 参考错误返回码 【返回示例】
HTTP/1.1 204 No Content
< x-amz-delete-marker: true
< x-amz-request-id: tx00000000000000000027f-0056a096bd-1f223-default
< Content-Length: 0
< Date: Thu, 21 Jan 2016 08:28:45 GMT
13.Delete Objects
【接口描述】 批量删除对象特性用于将一个桶内的部分对象一次性删除,删除后不可恢复。批量删除对象要求返回结果里包含每个对象的删除结果。批量删除对象使用同步删除对象的方式,每个对象的删除结果返回给请求用户。 【请求URL】
POST /BucketName?delete HTTP/1.1
> User-Agent: CURL/7.35.0
> Host: oss.bobcloud.com
> Date: Tue, 19 Jan 2016 07:10:16 +0000
> Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Quiet>true</Quiet>
<Object>
<Key>Key</Key>
<VersionId>VersionId</VersionId>
</Object>
<Object>
<Key>Key</Key>
</Object>
</Delete>
【请求头域】
- 参考公共响应头。
【请求元素】
名称 | 类型 | 描述 | 是否必填 |
---|---|---|---|
Quiet | 布尔值 | 含义:用于指定使用quiet模式 有效值:True/False 长度:Null 范围:Null 父节点:Delete 限制:Null | 否 |
Delete | XML | 含义:待删除的对象列表。有效值:Null 长度:Null 范围:Null 子节点:Object 限制:Null | 是 |
Object | XML | 含义:待删除的对象 有效值:Null 长度:Null 范围:Null 父节点:Delete 子节点:Key, VersionId 限制:Null | 是 |
Key | 字符串 | 含义:待删除的对象Key 有效值:Null 长度:Null 范围:Null 父节点:Object 限制:Null | 是 |
【请求示例】
POST /test333?delete HTTP/1.1
> User-Agent: CURL/7.35.0
> Host: oss.bobcloud.com
> Date: Tue, 19 Jan 2016 07:10:16 +0000
> Authorization: SignatureValue
<?xml version="1.0" encoding="utf-8"?>
<Delete>
<Quiet>true</Quiet>
<Object>
<Key>obja02</Key>
</Object>
<Object>
<Key>obja03</Key>
</Object>
</Delete>
【响应头域】
- 参考公共响应头。 【输出参数】
名称 | 类型 | 描述 |
---|---|---|
DeleteResult | 容器 | 含义:批删响应的根节点 有效值:Null 长度:Null 范围:Null 父节点:无 限制:Null |
Deleted | 容器 | 含义:删除成功结果的Container 有效值:Null 长度:Null 范围:Null 子节点:DeleteMarker, Key 父节点:DeleteResult 限制:Null |
Error | XML | 含义:删除失败结果的Container 有效值:Null 长度:Null 范围:Null 父节点:Deleted 限制:Null |
状态返回码
- 参考错误返回码 【返回示例】
HTTP/1.1 200 OK
Date: WED, 01 Jul 2015 04:34:21 GMT
Content-Length: 120
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DeleteResult xmlns="http://rgw.com/doc/2015-06-30/"/><Deleted>
<Key>obja02</Key></Deleted><Deleted><Key>obja04</Key></Deleted>
> Host:oss.bobcloud.com
> Date:Thu, 21 Jan 2016 03:40:59 +0000
> Authorization:authorization string
14.Upload Part Copy
【接口描述】 通过在UploadPart请求的基础上增加一个请求头来调用接口,实现从一个已存在的Object中拷贝数据来上传一个Part. 【请求URL】
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oss.bobcloud.com
x-amz-copy-source: /source_bucket/sourceObject Date: date
Authorization: authorization string
【请求头域】
名称 | 类型 | 描述 | 是否必填 |
---|---|---|---|
x-amz-copy-source | 字符串 | 含义:拷贝源地址 有效值:Null 长度:Null 范围:Null 限制:Nul | 是 |
【请求示例】
PUT /newobject? partNumber=2&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: target-bucket.s3.amazonaws.com Date: Mon, 11 Apr 2011 20:34:56 GMT
x-amz-copy-source: /source-bucket/sourceobject
Authorization: authorization string
【响应头域】
- 参考公共响应头。 状态返回码 参考错误返回码 【返回示例】
HTTP/1.1 200 OK
x-amz-id-2: Vvag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date: Mon, 11 Apr 2011 20:34:56 GMT
Server: AmazonS3
<CopyPartResult>
<LastModified>2011-04-11T20:34:56.000Z</LastModified>
<ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyPartResult>
15.List Objects
【接口描述】 该功能返回指定桶内全部或部分(最大1000)对象列表,使用该功能必须拥有ACL读权限,如果设置了Policy访问权限则必须拥有s3:ListBucket接口访问权限
【请求URL】
GET /BucketName HTTP/1.1
Host: oss.bobcloud.com
Date: date
Authorization: signatureValue
【请求头域】
- 参考公共响应头。 【请求元素】
名称 | 类型 | 描述 | 是否必选 |
---|---|---|---|
delimiter | 字符串 | 含义:是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的Object作为一组元素——CommonPrefixes。有效值: Null 长度:Null 范围:Null 限制:Null | 否 |
marker | 字符串 | 含义:设定结果从marker之后按字母排序的第一个开始返回。有效值: Null 长度:Null 范围:Null 限制:Null | 否 |
max-keys | 字符串 | 含义:限定此次返回object的最大数,如果不设定,默认为100。有效值: Null 长度:Null 范围:Null 限制:Null | 否 |
prefix | 字符串 | 含义:限定返回的Object key必须以Prefix作为前缀。注意使用Prefix查询时,返回的key中仍会包含Prefix。默认值:无 有效值: Null 长度:Null 范围:Null 限制:Null | 否 |
encoding-type | 字符串 | 含义:指定对返回的内容进行编码,指定编码的类型。Delimiter、Marker、Prefix、NextMarker和Key使用UTF-8字符,但xml 1.0标准不支持解析一些控制字符,比如ascii值从0到10的字符。对于包含xml 1.0标准不支持的控制字符,可以通过指定encoding-type对返回的Delimiter、Marker、Prefix、NextMarker和Key进行编码。可选值:url 有效值:Null 长度:Null 范围:Null 限制:Null | 否 |
【请求示例】
GET /BucketName?prefix=obj1 HTTP/1.1
> Host: oss.bobcloud.com
> Date: Thu, 21 Jan 2016 03:29:28 +0000
> Authorization: authorization string
【响应头域】
- 参考公共响应头。 【输出参数】
名称 | 类型 | 描述 |
---|---|---|
Contents | 容器 | 含义:保存每个返回Object meta的容器。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
CommonPrefixes | 字符串 | 含义:如果请求中指定了Delimiter参数,则在返回的响应中包含CommonPrefixes元素。该元素标明那些以Delimiter结尾,并有共同前缀的Object名称的集合。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
Delimiter | 字符串 | 含义:是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现Delimiter字符之间的Object作为一组元素——CommonPrefixes。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
EncodingType | 字符串 | 含义:指明返回结果中编码使用的类型。如果请求的参数中指定了encoding-type,那会对返回结果中的Delimiter、Marker、Prefix、NextMarker和Key这些元素进行编码。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
DisplayName | 字符串 | 含义:Object 拥有者的名字。 父节点:ListBucketResult.Contents.Owner 有效值: Null 长度:Null 范围:Null 限制:Null |
ETag | 字符串 | 含义:ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。对于PutObject请求创建的Object,ETag值是其内容的MD5值;对于其他方式创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。不建议用户使用ETag来作为Object内容的MD5校验数据完整性。 父节点:ListBucketResult.Contents 有效值: Null 长度:Null 范围:Null 限制:Null |
ID | 字符串 | 含义:Bucket拥有者的用户ID。父节点:ListBucketResult.Contents.Owner 有效值: Null 长度:Null 范围:Null 限制:Null |
IsTruncated | 枚举字符串 | 含义:指明是否所有的结果都已经返回; “True”表示本次没有返回全部结果;“False”表示本次已经返回了全部结果。有效值:True false 父节点:ListBucketResult 有效值: Null长度:Null 范围:Null 限制:Null |
Key | 字符串 | 含义:Object的Key. 父节点:ListBucketResult.Contents 有效值: Null 长度:Null 范围:Null 限制:Null |
LastModified | 时间 | 含义:Object最后被修改的时间。父节点:ListBucketResult.Contents 有效值: Null 长度:Null 范围:Null 限制:Null |
ListBucketResult | 容器 | 含义:保存Get Bucket请求结果的容器.子节点:Name, Prefix, Marker, MaxKeys, Delimiter, IsTruncated, Nextmarker, Contents 父节点:None 有效值: Null 长度:Null 范围:Null 限制:Null |
Marker | 字符串 | 含义:标明这次Get Bucket(List Object)的起点。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
MaxKeys | 字符串 | 含义:响应请求内返回结果的最大数目。父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
Name | 字符串 | 含义:Bucket名字 父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
Owner | 容器 | 含义:保存Bucket拥有者信息的容器。子节点:DisplayName, ID 父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
Prefix | 字符串 | 含义:本次查询结果的开始前缀。 父节点:ListBucketResult 有效值: Null 长度:Null 范围:Null 限制:Null |
Size | 字符串 | 含义:Object的字节数。父节点:ListBucketResult.Contents 有效值: Null 长度:Null 范围:Null 限制:Null |
StorageClass | 字符串 | 含义:Object的存储类型,目前只能是“Standard” 父节点:ListBucketResult.Contents 有效值: Null 长度:Null 范围:Null 限制:Null |
状态返回码
- 参考错误返回码。 【返回示例】
<?xml version="1.0" encoding="UTF-8" ?>
- <ListBucketResult>
<Name>ONEStor</Name>
<Prefix>obj1</Prefix>
<Marker />
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
- <Contents>
<Key>obj1</Key>
<LastModified>2016-01-21T03:12:39.000Z</LastModified>
<ETag>"cd48911fb6391d6441a4b28542a3e7fa"</ETag>
<Size>12070</Size>
<StorageClass>STANDARD</StorageClass>
- <Owner>
<ID></ID>
<DisplayName>h3c</DisplayName>
</Owner>
</Contents>
- <Contents>
<Key>obj1testest</Key>
<LastModified>2016-01-21T03:20:43.000Z</LastModified>
<ETag>"cd48911fb6391d6441a4b28542a3e7fa"</ETag>
<Size>12070</Size>
<StorageClass>STANDARD</StorageClass>
- <Owner>
<ID>h3c</ID>
<DisplayName>h3c</DisplayName>
</Owner>
</Contents>
- <Contents>
<Key>obj1tfasfads</Key>
<LastModified>2016-01-21T03:20:48.000Z</LastModified>
<ETag>"cd48911fb6391d6441a4b28542a3e7fa"</ETag>
<Size>12070</Size>
<StorageClass>STANDARD</StorageClass>
- <Owner>
<ID>h3c</ID>
<DisplayName>h3c</DisplayName>
</Owner>
</Contents>
</ListBucketResult>