桶的操作
目录
DELETE Bucket
描述
删除一个桶,只能删除无对象的桶,如果桶非空,需要先删除桶内的对象。
DELETE / HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
示例
Request
DELETE / HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Wed, 01 Mar 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS
细节描述
1.如果 Bucket 不存在,返回 404 no content 错误。错误码:NoSuchBucket。
2.如果试图删除一个不为空的 Bucket,返回 409 Conflict 错误。错误码:BucketNotEmpty。
3.只有 Bucket 的拥有者才能删除这个 Bucket。如果试图删除一个没有对应权限的 Bucket,返回 403 Forbidden 错误。错误码:AccessDenied。
GET Bucket (List Object)
描述
列出桶的对象,可以根据简单的检索条件,返回对象列表的子集。
GET / HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
请求参数
参数 | 描述 |
---|---|
delimiter | 分界符,用于做groupby操作 类型:字符串 默认:无 |
marker | 字典序的起始标记,只列出该标记之后的部分 类型:字符串 默认:无 |
max-keys | 限定返回的数量,返回的结果小于或等于该值 类型:数字 默认:100 取值范围:[0-1000] |
prefix | 只返回Key以特定前缀开头的那些对象。可以使用前缀把一个桶里面的对象分成不同的组,类似文件系统的目录一样。 类型:字符串 默认:无 |
响应元素
元素 | 描述 |
---|---|
Contents | 对象元数据,代表一个对象描述 类型:容器 父节点:ListBucketObjects 子节点:Key,LastModified,Size,Etag |
CommonPrefixes | 只有当指定了delimiter分界符时,才会有这个响应 类型:字符串 父节点:ListBucketObjects |
delimiter | 分界符 类型:字符串 父节点:ListBucketObjects |
DisplayName | 对象的拥有者 类型:字符串 父节点:ListBucketObjects.Contents.Owner |
Etag | 对象的哈希描述 类型:字符串 父节点:ListBucketObjects.Contents |
ID | 对象拥有者的ID 类型:字符串 父节点:ListBucketObjects.Contents.Owner |
IsTruncated | 是否截断,如果因为设置了limit导致不是所有的数据集都返回,则该值设置为true 类型:布尔值 父节点:ListBucketObjects |
Key | 对象的名称 类型:字符串 父节点:ListBucketObjects.Contents |
LastModified | 对象最后修改日期和时间 类型:日期 格式:yyyy-MM-dd”T”HH:mm:ss.SSSZ 父节点:ListBucketObjects.Contents |
Marker | 列表的起始位置,等于请求参数设置的Marker值 类型:字符串 父节点:ListBucketObjects |
NextMark | 下一次分页的起点 类型:字符串 父节点:ListBucketObjects |
MaxKeys | 请求的对象个数限制 类型:数字 父节点:ListBucketObjects |
Name | 请求的桶名称 类型:字符串 父节点:ListBucketObjects |
Owner | CommonPrefixes 子节点:DisplayName|ID |
Prefix | 请求的对象的Key的前缀 类型:字符串 父节点:ListBucketObjects |
Size | 对象的大小字节数 类型:数字 父节点:ListBucketObjects.contents |
StorageClasss | 存储级别 类型:字符串 父节点:ListBucketObjects.contents |
示例
Request
GET /?max-keys=2&prefix=user HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Wed, 01 Mar 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:56 GMT Content-Type: application/xml Content-Length: 302 Connection: close Server: NOS <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult> <Name>dream</Name> <Prefix>user</Prefix> <MaxKeys>2</MaxKeys> <NextMarker>user/yao</NextMarker> <IsTruncated>true</IsTruncated> <Contents> <Key>user/lin</Key> <LastModified>2012-01-01T12:00:00.000Z</LastModified> <Etag>258ef3fdfa96f00ad9f27c383fc9acce</Etag> <Size>143663</Size> <StorageClass>Standard</StorageClass> </Contents> <Contents> <Key>user/yao</Key> <LastModified>2012-01-01T12:00:00.000Z</LastModified> <Etag>828ef3fdfa96f00ad9f27c383fc9ac7f</Etag> <Size>423983</Size> <StorageClass>Standard</StorageClass> </Contents> </ListBucketResult>
细节描述
1.Object 中用户自定义的 Meta,在 GetBucket 请求时不会返回。
2.如果访问的 Bucket 不存在,包括试图访问因为命名不规范无法创建的 Bucket,返回 404 Not Found 错误,错误码:NoSuchBucket。
3.如果没有访问该 Bucket 的权限,返回 403 Forbidden 错误,错误码:AccessDenied。
4.如果因为 max-keys 的设定无法一次完成 listing,返回结果会附加一个 <NextMarker>,提示继续 listing 可以以此为 marker。NextMarker 中的值仍在 list 结果之中。
5.在做条件查询时,即使 marker 实际在列表中不存在,返回也从符合 marker 字母排序的下一个开始打印。如果max-keys 小于0或者大于1000,将返回 400 Bad Request 错误。错误码:InvalidArgument。
6.若 prefix,marker,delimiter 参数不符合长度要求,返回 400 Bad Request。错误码:InvalidArgument。prefix,marker,delimiter 用来实现分页显示效果,参数的长度必须小于1000字节。
GET Bucket acl
描述
返回桶的ACL配置。
GET /?acl HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
响应头
Header | 描述 |
---|---|
x-nos-acl | public-read |
示例
Request
GET /?acl HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Wed, 01 Mar 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT x-nos-acl: private Connection: close Server: NOS
细节描述
1. 如果 Bucket 不存在,返回 404 no content 错误。错误码:NoSuchBucket。
2. 只有 Bucket 的拥有者才能获取这个 Bucket 的ACL信息。如果试图获取一个没有对应权限的 Bucket,返回403 Forbidden 错误。错误码:AccessDenied。
GET Bucket location
描述
获取桶的地理分区信息,地理分区信息在建通时指定,见PUT Bucket。
GET /?location HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
响应元素
Element | 描述 |
---|---|
LocationConstraint | BJ | GZ 父节点:无 |
示例
Request
GET /?location HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS <?xml version="1.0" encoding="UTF-8"?> <LocationConstraint>HZ</LocationConstraint>
细节描述
1.如果 Bucket 不存在,返回404 no content错误。错误码:NoSuchBucket。
2.只有 Bucket 的拥有者才能获取这个 Bucket 的 Location 信息。如果试图获取一个没有对应权限的 Bucket,返回 403 Forbidden 错误。错误码:AccessDenied。
HEAD Bucket
描述
这个接口主要用于判断桶是否存在,以及是否有权限访问。
HEAD / HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
示例
Request
HEAD / HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE Connection: Keep-Alive
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS
细节描述
1.不论正常返回 200 OK 还是非正常返回,Head Bucket 都不返回消息体。所有桶相关信息都 包含在 HTTP 返回头中。
2.如果 Bucket 不存在,返回 404 no content 错误。错误码:NoSuchBucket。
3.只有 Bucket 的拥有者才能执行 HEAD Bucket 操作。如果试图对一个没有对应权限的 Bucket 进行该操作,返回 403 Forbidden 错误。错误码:AccessDenied。
List Bucket
描述
列出用户创建的所有桶。
GET / HTTP/1.1 HOST: ${endpoint} Date: ${date} Authorization: ${signature}
响应元素
Element | 描述 |
---|---|
CreationDate | 桶创建的日期 类型:时间戳 格式:yyyy-MM-dd”T”HH:mm:ss.SSSZ(日期+T+时间+时区)(Z=Zulu Time Zone) 父节点:ListAllMyBucketsResult.Buckets.Bucket |
DisplayName | 桶所有者的名称 类型:字符串 父节点:ListAllMyBucketsResult.Owner |
ID | 桶所有者的ID 类型:字符串 父节点:ListAllMyBucketsResult.Owner |
ListAllMyBucketsResult | 响应容器 类型:容器 子节点:Owner,Buckets |
Name | 桶名称 类型:字符串 父节点:ListAllMyBucketsResult.Buckets.Bucket |
Bucket | 代表一个桶的信息 类型:容器 父节点:ListAllMyBucketsResult.Buckets 子节点:Bucket |
Buckets | 多个桶信息的容器 类型:容器 父节点:ListAllMyBucketsResult 子节点:Bucket |
示例
Request
GET / HTTP/1.1 HOST: nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS <?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult> <Owner> <ID>bcaf1ffd86f461ca5fb16fd081034f</ID> <DisplayName>photo</DisplayName> </Owner> <Buckets> <Bucket> <Name>dream</Name> <CreationDate>2012-03-03T16:45:09:000Z</CreationDate> </Bucket> <Bucket> <Name>photo</Name> <CreationDate>2012-03-03T16:41:58:000Z</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
细节描述
1.List Bucket 是NOS操作入口,是最上层的接口。
2.List Bucket 只对验证通过的用户有效,如果请求中没有用户验证信息(即匿名访问), 返回 403 Forbidden。错误码:AccessDenied。
PUT Bucket
描述
创建一个新的桶,桶名称( BucketName )系统全局唯一,如果有重复,则按照该桶是否属于调 用者,返回 BucketAlreadyOwnedByYou 或者 BucketAlreadyExist 两种错误码。
PUT / HTTP/1.1 HOST: ${BucketName}.${endpoint} Content-Length: ${length} Date: ${date} Authorization: ${signature}
请求头
Header | 描述 | 是否必须 |
---|---|---|
x-nos-acl | public-read 默认:private |
No |
响应元素
Header | 描述 | 是否必须 |
---|---|---|
CreateBucketConfiguration | 建桶配置 类型:容器 |
No |
LocationConstraint | BJ | GZ 默认:HZ |
No |
示例
Request
PUT / HTTP/1.1 HOST: dream.nos-eastchina1.126.net x-nos-acl: public Content-Length: 123 Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE <CreateBucketConfiguration > <LocationConstraint>BJ</LocationConstraint> </CreateBucketConfiguration >
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS
细节描述
1. Bucket 命名请遵循命名规范,否则返回 400 Bad Request。错误码:InvalidBucketName。
2. NOS 支持分区部署,但是如果尝试在一个尚未建立的分区上建桶,返回 404 Not Found,错误码: NoSuchZone。
3. 如果请求的 Bucket 已经存在,并且请求者是所有者,返回 409 Conflict,错误码:BucketAlreadyOwnedByYou。
4. 如果请求的 Bucket 已经存在,但是不是请求者所拥有的,返回 409 Conflict。错误码:BucketAlreadyExist。
5. 如果想创建的 Bucket 不符合命名规范,返回 400 Bad Request 消息。错误码:InvalidBucketName。
6. 如果用户发起 PUT Bucket 请求的时候,没有传入用户验证信息,返回 403 Forbidden 消息。错误码:AccessDenied。
7. 如果 PutBucket 的时候发现已经超过 Bucket 最大创建数时,返回 400 Bad Request 消息。错误码:TooManyBuckets。
8. 如果没有指定访问权限,即 x-nos-acl,则默认使用『private』权限。
9. 如果没有指定 Location ,则默认使用『HZ』分区。
10. 如果 HTTP 请求的 BODY XML 格式有误,返回 400 Bad Request 消息。错误码:MalformedXML。
11. HTTP 请求头 Content-Length 必须,否则返回 411 Length Required 消息。错误码:MissingContentLength。
PUT Bucket acl
描述
设置桶的访问控制属性。
PUT /?acl HTTP/1.1 HOST: ${BucketName}.${endpoint} Content-Length: ${length} Date: ${date} Authorization: ${signature} x-nos-acl: public-read
请求头
Header | 描述 |
---|---|
x-nos-acl | public-read |
示例
Request
PUT /?acl HTTP/1.1 HOST: dream.nos-eastchina1.126.net x-nos-acl: private Date: Wed, 01 Mar 2012 21:34:55 GMT Content-Length: 0 Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS
细节描述
1. 如果 Bucket 存在,发送时带的权限和已有权限不一样,并且请求发送者是 Bucket 拥有者时,该请求不会改变 Bucket 内容,但是会更新权限。
2. 如果请求中没有『x-nos-acl』头,并且该 Bucket 已存在,并属于该请求发起者,则维持原 Bucket 权限不变。 3.如果 Bucket 不存在,返回 404 no content 错误。错误码:NoSuchBucket。
4. 只有 Bucket 的拥有者才能设置这个 Bucket 的 ACL 信息。如果试图设置一个没有对应权限的 Bucket,返回 403 Forbidden 错误。错误码:AccessDenied。
5.HTTP 请求头 Content-Length 必须,否则返回 411 Length Required 消息。错误码:MissingContentLength。
PUT Bucket Deafult 404
描述
设置桶的默认404对象,即设置当访问桶中一个对象不存在时,期望默认返回的对象内容。(注意:如果返回了桶的默认对象,返回值依然为404)
PUT /?default404 HTTP/1.1 HOST: ${BucketName}.${endpoint} Content-Length: ${length} Date: ${date} Authorization: ${signature} <Default404Configuration> <Key>${Key}</Key> </Default404Configuration>
请求元素
Header | 描述 | 是否必须 |
---|---|---|
Key | 设置桶的默认404对象(当该值为空时,表示不设置) 类型:字符串 父节点:Default404Configuration |
Yes |
Default404Configuration | 桶默认404对象设置容器 类型:容器 子节点:Key |
Yes |
示例
设置一个桶的默认 404 对象
Request
PUT /? default404 HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Content-Length: 124 Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE <Default404Configuration> <Key>default.404</Key> </Default404Configuration>
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Fri, 10 Feb 2012 21:34:58 GMT Connection: close Server: NOS
删除一个桶的默认 404 对象
Request
PUT /? default404 HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Content-Length: 124 Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE <Default404Configuration> <Key></Key> </Default404Configuration>
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Fri, 10 Feb 2012 21:34:58 GMT Connection: close Server: NOS
GET Bucket Default 404
描述
获取桶的默认404对象名
GET /?default404 HTTP/1.1 HOST: ${BucketName}.${endpoint} Date: ${date} Authorization: ${signature}
相应元素
Element | 描述 | 是否必须 |
---|---|---|
Key | 设置桶的默认404对象(当该值为空时,表示不设置) 类型:字符串 父节点:Default404Configuration |
Yes |
Default404Configuration | 桶默认404对象设置容器 类型:容器 子节点:Key |
Yes |
示例
Request
GET /?default404 HTTP/1.1 HOST: dream.nos-eastchina1.126.net Date: Fri, 10 Feb 2012 21:34:55 GMT Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Response
HTTP/1.1 200 OK x-nos-request-id: 17b21e42ac11000001390ab891440240 Date: Wed, 01 Mar 2012 21:34:55 GMT Connection: close Server: NOS <Default404Configuration> <Key>default.404</Key> </Default404Configuration>
最后更新:2017-01-03 10:48:54