Topik ini menjelaskan cara mencantumkan bucket yang memenuhi kondisi tertentu di semua Wilayah dalam akun saat ini.
Catatan
Kode contoh dalam topik ini menggunakan ID Wilayah Hangzhou, Tiongkok
cn-hangzhousebagai 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 Wilayah dan Titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik akhir.Untuk mencantumkan bucket, Anda harus memiliki izin
oss:ListBuckets. Untuk informasi lebih lanjut, lihat Memberikan kebijakan akses kustom kepada Pengguna RAM.Saat menggunakan SDK untuk mencantumkan bucket, Anda dapat menentukan ID kelompok sumber daya untuk menyaring bucket dalam kelompok sumber daya tertentu.
Secara default, saat menggunakan SDK untuk mencantumkan bucket, parameter ID kelompok sumber daya tidak disertakan dalam permintaan, dan tanggapan berformat XML tidak berisi informasi kelompok sumber daya.
Jika Anda menentukan parameter ID kelompok sumber daya dalam permintaan, OSS mengembalikan semua bucket yang termasuk dalam kelompok sumber daya tersebut.
Jika Anda tidak menentukan parameter ID kelompok sumber daya dalam permintaan, OSS mengembalikan semua bucket yang dimiliki oleh peminta.
Daftar bucket di semua Wilayah dalam akun saat ini
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Impor file autoloader untuk memuat pustaka dependensi.
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah adalah item yang diperlukan. Ini menentukan wilayah tempat bucket berada, misalnya oss-cn-hangzhou.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint adalah item opsional. Ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
];
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter 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"; // Pesan ditampilkan, menunjukkan bahwa parameter yang diperlukan hilang.
exit(1);
}
}
// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
// Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Muat kredensial dari variabel lingkungan.
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault(); // Muat konfigurasi default dari SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint diberikan, tetapkan endpoint.
}
// Buat instans klien OSS.
$client = new Oss\Client($cfg); // Buat instans klien OSS.
// Buat paginator untuk operasi ListBuckets.
$paginator = new Oss\Paginator\ListBucketsPaginator($client); // Buat paginator untuk mencantumkan bucket.
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest()); // Dapatkan iterator halaman.
// Telusuri hasil halaman dari bucket.
foreach ($iter as $page) { // Telusuri daftar bucket di setiap halaman.
foreach ($page->buckets ?? [] as $bucket) { // Telusuri setiap bucket di halaman saat ini.
print ("Bucket: $bucket->name, $bucket->location\n"); // Cetak nama bucket dan wilayahnya.
}
}
Daftarkan semua bucket dalam kelompok sumber daya tertentu
Secara default, saat menggunakan SDK untuk mencantumkan bucket, parameter ID kelompok sumber daya tidak disertakan dalam permintaan, dan tanggapan berformat XML tidak berisi informasi kelompok sumber daya.
Jika permintaan menentukan parameter ID kelompok sumber daya, OSS mengembalikan semua bucket dalam kelompok sumber daya tersebut.
Jika Anda tidak menentukan parameter ID kelompok sumber daya dalam permintaan, OSS mengembalikan semua bucket yang dimiliki oleh peminta.
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Impor file autoloader untuk memuat pustaka dependensi.
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah adalah item yang diperlukan. Ini menentukan wilayah tempat bucket berada, misalnya oss-cn-hangzhou.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint adalah item opsional. Ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
];
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter 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"; // Pesan ditampilkan, menunjukkan bahwa parameter yang diperlukan hilang.
exit(1);
}
}
// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
// Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Muat kredensial dari variabel lingkungan.
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault(); // Muat konfigurasi default dari SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint diberikan, tetapkan endpoint.
}
// Buat instans klien OSS.
$client = new Oss\Client($cfg); // Buat instans klien OSS.
// Buat paginator untuk operasi ListBuckets.
$paginator = new Oss\Paginator\ListBucketsPaginator($client); // Buat paginator untuk mencantumkan bucket.
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest(
resourceGroupId: "rg-aekzfalvmw2sxby", // Cantumkan bucket dalam kelompok sumber daya tertentu.
));
// Telusuri hasil halaman dari bucket.
foreach ($iter as $page) { // Telusuri daftar bucket di setiap halaman.
foreach ($page->buckets ?? [] as $bucket) { // Telusuri setiap bucket di halaman saat ini.
print ("Bucket: $bucket->name, $bucket->location\n"); // Cetak nama bucket dan wilayahnya.
}
}Referensi
Untuk kode contoh lengkap yang digunakan untuk mencantumkan bucket, lihat Contoh GitHub.
Untuk informasi lebih lanjut tentang operasi API yang digunakan untuk mencantumkan bucket, lihat ListBuckets (GetService).