Bucket adalah wadah untuk objek yang disimpan di Object Storage Service (OSS). Semua objek disimpan dalam bucket. Topik ini menjelaskan cara mengatur dan mengambil daftar kontrol akses (ACL) bucket.
Catatan penggunaan
Topik ini menggunakan endpoint publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan endpoint internal. Untuk informasi selengkapnya mengenai wilayah dan endpoint OSS, lihat Wilayah dan titik akhir.
Kredensial akses pada topik ini diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.
Instans OSSClient pada topik ini dibuat menggunakan endpoint OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi client (Go SDK V1).
Untuk mengatur ACL bucket, Anda harus memiliki izin
oss:PutBucketAcl. Untuk mengambil ACL bucket, Anda harus memiliki izinoss:GetBucketAcl. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Jenis ACL bucket
Bucket memiliki tiga jenis ACL berikut:
ACL | Deskripsi | Metode |
Private | Hanya pemilik bucket dan pengguna yang berwenang yang memiliki izin baca dan tulis pada objek di dalam bucket. Pengguna lain tidak memiliki izin apa pun. | oss.ACLPrivate |
Public-read | Pemilik bucket dan pengguna yang berwenang memiliki izin baca dan tulis pada objek di dalam bucket. Pengguna lain hanya memiliki izin baca. Gunakan izin ini dengan hati-hati. | oss.ACLPublicRead |
Public-read-write | Semua pengguna memiliki izin baca dan tulis pada objek di dalam bucket. Gunakan izin ini dengan hati-hati. | oss.ACLPublicReadWrite |
Kode contoh
Kode berikut menunjukkan cara mengatur dan mengambil ACL bucket:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat client OSS: %v", err)
}
// Setel yourBucketName ke nama bucket.
bucketName := "yourBucketName"
// Atur ACL bucket menjadi public-read.
err = client.SetBucketACL(bucketName, oss.ACLPublicRead)
if err != nil {
log.Fatalf("Gagal mengatur ACL bucket untuk '%s': %v", bucketName, err)
}
// Dapatkan ACL bucket.
aclRes, err := client.GetBucketACL(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan ACL bucket untuk '%s': %v", bucketName, err)
}
log.Printf("ACL bucket untuk '%s': %s", bucketName, aclRes.ACL)
}
Referensi
Untuk kode contoh lengkap mengenai ACL bucket, lihat Contoh GitHub.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengatur ACL bucket, lihat SetBucketACL.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengambil ACL bucket, lihat GetBucketACL.