OSS menghasilkan log akses per jam berdasarkan konvensi penamaan yang telah ditentukan dan menyimpannya di bucket target yang Anda tentukan. Topik ini menjelaskan cara mengaktifkan, mengkueri, dan menonaktifkan logging bucket, serta cara mengonfigurasi field log kustom menggunakan OSS SDK untuk Go 2.0.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Bucket OSS
Kredensial yang dikonfigurasi sebagai variabel lingkungan. Untuk petunjuk pengaturan, lihat Configure access credentials.
Izin RAM yang diperlukan untuk setiap operasi. Untuk petunjuk pemberian izin, lihat Attach a custom policy to a RAM user.
Operasi Izin yang diperlukan Aktifkan logging oss:PutBucketLoggingKueri pengaturan logging oss:GetBucketLoggingNonaktifkan logging oss:DeleteBucketLogging
Catatan penggunaan
Kode contoh menggunakan ID wilayah cn-hangzhou. Secara default, titik akhir publik digunakan. Untuk akses dari layanan Alibaba Cloud lain dalam wilayah yang sama, gunakan titik akhir internal sebagai gantinya. Untuk daftar lengkap wilayah dan titik akhir, lihat OSS regions and endpoints.
Aktifkan logging
Kode berikut mengaktifkan logging untuk sebuah bucket dan menyimpan objek log di bucket target yang ditentukan dengan awalan kunci opsional.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.PutBucketLoggingRequest{
Bucket: oss.Ptr(bucketName),
BucketLoggingStatus: &oss.BucketLoggingStatus{
LoggingEnabled: &oss.LoggingEnabled{
// Bucket target tempat objek log disimpan.
// Bucket sumber dan target dapat berupa bucket yang sama atau berbeda dalam wilayah yang sama.
TargetBucket: oss.Ptr("TargetBucket"),
// Awalan untuk kunci objek log. Jika dihilangkan, log disimpan di direktori root bucket target.
TargetPrefix: oss.Ptr("log"),
},
},
}
result, err := client.PutBucketLogging(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mengaktifkan logging bucket %v", err)
}
log.Printf("hasil aktifkan logging bucket: %#v\n", result)
}Kueri pengaturan logging
Kode berikut mengambil pengaturan logging untuk sebuah bucket, termasuk bucket target dan awalan kunci.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
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")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.DeleteBucketLoggingRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.DeleteBucketLogging(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menghapus pencatatan bucket %v", err)
}
log.Printf("hasil penghapusan pencatatan bucket: %#v\n", result)
}Nonaktifkan logging
Kode berikut menonaktifkan logging untuk sebuah bucket.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.DeleteBucketLoggingRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.DeleteBucketLogging(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menonaktifkan logging bucket %v", err)
}
log.Printf("hasil nonaktifkan logging bucket: %#v\n", result)
}Konfigurasi field log kustom
Gunakan PutUserDefinedLogFieldsConfig untuk menambahkan field kustom ke field user_defined_log_fields dalam log akses. Field log kustom menangkap header permintaan HTTP atau parameter kueri tertentu untuk analisis lanjutan.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.PutUserDefinedLogFieldsConfigRequest{
Bucket: oss.Ptr(bucketName),
UserDefinedLogFieldsConfiguration: &oss.UserDefinedLogFieldsConfiguration{
HeaderSet: &oss.LoggingHeaderSet{
Headers: []string{"header1", "header2"}, // Header permintaan HTTP yang akan dilog.
},
ParamSet: &oss.LoggingParamSet{
Parameters: []string{"param"}, // Parameter kueri yang akan dilog.
},
},
}
result, err := client.PutUserDefinedLogFieldsConfig(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mengatur konfigurasi field log kustom %v", err)
}
log.Printf("hasil atur konfigurasi field log kustom: %#v\n", result)
}Kueri pengaturan field log kustom
Gunakan GetUserDefinedLogFieldsConfig untuk mengambil field log kustom yang telah dikonfigurasi untuk sebuah bucket.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.GetUserDefinedLogFieldsConfigRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.GetUserDefinedLogFieldsConfig(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mengambil konfigurasi field log kustom %v", err)
}
log.Printf("hasil ambil konfigurasi field log kustom: %#v\n", result)
}Hapus pengaturan field log kustom
Gunakan DeleteUserDefinedLogFieldsConfig untuk menghapus pengaturan user_defined_log_fields kustom dari sebuah bucket.
package main
import (
"context"
"flag"
"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
)
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.DeleteUserDefinedLogFieldsConfigRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.DeleteUserDefinedLogFieldsConfig(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menghapus konfigurasi field log kustom %v", err)
}
log.Printf("hasil hapus konfigurasi field log kustom: %#v\n", result)
}