全部产品
Search
文档中心

Object Storage Service:Aktifkan bayar-per-permintaan menggunakan OSS SDK untuk Go 2.0

更新时间:Nov 07, 2025

Ketika fitur pay-by-requester diaktifkan untuk sebuah bucket, pihak peminta membayar biaya permintaan dan lalu lintas, sedangkan pemilik bucket hanya membayar biaya penyimpanan. Anda dapat mengaktifkan pay-by-requester untuk sebuah bucket agar dapat berbagi data tanpa harus menanggung biaya permintaan dan lalu lintas ketika bucket Anda diakses.

Catatan penggunaan

  • Contoh kode dalam topik ini menggunakan ID Wilayah cn-hangzhou dari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam sebuah bucket. Jika Anda ingin mengakses sumber daya dalam bucket dengan menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang Wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan Kredensial Akses.

  • Untuk mengaktifkan bayar-per-permintaan, Anda harus memiliki izin oss:PutBucketRequestPayment. Untuk menanyakan konfigurasi bayar-per-permintaan, Anda harus memiliki izin oss:GetBucketRequestPayment. Untuk informasi lebih lanjut, lihat Contoh Umum Kebijakan RAM.

Metode

Aktifkan pay-by-requester untuk sebuah bucket

func (c *Client) PutBucketRequestPayment(ctx context.Context, request *PutBucketRequestPaymentRequest, optFns ...func(*Options)) (*PutBucketRequestPaymentResult, error)

Tanyakan konfigurasi pay-by-requester dari sebuah bucket

func (c *Client) GetBucketRequestPayment(ctx context.Context, request *GetBucketRequestPaymentRequest, optFns ...func(*Options)) (*GetBucketRequestPaymentResult, error)

Parameter permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks permintaan, yang dapat digunakan untuk menentukan durasi total permintaan.

request

*PutBucketRequestPaymentRequest

Menentukan parameter operasi API tertentu. Untuk informasi lebih lanjut, lihat PutBucketRequestPaymentRequest.

*GetBucketRequestPaymentRequest

Menentukan parameter operasi API tertentu. Untuk informasi lebih lanjut, lihat GetBucketRequestPaymentRequest.

optFns

...func(*Options)

Opsional. Parameter tingkat operasi. Untuk informasi lebih lanjut, lihat Options.

Parameter respons

Parameter respons

Tipe

Deskripsi

result

*PutBucketRequestPaymentResult

Respons terhadap operasi. Parameter ini valid ketika nilai err adalah nil. Untuk informasi lebih lanjut, lihat PutBucketRequestPaymentResult.

*GetBucketRequestPaymentResult

Respons terhadap operasi. Parameter ini valid ketika nilai err adalah nil. Untuk informasi lebih lanjut, lihat GetBucketRequestPaymentResult.

err

error

Status permintaan. Jika permintaan gagal, nilai err tidak bisa nil.

Contoh

Aktifkan pembayaran berdasarkan permintaan

Berikut adalah contoh kode yang menunjukkan cara mengaktifkan pay-by-requester:

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 tempat bucket berada.
	bucketName string // Nama bucket.
)

// Tentukan fungsi init yang 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 tentukan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menentukan pembayar permintaan.
	putRequest := &oss.PutBucketRequestPaymentRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		PaymentConfiguration: &oss.RequestPaymentConfiguration{
			Payer: oss.Requester, // Tetapkan pembayar permintaan sebagai peminta.
		},
	}

	// Kirim permintaan untuk menentukan pembayar permintaan.
	putResult, err := client.PutBucketRequestPayment(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("gagal memasukkan pembayaran permintaan bucket %v", err)
	}

	// Tampilkan hasil permintaan.
	log.Printf("hasil pembayaran permintaan bucket:%#v\n", putResult)
}

Tanyakan konfigurasi pay-by-requester dari sebuah bucket

Berikut adalah contoh kode yang menunjukkan cara menanyakan konfigurasi pay-by-requester dari 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 tempat bucket berada.
	bucketName string // Nama bucket.
)

// Tentukan fungsi init yang 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 tentukan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menanyakan konfigurasi pay-by-requester dari bucket.
	getRequest := &oss.GetBucketRequestPaymentRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Eksekusi permintaan untuk menanyakan konfigurasi pay-by-requester dari bucket dan proses hasilnya.
	getResult, err := client.GetBucketRequestPayment(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("gagal mendapatkan pembayaran permintaan bucket %v", err)
	}

	// Tampilkan hasil permintaan.
	log.Printf("hasil pembayaran permintaan bucket:%#v\n", getResult)
}

Referensi

  • Untuk kode sampel lengkap yang digunakan untuk mengaktifkan pay-by-requester, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengaktifkan pay-by-requester, kunjungi PutBucketRequestPayment.

  • Untuk kode sampel lengkap yang digunakan untuk menanyakan konfigurasi pay-by-requester dari sebuah bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan konfigurasi pay-by-requester dari sebuah bucket, kunjungi GetBucketRequestPayment.