Mengakses OSS menghasilkan banyak log akses. Anda dapat menggunakan fitur penyimpanan log untuk membuat file log per jam berdasarkan konvensi penamaan tetap dan menulisnya ke bucket yang ditentukan.
Catatan penggunaan
Kode contoh dalam topik ini menggunakan Wilayah Tiongkok (Hangzhou) (
cn-hangzhou) sebagai contoh. Titik akhir publik digunakan secara default. Untuk 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 OSS.Untuk mengaktifkan penyimpanan log, Anda memerlukan izin
oss:PutBucketLogging. Untuk melihat konfigurasi penyimpanan log, Anda memerlukan izinoss:GetBucketLogging. Untuk menonaktifkan penyimpanan log, Anda memerlukan izinoss:DeleteBucketLogging. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.
Contoh
Aktifkan Penyimpanan Log
Berikut adalah kode contoh untuk mengaktifkan fitur penyimpanan log.
<?php
// Sertakan file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
return "$key:"; // Tanda titik dua ditambahkan di akhir setiap parameter untuk menunjukkan bahwa parameter tersebut memerlukan nilai.
}, array_keys($optsdesc));
// Uraikan 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 dikembalikan untuk menunjukkan bahwa parameter yang diperlukan hilang.
exit(1);
}
}
// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat kredensial, termasuk ID AccessKey dan Rahasia AccessKey, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);
// Tetapkan wilayah.
$cfg->setRegion($region);
// Jika titik akhir disediakan, tetapkan titik akhir.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek permintaan untuk mengonfigurasi fitur penyimpanan log untuk bucket.
$request = new Oss\Models\PutBucketLoggingRequest(
bucket: $bucket, // Nama bucket.
bucketLoggingStatus: new Oss\Models\BucketLoggingStatus(
loggingEnabled: new Oss\Models\LoggingEnabled(
targetBucket: $bucket, // Bucket tujuan untuk penyimpanan log.
targetPrefix: 'log/' // Awalan file log.
)
)
);
// Panggil metode putBucketLogging untuk mengonfigurasi fitur penyimpanan log untuk bucket.
$result = $client->putBucketLogging($request);
// Cetak hasil yang dikembalikan.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
'request id:' . $result->requestId // ID permintaan unik.
);
Lihat Konfigurasi Penyimpanan Log
Berikut adalah kode contoh untuk melihat konfigurasi penyimpanan log.
<?php
// Sertakan file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
return "$key:"; // Tanda titik dua ditambahkan di akhir setiap parameter untuk menunjukkan bahwa parameter tersebut memerlukan nilai.
}, array_keys($optsdesc));
// Uraikan 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 dikembalikan untuk menunjukkan bahwa parameter yang diperlukan hilang.
exit(1);
}
}
// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat kredensial, termasuk ID AccessKey dan Rahasia AccessKey, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);
// Tetapkan wilayah.
$cfg->setRegion($region);
// Jika titik akhir disediakan, tetapkan titik akhir.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek permintaan untuk mendapatkan konfigurasi penyimpanan log dari bucket.
$request = new Oss\Models\GetBucketLoggingRequest(
bucket: $bucket // Nama bucket.
);
// Panggil metode getBucketLogging untuk mendapatkan konfigurasi penyimpanan log dari bucket.
$result = $client->getBucketLogging($request);
// Cetak hasil yang dikembalikan.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
'request id:' . $result->requestId . PHP_EOL . // ID permintaan unik.
'logging status:' . var_export($result->bucketLoggingStatus, true) . PHP_EOL // Status konfigurasi fitur penyimpanan log untuk bucket.
);
Nonaktifkan Penyimpanan Log
Berikut adalah kode contoh untuk menonaktifkan fitur penyimpanan log.
<?php
// Sertakan file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
return "$key:"; // Tanda titik dua ditambahkan di akhir setiap parameter untuk menunjukkan bahwa parameter tersebut memerlukan nilai.
}, array_keys($optsdesc));
// Uraikan 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 dikembalikan untuk menunjukkan bahwa parameter yang diperlukan hilang.
exit(1);
}
}
// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat kredensial, termasuk ID AccessKey dan Rahasia AccessKey, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);
// Tetapkan wilayah.
$cfg->setRegion($region);
// Jika titik akhir disediakan, tetapkan titik akhir.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek permintaan untuk menghapus konfigurasi penyimpanan log dari bucket.
$request = new Oss\Models\DeleteBucketLoggingRequest(
bucket: $bucket // Nama bucket.
);
// Panggil metode deleteBucketLogging untuk menghapus konfigurasi penyimpanan log dari bucket.
$result = $client->deleteBucketLogging($request);
// Cetak hasil yang dikembalikan.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
'request id:' . $result->requestId // ID permintaan unik.
);
Konfigurasikan Bidang Log yang Ditentukan Pengguna
Anda dapat memanggil operasi PutUserDefinedLogFieldsConfig untuk mengonfigurasi bidang user_defined_log_fields untuk log waktu nyata dari sebuah bucket. Ini memungkinkan Anda mencatat informasi dari header permintaan atau parameter kueri permintaan OSS ke bidang ini untuk analisis nanti.
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
$longopts = array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options = getopt("", $longopts);
// Verifikasi bahwa parameter yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help";
exit(1);
}
}
$region = $options["region"];
$bucket = $options["bucket"];
// Muat Pasangan Kunci Akses dari variabel lingkungan. Anda harus mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET terlebih dahulu.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Konfigurasikan parameter untuk klien OSS.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tetapkan titik akhir. Contoh: https://oss-cn-hangzhou.aliyuncs.com.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat permintaan untuk mengonfigurasi bidang log yang ditentukan pengguna.
$request = new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
bucket: $bucket,
userDefinedLogFieldsConfiguration: new Oss\Models\UserDefinedLogFieldsConfiguration(
new Oss\Models\LoggingParamSet(parameters: ['param1', 'params2']), // Parameter log kustom.
new Oss\Models\LoggingHeaderSet(headers: ['header1', 'header2']) // Header log kustom.
)
);
// Jalankan operasi untuk mengonfigurasi bidang log yang ditentukan pengguna.
$result = $client->putUserDefinedLogFieldsConfig($request);
// Cetak kode status dan ID permintaan dari hasil operasi.
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId
);
Kueri Bidang Log yang Ditentukan Pengguna
Anda dapat memanggil operasi GetUserDefinedLogFieldsConfig untuk mengambil konfigurasi kustom dari bidang user_defined_log_fields dalam log waktu nyata dari sebuah bucket.
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi argumen baris perintah, yang harus mencakup wilayah bucket, titik akhir, dan nama.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir bersifat opsional. Titik akhir harus dalam format https://oss-<region>.aliyuncs.com.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
$longopts = array_map(function ($key) { return "$key:"; }, array_keys($optsdesc)); // Ubah parameter menjadi format opsi baris perintah.
$options = getopt("", $longopts); // Uraikan argumen baris perintah.
// Verifikasi bahwa parameter yang diperlukan telah ditentukan. Pastikan bahwa parameter wilayah dan bucket telah disediakan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help";
exit(1);
}
}
$region = $options["region"]; // Dapatkan nilai parameter wilayah.
$bucket = $options["bucket"]; // Dapatkan nama bucket.
// Muat Pasangan Kunci Akses dari variabel lingkungan. Anda harus mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET terlebih dahulu.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Gunakan penyedia kredensial variabel lingkungan.
// Konfigurasikan parameter untuk klien OSS, termasuk wilayah, kredensial, dan titik akhir opsional.
$cfg = Oss\Config::loadDefault(); // Muat konfigurasi default.
$cfg->setCredentialsProvider($credentialsProvider); // Lampirkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada. Contoh: cn-hangzhou.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tetapkan titik akhir kustom. Contoh: https://oss-cn-hangzhou.aliyuncs.com.
}
// Buat instance klien OSS untuk memanggil operasi API.
$client = new Oss\Client($cfg);
// Buat permintaan untuk mendapatkan konfigurasi bidang log yang ditentukan pengguna.
$request = new Oss\Models\GetUserDefinedLogFieldsConfigRequest(bucket: $bucket); // Tentukan nama bucket yang ingin Anda kueri.
// Jalankan operasi untuk mendapatkan konfigurasi bidang log yang ditentukan pengguna. Izin oss:GetUserDefinedLogFieldsConfig diperlukan.
$result = $client->getUserDefinedLogFieldsConfig($request); // Panggil operasi API untuk mendapatkan informasi konfigurasi.
// Cetak kode status, ID permintaan, dan detail konfigurasi dari hasil operasi.
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId . PHP_EOL .
'user defined log fields config:' . var_export($result->userDefinedLogFieldsConfiguration, true) // Gunakan var_export untuk mencetak struktur objek konfigurasi.
);
Hapus Bidang Log yang Ditentukan Pengguna
Anda dapat memanggil operasi DeleteUserDefinedLogFieldsConfig untuk menghapus konfigurasi kustom dari bidang user_defined_log_fields dalam log waktu nyata dari sebuah bucket.
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Muat dependensi SDK.
use AlibabaCloud\Oss\V2 as Oss; // Impor namespace SDK PHP OSS.
$optsdesc = [ // Tentukan aturan argumen baris perintah.
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Parameter wilayah: Wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Parameter titik akhir opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Parameter nama bucket yang diperlukan.
];
$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc)); // Ubah parameter menjadi format baris perintah.
$options = getopt("", $longopts); // Uraikan argumen baris perintah.
// Verifikasi parameter: Periksa apakah parameter yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help";
exit(1);
}
}
$region = $options["region"]; // Dapatkan nilai parameter wilayah.
$bucket = $options["bucket"]; // Dapatkan nama bucket.
// Muat Pasangan Kunci Akses dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Gunakan kredensial variabel lingkungan.
// Inisialisasi konfigurasi klien.
$cfg = Oss\Config::loadDefault(); // Muat template konfigurasi default.
$cfg->setCredentialsProvider($credentialsProvider); // Lampirkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tetapkan titik akhir kustom (opsional).
}
$client = new Oss\Client($cfg); // Buat instance klien OSS.
$request = new Oss\Models\DeleteUserDefinedLogFieldsConfigRequest(bucket: $bucket); // Buat permintaan untuk menghapus konfigurasi.
$result = $client->deleteUserDefinedLogFieldsConfig($request); // Lakukan operasi penghapusan.
// Cetak informasi hasil.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
'request id:' . $result->requestId // ID permintaan unik.
);
Referensi
Untuk informasi lebih lanjut tentang mengaktifkan penyimpanan log, lihat PutBucketLogging.
Untuk informasi lebih lanjut tentang melihat konfigurasi penyimpanan log, lihat GetBucketLogging.
Untuk informasi lebih lanjut tentang menonaktifkan penyimpanan log, lihat DeleteBucketLogging.
Untuk informasi lebih lanjut tentang mengonfigurasi bidang log yang ditentukan pengguna, lihat PutUserDefinedLogFieldsConfig.
Untuk informasi lebih lanjut tentang menanyakan bidang log yang ditentukan pengguna, lihat GetUserDefinedLogFieldsConfig.
Untuk informasi lebih lanjut tentang menghapus bidang log yang ditentukan pengguna, lihat DeleteUserDefinedLogFieldsConfig.