Bucket adalah wadah untuk menyimpan objek, dan setiap objek disimpan dalam satu bucket. Topik ini menjelaskan cara menanyakan wilayah bucket.
Catatan penggunaan
Topik ini menggunakan titik akhir publik 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 Regions and endpoints.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient instance.
Untuk menanyakan wilayah bucket, Anda harus memiliki izin
oss:GetBucketLocation. Untuk informasi selengkapnya, lihat Attach a custom policy to a RAM user.
Kode contoh
Kode contoh berikut menunjukkan cara menanyakan wilayah atau lokasi bucket:
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Tentukan titik akhir wilayah apa pun yang didukung OSS. Misalnya, https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Region ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tetapkan yourBucketName ke nama bucket. */
std::string BucketName = "yourBucketName";
/* Inisialisasi sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah ditetapkan. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Ambil wilayah bucket. */
GetBucketLocationRequest request(BucketName);
auto outcome = client.GetBucketLocation(request);
if (outcome.isSuccess()) {
std::cout << "getBucketLocation success, location: " << outcome.result().Location() << std::endl;
}
else {
/* Tangani pengecualian. */
std::cout << "getBucketLocation fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
ShutdownSdk();
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Referensi
Untuk kode contoh lengkap tentang cara mengambil wilayah bucket, lihat GitHub sample.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk menanyakan wilayah bucket, lihat GetBucketLocation.