全部产品
Search
文档中心

Object Storage Service:Mengelola ACL dari sebuah bucket menggunakan OSS SDK untuk PHP 2.0

更新时间:Aug 07, 2025

Bucket adalah wadah yang digunakan untuk menyimpan objek di Object Storage Service (OSS). Semua objek disimpan dalam bucket. Topik ini menjelaskan cara mengonfigurasi dan menanyakan daftar kontrol akses (ACL) dari sebuah bucket.

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 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.

  • Untuk mengonfigurasi ACL dari sebuah bucket, Anda harus memiliki izin oss:PutBucketAcl. Untuk menanyakan ACL dari sebuah bucket, Anda harus memiliki izin oss:GetBucketAcl. Untuk informasi lebih lanjut, lihat Melampirkan Kebijakan Kustom ke Pengguna RAM.

ACL Bucket

Tabel berikut menjelaskan ACL bucket.

ACL

Deskripsi

Metode

Privat

Hanya pemilik bucket dan pengguna yang berwenang yang memiliki izin baca dan tulis pada objek dalam bucket. Pengguna lain tidak dapat mengakses objek dalam bucket.

oss.BucketACLPrivate

Publik-baca

Hanya pemilik bucket dan pengguna yang berwenang yang memiliki izin baca dan tulis pada objek dalam bucket. Pengguna lain hanya memiliki izin baca pada objek dalam bucket. Berhati-hatilah saat Anda mengatur ACL bucket ke nilai ini.

oss.BucketACLPublicRead

Publik-baca-tulis

Semua pengguna memiliki izin baca dan tulis pada objek dalam bucket. Berhati-hatilah saat Anda mengatur ACL bucket ke nilai ini.

oss.BucketACLPublicReadWrite

Contoh

1. Kode contoh berikut menunjukkan cara mengonfigurasi ACL dari sebuah bucket:

<?php

// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Mengurai parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

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

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan titik akhir jika titik akhir diberikan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instans OSSClient.
$client = new Oss\Client($cfg);

// Buat objek PutBucketAclRequest dan atur ACL bucket ke privat.
$request = new Oss\Models\PutBucketAclRequest(
      bucket: $bucket, 
      acl: Oss\Models\BucketACLType::PRIVATE);

// Gunakan metode putBucketAcl untuk menentukan ACL bucket.
$result = $client->putBucketAcl($request);

// Tampilkan hasil.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId // ID permintaan dari permintaan, yang merupakan pengenal unik dari permintaan.
);

2. Kode contoh berikut menunjukkan cara menanyakan ACL dari sebuah bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

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

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

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan titik akhir jika titik akhir diberikan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

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

// Buat objek GetBucketAclRequest untuk menanyakan ACL bucket.
$request = new Oss\Models\GetBucketAclRequest(bucket: $bucket);

// Gunakan metode getBucketAcl untuk menanyakan ACL bucket.
$result = $client->getBucketAcl($request);

// Tampilkan hasil.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId . PHP_EOL . // Pengenal unik dari permintaan.
    'bucket acl:' . $result->accessControlList->grant // ACL dari bucket.
);

Referensi

  • Untuk kode contoh lengkap yang digunakan untuk mengonfigurasi ACL dari sebuah bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi ACL dari sebuah bucket, lihat PutBucketAcl.

  • Untuk kode contoh lengkap yang digunakan untuk menanyakan ACL dari sebuah bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan ACL dari sebuah bucket, lihat GetBucketAcl.