Bucket adalah wadah yang digunakan untuk menyimpan objek di Object Storage Service (OSS). Topik ini menjelaskan cara menggunakan Go SDK V2 untuk mengatur dan mengambil daftar kontrol akses (ACL) dari sebuah bucket.
Catatan penggunaan
Kode contoh dalam topik ini menggunakan ID Wilayah
cn-hangzhouuntuk Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.Topik ini memberikan contoh penggunaan kredensial akses yang diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan Kredensial Akses.
Untuk mengatur ACL sebuah bucket, Anda memerlukan izin
oss:PutBucketAcl. Untuk mengambil ACL sebuah bucket, Anda memerlukan izinoss:GetBucketAcl. Untuk informasi lebih lanjut, lihat Berikan Kebijakan Kustom kepada Pengguna RAM.
Jenis-jenis ACL
Berikut ini adalah tiga jenis ACL yang tersedia untuk bucket:
ACL | Deskripsi | Metode |
Pribadi | Hanya pemilik atau pengguna yang berwenang dari bucket ini yang dapat membaca dan menulis objek. Pengguna lain tidak dapat mengakses objek dalam bucket. | oss.BucketACLPrivate |
Publik-baca | Hanya pemilik atau pengguna berwenang dari bucket ini yang dapat membaca dan menulis objek. Pengguna lain, termasuk pengguna anonim, hanya dapat membaca objek di dalam bucket. Berhati-hatilah saat Anda mengatur ACL ke nilai ini. | oss.BucketACLPublicRead |
Publik-baca-tulis | Semua pengguna, termasuk pengguna anonim dapat membaca dan menulis objek. Berhati-hatilah saat Anda mengatur ACL ke nilai ini. | oss.BucketACLPublicReadWrite |
Kode contoh
Gunakan kode berikut untuk mengatur dan mengambil ACL sebuah bucket.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah penyimpanan.
bucketName string // Nama bucket.
)
// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengatur ACL bucket.
putRequest := &oss.PutBucketAclRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Acl: oss.BucketACLPrivate, // Atur izin akses menjadi privat.
}
// Jalankan operasi untuk mengatur ACL bucket.
putResult, err := client.PutBucketAcl(context.TODO(), putRequest)
if err != nil {
log.Fatalf("gagal mengatur acl bucket %v", err)
}
// Cetak hasil pengaturan ACL bucket.
log.Printf("hasil pengaturan acl bucket: %#v\n", putResult)
// Buat permintaan untuk mendapatkan ACL bucket.
getRequest := &oss.GetBucketAclRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
}
// Jalankan operasi untuk mendapatkan ACL bucket.
getResult, err := client.GetBucketAcl(context.TODO(), getRequest)
if err != nil {
log.Fatalf("gagal mendapatkan acl bucket %v", err)
}
// Cetak hasil pengambilan ACL bucket.
log.Printf("hasil pengambilan acl bucket:%#v\n", getResult)
}
Referensi
Untuk kode contoh lengkap mengenai pengaturan ACL sebuah bucket, lihat Contoh GitHub.
Untuk informasi lebih lanjut tentang operasi API untuk mengatur ACL sebuah bucket, lihat PutBucketAcl.
Untuk kode contoh lengkap mengenai pengambilan ACL sebuah bucket, lihat Contoh GitHub.
Untuk informasi lebih lanjut tentang operasi API untuk mengambil ACL sebuah bucket, lihat GetBucketACL.