Aktifkan pencatatan untuk menghasilkan file log akses per jam dan menyimpannya di bucket yang ditentukan. Analisis log tersebut dengan SLS atau kluster Spark.
Catatan penggunaan
Jika bucket sumber memiliki atribut wilayah, bucket tujuan harus berada dalam akun dan wilayah yang sama. Bucket tujuan dapat sama dengan atau berbeda dari bucket sumber.
Jika bucket sumber dan tujuan sama, operasi dorong log akan menghasilkan log tambahan sehingga terjadi loop. Gunakan bucket sumber dan tujuan yang berbeda untuk menghindari hal ini.
File log dapat memerlukan waktu hingga 48 jam untuk dihasilkan. Permintaan mungkin muncul di file periode waktu yang berdekatan, sehingga log untuk periode tertentu tidak dijamin lengkap atau tepat waktu.
OSS menghasilkan file log setiap jam hingga Anda menonaktifkan pencatatan. Hapus file log yang tidak diperlukan untuk mengurangi biaya penyimpanan.
Gunakan Aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk menghapus file log secara berkala.
Untuk mencegah gangguan layanan atau kontaminasi data saat mengonfigurasi pengiriman log untuk bucket dengan OSS-HDFS diaktifkan, jangan atur Log Prefix ke
.dlsdata/.OSS dapat menambahkan field baru ke log. Rancang alat pemrosesan log Anda agar mampu menangani penambahan tersebut. Sebagai contoh, field Bucket ARN akan ditambahkan ke log mulai 17 September 2025.
Hindari mengirimkan log ke bucket yang telah mengaktifkan ObjectWorm. ObjectWorm mencegah penghapusan log selama periode retensi, sehingga biaya penyimpanan terus meningkat.
Konfigurasikan pencatatan
Konfigurasikan pencatatan untuk bucket
Konsol
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket tujuan.
Di panel navigasi sebelah kiri, pilih .
Pada halaman Logging, aktifkan Logging, lalu konfigurasikan parameter berikut.
Parameter
Description
Target bucket
Bucket tempat menyimpan log. Default: bucket saat ini. Pilih bucket berbeda dari daftar drop-down jika diperlukan. Bucket target harus berada dalam akun dan wilayah yang sama.
Log prefix
Direktori di bucket target untuk file log. Jika tidak ditentukan, log akan disimpan di direktori root. Contoh: menetapkan awalan ke log/ akan menyimpan log di direktori log/.
RAM role
Role yang diasumsikan oleh OSS untuk menulis log.
Default service role (Direkomendasikan)
Membuat secara otomatis role
AliyunOSSLoggingDefaultRoledengan izin yang diperlukan untuk semua bucket dalam akun Anda. Pengguna pertama kali: klik Authorize Now untuk membuat dan mengotorisasi role tersebut.Custom role
Untuk membatasi izin logging hanya pada bucket tertentu, buat role kustom:
Buat RAM role untuk layanan Alibaba Cloud tepercaya. Saat membuat role, atur Trusted Service ke Cloud Service dan pilih Trusted Service sebagai OSS.
Buat kebijakan kustom menggunakan editor skrip.
KMS encryption
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:AbortMultipartUpload" ], "Resource": "acs:oss:*:*:examplebucket/*" } ] }Without KMS encryption
Gunakan kebijakan ini untuk bucket tanpa enkripsi atau dengan enkripsi sisi server yang dikelola OSS.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:AbortMultipartUpload" ], "Resource": "acs:oss:*:*:examplebucket/*" } ] }
Klik Save.
Ossutil
Aktifkan pencatatan dengan CLI ossutil. Instal ossutil.
Perintah berikut mengaktifkan pencatatan untuk examplebucket, menyimpan log akses di destBucket dengan awalan MyLog-.
ossutil api put-bucket-logging --bucket examplebucket --bucket-logging-status "{\"LoggingEnabled\":{\"TargetBucket\":\"examplebucket\",\"TargetPrefix\":\"MyLog-\"}}"SDK
Konfigurasikan pencatatan dengan contoh SDK berikut. SDK lainnya tercantum di SDKs.
// Pada contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket sumber tempat Anda ingin mengaktifkan pencatatan. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan nama bucket tujuan tempat objek log akan disimpan. Bucket sumber dan tujuan dapat sama atau berbeda.
String targetBucketName = "yourTargetBucketName";
// Atur direktori tempat objek log disimpan menjadi log/. Jika Anda menentukan parameter ini, objek log akan disimpan di direktori yang ditentukan pada bucket tujuan. Jika tidak, objek log akan disimpan di direktori root bucket tujuan.
String targetPrefix = "log/";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat instans OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
SetBucketLoggingRequest request = new SetBucketLoggingRequest(bucketName);
request.setTargetBucket(targetBucketName);
request.setTargetPrefix(targetPrefix);
ossClient.setBucketLogging(request);
} catch (OSSException oe) {
System.out.println("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Terjadi ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "seperti tidak dapat mengakses jaringan.");
System.out.println("Pesan Kesalahan:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket sumber tempat Anda ingin mengaktifkan pencatatan. Contoh: examplebucket.
$bucket= "examplebucket";
$option = array();
// Tentukan nama bucket tujuan tempat objek log disimpan.
$targetBucket = "destbucket";
// Tentukan direktori tempat objek log disimpan. Jika Anda menentukan parameter ini, objek log akan disimpan di direktori yang ditentukan pada bucket tujuan. Jika tidak, objek log akan disimpan di direktori root bucket tujuan.
$targetPrefix = "log/";
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Aktifkan pencatatan untuk bucket sumber.
$ossClient->putBucketLogging($bucket, $targetBucket, $targetPrefix, $option);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n"); const OSS = require('ali-oss')
const client = new OSS({
// Atur wilayah ke wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'yourregion',
// 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.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Atur bucket ke nama bucket Anda.
bucket: 'yourbucketname'
});
async function putBucketLogging () {
try {
const result = await client.putBucketLogging('bucket-name', 'logs/');
console.log(result)
} catch (e) {
console.log(e)
}
}
putBucketLogging();# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import BucketLogging
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Tentukan bahwa objek log yang dihasilkan disimpan di bucket saat ini.
# Atur direktori tempat objek log disimpan menjadi log/. Jika Anda menentukan parameter ini, objek log akan disimpan di direktori yang ditentukan pada bucket. Jika tidak, objek log akan disimpan di direktori root bucket.
# Aktifkan pencatatan untuk bucket.
logging = bucket.put_bucket_logging(BucketLogging(bucket.bucket_name, 'log/'))
if logging.status == 200:
print("Aktifkan pencatatan akses")
else:
print("request_id:", logging.request_id)
print("resp : ", logging.resp.response) using Aliyun.OSS;
using Aliyun.OSS.Common;
// Atur Titik Akhir. Contoh ini menggunakan https://oss-cn-hangzhou.aliyuncs.com, Titik Akhir publik untuk wilayah China (Hangzhou). Untuk wilayah lain, atur Titik Akhir ke nilai aktualnya.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Atur nama bucket tempat fitur penyimpanan log akan diaktifkan, misalnya examplebucket.
var bucketName = "examplebucket";
// Atur bucket tujuan untuk menyimpan file log. Bucket tujuan dapat sama dengan atau berbeda dari bucket sumber.
var targetBucketName = "destbucket";
// Atur wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yaitu ID wilayah China (Hangzhou).
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Gunakan Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// Atur folder tempat file log disimpan menjadi log. Jika Anda menentukan folder ini, file log akan disimpan di folder yang ditentukan pada bucket tujuan. Jika tidak, file log akan disimpan di direktori root bucket tujuan.
var request = new SetBucketLoggingRequest(bucketName, targetBucketName, "log");
// Aktifkan fitur penyimpanan log.
client.SetBucketLogging(request);
Console.WriteLine("Set bucket:{0} Logging berhasil ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Gagal dengan kode kesalahan: {0}. Pesan kesalahan: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Gagal dengan pesan kesalahan: {0}", ex.Message);
}PutBucketLoggingRequest request = new PutBucketLoggingRequest();
// Tentukan bucket sumber tempat pencatatan akses akan diaktifkan.
request.setBucketName("yourSourceBucketName");
// Tentukan bucket tujuan untuk menyimpan log akses.
// Bucket tujuan dan sumber harus berada di wilayah yang sama. Bucket sumber dan tujuan dapat sama atau berbeda.
request.setTargetBucketName("yourTargetBucketName");
// Atur folder tempat file log disimpan.
request.setTargetPrefix("<yourTargetPrefix>");
OSSAsyncTask task = oss.asyncPutBucketLogging(request, new OSSCompletedCallback<PutBucketLoggingRequest, PutBucketLoggingResult>() {
@Override
public void onSuccess(PutBucketLoggingRequest request, PutBucketLoggingResult result) {
OSSLog.logInfo("code::"+result.getStatusCode());
}
@Override
public void onFailure(PutBucketLoggingRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan titik akhir aktual Anda.
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. Tentukan wilayah aktual.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Tentukan versi algoritma tanda tangan.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
// Tentukan nama bucket sumber tempat Anda ingin mengaktifkan pencatatan. Contoh: examplebucket.
bucketName := "examplebucket"
// Tentukan nama bucket tujuan tempat objek log akan disimpan. Bucket sumber dan tujuan dapat sama atau berbeda, tetapi harus berada di wilayah yang sama.
targetBucketName := "destbucket"
// Atur direktori tempat objek log disimpan menjadi log/. Jika Anda menentukan parameter ini, objek log akan disimpan di direktori yang ditentukan pada bucket tujuan. Jika tidak, objek log akan disimpan di direktori root bucket tujuan.
targetPrefix := "log/"
// Aktifkan pencatatan untuk bucket.
err = client.SetBucketLogging(bucketName, targetBucketName, targetPrefix, true)
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Atur Titik Akhir ke Titik Akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Titik Akhir menjadi https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Atur Wilayah ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Wilayah menjadi cn-hangzhou. */
std::string Region = "yourRegion";
/* Masukkan nama bucket tempat Anda ingin mengaktifkan penyimpanan log, misalnya examplebucket. */
std::string BucketName = "examplebucket";
/* Masukkan bucket tujuan untuk menyimpan file log. Nama bucket tujuan dan bucket dapat sama atau berbeda. */
std::string TargetBucketName = "destbucket";
/* Atur folder tempat file log disimpan menjadi log/. Jika Anda menentukan parameter ini, file log akan disimpan di folder yang ditentukan pada bucket tujuan. Jika tidak, file log akan disimpan di 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 diatur. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Aktifkan fitur penyimpanan log. */
SetBucketLoggingRequest request(BucketName, TargetBucketName, TargetPrefix);
auto outcome = client.SetBucketLogging(request);
if (!outcome.isSuccess()) {
/* Tangani pengecualian. */
std::cout << "SetBucketLogging gagal" <<
",kode:" << outcome.error().Code() <<
",pesan:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}#include "oss_api.h"
#include "aos_http_io.h"
/* Atur yourEndpoint ke Titik Akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Titik Akhir menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan bucket tujuan untuk menyimpan file log. Nama bucket tujuan dan bucket dapat sama atau berbeda. */
const char *target_bucket_name = "yourTargetBucketName";
/* Atur folder tempat file log disimpan. Jika Anda menentukan parameter ini, file log akan disimpan di folder yang ditentukan pada bucket tujuan. Jika tidak, file log akan disimpan di direktori root bucket tujuan. */
const char *target_logging_prefix = "yourTargetPrefix";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-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"));
// Anda juga harus mengonfigurasi dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Atur 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 saat entri program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Pool memori (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasi ada di pustaka apr. */
aos_pool_t *pool;
/* Buat pool memori. Parameter kedua adalah NULL, yang menunjukkan bahwa pool memori 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 ke 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_string_t bucket;
oss_logging_config_content_t *content;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
content = oss_create_logging_rule_content(pool);
aos_str_set(&content->target_bucket, target_bucket_name);
aos_str_set(&content->prefix, target_logging_prefix);
/* Aktifkan pencatatan akses untuk bucket. */
resp_status = oss_put_bucket_logging(oss_client_options, &bucket, content, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("put bucket logging berhasil\n");
} else {
printf("put bucket logging gagal, kode:%d, error_code:%s, error_msg:%s, request_id:%s\n",
resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id);
}
/* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Wilayah China (Hangzhou) digunakan sebagai contoh untuk titik akhir. Tentukan wilayah sesuai kebutuhan.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, atur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket, misalnya examplebucket.
bucket = client.get_bucket('examplebucket')
# Atur logging_bucket sebagai bucket tujuan untuk file log.
# Atur my-log sebagai folder tempat file log disimpan. Jika Anda menentukan parameter ini, file log akan disimpan di folder yang ditentukan. Jika tidak, file log akan disimpan di direktori root bucket tujuan.
bucket.logging = Aliyun::OSS::BucketLogging.new(
enable: true, target_bucket: 'logging_bucket', target_prefix: 'my-log')API
Panggil operasi PutBucketLogging untuk mengaktifkan pencatatan untuk bucket.
Konfigurasikan pencatatan untuk bucket vektor
Konsol
Pada halaman Vector Buckets, klik bucket tujuan. Di panel navigasi sebelah kiri, pilih Log Management > Logging.
Aktifkan sakelar Logging dan konfigurasikan parameter berikut:
Target storage location: Pilih bucket untuk menyimpan file log. Bucket harus berada di wilayah yang sama dengan bucket vektor.
Log prefix: Atur direktori dan awalan untuk file log, seperti
MyLog-.RAM role: Gunakan peran layanan default AliyunOSSLoggingDefaultRole untuk pencatatan atau pilih peran kustom.
Ossutil
Contoh berikut menunjukkan cara mengaktifkan penyimpanan log untuk bucket bernama examplebucket. Awalan file log adalah MyLog-, dan log akses disimpan di bucket examplebucket.
-
Anda dapat menggunakan file konfigurasi JSON. File bucket-logging-status.json berisi konten berikut:
{ "LoggingEnabled": { "TargetBucket": "examplebucket", "TargetPrefix": "MyLog-" } }Contoh perintah:
ossutil api put-bucket-logging --bucket examplebucket --bucket-logging-status file://bucket-logging-status.json -
Anda dapat menggunakan parameter konfigurasi JSON. Contoh perintah:
ossutil api put-bucket-logging --bucket examplebucket --bucket-logging-status "{\"LoggingEnabled\":{\"TargetBucket\":\"examplebucket\",\"TargetPrefix\":\"MyLog-\"}}"
SDK
Python
import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors
parser = argparse.ArgumentParser(description="contoh put bucket logging vektor")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Titik akhir untuk mengakses OSS')
parser.add_argument('--account_id', help='ID akun.', required=True)
parser.add_argument('--target_bucket', help='Nama bucket tujuan.', required=True)
def main():
args = parser.parse_args()
# Muat kredensial dari variabel lingkungan
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default SDK
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
cfg.account_id = args.account_id
cfg.use_internal_endpoint = True # Atur ke False untuk menggunakan titik akhir jaringan publik.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
vector_client = oss_vectors.Client(cfg)
result = vector_client.put_bucket_logging(oss_vectors.models.PutBucketLoggingRequest(
bucket=args.bucket,
bucket_logging_status=oss_vectors.models.BucketLoggingStatus(
logging_enabled=oss_vectors.models.LoggingEnabled(
target_bucket=args.target_bucket,
target_prefix='log-prefix',
logging_role='AliyunOSSLoggingDefaultRole'
)
)
))
print(f'kode status: {result.status_code},'
f' id permintaan: {result.request_id},'
)
if __name__ == "__main__":
main()
Go
package main
import (
"context"
"flag"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/vectors"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
accountId string
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket vektor berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket vektor.")
flag.StringVar(&accountId, "account-id", "", "ID akun vektor.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
if len(accountId) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, accountId diperlukan")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region).WithAccountId(accountId).
// Untuk mengakses OSS melalui internet publik, atur parameter ini ke false atau hapus baris ini.
WithUseInternalEndpoint(true)
client := vectors.NewVectorsClient(cfg)
request := &vectors.PutBucketLoggingRequest{
Bucket: oss.Ptr(bucketName),
BucketLoggingStatus: &vectors.BucketLoggingStatus{
LoggingEnabled: &vectors.LoggingEnabled{
TargetBucket: oss.Ptr("TargetBucket"),
TargetPrefix: oss.Ptr("TargetPrefix"),
LoggingRole: oss.Ptr("AliyunOSSLoggingDefaultRole"),
},
},
}
result, err := client.PutBucketLogging(context.TODO(), request)
if err != nil {
log.Fatalf("gagal melakukan put vector bucket logging %v", err)
}
log.Printf("hasil put vector bucket logging:%#v\n", result)
}
API
Panggil operasi PutBucketLogging untuk mengaktifkan pencatatan untuk bucket vektor.
Penamaan file log
File log menggunakan konvensi penamaan berikut:
<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueStringParameter | Deskripsi |
TargetPrefix | Awalan untuk nama file log. |
SourceBucket | Bucket sumber yang menghasilkan log akses. |
YYYY-mm-DD-HH-MM-SS | Stempel waktu dalam format tahun, bulan, hari, jam, menit, dan detik. Log menggunakan granularitas per jam: HH=01 mencakup 01:00:00 hingga 01:59:59. MM dan SS selalu 00. |
UniqueString | Pengidentifikasi unik yang dihasilkan sistem untuk file log. |
Format log dan contoh
Format log
Log akses OSS berisi informasi tentang peminta dan resource yang diakses. Formatnya sebagai berikut:
RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequesterAliyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode" RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID" "BucketARN"Field
Contoh
Deskripsi
RemoteIP
192.168.0.1
Alamat IP peminta.
Reserved
-
Field cadangan. Nilainya selalu tanda hubung (-).
Reserved
-
Field cadangan. Nilainya selalu tanda hubung (-).
Time
03/Jan/2021:14:59:49 +0800
Waktu saat OSS menerima permintaan.
RequestURL
GET /example.jpg HTTP/1.0
URL permintaan yang berisi string kueri.
OSS mengabaikan parameter string kueri yang diawali dengan
x-tetapi mencatatnya di log akses. Gunakan parameter berawalanx-untuk memberi tag dan melacak permintaan tertentu.HTTPStatus
200
Kode status HTTP yang dikembalikan oleh OSS.
SentBytes
999131
Trafik downstream yang dihasilkan oleh permintaan, dalam byte.
RequestTime
127
Waktu penyelesaian permintaan, dalam milidetik.
Referer
http://www.aliyun.com/product/oss
Referer HTTP dari permintaan.
UserAgent
curl/7.15.5
Header User-Agent dari permintaan HTTP.
HostName
examplebucket.oss-cn-hangzhou.aliyuncs.com
Nama domain tujuan.
RequestID
5FF16B65F05BC932307A3C3C
ID permintaan.
LoggingFlag
true
Menunjukkan apakah pencatatan diaktifkan. Nilai yang valid:
true: Pencatatan diaktifkan.
false: Pencatatan tidak diaktifkan.
RequesterAliyunID
16571836914537****
ID pengguna peminta. Tanda hubung (-) menunjukkan permintaan anonim.
Operation
GetObject
Operasi yang dilakukan.
BucketName
examplebucket
Nama bucket tujuan.
ObjectName
example.jpg
Nama objek tujuan.
ObjectSize
999131
Ukuran objek tujuan, dalam byte.
ServerCostTime
88
Waktu yang dibutuhkan OSS untuk memproses permintaan, dalam milidetik.
ErrorCode
-
Kode kesalahan yang dikembalikan oleh OSS. Tanda hubung (-) menunjukkan tidak ada kesalahan yang dikembalikan.
RequestLength
302
Panjang permintaan, dalam byte.
UserID
16571836914537****
ID pemilik bucket.
DeltaDataSize
-
Perubahan ukuran objek. Tanda hubung (-) menunjukkan permintaan tidak melibatkan operasi tulis.
SyncRequest
-
Jenis permintaan. Nilai yang valid:
-: Permintaan umum.
cdn: Permintaan asal CDN.
lifecycle: Permintaan untuk transisi atau penghapusan data, yang dipicu oleh aturan siklus hidup.
StorageClass
Standard
Kelas penyimpanan objek tujuan. Nilai yang valid:
Standard: Standard.
IA: Akses Jarang.
Archive: Archive.
Penyimpanan Arsip Dingin: Penyimpanan Arsip Dingin.
Deep Cold Archive: Deep Cold Archive.
-: Kelas penyimpanan objek tidak dapat diperoleh.
TargetStorageClass
-
Kelas penyimpanan setelah transisi siklus hidup atau CopyObject. Nilai yang valid:
Standard: Diubah ke Standard.
IA: Diubah ke Akses Jarang.
Archive: Diubah ke Archive.
Cold Archive: Diubah ke Penyimpanan Arsip Dingin.
Deep Cold Archive: Diubah ke Deep Cold Archive.
-: Tidak ada operasi konversi kelas penyimpanan objek yang terlibat.
TransmissionAccelerationAccessPoint
-
Wilayah titik akses akselerasi transfer yang digunakan untuk mengakses bucket. Contoh: cn-hangzhou untuk wilayah China (Hangzhou).
Tanda hubung (-) menunjukkan domain akselerasi transfer tidak digunakan, atau titik akhir berada di wilayah yang sama dengan bucket.
AccessKeyID
LTAI****************
ID AccessKey peminta.
Untuk permintaan dari konsol, field log menampilkan ID AccessKey sementara yang diawali dengan TMP.
Untuk permintaan dari tool atau SDK yang menggunakan kunci jangka panjang, field log menampilkan ID AccessKey umum. Contoh:
LTAI****************.Untuk permintaan yang menggunakan kredensial akses sementara dari Security Token Service (STS), log menampilkan ID AccessKey sementara yang diawali dengan STS.
CatatanTanda hubung (-) pada field ini menunjukkan permintaan anonim.
BucketARN
acs:oss***************
Deskriptor sumber daya unik global untuk bucket.
Contoh log
192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "http://www.aliyun.com/product/oss" "curl/7.15.5" "examplebucket.oss-cn-hangzhou.aliyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI****************" "acs:oss***************"Impor file log yang disimpan ke SLS untuk analisis. Impor data OSS. Ikhtisar kueri dan analisis.