Topik ini menjelaskan cara menambahkan, melihat, mencantumkan, dan menghapus konfigurasi bucket inventory.
Catatan penggunaan
Pada topik ini digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda ingin 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, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Configure a client (Go SDK V1).
Pastikan Anda memiliki izin untuk menambahkan, melihat, mencantumkan, dan menghapus konfigurasi inventaris. Pemilik bucket secara default memiliki izin tersebut. Jika Anda tidak memiliki izin ini, mintalah kepada pemilik bucket.
Anda dapat mengonfigurasi hingga 1.000 aturan inventaris untuk satu bucket.
Bucket sumber tempat Anda mengonfigurasi aturan inventaris dan bucket tujuan tempat file manifest disimpan harus berada di wilayah yang sama.
Tambahkan konfigurasi inventaris
Kode berikut menunjukkan cara menambahkan konfigurasi inventaris ke 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 diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke titik akhir bucket. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur 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)
}
IsEnabled := true
// Untuk mengenkripsi inventaris menggunakan KMS, lihat pengaturan berikut.
//var invEncryption oss.InvEncryption
//var invSseOss oss.InvSseOss
//var invSseKms oss.InvSseKms
//invSseKms.KmsId = "<yourKmsId>" // Tentukan ID kunci KMS.
//invEncryption.SseOss = &invSseOss // Enkripsi inventaris menggunakan enkripsi sisi server dengan kunci yang dikelola OSS (SSE-OSS).
//invEncryption.SseKms = &invSseKms // Enkripsi inventaris menggunakan enkripsi sisi server dengan kunci yang dikelola KMS (SSE-KMS).
invConfig := oss.InventoryConfiguration{
// Nama inventaris. Nama ini harus unik dalam bucket.
Id: "yourInventoryId2",
// Aktifkan konfigurasi inventaris.
IsEnabled: &IsEnabled,
// Atur aturan filter inventaris untuk menentukan awalan objek yang difilter.
Prefix: "yourFilterPrefix",
OSSBucketDestination: oss.OSSBucketDestination{
// Format file dari file manifest yang diekspor.
Format: "CSV",
// ID akun yang diberikan oleh pemilik bucket, misalnya 109885487000****.
AccountId: "yourGrantAccountId",
// Nama role yang diberikan oleh pemilik bucket untuk operasi ini, misalnya acs:ram::109885487000****:role/ram-test.
RoleArn: "yourRoleArn",
// Nama bucket tempat hasil inventaris yang diekspor disimpan.
Bucket: "acs:oss:::" + "yourDestBucketName",
// Awalan path penyimpanan untuk hasil inventaris.
Prefix: "yourDestPrefix",
// Jika inventaris perlu dienkripsi, lihat kode berikut.
//Encryption: &invEncryption,
},
// Frekuensi ekspor file manifest.
Frequency: "Daily",
// Menentukan apakah semua versi objek disertakan dalam inventaris.
IncludedObjectVersions: "All",
OptionalFields: oss.OptionalFields{
// Item konfigurasi yang disertakan dalam hasil inventaris.
Field: []string{
"Size", "LastModifiedDate", "ETag", "StorageClass", "IsMultipartUploaded", "EncryptionStatus",
},
},
}
// Atur yourBucketName ke nama bucket tempat Anda ingin mengonfigurasi aturan inventaris.
err = client.SetBucketInventory("yourBucketName", invConfig)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
Lihat konfigurasi inventaris
Kode berikut menunjukkan cara melihat konfigurasi inventaris bucket:
package main
import (
"encoding/xml"
"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 diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke titik akhir bucket. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur 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)
}
// Atur yourBucketName ke nama bucket.
// Atur yourInventoryId ke nama aturan inventaris.
result, err := client.GetBucketInventory("yourBucketName", "yourInventoryId")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Cetak informasi inventaris.
bs, err := xml.MarshalIndent(result, " ", " ")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(string(bs))
}
Cantumkan konfigurasi inventaris
Satu permintaan dapat mengambil maksimal 100 konfigurasi inventaris. Untuk mengambil lebih dari 100 konfigurasi inventaris, Anda harus mengirimkan beberapa permintaan. Gunakan token yang dikembalikan dari permintaan sebelumnya sebagai parameter untuk permintaan berikutnya.
Kode berikut menunjukkan cara mencantumkan konfigurasi inventaris bucket:
package main
import (
"encoding/xml"
"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 diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke titik akhir bucket. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur 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)
}
var sumResult oss.ListInventoryConfigurationsResult
vmarker := ""
for {
// Atur yourBucketName ke nama bucket.
listResult, err := client.ListBucketInventory("yourBucketName", vmarker)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
sumResult.InventoryConfiguration = append(sumResult.InventoryConfiguration, listResult.InventoryConfiguration...)
if listResult.IsTruncated != nil && *listResult.IsTruncated {
vmarker = listResult.NextContinuationToken
} else {
break
}
}
// Cetak semua informasi inventaris.
bs, err := xml.MarshalIndent(sumResult, " ", " ")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(string(bs))
}
Hapus konfigurasi inventaris
Kode berikut menunjukkan cara menghapus konfigurasi inventaris 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 diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke titik akhir bucket. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur 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)
}
// Hapus konfigurasi inventaris.
// Atur yourBucketName ke nama bucket.
// Atur yourInventoryId ke nama aturan inventaris.
err = client.DeleteBucketInventory("yourBucketName", "yourInventoryId")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
Referensi
Untuk kode contoh lengkap mengenai bucket inventory, lihat GitHub.
Untuk informasi selengkapnya mengenai operasi API untuk menambahkan konfigurasi inventaris bucket, lihat PutBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk melihat konfigurasi inventaris bucket, lihat GetBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk mencantumkan konfigurasi inventaris bucket, lihat ListBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk menghapus konfigurasi inventaris bucket, lihat DeleteBucketInventory.