Operasi ini digunakan untuk memodifikasi daftar kontrol akses (ACL) dari sebuah objek. Hanya pemilik bucket yang memiliki izin membaca dan menulis objek di dalam bucket yang dapat memanggil operasi ini untuk memodifikasi ACL objek.
Versioning
Secara default, operasi PutObjectACL mengonfigurasi ACL versi terkini dari sebuah objek. Anda dapat menentukan ID versi dalam permintaan untuk mengonfigurasi ACL versi tertentu dari objek tersebut.
Jika Anda menentukan ID versi dalam permintaan dan versi objek terkait adalah penanda hapus, OSS akan mengembalikan kesalahan 405 MethodNotAllowed.
Jika Anda tidak menentukan ID versi dalam permintaan dan versi terbaru objek terkait adalah penanda hapus, OSS akan mengembalikan kesalahan 404 NoSuchKey.
Ikhtisar ACL
Ketika memanggil operasi PutObjectACL, Anda dapat mengatur header x-oss-object-acl dalam permintaan untuk mengonfigurasi ACL sebuah objek. Tabel berikut menjelaskan ACL yang dapat dikonfigurasikan untuk sebuah objek.
ACL | Deskripsi |
private | Objek adalah sumber daya pribadi. Hanya pemilik objek yang memiliki izin untuk membaca dan menulis objek tersebut. Pengguna lain tidak dapat mengakses objek tersebut. |
public-read | Objek adalah sumber daya publik-baca. Hanya pemilik objek yang memiliki izin untuk membaca dan menulis objek ini. Pengguna lain hanya dapat membaca objek tersebut. |
public-read-write | Objek adalah sumber daya publik-baca-tulis. Semua pengguna memiliki izin untuk membaca dan menulis objek tersebut. |
default | ACL objek sama dengan ACL bucket tempat objek tersebut disimpan. |
ACL objek memiliki prioritas lebih tinggi daripada ACL bucket tempat objek disimpan. Sebagai contoh, jika sebuah objek dengan ACL public-read-write disimpan di dalam bucket dengan ACL private, semua pengguna dapat membaca dan menulis objek tersebut. Secara default, jika Anda tidak mengonfigurasi ACL objek, ACL objek tersebut akan sama dengan ACL bucket tempat objek disimpan.
Operasi yang membaca objek meliputi GetObject, HeadObject, CopyObject, dan UploadPartCopy, di mana CopyObject dan UploadPartCopy membaca objek sumber. Operasi yang menulis objek meliputi PutObject, PostObject, AppendObject, DeleteObject, DeleteMultipleObjects, CompleteMultipartUpload, dan CopyObject, di mana CopyObject menulis objek tujuan.
Saat memanggil operasi untuk menulis objek, Anda dapat menyertakan header x-oss-object-acl dalam permintaan untuk mengonfigurasi ACL objek tersebut. Sebagai contoh, Anda dapat menyertakan header x-oss-object-acl dalam permintaan PutObject untuk mengonfigurasi ACL objek yang akan diunggah.
Sintaksis
PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValueHeader permintaan
Header | Tipe | Diperlukan | Contoh | Deskripsi |
x-oss-object-acl | String | Ya | public-read | Daftar kontrol akses (ACL) dari objek. Nilai yang valid:
Untuk informasi lebih lanjut, lihat ACL Objek. |
Untuk informasi lebih lanjut tentang header permintaan umum dalam permintaan PutObjectACL, seperti Host dan Date, lihat Header Permintaan Umum.
Header respons
Semua header dalam respons terhadap permintaan PutObjectACL merupakan header respons umum. Untuk informasi lebih lanjut, lihat Header Respons Umum.
Contoh
Modifikasi ACL objek dalam bucket tanpa versi
Permintaan Contoh
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****************Respons Contoh
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: AliyunOSSModifikasi ACL objek dalam bucket dengan versi
Permintaan Contoh
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****************Respons Contoh
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
OSS SDK
Anda dapat menggunakan OSS SDK untuk bahasa pemrograman berikut guna memanggil operasi PutObjectACL:
ossutil
Untuk informasi tentang perintah ossutil yang sesuai dengan operasi PutObjectACL, lihat put-object-acl.
Kode kesalahan
Kode kesalahan | Status HTTP | Deskripsi |
AccessDenied | 403 | Anda bukan pemilik bucket atau tidak memiliki izin untuk membaca dan menulis objek yang ingin Anda modifikasi ACL-nya. |
InvalidArgument | 400 | Nilai x-oss-object-acl yang ditentukan tidak valid. |
FileAlreadyExists | 409 | Objek yang ingin Anda modifikasi ACL-nya adalah direktori dalam bucket yang fitur namespace hierarkisnya diaktifkan. |