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