本文介绍如何通过Go SDK V2创建、查看、更新和删除存储空间(Bucket)的元数据表配置,包括日志表(Journal Table)配置和清单表(Inventory Table)配置。
功能说明
元数据管理(Metadata)为存储空间(Bucket)提供元数据表配置能力,包含以下两类配置:
日志表配置(JournalTableConfiguration):通过
RecordExpiration控制日志记录的开启状态(Expiration取值ENABLED或DISABLED)及记录保留天数(Days)。清单表配置(InventoryTableConfiguration):通过
ConfigurationState控制清单表的启用状态(取值ENABLED或DISABLED),并可通过EncryptionConfiguration指定加密算法(SseAlgorithm)。
注意事项
本文示例代码以华东1(杭州)的地域ID
cn-hangzhou为例,其他地域请根据实际情况替换。本文以从环境变量读取访问凭证为例。使用前请确保已配置访问凭证(AccessKey)。
请确保您拥有对目标Bucket执行元数据表配置操作的权限。Bucket所有者默认拥有此类权限,如果您无此类权限,请先向Bucket所有者申请对应操作的权限。
您也可以通过OSS控制台开启、修改或关闭元数据管理功能。
示例代码
创建元数据表配置
以下代码用于为某个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", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.CreateBucketMetadataConfigurationRequest{
Bucket: oss.Ptr(bucketName),
MetadataConfiguration: &oss.MetadataConfiguration{
JournalTableConfiguration: &oss.JournalTableConfiguration{
RecordExpiration: &oss.MetadataTableRecordExpiration{
Expiration: oss.Ptr("ENABLED"),
Days: oss.Ptr(7),
},
},
InventoryTableConfiguration: &oss.InventoryTableConfiguration{
ConfigurationState: oss.Ptr("ENABLED"),
EncryptionConfiguration: &oss.MetadataTableEncryptionConfiguration{
SseAlgorithm: oss.Ptr("AES256"),
},
},
},
}
result, err := client.CreateBucketMetadataConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("failed to create bucket metadata table configuration %v", err)
}
log.Printf("create bucket metadata table configuration result:%#v\n", result)
}查看元数据表配置
以下代码用于查看某个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", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.GetBucketMetadataConfigurationRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.GetBucketMetadataConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("failed to get bucket metadata table configuration %v", err)
}
log.Printf("get bucket metadata table configuration result:%#v\n", result)
}更新清单表(Inventory Table)配置
以下代码用于更新某个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", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.UpdateBucketMetadataInventoryTableConfigurationRequest{
Bucket: oss.Ptr(bucketName),
InventoryTableConfiguration: &oss.InventoryTableConfiguration{
ConfigurationState: oss.Ptr("DISABLED"),
},
}
result, err := client.UpdateBucketMetadataInventoryTableConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("failed to update bucket metadata inventory table configuration %v", err)
}
log.Printf("update bucket metadata inventory table configuration result:%#v\n", result)
}更新日志表(Journal Table)配置
以下代码用于更新某个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", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.UpdateBucketMetadataJournalTableConfigurationRequest{
Bucket: oss.Ptr(bucketName),
JournalTableConfiguration: &oss.JournalTableConfiguration{
RecordExpiration: &oss.MetadataTableRecordExpiration{
Expiration: oss.Ptr("DISABLED"),
},
},
}
result, err := client.UpdateBucketMetadataJournalTableConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("failed to update bucket metadata journal table configuration %v", err)
}
log.Printf("update bucket metadata journal table configuration result:%#v\n", result)
}删除元数据表配置
以下代码用于删除某个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", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.DeleteBucketMetadataConfigurationRequest{
Bucket: oss.Ptr(bucketName),
}
result, err := client.DeleteBucketMetadataConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("failed to delete bucket metadata table configuration %v", err)
}
log.Printf("delete bucket metadata table configuration result:%#v\n", result)
}相关文档
创建元数据表配置示例代码,请参见 create_bucket_metadata_table_configuration.go。
查看元数据表配置示例代码,请参见 get_bucket_metadata_table_configuration.go。
更新清单表配置示例代码,请参见 update_bucket_metadata_inventory_table_configuration.go。
更新日志表配置示例代码,请参见 update_bucket_metadata_journal_table_configuration.go。
删除元数据表配置示例代码,请参见 delete_bucket_metadata_table_configuration.go。