Anda dapat menggunakan tautan simbolik untuk mengakses objek yang sering digunakan di dalam bucket secara lebih praktis. Tautan simbolik berfungsi sebagai pintasan—mirip dengan shortcut di Windows—yang memungkinkan Anda mengakses suatu objek dengan mudah.
Catatan
Pada topik ini, digunakan 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 dengan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient instance.
Untuk membuat tautan simbolik, Anda harus memiliki izin
oss:PutObject. Untuk mengambil tautan simbolik, Anda harus memiliki izinoss:GetObject. Untuk informasi selengkapnya, lihat Grant custom permissions to a RAM user.Jika Anda menghapus file objek yang ditunjuk oleh tautan simbolik, tautan simbolik tersebut tetap ada, tetapi Anda tidak dapat lagi mengakses file objek tersebut melalui tautan tersebut.
Buat tautan simbolik
Kode berikut menunjukkan cara membuat tautan simbolik.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke 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 wilayah ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket. Contoh: examplebucket. */
std::string BucketName = "examplebucket";
/* Tentukan path lengkap objek. Contoh: exampledir/exampleobject.txt. Path lengkap tidak boleh mengandung nama bucket. */
std::string ObjectName = "exampledir/exampleobject.txt";
/* Tentukan path lengkap tautan simbolik. Contoh: shortcut/myobject.txt. */
std::string LinkName = "shortcut/myobject.txt";
/* 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 disetel. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Tetapkan header HTTP. */
auto meta = ObjectMetaData();
meta.setContentType("text/plain");
/* Tetapkan metadata objek kustom. */
meta.UserMetaData()["meta"] = "meta-value";
/* Buat tautan simbolik. */
CreateSymlinkRequest request(BucketName, ObjectName, meta);
request.SetSymlinkTarget(LinkName);
auto outcome = client.CreateSymlink(request);
if (!outcome.isSuccess()) {
/* Tangani pengecualian. */
std::cout << "CreateSymlink fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Ambil tautan simbolik
Untuk mengambil tautan simbolik, Anda harus memiliki izin baca terhadap tautan tersebut. Kode berikut menunjukkan cara mengambil tautan simbolik beserta nama objek yang ditunjuknya.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke 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 wilayah ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket. Contoh: examplebucket. */
std::string BucketName = "examplebucket";
/* Tentukan path lengkap tautan simbolik. Contoh: shortcut/myobject.txt. */
std::string LinkName = "shortcut/myobject.txt";
/* 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 disetel. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Dapatkan nama objek yang ditunjuk oleh tautan simbolik. */
GetSymlinkRequest request(BucketName, LinkName);
auto outcome = client.GetSymlink(request);
if (!outcome.isSuccess()) {
/* Tangani pengecualian. */
std::cout << "GetSymlink fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
else {
std::cout << " GetSymlink success Symlink name:" << outcome.result().SymlinkTarget() << std::endl;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Referensi
Untuk informasi selengkapnya mengenai operasi API untuk membuat tautan simbolik, lihat PutSymlink.
Untuk informasi selengkapnya mengenai operasi API untuk mengambil tautan simbolik, lihat GetSymlink.