5. 桶的操作¶
桶(Bucket)是对象的容器,所有的对象都必须位于桶里面,在整个系统里面桶名称唯一,在桶内部,对象key唯一。每个用户最多允许创建100个桶。
5.1. DELETE Bucket¶
5.1.1. 描述¶
删除一个桶,只能删除无对象的桶,如果桶非空,需要先删除桶内的对象。
5.1.2. 语法¶
DELETE / HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.1.3. 示例¶
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
5.1.4. 细节描述¶
- 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。
- 如果试图删除一个不为空的Bucket,返回409 Conflict错误。错误码:BucketNotEmpty。
- 只有Bucket的拥有者才能删除这个Bucket。如果试图删除一个没有对应权限的Bucket,返回403 Forbidden错误。错误码:AccessDenied。
5.2. GET Bucket (List Objects)¶
5.2.1. 描述¶
列出桶的对象,可以根据简单的检索条件,返回对象列表的子集。
5.2.2. 语法¶
GET / HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.2.3. 请求参数¶
参数 | 描述 | 是否必须 |
---|---|---|
delimiter | 分界符,用于做groupby操作
类型:字符串
默认:无
|
No |
marker | 字典序的起始标记,只列出该标记之后的部分
类型:字符串
默认:无
|
No |
max-keys | 限定返回的数量,返回的结果小于或等于该值
类型:数字
默认:100
取值范围:[0-1000]
|
No |
prefix | 只返回Key以特定前缀开头的那些对象。可以使用前缀把一个桶里面的对象分成不同的组,类似文件系统的目录一样。
类型:字符串
默认:无
|
No |
5.2.4. 响应元素¶
元素 | 描述 |
---|---|
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 | 桶拥有者
类型:容器
父节点:ListBucketObjects.contents | CommonPrefixes
子节点:DisplayName|ID
|
Prefix | 请求的对象的Key的前缀
类型:字符串
父节点:ListBucketObjects
|
Size | 对象的大小字节数
类型:数字
父节点:ListBucketObjects.contents
|
StorageClasss | 存储级别
类型:字符串
父节点:ListBucketObjects.contents
|
5.2.5. 示例¶
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>
5.2.6. 细节描述¶
- Object中用户自定义的Meta,在GetBucket请求时不会返回。
- 如果访问的Bucket不存在,包括试图访问因为命名不规范无法创建的Bucket,返回404 Not Found错误,错误码:NoSuchBucket。
- 如果没有访问该Bucket的权限,返回403 Forbidden错误,错误码:AccessDenied。
- 如果因为max-keys 的设定无法一次完成listing,返回结果会附加一个<NextMarker>,提示继续listing可以以此为marker。NextMarker中的值仍在list结果之中。
- 在做条件查询时,即使marker实际在列表中不存在,返回也从符合marker字母排序的下一个开始打印。如果max-keys小于0或者大于1000,将返回400 Bad Request错误。错误码:InvalidArgument。
- 若prefix,marker,delimiter参数不符合长度要求,返回400 Bad Request。错误码:InvalidArgument。prefix,marker,delimiter用来实现分页显示效果,参数的长度必须小于1000字节。
5.3. GET Bucket acl¶
5.3.1. 描述¶
返回桶的ACL配置。
5.3.2. 语法¶
GET /?acl HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.3.3. 响应头¶
Header | 描述 |
---|---|
x-nos-acl | 设置桶的访问控制列表
类型:字符串
有效值:private|public-read
|
5.3.4. 示例¶
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
5.3.5. 细节描述¶
- 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。
2) 只有Bucket的拥有者才能获取这个Bucket的ACL信息。如果试图获取一个没有对应权限的 Bucket,返回403 Forbidden错误。错误码:AccessDenied。
5.4. GET Bucket location¶
5.4.1. 描述¶
获取桶的地理分区信息,地理分区信息在建通时指定,见PUT Bucket。
5.4.2. 语法¶
GET /?location HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.4.3. 响应元素¶
Element | 描述 |
---|---|
LocationConstraint | 桶的地理分区
类型:字符串
有效值:HZ | BJ | GZ
父节点:无
|
5.4.4. 示例¶
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>
5.4.5. 细节描述¶
- 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。
2) 只有Bucket的拥有者才能获取这个Bucket的Location信息。如果试图获取一个没有对应 权限的Bucket,返回403 Forbidden错误。错误码:AccessDenied。
5.5. HEAD Bucket¶
5.5.1. 描述¶
这个接口主要用于判断桶是否存在,以及是否有权限访问。
5.5.2. 语法¶
HEAD / HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.5.3. 示例¶
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
5.5.4. 细节描述¶
1) 不论正常返回200 OK还是非正常返回,Head Bucket都不返回消息体。所有桶相关信息都 包含在HTTP返回头中。 2) 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。 3) 只有Bucket的拥有者才能执行 HEAD Bucket操作。如果试图对一个没有对应权限的Bucket 进行该操作,返回403 Forbidden错误。错误码:AccessDenied。
5.6. List Bucket¶
5.6.1. 描述¶
列出用户创建的所有桶。
5.6.2. 语法¶
GET / HTTP/1.1
HOST: ${endpoint}
Date: ${date}
Authorization: ${signature}
5.6.3. 响应元素¶
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
|
5.6.4. 示例¶
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>
5.6.5. 细节描述¶
- List Bucket是NOS操作入口,是最上层的接口。
2) List Bucket只对验证通过的用户有效,如果请求中没有用户验证信息(即匿名访问), 返回403 Forbidden。错误码:AccessDenied。
5.7. PUT Bucket¶
5.7.1. 描述¶
创建一个新的桶,桶名称(BucketName)系统全局唯一,如果有重复,则按照该桶是否属于调 用者,返回BucketAlreadyOwnedByYou或者BucketAlreadyExist两种错误码。
5.7.2. 语法¶
PUT / HTTP/1.1
HOST: ${BucketName}.${endpoint}
Content-Length: ${length}
Date: ${date}
Authorization: ${signature}
5.7.3. 请求头¶
Header | 描述 | 是否必须 |
---|---|---|
x-nos-acl | 设置桶的访问控制列表
类型:字符串
有效值:private|public-read
默认:private
|
No |
5.7.4. 请求元素¶
Header | 描述 | 是否必须 |
---|---|---|
CreateBucketConfiguration | 建桶配置
类型:容器
|
No |
LocationConstraint | 指定一个地理分区
类型:枚举
有效值:HZ | BJ | GZ
默认:HZ
|
No |
5.7.5. 示例¶
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
5.7.6. 细节描述¶
- Bucket命名请遵循命名规范,否则返回400 Bad Request。错误码:InvalidBucketName。
- NOS支持分区部署,但是如果尝试在一个尚未建立的分区上建桶,返回404 Not Found,错误码:NoSuchZone。
- 如果请求的Bucket已经存在,并且请求者是所有者,返回409 Conflict,错误码:BucketAlreadyOwnedByYou。
- 如果请求的Bucket已经存在,但是不是请求者所拥有的,返回409 Conflict。错误码:BucketAlreadyExist。
- 如果想创建的Bucket不符合命名规范,返回400 Bad Request消息。错误码:InvalidBucketName。
- 如果用户发起PUT Bucket请求的时候,没有传入用户验证信息,返回403 Forbidden消息。错误码:AccessDenied。
- 如果PutBucket的时候发现已经超过Bucket最大创建数时,返回400 Bad Request消息。错误码:TooManyBuckets。
- 如果没有指定访问权限,即x-nos-acl,则默认使用”private”权限。
- 如果没有指定Location,则默认使用”HZ”分区。
- 如果HTTP请求的BODY XML格式有误,返回400 Bad Request消息。错误码:MalformedXML。
- HTTP请求头Content-Length必须,否则返回411 Length Required消息。错误码:MissingContentLength。
5.8. PUT Bucket acl¶
5.8.1. 描述¶
设置桶的访问控制属性。
5.8.2. 语法¶
PUT /?acl HTTP/1.1
HOST: ${BucketName}.${endpoint}
Content-Length: ${length}
Date: ${date}
Authorization: ${signature}
x-nos-acl: public-read
5.8.3. 请求头¶
Header | 描述 |
---|---|
x-nos-acl | 设置桶的访问控制列表
类型:字符串
有效值:private | public-read
|
5.8.4. 示例¶
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
5.8.5. 细节描述¶
- 如果Bucket存在,发送时带的权限和已有权限不一样,并且请求发送者是Bucket拥有者时,该请求不会改变Bucket内容,但是会更新权限。
- 如果请求中没有”x-nos-acl”头,并且该Bucket已存在,并属于该请求发起者,则维持原Bucket权限不变。
- 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。
- 只有Bucket的拥有者才能设置这个Bucket的ACL信息。如果试图设置一个没有对应权限的Bucket,返回403 Forbidden错误。错误码:AccessDenied。
- HTTP请求头Content-Length必须,否则返回411 Length Required消息。错误码:MissingContentLength。
5.9. PUT Bucket Default404¶
5.9.1. 描述¶
设置桶的默认404对象,即设置当访问桶中一个对象不存在时,期望默认返回的对象内容。(注意:如果返回了桶的默认对象,返回值依然为404)
5.9.2. 语法¶
PUT /?default404 HTTP/1.1
HOST: ${BucketName}.${endpoint}
Content-Length: ${length}
Date: ${date}
Authorization: ${signature}
<Default404Configuration>
<Key>${Key}</Key>
</Default404Configuration>
5.9.3. 请求元素¶
Header | 描述 | 是否必须 |
---|---|---|
Key | 设置桶的默认404对象(当该值为空时,表示不设置)
类型:字符串
父节点:Default404Configuration
|
Yes |
Default404Configuration | 桶默认404对象设置容器
类型:容器
子节点:Key
|
Yes |
5.9.4. 示例¶
设置一个桶的默认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
5.10. Get Bucket Default 404¶
5.10.1. 描述¶
获取桶的默认404对象名
5.10.2. 语法¶
GET /?default404 HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.10.3. 响应元素¶
Element | 描述 | 是否必须 |
---|---|---|
Key | 设置桶的默认404对象(当该值为空时,表示不设置)
类型:字符串
父节点:Default404Configuration
|
Yes |
Default404Configuration | 桶默认404对象设置容器
类型:容器
子节点:Key
|
Yes |
5.10.4. 示例¶
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>
5.11. Put Bucket Website¶
5.11.1. 描述¶
将一个bucket设置成静态网站托管模式。
5.11.2. 语法¶
PUT /?website HTTP/1.1
Host: ${BucketName}.${endpoint}
Content-Length: ${length}
Date: ${date}
Authorization: ${signature}
Content-MD5: ${md5}
<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
<IndexDocument>
<Suffix>{suffix}</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>{key}</Key>
</ErrorDocument>
</WebsiteConfiguration>
5.11.3. 请求元素¶
Element | 描述 | 是否必须 |
---|---|---|
IndexDocument | 子元素Suffix的父元素
|
Yes |
Suffix | 索引文件名,不能为空。例如索引文件设置为index.html,则访问mybucket.nos.netease.com/mydir/这样的目录URL请求的时候默认都相当于访问mybucket.nos.netease.com/index.html。
类型:字符串类型,最长1000个字符
|
有IndexDocument时必须 |
ErrorDocument | 子元素Key的父元素
|
No |
Key | 文件不存在时(404)使用的文件名, String类型,最长1000个字符
|
当有ErrorDocument时,必需 |
5.11.4. 示例¶
Request
PUT /?website HTTP/1.1
Host: dream.nos-eastchina1.126.net
Content-Length: length
Date: date
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Content-MD5: md5
<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
<IndexDocument>
<Suffix>index.html</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>error.html</Key>
</ErrorDocument>
</WebsiteConfiguration>
Response
HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS
5.11.5. 细节描述¶
- 若请求的http body 中xml 格式不合法,则返回400 Bad Request。错误码:MalformedXML;
- Suffix和Key的值必须是桶内的已存在对象。否则返回400 Bad Request。错误码:InvalidArgument
- 如果此前没有设置过Website,此操作会创建一个新的Website配置;否则,就覆写先前的配置。
- 在将一个bucket设置成静态网站托管模式后,对静态网站根域名的匿名访问,NOS将返回索引页面;对静态网站根域名的签名访问,NOS将返回Get Bucket结果。
5.12. GET Bucket Website¶
5.12.1. 描述¶
查看bucket的静态网站托管状态。
5.12.2. 语法¶
GET /?website HTTP/1.1
Host: ${BucketName}.{endpoint}
Date: ${date}
Authorization: ${signature}
5.12.3. 响应元素¶
与Put Bucket Website的请求元素一致
5.12.4. 示例¶
Request
GET /?website 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"?>
<WebsiteConfiguration>
<IndexDocument>
<Suffix>{suffix}</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>{key}</Key>
</ErrorDocument>
</WebsiteConfiguration>
5.12.5. 细节描述¶
- 如果Bucket或Website不存在,返回404 Not Found错误,错误码:NoSuchBucket或NoSuchWebsiteConfiguration。
5.13. Delete Bucket Website¶
5.13.1. 描述¶
删除bucket的静态网站托管状态。
5.13.2. 语法¶
DELETE /?website HTTP/1.1
Host: ${BucketName}.{endpoint}
Date: ${date}
Authorization: ${signature}
5.13.3. 示例¶
Request
DELETE /?website 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
5.14. PUT Bucket Policy¶
5.14.1. 描述¶
设置桶的policy
5.14.2. 语法¶
PUT /?policy HTTP/1.1
Host: ${BucketName}.${endpoint}
Authorization: ${signature}
policy written in json
5.14.3. 示例¶
Request
{
"Version": "2018-06-25",
"Id": "Test",
"Statement": {
"Sid" : "TestStatement",
"Effect" : "Allow",
"Action" : ["nos:PutObject"],
"Principal" : {"nws":["nrn:nws:iam::productid:root"]},
"Resource" : ["nrn:nws:nos:::example_bucket/object"],
"Condition" : {
"IpAddress" : {
"nws:SourceIp":"192.168.0.1/24"
}
}
}
}
Response
HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS
5.15. Get Bucket Policy¶
5.15.1. 描述¶
获取桶的策略
5.15.2. request¶
GET /?policy HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.15.3. response¶
HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS
Content-length : ${length}
{
"Version": "1",
"Id": "Policy1528352061981",
"Statement": {
"Sid" : "test",
"Effect" : "Allow",
"Action" : ["nos:ListBucket"],
"Principal" : {"nws":["nrn:nws:iam::productid:root"]},
"Resource" : ["nrn:nws:nos:::example_bucket/object"],
"Condition" : {
"StringLike" : {
"nos:preifx":"aa"
}
}
}
}
5.15.4. 细节描述¶
1.如果从来没有设置过或删除了Policy,返回为空
2.如果桶不存在,返回404,报NoSuchBucket
3.如果没有获取桶策略的权限,那么返回403 Forbidden 错误。错误码:AccessDenied。
5.16. Delete Bucket Policy¶
5.16.1. 描述¶
删除桶的策略
5.16.2. request¶
DELETE /?policy HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
5.16.3. response¶
HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS
Content-length : ${length}
5.16.4. 细节描述¶
1.如果policy不存在,也返回删除成功
2.如果桶不存在,返回404,报NoSuchBucket
3.如果没有获取桶策略的权限,那么返回403 Forbidden 错误。错误码:AccessDenied。