阅读877 返回首页    go 网易 go 网易蜂巢


桶的操作

目录

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

  上一篇:go 西藏地区管局规则
  下一篇:go 容器API