Layanan Penyimpanan Objek (OSS) menghasilkan log akses untuk mencatat akses ke sumber daya yang disimpan dalam bucket OSS. Setelah Anda mengaktifkan dan mengonfigurasi logging untuk suatu bucket, OSS akan menghasilkan log akses setiap jam berdasarkan aturan penamaan yang telah ditentukan, lalu menyimpan log tersebut di bucket tertentu.
Catatan penggunaan
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Topik ini memperoleh kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.
Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi client (Go SDK V1).
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 Berikan kebijakan akses kustom kepada RAM user.
Aktifkan logging untuk bucket
Kode contoh berikut menunjukkan cara mengaktifkan logging untuk bucket:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket yang akan diaktifkan fitur penyimpanan log-nya, misalnya examplebucket.
bucketName := "examplebucket"
// Tentukan bucket tujuan untuk menyimpan file log. Bucket tujuan dan bucket sumber harus berada di wilayah yang sama. Keduanya bisa merupakan bucket yang sama atau berbeda.
targetBucketName := "destbucket"
// Setel folder tempat file log disimpan menjadi log/. Jika parameter ini ditentukan, file log akan disimpan di folder yang ditentukan dalam bucket tujuan. Jika tidak ditentukan, file log akan disimpan di direktori root bucket tujuan.
targetPrefix := "log/"
// Aktifkan fitur penyimpanan log.
err = client.SetBucketLogging(bucketName, targetBucketName, targetPrefix, true)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
Kueri konfigurasi logging bucket
Kode contoh berikut menunjukkan cara melakukan kueri terhadap konfigurasi logging bucket:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket, misalnya examplebucket.
bucketName := "examplebucket"
// Lihat konfigurasi penyimpanan log.
logRes, err := client.GetBucketLogging(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Target Bucket: ", logRes.LoggingEnabled.TargetBucket)
fmt.Println("Target Prefix: ", logRes.LoggingEnabled.TargetPrefix)
}
Nonaktifkan logging untuk bucket
Kode contoh berikut menunjukkan cara menonaktifkan logging untuk bucket:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket, misalnya examplebucket.
bucketName := "examplebucket"
// Nonaktifkan fitur penyimpanan log.
err = client.DeleteBucketLogging(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
Referensi
Untuk kode contoh lengkap mengenai penyimpanan log, lihat Contoh GitHub.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk mengaktifkan logging pada bucket, lihat PutBucketLogging.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk melakukan kueri terhadap konfigurasi logging bucket, lihat GetBucketLogging.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk menonaktifkan logging pada bucket, lihat DeleteBucketLogging.