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>