Bucket adalah wadah yang menyimpan objek. Setiap objek disimpan dalam satu bucket, dan bucket ditampilkan secara alfabetis. Anda dapat melihat semua bucket yang dimiliki oleh Akun Alibaba Cloud Anda di seluruh Wilayah.
Catatan penggunaan
Topik ini menggunakan titik akhir publik untuk wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai Wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi (C SDK).
Untuk menampilkan daftar bucket, Anda harus memiliki izin
oss:ListBuckets. Untuk informasi selengkapnya, lihat Lampirkan kebijakan akses kustom ke RAM user.
Kode contoh
Kode berikut menunjukkan cara menampilkan semua bucket di seluruh Wilayah yang terkait dengan Akun Alibaba Cloud saat ini.
#include "oss_api.h"
#include "aos_http_io.h"
/* Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com untuk wilayah China (Hangzhou). */
const char *endpoint = "yourEndpoint";
/* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, tetapkan wilayah ke cn-hangzhou untuk wilayah China (Hangzhou). */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah akan menggunakan CNAME untuk mengakses OSS. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Tetapkan parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize pada entri program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Pool memori yang digunakan untuk manajemen memori. Setara dengan apr_pool_t. Kode implementasinya berada di pustaka apr. */
aos_pool_t *pool;
/* Buat pool memori. Parameter kedua bernilai NULL, yang menunjukkan bahwa pool memori baru tidak mewarisi dari pool memori lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi dalam pool memori. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
oss_list_buckets_params_t *params = NULL;
oss_list_bucket_content_t *content = NULL;
int size = 0;
params = oss_create_list_buckets_params(pool);
/* Tampilkan daftar bucket. */
resp_status = oss_list_bucket(oss_client_options, params, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("list buckets succeeded\n");
} else {
printf("list buckets failed\n");
}
/* Cetak bucket. */
aos_list_for_each_entry(oss_list_bucket_content_t, content, ¶ms->bucket_list, node) {
printf("BucketName: %s\n", content->name.data);
++size;
}
/* Hapus pool memori. Ini akan melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Hapus sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Referensi
Untuk informasi selengkapnya mengenai operasi API untuk menampilkan daftar bucket, lihat ListBuckets (GetService).