全部产品
Search
文档中心

Object Storage Service:Mengelola ACL Bucket (Go SDK V2)

更新时间:Nov 09, 2025

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-hangzhou untuk 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 izin oss: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(&region, "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.