全部产品
Search
文档中心

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

更新时间:Oct 21, 2025

Mode bayar-per-permintaan didukung. Saat mode ini diaktifkan untuk sebuah bucket, pihak peminta membayar biaya permintaan dan lalu lintas, sedangkan pemilik bucket membayar biaya penyimpanan. Anda dapat mengaktifkan mode ini untuk berbagi data dalam bucket tanpa harus menanggung biaya permintaan dan lalu lintas saat bucket diakses.

Catatan penggunaan

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

  • Untuk menetapkan mode bayar-per-permintaan, Anda memerlukan izin oss:PutBucketRequestPayment. Untuk mengambil konfigurasi mode bayar-per-permintaan, Anda memerlukan izin oss:GetBucketRequestPayment. Untuk informasi lebih lanjut, lihat Memberikan Izin Kustom kepada Pengguna RAM.

Kode contoh

Aktifkan mode bayar-per-permintaan untuk sebuah bucket

Berikut adalah kode contoh untuk mengaktifkan mode bayar-per-permintaan:

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: atur konfigurasi pembayaran permintaan untuk sebuah bucket.
parser = argparse.ArgumentParser(description="contoh pembayaran permintaan bucket")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket, titik akhir opsional, dan pembayar.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--payer', help='Menunjukkan siapa yang membayar biaya unduhan dan permintaan. Nilai yang mungkin: "Requester" atau "BucketOwner"', required=True)

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai input pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Buat objek konfigurasi menggunakan konfigurasi SDK default dan tetapkan penyedia otentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tetapkan properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan oleh pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom diberikan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS dan bersiaplah untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menetapkan konfigurasi pembayaran permintaan untuk bucket tertentu.
    result = client.put_bucket_request_payment(oss.PutBucketRequestPaymentRequest(
            bucket=args.bucket,  # Nama bucket.
            request_payment_configuration=oss.RequestPaymentConfiguration(
                payer=args.payer,  # Pembayar. Nilai valid: "Requester" atau "BucketOwner".
            ),
    ))

    # Cetak kode status dan ID permintaan hasil operasi untuk mengonfirmasi status permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Saat skrip ini dieksekusi secara langsung, panggil fungsi utama untuk memulai pemrosesan logika.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur program dimulai dari sini.

Kueri konfigurasi bayar-per-permintaan

Berikut adalah kode contoh untuk menanyakan konfigurasi bayar-per-permintaan sebuah bucket:

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: dapatkan konfigurasi pembayaran permintaan untuk sebuah bucket.
parser = argparse.ArgumentParser(description="contoh pembayaran permintaan bucket")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket, dan titik akhir opsional.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai input pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Buat objek konfigurasi menggunakan konfigurasi SDK default dan tetapkan penyedia otentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tetapkan properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan oleh pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom diberikan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS dan bersiaplah untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk mendapatkan konfigurasi pembayaran permintaan untuk bucket tertentu.
    result = client.get_bucket_request_payment(oss.GetBucketRequestPaymentRequest(
            bucket=args.bucket,  # Nama bucket.
    ))

    # Cetak kode status, ID permintaan, dan informasi pembayar dari hasil operasi untuk mengonfirmasi status permintaan dan detail konfigurasi.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' pembayar: {getattr(result.request_payment_configuration, "payer", "Tidak disetel")},'
          )

# Saat skrip ini dieksekusi secara langsung, panggil fungsi utama untuk memulai pemrosesan logika.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur program dimulai dari sini.

Referensi