桶的操作
目錄
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