調用PutObjectACL接口修改文件(Object)的訪問權限(ACL)。此操作只有Bucket Owner有權限執行,且需對Object有讀寫權限。
版本控制
調用PutObjectACL接口時,默認只能設置Object當前版本的ACL。您可以通過指定versionId參數來設置指定Object版本的ACL。
如果請求中指定versionId參數,且請求關聯Object的版本為刪除標記(Delete Marker),則OSS將返回405 MethodNotAllowed。
如果請求中未指定versionId參數,且請求關聯Object的最新版本為刪除標記(Delete Marker),則OSS將返回404 NoSuchKey。
ACL說明
PutObjectACL接口通過Put請求中的x-oss-object-acl
頭來設置Object ACL。目前Object包括如下四種訪問權限。
名稱 | 描述 |
private | Object是私有資源。只有該Object的Owner擁有該Object的讀寫權限,其他用戶沒有權限操作該Object。 |
public-read | Object是公共讀資源。Object Owner擁有該Object的讀寫權限。非Object Owner只有該Object的讀權限。 |
public-read-write | Object是公共讀寫資源。所有用戶擁有對該Object的讀寫權限。 |
default | Object遵循其所在Bucket的讀寫權限,即Bucket是什么權限,Object就是什么權限。 |
Object ACL優先級高于Bucket ACL。例如Bucket ACL是private的,而Object ACL是public-read-write的,則所有用戶都擁有該Object的訪問權限,即使該Bucket是私有Bucket。如果某個Object未設置過ACL,則訪問權限遵循Bucket ACL。
Object的讀操作包括GetObject、HeadObject、CopyObject和UploadPartCopy中的對原Object的讀;Object的寫操作包括PutObject、PostObject、AppendObject、DeleteObject、DeleteMultipleObjects、CompleteMultipartUpload以及CopyObject對新Object的寫入。
您還可以在進行Object的寫操作時,在請求頭中帶上x-oss-object-acl來設置Object ACL,效果與PutObjectACL等同。例如PutObject時在請求頭中帶上x-oss-object-acl可以在上傳一個Object的同時設置此Object的ACL。
請求語法
PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
當您在OSS ON云盒中調用該接口時,您需要將Host替換為云盒Endpoint。更多信息,請參見云盒Endpoint。
請求頭
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
x-oss-object-acl | 字符串 | 是 | public-read | 指定OSS創建Object時的訪問權限。 取值:
關于訪問權限的更多信息,請參見設置Object ACL。 |
此接口還需要包含Host、Date等公共請求頭。更多信息,請參見公共請求頭(Common Request Headers)。
響應頭
此接口僅涉及公共響應頭。更多信息,請參見公共響應頭(Common Response Headers)。
示例
未開啟版本控制
請求示例
PUT /test-object?acl HTTP/1.1 x-oss-object-acl: public-read Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Wed, 29 Apr 2015 05:21:12 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 559CC9BDC755F95A64485981 Date: Wed, 29 Apr 2015 05:21:12 GMT Content-Length: 0 Connection: keep-alive Server: AliyunOSS
已啟用版本控制
請求示例
PUT /example?acl&versionId=CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0**** HTTP/1.1 x-oss-object-acl: public-read Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 06:30:11 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-version-id: CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0**** x-oss-request-id: 5CAC3BF3B7AEADE017000624 Date: Tue, 09 Apr 2019 06:30:11 GMT Content-Length: 0 Connection: keep-alive Server: AliyunOSS
SDK
此接口所對應的各語言SDK如下:
錯誤碼
錯誤碼 | HTTP狀態碼 | 描述 |
AccessDenied | 403 | 接口使用者不是Bucket Owner或者Bucket Owner對Object沒有讀寫權限。 |
InvalidArgument | 400 | 指定的x-oss-object-acl值無效。 |