閱讀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