PutBucketACL介面用於修改Bucket存取權限。
目前Bucket有三種存取權限:public-read-write,public-read和private。Put Bucket ACL操作通過Put請求中的“x-oss-acl”頭來設定。這個操作只有該Bucket的建立者有許可權執行。如果操作成功,則返回200;否則返回相應的錯誤碼和提示資訊。
請求文法
PUT /?acl HTTP/1.1
x-oss-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
細節分析
- 如果bucket存在,發送時帶的許可權和已有許可權不一樣,並且請求寄件者是bucket擁有者時。該請求不會改變bucket內容,但是會更新許可權。
- 如果用戶發起Put Bucket請求的時候,沒有傳入用戶驗證資訊,返回403 Forbidden消息。錯誤碼:AccessDenied。
- 如果請求中沒有x-oss-acl頭,並且該bucket已存在,並屬於該請求發起者,則維持原bucket許可權不變。
樣本
請求樣本:
PUT /?acl HTTP/1.1
x-oss-acl: public-read
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=
返回樣本:
HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 24 Feb 2012 03:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
如果該設定的許可權不存在,樣本400 Bad Request消息:
錯誤返回樣本:
HTTP/1.1 400 Bad Request
x-oss-request-id: 56594298207FB304438516F9
Date: Fri, 24 Feb 2012 03:55:00 GMT
Content-Length: 309
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
Server: AliyunOSS
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
<Message>no such bucket access control exists</Message>
<RequestId>5***9</RequestId>
<HostId>***-test.example.com</HostId>
<ArgumentName>x-oss-acl</ArgumentName>
<ArgumentValue>error-acl</ArgumentValue>
</Error>