全部产品
Search
文档中心

Object Storage Service:Bayar-per-permintaan (PHP SDK V2)

更新时间:Nov 09, 2025

Dalam mode bayar-per-permintaan, pihak yang meminta membayar biaya lalu lintas dan permintaan yang dihasilkan saat data dibaca dari bucket, sedangkan pemilik bucket hanya membayar biaya penyimpanan. Fitur ini dapat diaktifkan untuk sebuah bucket agar Anda dapat berbagi data tanpa menanggung biaya permintaan dan lalu lintas yang timbul ketika bucket Anda diakses.

Catatan penggunaan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk Wilayah China (Hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara Wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.

  • Untuk mengatur mode bayar-per-permintaan, Anda harus memiliki izin oss:PutBucketRequestPayment. Untuk menanyakan mode bayar-per-permintaan, Anda harus memiliki izin oss:GetBucketRequestPayment. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Akses Kustom ke Pengguna RAM.

Kode contoh

Atur mode bayar-per-permintaan

Gunakan kode contoh berikut untuk mengatur mode bayar-per-permintaan.

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Impor file autoloader untuk memuat library dependensi.

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib. Contoh: oss-cn-hangzhou.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan tanda titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan tidak ada.
        exit(1); 
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault(); // Muat konfigurasi default dari SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg); 

// Buat objek permintaan untuk mengatur metode pembayaran untuk permintaan bucket.
$request = new Oss\Models\PutBucketRequestPaymentRequest(
    $bucket,
    new Oss\Models\RequestPaymentConfiguration('Requester') 
);

// Panggil metode putBucketRequestPayment untuk mengatur metode pembayaran untuk permintaan bucket.
$result = $client->putBucketRequestPayment($request); 

// Cetak hasilnya.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId // ID unik dari permintaan.
);

Tanyakan konfigurasi bayar-per-permintaan

Gunakan kode contoh berikut untuk menanyakan konfigurasi bayar-per-permintaan.

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Impor file autoloader untuk memuat library dependensi.

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib. Contohnya, oss-cn-hangzhou.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan tanda titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan tidak ada.
        exit(1); 
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault(); // Muat konfigurasi default dari SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg); 

// Buat objek permintaan untuk menanyakan metode pembayaran untuk permintaan bucket.
$request = new Oss\Models\GetBucketRequestPaymentRequest($bucket); 

// Panggil metode getBucketRequestPayment untuk menanyakan metode pembayaran untuk permintaan bucket.
$result = $client->getBucketRequestPayment($request); 

// Cetak hasilnya.
printf(

    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL . // ID unik dari permintaan.
    'request payer:' . $result->requestPaymentConfiguration->payer // Metode pembayaran yang dikembalikan untuk permintaan (BucketOwner atau Requester).
);

Referensi

  • Untuk kode contoh lengkap untuk mengatur mode bayar-per-permintaan, lihat Contoh GitHub.

  • Untuk informasi lebih lanjut tentang operasi API untuk mengatur mode bayar-per-permintaan, lihat PutBucketRequestPayment.

  • Untuk kode contoh lengkap untuk menanyakan konfigurasi bayar-per-permintaan, lihat Contoh GitHub.

  • Untuk informasi lebih lanjut tentang operasi API untuk menanyakan konfigurasi bayar-per-permintaan, lihat GetBucketRequestPayment.