Mengakses Object Storage Service (OSS) menghasilkan banyak access log. Anda dapat menggunakan fitur penyimpanan log untuk membuat file log per jam berdasarkan konvensi penamaan tetap dan menyimpannya ke bucket tertentu.
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 dengan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient instance.
Untuk mengaktifkan penyimpanan log, Anda harus memiliki izin
oss:PutBucketLogging. Untuk melihat konfigurasi penyimpanan log, Anda harus memiliki izinoss:GetBucketLogging. Untuk menonaktifkan penyimpanan log, Anda harus memiliki izinoss:DeleteBucketLogging. Untuk informasi selengkapnya, lihat Grant custom access policies to a RAM user.
Aktifkan log storage
Kode berikut menunjukkan cara mengaktifkan penyimpanan log.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Tetapkan Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tetapkan Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Region ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Masukkan nama bucket yang ingin Anda aktifkan fitur log storage-nya, misalnya examplebucket. */
std::string BucketName = "examplebucket";
/* Masukkan bucket tujuan untuk menyimpan file log. TargetBucketName dan BucketName dapat sama atau berbeda. */
std::string TargetBucketName = "destbucket";
/* Tetapkan folder tempat file log disimpan menjadi log/. Jika Anda menentukan parameter ini, file log akan disimpan ke folder yang ditentukan dalam bucket tujuan. Jika tidak, file log akan disimpan ke direktori root bucket tujuan. */
std::string TargetPrefix ="log/";
/* 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);
/* Aktifkan fitur log storage. */
SetBucketLoggingRequest request(BucketName, TargetBucketName, TargetPrefix);
auto outcome = client.SetBucketLogging(request);
if (!outcome.isSuccess()) {
/* Tangani exception. */
std::cout << "SetBucketLogging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Lihat konfigurasi log storage
Kode berikut menunjukkan cara melihat konfigurasi penyimpanan log.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Tetapkan Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tetapkan Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Region ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Masukkan nama bucket, misalnya examplebucket. */
std::string BucketName = "examplebucket";
/* 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);
/* Lihat konfigurasi log storage. */
GetBucketLoggingRequest request(BucketName);
auto outcome = client.GetBucketLogging(request);
if (outcome.isSuccess()) {
std::cout <<" GetBucketLogging success, TargetBucket: " << outcome.result().TargetBucket() <<
",TargetPrefix: " << outcome.result().TargetPrefix() << std::endl;
}
else {
/* Tangani exception. */
std::cout << "GetBucketLogging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Nonaktifkan log storage
Kode berikut menunjukkan cara menonaktifkan fitur penyimpanan log.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Tetapkan Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tetapkan Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Region ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Masukkan nama bucket, misalnya examplebucket. */
std::string BucketName = "examplebucket";
/* 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);
/* Nonaktifkan fitur log storage. */
DeleteBucketLoggingRequest request(BucketName);
auto outcome = client.DeleteBucketLogging(request);
if (!outcome.isSuccess()) {
/* Tangani exception. */
std::cout << "DeleteBucketLogging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}Referensi
Untuk kode contoh lengkap mengenai penyimpanan log, lihat contoh di GitHub.
Untuk informasi selengkapnya mengenai operasi API untuk mengaktifkan penyimpanan log, lihat PutBucketLogging.
Untuk informasi selengkapnya mengenai operasi API untuk melihat konfigurasi penyimpanan log, lihat GetBucketLogging.
Untuk informasi selengkapnya mengenai operasi API untuk menonaktifkan penyimpanan log, lihat DeleteBucketLogging.